text:
Công văn 11712/TC/TCDN của Bộ Tài chính
Chia sẻ: Phạm Thị Thanh Uyên Uyên | Ngày: | Loại File: DOC | Số trang:8
lượt xem 9
download
Công văn 11712/TC/TCDN của Bộ Tài chính
Công văn 11712/TC/TCDN của Bộ Tài chính về việc hướng dẫn Quy trình cổ phần hoá doanh nghiệp nhà nước
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Công văn 11712/TC/TCDN của Bộ Tài chính
- v¨n phßng quèc héi c¬ së d÷ liÖu luËt viÖt nam LAWDATA C«ng v¨n c ñ a B é t µ i c h Ý n h s è 1 1 7 1 2 / T C T C D N n g µ y 1 0 t h ¸ n g 1 1 n ¨ m 2003 vÒ viÖc híng dÉn Quy tr×nh cæ phÇn hãa doanh nghiÖp nhµ níc KÝnh göi: C¸c Bé, c¬ quan ngang Bé, c¬ quan thuéc ChÝnh phñ UBND c¸c tØnh, thµnh phè trùc thuéc Trung ¬ng C¸c Tæng c«ng ty nhµ níc Thùc hiÖn NghÞ ®Þnh sè 64/2002/N§CP ngµy 19 th¸ng 6 n¨m 2002 cña ChÝnh phñ vÒ viÖc chuyÓn doanh nghiÖp nhµ n íc thµnh C«ng ty cæ phÇn; ®Ó t¹o ®iÒu kiÖn thuËn lîi cho c¸c doanh nghiÖp thùc hiÖn cæ phÇn hãa, Bé Tµi chÝnh h íng dÉn Quy tr×nh chuyÓn doanh nghiÖp nhµ níc thµnh c«ng ty cæ phÇn. Trªn c¬ së híng dÉn nµy, c¸c Bé, ®Þa ph¬ng vµ c¸c Tæng c«ng ty nhµ níc chØ ®¹o c¸c doanh nghiÖp c¨n cø c¸c v¨n b¶n híng dÉn cô thÓ liªn quan ®Õn c«ng t¸c cæ phÇn hãa doanh nghiÖp nhµ níc ®Ó thùc hiÖn. Trong qu¸ tr×nh thùc hiÖn, nÕu cã v íng m¾c ®Ò nghÞ kÞp thêi ph¶n ¸nh vÒ Bé Tµi chÝnh ®Ó xem xÐt, bæ sung söa ®æi nh»m tiÕp tôc hoµn chØnh.
- 2 q uy tr × nh chuyÓn doanh nghiÖp nhµ níc thµnh c«ng ty cæ phÇn (Ban hµnh kÌm theo C«ng v¨n sè 11712/TCTCDN ngµy 10 th¸ng 11 n¨m 2003 cña Bé Tµi chÝnh) Quy tr×nh chuyÓn doanh nghiÖp nhµ níc thµnh cæ phÇn (gäi t¾t lµ cæ phÇn hãa) gåm c¸c bíc sau: Bíc 1. Ra quyÕt ®Þnh thùc hiÖn cæ phÇn hãa vµ thµnh lËp Ban §æi míi qu¶n lý t¹i doanh nghiÖp. 1.1. C¸c Bé, c¬ quan ngang Bé, c¬ quan thuéc ChÝnh phñ, Uû ban nh©n d©n c¸c tØnh, thµnh phè trùc thuéc Trung ¬ng (sau ®©y gäi t¾t lµ c¬ quan quyÕt ®Þnh cæ phÇn hãa) c¨n cø §Ò ¸n s¾p xÕp tæng thÓ doanh nghiÖp nhµ n íc ®∙ ®îc Thñ tíng ChÝnh phñ phª duyÖt, ra quyÕt ®Þnh cæ phÇn hãa c¸c doanh nghiÖp thuéc ph¹m vi qu¶n lý, kÓ c¶ doanh nghiÖp thuéc Tæng c«ng ty 91 do Thñ t íng ChÝnh phñ quyÕt ®Þnh thµnh lËp. 1.2. C¸c doanh nghiÖp nhµ níc khi cã quyÕt ®Þnh cæ phÇn hãa, ®Ò xuÊt danh s¸ch c¸c thµnh viªn Ban §æi míi qu¶n lý t¹i doanh nghiÖp b¸o c¸o c¬ quan quyÕt ®Þnh cæ phÇn hãa xem xÐt quyÕt ®Þnh. Thµnh phÇn Ban §æi míi qu¶n lý doanh nghiÖp gåm: + Gi¸m ®èc (hoÆc Phã Gi¸m ®èc) lµm Trëng ban; + KÕ to¸n trëng hoÆc trëng phßng kÕ to¸n lµm Uû viªn thêng trùc; + C¸c trëng phßng, ban kÕ ho¹ch, s¶n xuÊt kinh doanh, tæ chøc c¸n bé, kü thuËt lµm Uû viªn; + Mêi BÝ th §¶ng ñy (hoÆc Chi bé), Chñ tÞch c«ng ®oµn lµm Uû viªn. 1.3. C¸c Bé, UBND c¸c tØnh, thµnh phè trùc thuéc Trung ¬ng, Héi ®ång qu¶n trÞ c¸c Tæng c«ng ty 90, 91 (nÕu ®îc ñy quyÒn) ra quyÕt ®Þnh thµnh lËp Ban §æi míi qu¶n lý t¹i doanh nghiÖp. Bíc 2. Tuyªn truyÒn chñ tr¬ng chÝnh s¸ch cæ phÇn hãa: 2.1. C¬ quan quyÕt ®Þnh cæ phÇn hãa cã tr¸ch nhiÖm tæ chøc phæ biÕn c¸c v¨n b¶n vÒ cæ phÇn hãa vµ chÝnh s¸ch ®èi víi ngêi lao ®éng cho Ban §æi míi qu¶n lý t¹i doanh nghiÖp vµ c¸c c¸n bé chñ chèt t¹i doanh nghiÖp cæ phÇn hãa. 2.2. Ban §æi míi qu¶n lý t¹i doanh nghiÖp tuyªn truyÒn, gi¶i thÝch cho ngêi lao ®éng trong doanh nghiÖp nh÷ng chñ tr¬ng chÝnh s¸ch cña §¶ng vµ ChÝnh phñ vÒ cæ
- 3 phÇn hãa doanh nghiÖp (®Æc biÖt lµ quyÒn lîi, tr¸ch nhiÖm cña doanh nghiÖp vµ ngêi lao ®éng); c¸c c«ng viÖc mµ doanh nghiÖp ph¶i lµm vµ sù tham gia cña c¸n bé c«ng nh©n viªn trong qu¸ tr×nh cæ phÇn hãa. Bíc 3. ChuÈn bÞ hå s¬, tµi liÖu: C¨n cø vµo ngµy cã quyÕt ®Þnh cæ phÇn hãa vµ ®iÒu kiÖn cô thÓ cña doanh nghiÖp, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tiÕn hµnh: 1. Lùa chän ph¬ng ph¸p x¸c ®Þnh gi¸ trÞ doanh nghiÖp vµ thêi ®iÓm x¸c ®Þnh gi¸ trÞ doanh nghiÖp theo h íng dÉn t¹i Th«ng t sè 79/2002/TTBTC ngµy 12/9/2002 cña Bé Tµi chÝnh b¸o c¸o c¬ quan quyÕt ®Þnh cæ phÇn hãa doanh nghiÖp xem xÐt quyÕt ®Þnh. 2. ChuÈn bÞ c¸c tµi liÖu sau: a. C¸c Hå s¬ ph¸p lý khi thµnh lËp doanh nghiÖp nhµ níc; b. C¸c Hå s¬ ph¸p lý vÒ quyÒn qu¶n lý vµ sö dông tµi s¶n t¹i doanh nghiÖp (bao gåm c¶ c¸c diÖn tÝch ®Êt ®îc giao hoÆc thuª); c. Hå s¬ vÒ c«ng nî (®Æc biÖt lµ c¸c kho¶n nî tån ®äng); d. Hå s¬ vÒ vËt t hµng hãa ø ®äng, kÐm, mÊt phÈm chÊt; ®. Hå s¬ c¸c c«ng tr×nh ®Çu t x©y dùng (kÓ c¶ c¸c c«ng tr×nh ®∙ cã quyÕt ®Þnh ®×nh ho∙n); e. B¸o c¸o tµi chÝnh cña doanh nghiÖp ®Õn thêi ®iÓm ®Þnh gi¸; g. LËp danh s¸ch lao ®éng thêng xuyªn cña doanh nghiÖp t¹i thêi ®iÓm cã quyÕt ®Þnh cæ phÇn hãa; tiÕn hµnh ph©n lo¹i lao ®éng theo c¸c ®èi t îng: Hîp ®ång kh«ng x¸c ®Þnh thêi h¹n, cã thêi h¹n tõ 1 3 n¨m, hîp ®ång ng¾n h¹n..... Dù kiÕn danh s¸ch lao ®éng ®îc mua cæ phÇn u ®∙i vµ cæ phÇn tr¶ chËm; h. LËp dù to¸n chi phÝ cæ phÇn ho¸ theo chÕ ®é quy ®Þnh. Bíc 4. KiÓm kª, xö lý nh÷ng vÊn ®Ò vÒ tµi chÝnh: C¨n cø vµo c¸c tµi liÖu ®∙ chuÈn bÞ, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tæ chøc kiÓm kª, ph©n lo¹i tµi s¶n vµ quyÕt to¸n tµi chÝnh, quyÕt to¸n thuÕ ®Ó xö lý nh÷ng vÊn ®Ò vÒ tµi chÝnh t¹i thêi ®iÓm ®Þnh gi¸ theo chÕ ®é nhµ n íc quy ®Þnh t¹i Th«ng t sè 76/2002/TTBTC ngµy 9/9/2002
- 4 vµ Th«ng t sè 85/2002/TTBTC ngµy 26/9/2002 cña Bé Tµi chÝnh. Bíc 5. X¸c ®Þnh gi¸ trÞ doanh nghiÖp: 5.1. C¨n cø vµo sè liÖu trªn sæ s¸ch kÕ to¸n vµ kÕt qu¶ kiÓm kª tµi s¶n, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tæ chøc x¸c ®Þnh gi¸ trÞ tµi s¶n mµ doanh nghiÖp cã nhu cÇu sö dông sau khi chuyÓn sang c«ng ty cæ phÇn. Hoµn thiÖn hå s¬ x¸c ®Þnh gi¸ trÞ doanh nghiÖp theo quy ®Þnh t¹i Th«ng t sè 79/2002/TTBTC ngµy 12/9/2002 cña Bé Tµi chÝnh vµ göi c¬ quan quyÕt ®Þnh cæ phÇn ho¸ ®Ó thÈm tra, ra quyÕt ®Þnh tæ chøc x¸c ®Þnh gi¸ trÞ doanh nghiÖp. 5.2. C¬ quan quyÕt ®Þnh cæ phÇn ho¸: Ra quyÕt ®Þnh thµnh lËp Héi ®ång x¸c ®Þnh gi¸ trÞ doanh nghiÖp hoÆc lùa chän C«ng ty kiÓm to¸n, tæ chøc kinh tÕ cã chøc n¨ng ®Þnh gi¸ ®Ó x¸c ®Þnh gi¸ trÞ doanh nghiÖp. 5.3. Ban §æi míi qu¶n lý t¹i doanh nghiÖp phèi hîp víi Héi ®ång x¸c ®Þnh gi¸ trÞ doanh nghiÖp hoÆc tæ chøc ®îc thuª x¸c ®Þnh gi¸ trÞ doanh nghiÖp: thùc hiÖn x¸c ®Þnh gi¸ trÞ doanh nghiÖp, lËp Biªn b¶n x¸c ®Þnh gi¸ trÞ doanh nghiÖp (theo híng dÉn t¹i Th«ng t 79/2002/TTBTC cña Bé Tµi chÝnh). Göi kÕt qu¶ x¸c ®Þnh gi¸ trÞ doanh nghiÖp ®Õn c¬ quan quyÕt ®Þnh, cæ phÇn ho¸ ®Ó xem xÐt, ra quyÕt ®Þnh c«ng bè gi¸ trÞ doanh nghiÖp. 5.4. C¨n cø vµo quyÕt ®Þnh c«ng bè gi¸ trÞ doanh nghiÖp, doanh nghiÖp thùc hiÖn ®iÒu chØnh sæ s¸ch kÕ to¸n vµ b¶ng c©n ®èi theo chÕ ®é kÕ to¸n Nhµ níc quy ®Þnh, ®ång thêi tiÕp tôc theo dâi vµ xö lý c¸c kho¶n nî, tµi s¶n lo¹i trõ khi x¸c ®Þnh gi¸ trÞ doanh nghiÖp cæ phÇn ho¸, h¹ch to¸n c¸c kho¶n chi phÝ liªn quan ®Õn viÖc thùc hiÖn cæ phÇn ho¸. Bíc 6. X©y dùng ph¬ng ¸n b¸n cæ phÇn u ®∙i vµ ph¬ng ¸n s¾p xÕp l¹i lao ®éng: C¨n cø vµo danh s¸ch lao ®éng thêng xuyªn cña doanh nghiÖp t¹i thêi ®iÓm cæ phÇn ho¸, Ban §æi míi qu¶n lý l¹i doanh nghiÖp phèi hîp víi c«ng ®oµn: 6.1. X¸c ®Þnh danh s¸ch lao ®éng nghÌo theo híng dÉn cña Bé Lao ®éng Th¬ng binh vµ x∙ héi t¹i Th«ng t sè 15/2002/TTBL§TBXH; X©y dùng ph¬ng ¸n b¸n cæ phÇn u ®∙i cho c¸c ®èi tîng ®îc hëng theo quy ®Þnh t¹i NghÞ ®Þnh sè 64/2002/N§CP ngµy 19/6/2002 cña ChÝnh phñ vµ híng dÉn cña Bé Tµi chÝnh t¹i Th«ng t sè 76/2002/TTBTC ngµy 9/9/2002. 6.2. X©y dùng ph¬ng ¸n s¾p xÕp l¹i lao ®éng: dù kiÕn sè lao ®éng tiÕp tôc lµm viÖc t¹i c«ng ty cæ phÇn (trong
- 5 ®ã sè lao ®éng cÇn ®µo t¹o l¹i ®Ó bè trÝ viÖc lµm míi trong c«ng ty cæ phÇn), sè lao ®éng d«i d. Ph©n lo¹i vµ lËp ph¬ng ¸n xö lý lao ®éng d«i d vµ ph ¬ng ¸n hç trî kinh phÝ ®µo t¹o l¹i theo quy ®Þnh t¹i NghÞ ®Þnh sè 64/2002/N§CP, NghÞ ®Þnh sè 41/2002/N§CP vµ QuyÕt ®Þnh sè 174/2002/Q§TTg cña Thñ tíng ChÝnh phñ ®Ó tr×nh c¬ quan quyÕt ®Þnh cæ phÇn ho¸ xÐt duyÖt; 6.3. Niªm yÕt c«ng khai vµ th«ng b¸o Ph ¬ng ¸n b¸n cæ phÇn u ®∙i vµ ph¬ng ¸n s¾p xÕp l¹i lao ®éng t¹i doanh nghiÖp. Bíc 7. LËp ph¬ng ¸n cæ phÇn ho¸ doanh nghiÖp vµ dù th¶o §iÒu lÖ tæ chøc, ho¹t ®éng cña c«ng ty cæ phÇn: C¨n cø vµo kÕt qu¶ x¸c ®Þnh gi¸ trÞ doanh nghiÖp vµ ph¬ng ¸n s¾p xÕp lao ®éng ®∙ ®îc c¬ quan cã thÈm quyÒn phª duyÖt; c¨n cø vµo tiªu chÝ ph©n lo¹i doanh nghiÖp nhµ níc quy ®Þnh t¹i QuyÕt ®Þnh sè 58/2002/Q§TTg, ChØ thÞ sè 01/2003/CTTTg cña Thñ tíng ChÝnh phñ vµ c¸c chÝnh s¸ch, chÕ ®é cã liªn quan ®Õn cæ phÇn ho¸ doanh nghiÖp nhµ níc, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tiÕn hµnh: 7.1. LËp ph¬ng ¸n cæ phÇn ho¸ doanh nghiÖp víi nh÷ng néi dung c¬ b¶n sau: a. Giíi thiÖu vÒ doanh nghiÖp, trong ®ã m« t¶ kh¸i qu¸t vÒ qu¸ tr×nh thµnh lËp doanh nghiÖp vµ m« h×nh tæ chøc cña doanh nghiÖp; T×nh h×nh vµ kÕt qu¶ ho¹t ®éng s¶n xuÊt kinh doanh cña doanh nghiÖp trong 3 5 n¨m liÒn kÒ tríc khi cæ phÇn ho¸. b. §¸nh gi¸ thùc tr¹ng cña doanh nghiÖp ë thêi ®iÓm x¸c ®Þnh gi¸ trÞ doanh nghiÖp, bao gåm: Thùc tr¹ng vÒ vèn vµ tµi s¶n (bao gåm c¶ diÖn tÝch ®Êt ®îc giao vµ cho thuª); Thùc tr¹ng vÒ lao ®éng; Nh÷ng vÊn ®Ò cÇn tiÕp tôc xem xÐt vµ xö lý. c. Ph¬ng ¸n s¾p xÕp l¹i lao ®éng, trong ®ã nªu râ: Sè lîng lao ®éng cã tªn trong danh s¸ch thêng xuyªn ë thêi ®iÓm cã quyÕt ®Þnh cæ phÇn ho¸; Sè lîng lao ®éng ®îc tiÕp tôc tuyÓn dông; Sè lîng lao ®éng d«i d vµ ph¬ng ¸n gi¶i quyÕt theo tõng ®èi tîng (bao gåm c¶ ph¬ng ¸n ®µo t¹o l¹i lao ®éng d«i d ®Ó bè trÝ viÖc lµm míi trong c«ng ty cæ phÇn). d. Ph¬ng ¸n ho¹t ®éng s¶n xuÊt kinh doanh trong 3 5 n¨m tiÕp theo, trong ®ã nªu râ: Ph¬ng ¸n ®Çu t ®æi míi c«ng nghÖ, n©ng cao n¨ng lùc s¶n xuÊt kinh doanh (nÕu cã);
- 6 KÕ ho¹ch s¶n xuÊt kinh doanh cña c¸c n¨m kÕ tiÕp (kÕ ho¹ch s¶n phÈm, s¶n lîng, thÞ trêng....) vµ c¸c gi¶i ph¸p vÒ vèn, vÒ nguyªn liÖu, vÒ thÞ trêng, vÒ tæ chøc s¶n xuÊt lao ®éng tiÒn l¬ng.... ®. Ph¬ng ¸n cæ phÇn ho¸ doanh nghiÖp Nhµ níc: Dù kiÕn h×nh thøc cæ phÇn ho¸ vµ vèn ®iÒu lÖ theo yªu cÇu ho¹t ®éng s¶n xuÊt kinh doanh cña c«ng ty cæ phÇn; X¸c ®Þnh c¬ cÊu vèn ®iÒu lÖ bao gåm: sè cæ phÇn cña nhµ níc dù kiÕn n¾m gi÷; sè cæ phÇn dù kiÕn b¸n cho ng êi lao ®éng trong doanh nghiÖp (trong ®ã: chi tiÕt vÒ sè l îng, gi¸ trÞ cña cæ phÇn b¸n theo gi¸ u ®∙i vµ chËm tr¶); sè cæ phÇn dù kiÕn b¸n cho c¸c ®èi tîng bªn ngoµi doanh nghiÖp. C¸c lo¹i cæ phiÕu ph¸t hµnh vµ ph¬ng thøc ph¸t hµnh cæ phiÕu (do doanh nghiÖp thùc hiÖn hay qua tæ chøc trung gian) 7.2. Dù th¶o §iÒu lÖ tæ chøc vµ ho¹t ®éng cña c«ng ty cæ phÇn theo c¸c quy ®Þnh cña LuËt Doanh nghiÖp vµ c¸c v¨n b¶n ph¸p luËt hiÖn hµnh. 7.3. Tæ chøc Héi nghÞ c«ng nh©n viªn chøc (bÊt th êng) ®Ó lÊy ý kiÕn hoµn thiÖn ph¬ng ¸n cæ phÇn ho¸. §Ó §¹i héi ®¹t kÕt qu¶ tèt, tríc khi tæ chøc §¹i héi, Ban §æi míi qu¶n lý t¹i doanh nghiÖp cÇn göi dù th¶o cho c¸c bé phËn trong doanh nghiÖp th¶o luËn vµ tæng hîp c¸c vÊn ®Ò cÇn xin ý kiÕn. 7.4. C¨n cø vµo ý kiÕn tham gia t¹i Héi nghÞ §¹i héi c«ng nh©n viªn chøc, Ban §æi míi qu¶n lý t¹i doanh nghiÖp hoµn thiÖn ph¬ng ¸n cæ phÇn ho¸ ®Ó tr×nh lªn c¬ quan quyÕt ®Þnh cæ phÇn ho¸ xÐt duyÖt. Bíc 8. ThÈm ®Þnh vµ phª duyÖt ph¬ng ¸n cæ phÇn ho¸: 8.1. §èi víi c¸c doanh nghiÖp thµnh viªn cña c¸c Tæng c«ng ty nhµ níc: Héi ®ång qu¶n trÞ cña c¸c Tæng c«ng ty nhµ níc thÈm ®Þnh vµ chØ ®¹o c¸c doanh nghiÖp thµnh viªn hoµn thiÖn ph¬ng ¸n cæ phÇn ho¸ tríc khi tr×nh Bé, UBND tØnh, thµnh phè phª duyÖt. 8.2. Khi nhËn ®îc ph¬ng ¸n cæ phÇn ho¸ cña c¸c doanh nghiÖp göi lªn, Ban §æi míi vµ ph¸t triÓn doanh nghiÖp c¸c Bé, UBND tØnh, thµnh phè tæ chøc häp thÈm ®Þnh vµ tr×nh Bé trëng, Chñ tÞch UBND tØnh, thµnh phè ra quyÕt ®Þnh phª duyÖt theo ®óng quy ®Þnh cña chÕ ®é nhµ níc. Tr êng hîp doanh nghiÖp cæ phÇn ho¸ thuéc ®èi tîng Nhµ níc gi÷ cæ phÇn ®Æc biÖt th× ph¶i b¸o c¸o Thñ tíng ChÝnh phñ xem xÐt, quyÕt ®Þnh.
- 7 Bíc 9. Thùc hiÖn ph¬ng ¸n cæ phÇn ho¸: C¨n cø vµo ph¬ng ¸n cæ phÇn ho¸ ®∙ ®îc cÊp cã thÈm quyÒn phª duyÖt, Ban §æi míi qu¶n lý t¹i doanh nghiÖp thùc hiÖn: 9.1. Më sæ ®¨ng ký mua cæ phÇn cña c¸c cæ ®«ng. 9.2. Th«ng b¸o c«ng khai t×nh h×nh tµi chÝnh cña doanh nghiÖp t¹i thêi ®iÓm cæ phÇn ho¸ vµ c¸c th«ng tin vÒ viÖc b¸n cæ phÇn cña doanh nghiÖp theo ®óng chÕ ®é Nhµ níc ®∙ quy ®Þnh. 9.3. Tæ chøc b¸n cæ phÇn cho c¸c ®èi tîng ®∙ ®¨ng ký mua (riªng ®èi víi sè cæ phÇn b¸n ra ngoµi doanh nghiÖp ph¶i thùc hiÖn theo quy ®Þnh t¹i Th«ng t sè 80/2002/TT BTC ngµy 12/9/2002 cña Bé Tµi chÝnh vµ v¨n b¶n híng dÉn bæ sung cña Bé Tµi chÝnh). 9.4. B¸o c¸o kÕt qu¶ b¸n cæ phÇn vµ danh s¸ch cö ngêi dù kiÕn trùc tiÕp qu¶n lý phÇn vèn nhµ níc t¹i c«ng ty cæ phÇn (®èi víi trêng hîp Nhµ níc tham gia gãp vèn) vÒ c¬ quan quyÕt ®Þnh cæ phÇn ho¸ ®Ó cã ý kiÕn chÝnh thøc. 9.5. C¨n cø vµo ý kiÕn chØ ®¹o cña c¬ quan quyÕt ®Þnh cæ phÇn ho¸ vµ danh s¸ch c¸c nhµ ®Çu t gãp vèn mua cæ phÇn, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tiÕn hµnh §¹i héi cæ ®«ng lÇn thø nhÊt ®Ó th«ng qua §iÒu lÖ tæ chøc vµ ho¹t ®éng cña c«ng ty cæ phÇn, ph¬ng ¸n s¶n xuÊt kinh doanh cña c«ng ty cæ phÇn trong nh÷ng n¨m kÕ tiÕp, bÇu Héi ®ång qu¶n trÞ, Ban KiÓm so¸t vµ bé m¸y ®iÒu hµnh cña c«ng ty cæ phÇn. Bíc 10. Ra m¾t c«ng ty cæ phÇn vµ ®¨ng ký kinh doanh: 10.1. Héi ®ång qu¶n trÞ c«ng ty cæ phÇn chØ ®¹o thùc hiÖn ®¨ng ký kinh doanh t¹i Së KÕ ho¹ch vµ §Çu t , nép con dÊu cña doanh nghiÖp nhµ níc vµ xin kh¾c dÊu cña c«ng ty cæ phÇn. 10.2. LËp b¸o c¸o tµi chÝnh t¹i thêi ®iÓm c«ng ty cæ phÇn ®îc cÊp giÊy chøng nhËn ®¨ng ký kinh doanh vµ thùc hiÖn quyÕt to¸n thuÕ víi c¬ quan thuÕ göi c¬ quan quyÕt ®Þnh cæ phÇn ho¸ ®Ó x¸c ®Þnh l¹i gi¸ trÞ thùc tÕ phÇn vèn nhµ níc vµ thùc hiÖn bµn giao gi÷a doanh nghiÖp nhµ níc víi c«ng ty cæ phÇn theo quy ®Þnh t¹i Th«ng t sè 76/2002/ TTBTC cña Bé Tµi chÝnh. 10.3. Lµm thñ tôc mua hoÆc in cæ phiÕu tr¾ng theo h íng dÉn cña Bé Tµi chÝnh vÒ mÉu tê cæ phiÕu ®Ó ph¸t cho c¸c cæ ®«ng (Th«ng t sè 86/2003/TTBTC ngµy 11/9/2003). 10.4. Tæ chøc ra m¾t c«ng ty cæ phÇn vµ thùc hiÖn bè c¸o trªn ph¬ng tiÖn th«ng tin ®¹i chóng theo quy ®Þnh.
- 8 ViÖc ph©n bíc qu¸ tr×nh cæ phÇn ho¸ mét doanh nghiÖp nh trªn lµ t¬ng ®èi, c¬ quan quyÕt ®Þnh cæ phÇn ho¸ vµ Ban §æi míi qu¶n lý t¹i doanh nghiÖp cã thÓ tiÕn hµnh ®ång thêi nhiÒu bíc mét lóc ®Ó hoµn thµnh tiÕn ®é cæ phÇn ho¸.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Công văn 3571/TC/TCT của Bộ Tài chính
2 p | 429 | 20
-
Công văn 14734/BTC-TCDN của Bộ Tài chính
2 p | 55 | 8
-
Công văn 1310-TC/TCDN của Bộ Tài chính
2 p | 74 | 5
-
Công văn 6002/TC/TCDN của Bộ Tài chính
1 p | 87 | 5
-
Công văn 9391/BTC-TCDN của Bộ Tài chính
1 p | 76 | 3
-
Công văn 5561/BTC-TCDN của Bộ Tài chính
1 p | 53 | 3
-
Công văn 6746/BTC-TCDN của Bộ Tài chính
2 p | 84 | 3
-
Công văn 12348/BTC-TCDN của Bộ Tài chính
2 p | 50 | 2
-
Công văn 1483-TC/QLCS của Bộ Tài chính
3 p | 78 | 2
-
Công văn 345/TC/TCDN của Bộ Tài chính
1 p | 72 | 2
-
Công văn 2479/TC/CDN của Bộ Tài chính
1 p | 63 | 2
-
Công văn 2499/TC-TCDN của Bộ Tài chính
4 p | 75 | 2
-
Công văn 2818/TC/TCDN của Bộ Tài chính
2 p | 70 | 2
-
Công văn 4126/TC/TCDN của Bộ Tài chính
2 p | 102 | 2
-
Công văn 9325/BTC-TCDN của Bộ Tài chính
2 p | 63 | 2
-
Công văn 4412/BTC-TCDN của Bộ Tài chính
1 p | 52 | 2
-
Công văn 983/BTC-TCDN của Bộ Tài chính
1 p | 62 | 1

markdown:
# Công văn 11712/TC/TCDN của Bộ Tài chính
Chia sẻ: Phạm Thị Thanh Uyên Uyên | Ngày: | Loại File: DOC | Số trang:8
lượt xem 9
download
![](http://image.tlvnimg.com/document/thumbnail/2009/20090819/thanhuyen/80x100/03001198.jpg)
##
Công văn 11712/TC/TCDN của Bộ Tài chính
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](images/down16x21.png)
Công văn 11712/TC/TCDN của Bộ Tài chính về việc hướng dẫn Quy trình cổ phần hoá doanh nghiệp nhà nước
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Công văn 11712/TC/TCDN của Bộ Tài chính
- v¨n phßng quèc héi c¬ së d÷ liÖu luËt viÖt nam LAWDATA C«ng v¨n c ñ a B é t µ i c h Ý n h s è 1 1 7 1 2 / T C T C D N n g µ y 1 0 t h ¸ n g 1 1 n ¨ m 2003 vÒ viÖc híng dÉn Quy tr×nh cæ phÇn hãa doanh nghiÖp nhµ níc KÝnh göi: C¸c Bé, c¬ quan ngang Bé, c¬ quan thuéc ChÝnh phñ UBND c¸c tØnh, thµnh phè trùc thuéc Trung ¬ng C¸c Tæng c«ng ty nhµ níc Thùc hiÖn NghÞ ®Þnh sè 64/2002/N§CP ngµy 19 th¸ng 6 n¨m 2002 cña ChÝnh phñ vÒ viÖc chuyÓn doanh nghiÖp nhµ n íc thµnh C«ng ty cæ phÇn; ®Ó t¹o ®iÒu kiÖn thuËn lîi cho c¸c doanh nghiÖp thùc hiÖn cæ phÇn hãa, Bé Tµi chÝnh h íng dÉn Quy tr×nh chuyÓn doanh nghiÖp nhµ níc thµnh c«ng ty cæ phÇn. Trªn c¬ së híng dÉn nµy, c¸c Bé, ®Þa ph¬ng vµ c¸c Tæng c«ng ty nhµ níc chØ ®¹o c¸c doanh nghiÖp c¨n cø c¸c v¨n b¶n híng dÉn cô thÓ liªn quan ®Õn c«ng t¸c cæ phÇn hãa doanh nghiÖp nhµ níc ®Ó thùc hiÖn. Trong qu¸ tr×nh thùc hiÖn, nÕu cã v íng m¾c ®Ò nghÞ kÞp thêi ph¶n ¸nh vÒ Bé Tµi chÝnh ®Ó xem xÐt, bæ sung söa ®æi nh»m tiÕp tôc hoµn chØnh.
- 2 q uy tr × nh chuyÓn doanh nghiÖp nhµ níc thµnh c«ng ty cæ phÇn (Ban hµnh kÌm theo C«ng v¨n sè 11712/TCTCDN ngµy 10 th¸ng 11 n¨m 2003 cña Bé Tµi chÝnh) Quy tr×nh chuyÓn doanh nghiÖp nhµ níc thµnh cæ phÇn (gäi t¾t lµ cæ phÇn hãa) gåm c¸c bíc sau: Bíc 1. Ra quyÕt ®Þnh thùc hiÖn cæ phÇn hãa vµ thµnh lËp Ban §æi míi qu¶n lý t¹i doanh nghiÖp. 1.1. C¸c Bé, c¬ quan ngang Bé, c¬ quan thuéc ChÝnh phñ, Uû ban nh©n d©n c¸c tØnh, thµnh phè trùc thuéc Trung ¬ng (sau ®©y gäi t¾t lµ c¬ quan quyÕt ®Þnh cæ phÇn hãa) c¨n cø §Ò ¸n s¾p xÕp tæng thÓ doanh nghiÖp nhµ n íc ®∙ ®îc Thñ tíng ChÝnh phñ phª duyÖt, ra quyÕt ®Þnh cæ phÇn hãa c¸c doanh nghiÖp thuéc ph¹m vi qu¶n lý, kÓ c¶ doanh nghiÖp thuéc Tæng c«ng ty 91 do Thñ t íng ChÝnh phñ quyÕt ®Þnh thµnh lËp. 1.2. C¸c doanh nghiÖp nhµ níc khi cã quyÕt ®Þnh cæ phÇn hãa, ®Ò xuÊt danh s¸ch c¸c thµnh viªn Ban §æi míi qu¶n lý t¹i doanh nghiÖp b¸o c¸o c¬ quan quyÕt ®Þnh cæ phÇn hãa xem xÐt quyÕt ®Þnh. Thµnh phÇn Ban §æi míi qu¶n lý doanh nghiÖp gåm: + Gi¸m ®èc (hoÆc Phã Gi¸m ®èc) lµm Trëng ban; + KÕ to¸n trëng hoÆc trëng phßng kÕ to¸n lµm Uû viªn thêng trùc; + C¸c trëng phßng, ban kÕ ho¹ch, s¶n xuÊt kinh doanh, tæ chøc c¸n bé, kü thuËt lµm Uû viªn; + Mêi BÝ th §¶ng ñy (hoÆc Chi bé), Chñ tÞch c«ng ®oµn lµm Uû viªn. 1.3. C¸c Bé, UBND c¸c tØnh, thµnh phè trùc thuéc Trung ¬ng, Héi ®ång qu¶n trÞ c¸c Tæng c«ng ty 90, 91 (nÕu ®îc ñy quyÒn) ra quyÕt ®Þnh thµnh lËp Ban §æi míi qu¶n lý t¹i doanh nghiÖp. Bíc 2. Tuyªn truyÒn chñ tr¬ng chÝnh s¸ch cæ phÇn hãa: 2.1. C¬ quan quyÕt ®Þnh cæ phÇn hãa cã tr¸ch nhiÖm tæ chøc phæ biÕn c¸c v¨n b¶n vÒ cæ phÇn hãa vµ chÝnh s¸ch ®èi víi ngêi lao ®éng cho Ban §æi míi qu¶n lý t¹i doanh nghiÖp vµ c¸c c¸n bé chñ chèt t¹i doanh nghiÖp cæ phÇn hãa. 2.2. Ban §æi míi qu¶n lý t¹i doanh nghiÖp tuyªn truyÒn, gi¶i thÝch cho ngêi lao ®éng trong doanh nghiÖp nh÷ng chñ tr¬ng chÝnh s¸ch cña §¶ng vµ ChÝnh phñ vÒ cæ
- 3 phÇn hãa doanh nghiÖp (®Æc biÖt lµ quyÒn lîi, tr¸ch nhiÖm cña doanh nghiÖp vµ ngêi lao ®éng); c¸c c«ng viÖc mµ doanh nghiÖp ph¶i lµm vµ sù tham gia cña c¸n bé c«ng nh©n viªn trong qu¸ tr×nh cæ phÇn hãa. Bíc 3. ChuÈn bÞ hå s¬, tµi liÖu: C¨n cø vµo ngµy cã quyÕt ®Þnh cæ phÇn hãa vµ ®iÒu kiÖn cô thÓ cña doanh nghiÖp, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tiÕn hµnh: 1. Lùa chän ph¬ng ph¸p x¸c ®Þnh gi¸ trÞ doanh nghiÖp vµ thêi ®iÓm x¸c ®Þnh gi¸ trÞ doanh nghiÖp theo h íng dÉn t¹i Th«ng t sè 79/2002/TTBTC ngµy 12/9/2002 cña Bé Tµi chÝnh b¸o c¸o c¬ quan quyÕt ®Þnh cæ phÇn hãa doanh nghiÖp xem xÐt quyÕt ®Þnh. 2. ChuÈn bÞ c¸c tµi liÖu sau: a. C¸c Hå s¬ ph¸p lý khi thµnh lËp doanh nghiÖp nhµ níc; b. C¸c Hå s¬ ph¸p lý vÒ quyÒn qu¶n lý vµ sö dông tµi s¶n t¹i doanh nghiÖp (bao gåm c¶ c¸c diÖn tÝch ®Êt ®îc giao hoÆc thuª); c. Hå s¬ vÒ c«ng nî (®Æc biÖt lµ c¸c kho¶n nî tån ®äng); d. Hå s¬ vÒ vËt t hµng hãa ø ®äng, kÐm, mÊt phÈm chÊt; ®. Hå s¬ c¸c c«ng tr×nh ®Çu t x©y dùng (kÓ c¶ c¸c c«ng tr×nh ®∙ cã quyÕt ®Þnh ®×nh ho∙n); e. B¸o c¸o tµi chÝnh cña doanh nghiÖp ®Õn thêi ®iÓm ®Þnh gi¸; g. LËp danh s¸ch lao ®éng thêng xuyªn cña doanh nghiÖp t¹i thêi ®iÓm cã quyÕt ®Þnh cæ phÇn hãa; tiÕn hµnh ph©n lo¹i lao ®éng theo c¸c ®èi t îng: Hîp ®ång kh«ng x¸c ®Þnh thêi h¹n, cã thêi h¹n tõ 1 3 n¨m, hîp ®ång ng¾n h¹n..... Dù kiÕn danh s¸ch lao ®éng ®îc mua cæ phÇn u ®∙i vµ cæ phÇn tr¶ chËm; h. LËp dù to¸n chi phÝ cæ phÇn ho¸ theo chÕ ®é quy ®Þnh. Bíc 4. KiÓm kª, xö lý nh÷ng vÊn ®Ò vÒ tµi chÝnh: C¨n cø vµo c¸c tµi liÖu ®∙ chuÈn bÞ, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tæ chøc kiÓm kª, ph©n lo¹i tµi s¶n vµ quyÕt to¸n tµi chÝnh, quyÕt to¸n thuÕ ®Ó xö lý nh÷ng vÊn ®Ò vÒ tµi chÝnh t¹i thêi ®iÓm ®Þnh gi¸ theo chÕ ®é nhµ n íc quy ®Þnh t¹i Th«ng t sè 76/2002/TTBTC ngµy 9/9/2002
- 4 vµ Th«ng t sè 85/2002/TTBTC ngµy 26/9/2002 cña Bé Tµi chÝnh. Bíc 5. X¸c ®Þnh gi¸ trÞ doanh nghiÖp: 5.1. C¨n cø vµo sè liÖu trªn sæ s¸ch kÕ to¸n vµ kÕt qu¶ kiÓm kª tµi s¶n, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tæ chøc x¸c ®Þnh gi¸ trÞ tµi s¶n mµ doanh nghiÖp cã nhu cÇu sö dông sau khi chuyÓn sang c«ng ty cæ phÇn. Hoµn thiÖn hå s¬ x¸c ®Þnh gi¸ trÞ doanh nghiÖp theo quy ®Þnh t¹i Th«ng t sè 79/2002/TTBTC ngµy 12/9/2002 cña Bé Tµi chÝnh vµ göi c¬ quan quyÕt ®Þnh cæ phÇn ho¸ ®Ó thÈm tra, ra quyÕt ®Þnh tæ chøc x¸c ®Þnh gi¸ trÞ doanh nghiÖp. 5.2. C¬ quan quyÕt ®Þnh cæ phÇn ho¸: Ra quyÕt ®Þnh thµnh lËp Héi ®ång x¸c ®Þnh gi¸ trÞ doanh nghiÖp hoÆc lùa chän C«ng ty kiÓm to¸n, tæ chøc kinh tÕ cã chøc n¨ng ®Þnh gi¸ ®Ó x¸c ®Þnh gi¸ trÞ doanh nghiÖp. 5.3. Ban §æi míi qu¶n lý t¹i doanh nghiÖp phèi hîp víi Héi ®ång x¸c ®Þnh gi¸ trÞ doanh nghiÖp hoÆc tæ chøc ®îc thuª x¸c ®Þnh gi¸ trÞ doanh nghiÖp: thùc hiÖn x¸c ®Þnh gi¸ trÞ doanh nghiÖp, lËp Biªn b¶n x¸c ®Þnh gi¸ trÞ doanh nghiÖp (theo híng dÉn t¹i Th«ng t 79/2002/TTBTC cña Bé Tµi chÝnh). Göi kÕt qu¶ x¸c ®Þnh gi¸ trÞ doanh nghiÖp ®Õn c¬ quan quyÕt ®Þnh, cæ phÇn ho¸ ®Ó xem xÐt, ra quyÕt ®Þnh c«ng bè gi¸ trÞ doanh nghiÖp. 5.4. C¨n cø vµo quyÕt ®Þnh c«ng bè gi¸ trÞ doanh nghiÖp, doanh nghiÖp thùc hiÖn ®iÒu chØnh sæ s¸ch kÕ to¸n vµ b¶ng c©n ®èi theo chÕ ®é kÕ to¸n Nhµ níc quy ®Þnh, ®ång thêi tiÕp tôc theo dâi vµ xö lý c¸c kho¶n nî, tµi s¶n lo¹i trõ khi x¸c ®Þnh gi¸ trÞ doanh nghiÖp cæ phÇn ho¸, h¹ch to¸n c¸c kho¶n chi phÝ liªn quan ®Õn viÖc thùc hiÖn cæ phÇn ho¸. Bíc 6. X©y dùng ph¬ng ¸n b¸n cæ phÇn u ®∙i vµ ph¬ng ¸n s¾p xÕp l¹i lao ®éng: C¨n cø vµo danh s¸ch lao ®éng thêng xuyªn cña doanh nghiÖp t¹i thêi ®iÓm cæ phÇn ho¸, Ban §æi míi qu¶n lý l¹i doanh nghiÖp phèi hîp víi c«ng ®oµn: 6.1. X¸c ®Þnh danh s¸ch lao ®éng nghÌo theo híng dÉn cña Bé Lao ®éng Th¬ng binh vµ x∙ héi t¹i Th«ng t sè 15/2002/TTBL§TBXH; X©y dùng ph¬ng ¸n b¸n cæ phÇn u ®∙i cho c¸c ®èi tîng ®îc hëng theo quy ®Þnh t¹i NghÞ ®Þnh sè 64/2002/N§CP ngµy 19/6/2002 cña ChÝnh phñ vµ híng dÉn cña Bé Tµi chÝnh t¹i Th«ng t sè 76/2002/TTBTC ngµy 9/9/2002. 6.2. X©y dùng ph¬ng ¸n s¾p xÕp l¹i lao ®éng: dù kiÕn sè lao ®éng tiÕp tôc lµm viÖc t¹i c«ng ty cæ phÇn (trong
- 5 ®ã sè lao ®éng cÇn ®µo t¹o l¹i ®Ó bè trÝ viÖc lµm míi trong c«ng ty cæ phÇn), sè lao ®éng d«i d. Ph©n lo¹i vµ lËp ph¬ng ¸n xö lý lao ®éng d«i d vµ ph ¬ng ¸n hç trî kinh phÝ ®µo t¹o l¹i theo quy ®Þnh t¹i NghÞ ®Þnh sè 64/2002/N§CP, NghÞ ®Þnh sè 41/2002/N§CP vµ QuyÕt ®Þnh sè 174/2002/Q§TTg cña Thñ tíng ChÝnh phñ ®Ó tr×nh c¬ quan quyÕt ®Þnh cæ phÇn ho¸ xÐt duyÖt; 6.3. Niªm yÕt c«ng khai vµ th«ng b¸o Ph ¬ng ¸n b¸n cæ phÇn u ®∙i vµ ph¬ng ¸n s¾p xÕp l¹i lao ®éng t¹i doanh nghiÖp. Bíc 7. LËp ph¬ng ¸n cæ phÇn ho¸ doanh nghiÖp vµ dù th¶o §iÒu lÖ tæ chøc, ho¹t ®éng cña c«ng ty cæ phÇn: C¨n cø vµo kÕt qu¶ x¸c ®Þnh gi¸ trÞ doanh nghiÖp vµ ph¬ng ¸n s¾p xÕp lao ®éng ®∙ ®îc c¬ quan cã thÈm quyÒn phª duyÖt; c¨n cø vµo tiªu chÝ ph©n lo¹i doanh nghiÖp nhµ níc quy ®Þnh t¹i QuyÕt ®Þnh sè 58/2002/Q§TTg, ChØ thÞ sè 01/2003/CTTTg cña Thñ tíng ChÝnh phñ vµ c¸c chÝnh s¸ch, chÕ ®é cã liªn quan ®Õn cæ phÇn ho¸ doanh nghiÖp nhµ níc, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tiÕn hµnh: 7.1. LËp ph¬ng ¸n cæ phÇn ho¸ doanh nghiÖp víi nh÷ng néi dung c¬ b¶n sau: a. Giíi thiÖu vÒ doanh nghiÖp, trong ®ã m« t¶ kh¸i qu¸t vÒ qu¸ tr×nh thµnh lËp doanh nghiÖp vµ m« h×nh tæ chøc cña doanh nghiÖp; T×nh h×nh vµ kÕt qu¶ ho¹t ®éng s¶n xuÊt kinh doanh cña doanh nghiÖp trong 3 5 n¨m liÒn kÒ tríc khi cæ phÇn ho¸. b. §¸nh gi¸ thùc tr¹ng cña doanh nghiÖp ë thêi ®iÓm x¸c ®Þnh gi¸ trÞ doanh nghiÖp, bao gåm: Thùc tr¹ng vÒ vèn vµ tµi s¶n (bao gåm c¶ diÖn tÝch ®Êt ®îc giao vµ cho thuª); Thùc tr¹ng vÒ lao ®éng; Nh÷ng vÊn ®Ò cÇn tiÕp tôc xem xÐt vµ xö lý. c. Ph¬ng ¸n s¾p xÕp l¹i lao ®éng, trong ®ã nªu râ: Sè lîng lao ®éng cã tªn trong danh s¸ch thêng xuyªn ë thêi ®iÓm cã quyÕt ®Þnh cæ phÇn ho¸; Sè lîng lao ®éng ®îc tiÕp tôc tuyÓn dông; Sè lîng lao ®éng d«i d vµ ph¬ng ¸n gi¶i quyÕt theo tõng ®èi tîng (bao gåm c¶ ph¬ng ¸n ®µo t¹o l¹i lao ®éng d«i d ®Ó bè trÝ viÖc lµm míi trong c«ng ty cæ phÇn). d. Ph¬ng ¸n ho¹t ®éng s¶n xuÊt kinh doanh trong 3 5 n¨m tiÕp theo, trong ®ã nªu râ: Ph¬ng ¸n ®Çu t ®æi míi c«ng nghÖ, n©ng cao n¨ng lùc s¶n xuÊt kinh doanh (nÕu cã);
- 6 KÕ ho¹ch s¶n xuÊt kinh doanh cña c¸c n¨m kÕ tiÕp (kÕ ho¹ch s¶n phÈm, s¶n lîng, thÞ trêng....) vµ c¸c gi¶i ph¸p vÒ vèn, vÒ nguyªn liÖu, vÒ thÞ trêng, vÒ tæ chøc s¶n xuÊt lao ®éng tiÒn l¬ng.... ®. Ph¬ng ¸n cæ phÇn ho¸ doanh nghiÖp Nhµ níc: Dù kiÕn h×nh thøc cæ phÇn ho¸ vµ vèn ®iÒu lÖ theo yªu cÇu ho¹t ®éng s¶n xuÊt kinh doanh cña c«ng ty cæ phÇn; X¸c ®Þnh c¬ cÊu vèn ®iÒu lÖ bao gåm: sè cæ phÇn cña nhµ níc dù kiÕn n¾m gi÷; sè cæ phÇn dù kiÕn b¸n cho ng êi lao ®éng trong doanh nghiÖp (trong ®ã: chi tiÕt vÒ sè l îng, gi¸ trÞ cña cæ phÇn b¸n theo gi¸ u ®∙i vµ chËm tr¶); sè cæ phÇn dù kiÕn b¸n cho c¸c ®èi tîng bªn ngoµi doanh nghiÖp. C¸c lo¹i cæ phiÕu ph¸t hµnh vµ ph¬ng thøc ph¸t hµnh cæ phiÕu (do doanh nghiÖp thùc hiÖn hay qua tæ chøc trung gian) 7.2. Dù th¶o §iÒu lÖ tæ chøc vµ ho¹t ®éng cña c«ng ty cæ phÇn theo c¸c quy ®Þnh cña LuËt Doanh nghiÖp vµ c¸c v¨n b¶n ph¸p luËt hiÖn hµnh. 7.3. Tæ chøc Héi nghÞ c«ng nh©n viªn chøc (bÊt th êng) ®Ó lÊy ý kiÕn hoµn thiÖn ph¬ng ¸n cæ phÇn ho¸. §Ó §¹i héi ®¹t kÕt qu¶ tèt, tríc khi tæ chøc §¹i héi, Ban §æi míi qu¶n lý t¹i doanh nghiÖp cÇn göi dù th¶o cho c¸c bé phËn trong doanh nghiÖp th¶o luËn vµ tæng hîp c¸c vÊn ®Ò cÇn xin ý kiÕn. 7.4. C¨n cø vµo ý kiÕn tham gia t¹i Héi nghÞ §¹i héi c«ng nh©n viªn chøc, Ban §æi míi qu¶n lý t¹i doanh nghiÖp hoµn thiÖn ph¬ng ¸n cæ phÇn ho¸ ®Ó tr×nh lªn c¬ quan quyÕt ®Þnh cæ phÇn ho¸ xÐt duyÖt. Bíc 8. ThÈm ®Þnh vµ phª duyÖt ph¬ng ¸n cæ phÇn ho¸: 8.1. §èi víi c¸c doanh nghiÖp thµnh viªn cña c¸c Tæng c«ng ty nhµ níc: Héi ®ång qu¶n trÞ cña c¸c Tæng c«ng ty nhµ níc thÈm ®Þnh vµ chØ ®¹o c¸c doanh nghiÖp thµnh viªn hoµn thiÖn ph¬ng ¸n cæ phÇn ho¸ tríc khi tr×nh Bé, UBND tØnh, thµnh phè phª duyÖt. 8.2. Khi nhËn ®îc ph¬ng ¸n cæ phÇn ho¸ cña c¸c doanh nghiÖp göi lªn, Ban §æi míi vµ ph¸t triÓn doanh nghiÖp c¸c Bé, UBND tØnh, thµnh phè tæ chøc häp thÈm ®Þnh vµ tr×nh Bé trëng, Chñ tÞch UBND tØnh, thµnh phè ra quyÕt ®Þnh phª duyÖt theo ®óng quy ®Þnh cña chÕ ®é nhµ níc. Tr êng hîp doanh nghiÖp cæ phÇn ho¸ thuéc ®èi tîng Nhµ níc gi÷ cæ phÇn ®Æc biÖt th× ph¶i b¸o c¸o Thñ tíng ChÝnh phñ xem xÐt, quyÕt ®Þnh.
- 7 Bíc 9. Thùc hiÖn ph¬ng ¸n cæ phÇn ho¸: C¨n cø vµo ph¬ng ¸n cæ phÇn ho¸ ®∙ ®îc cÊp cã thÈm quyÒn phª duyÖt, Ban §æi míi qu¶n lý t¹i doanh nghiÖp thùc hiÖn: 9.1. Më sæ ®¨ng ký mua cæ phÇn cña c¸c cæ ®«ng. 9.2. Th«ng b¸o c«ng khai t×nh h×nh tµi chÝnh cña doanh nghiÖp t¹i thêi ®iÓm cæ phÇn ho¸ vµ c¸c th«ng tin vÒ viÖc b¸n cæ phÇn cña doanh nghiÖp theo ®óng chÕ ®é Nhµ níc ®∙ quy ®Þnh. 9.3. Tæ chøc b¸n cæ phÇn cho c¸c ®èi tîng ®∙ ®¨ng ký mua (riªng ®èi víi sè cæ phÇn b¸n ra ngoµi doanh nghiÖp ph¶i thùc hiÖn theo quy ®Þnh t¹i Th«ng t sè 80/2002/TT BTC ngµy 12/9/2002 cña Bé Tµi chÝnh vµ v¨n b¶n híng dÉn bæ sung cña Bé Tµi chÝnh). 9.4. B¸o c¸o kÕt qu¶ b¸n cæ phÇn vµ danh s¸ch cö ngêi dù kiÕn trùc tiÕp qu¶n lý phÇn vèn nhµ níc t¹i c«ng ty cæ phÇn (®èi víi trêng hîp Nhµ níc tham gia gãp vèn) vÒ c¬ quan quyÕt ®Þnh cæ phÇn ho¸ ®Ó cã ý kiÕn chÝnh thøc. 9.5. C¨n cø vµo ý kiÕn chØ ®¹o cña c¬ quan quyÕt ®Þnh cæ phÇn ho¸ vµ danh s¸ch c¸c nhµ ®Çu t gãp vèn mua cæ phÇn, Ban §æi míi qu¶n lý t¹i doanh nghiÖp tiÕn hµnh §¹i héi cæ ®«ng lÇn thø nhÊt ®Ó th«ng qua §iÒu lÖ tæ chøc vµ ho¹t ®éng cña c«ng ty cæ phÇn, ph¬ng ¸n s¶n xuÊt kinh doanh cña c«ng ty cæ phÇn trong nh÷ng n¨m kÕ tiÕp, bÇu Héi ®ång qu¶n trÞ, Ban KiÓm so¸t vµ bé m¸y ®iÒu hµnh cña c«ng ty cæ phÇn. Bíc 10. Ra m¾t c«ng ty cæ phÇn vµ ®¨ng ký kinh doanh: 10.1. Héi ®ång qu¶n trÞ c«ng ty cæ phÇn chØ ®¹o thùc hiÖn ®¨ng ký kinh doanh t¹i Së KÕ ho¹ch vµ §Çu t , nép con dÊu cña doanh nghiÖp nhµ níc vµ xin kh¾c dÊu cña c«ng ty cæ phÇn. 10.2. LËp b¸o c¸o tµi chÝnh t¹i thêi ®iÓm c«ng ty cæ phÇn ®îc cÊp giÊy chøng nhËn ®¨ng ký kinh doanh vµ thùc hiÖn quyÕt to¸n thuÕ víi c¬ quan thuÕ göi c¬ quan quyÕt ®Þnh cæ phÇn ho¸ ®Ó x¸c ®Þnh l¹i gi¸ trÞ thùc tÕ phÇn vèn nhµ níc vµ thùc hiÖn bµn giao gi÷a doanh nghiÖp nhµ níc víi c«ng ty cæ phÇn theo quy ®Þnh t¹i Th«ng t sè 76/2002/ TTBTC cña Bé Tµi chÝnh. 10.3. Lµm thñ tôc mua hoÆc in cæ phiÕu tr¾ng theo h íng dÉn cña Bé Tµi chÝnh vÒ mÉu tê cæ phiÕu ®Ó ph¸t cho c¸c cæ ®«ng (Th«ng t sè 86/2003/TTBTC ngµy 11/9/2003). 10.4. Tæ chøc ra m¾t c«ng ty cæ phÇn vµ thùc hiÖn bè c¸o trªn ph¬ng tiÖn th«ng tin ®¹i chóng theo quy ®Þnh.
- 8 ViÖc ph©n bíc qu¸ tr×nh cæ phÇn ho¸ mét doanh nghiÖp nh trªn lµ t¬ng ®èi, c¬ quan quyÕt ®Þnh cæ phÇn ho¸ vµ Ban §æi míi qu¶n lý t¹i doanh nghiÖp cã thÓ tiÕn hµnh ®ång thêi nhiÒu bíc mét lóc ®Ó hoµn thµnh tiÕn ®é cæ phÇn ho¸.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Công văn 3571/TC/TCT của Bộ Tài chính
2 p |
429 |
20
-
Công văn 14734/BTC-TCDN của Bộ Tài chính
2 p |
55 |
8
-
Công văn 1310-TC/TCDN của Bộ Tài chính
2 p |
74 |
5
-
Công văn 6002/TC/TCDN của Bộ Tài chính
1 p |
87 |
5
-
Công văn 9391/BTC-TCDN của Bộ Tài chính
1 p |
76 |
3
-
Công văn 5561/BTC-TCDN của Bộ Tài chính
1 p |
53 |
3
-
Công văn 6746/BTC-TCDN của Bộ Tài chính
2 p |
84 |
3
-
Công văn 12348/BTC-TCDN của Bộ Tài chính
2 p |
50 |
2
-
Công văn 1483-TC/QLCS của Bộ Tài chính
3 p |
78 |
2
-
Công văn 345/TC/TCDN của Bộ Tài chính
1 p |
72 |
2
-
Công văn 2479/TC/CDN của Bộ Tài chính
1 p |
63 |
2
-
Công văn 2499/TC-TCDN của Bộ Tài chính
4 p |
75 |
2
-
Công văn 2818/TC/TCDN của Bộ Tài chính
2 p |
70 |
2
-
Công văn 4126/TC/TCDN của Bộ Tài chính
2 p |
102 |
2
-
Công văn 9325/BTC-TCDN của Bộ Tài chính
2 p |
63 |
2
-
Công văn 4412/BTC-TCDN của Bộ Tài chính
1 p |
52 |
2
-
Công văn 983/BTC-TCDN của Bộ Tài chính
1 p |
62 |
1

Set-Cookie: TLDEVNamespace=9ohf3qmp5o20fh1t197q2o84k3; path=/; domain=.tailieu.vn; HttpOnly


text:
Lập trình với ngôn ngữ C phần 11
Chia sẻ: Hai Hoang | Ngày: | Loại File: PDF | Số trang:14
lượt xem 56
download
Lập trình với ngôn ngữ C phần 11
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình với ngôn ngữ C phần 11
- Bài 11 Mảng Mục tiêu: Kết thúc bài học này, bạn có thể: Hiểu được các phần tử của mảng và các chỉ số mảng Khai báo một mảng Hiểu cách quản lý mảng trong C Hiểu một mảng được khởi tạo như thế nào Hiểu mảng chuỗi/ ký tự Hiểu mảng hai chiều Hiểu cách khởi tạo mảng nhiều chiều. Giới thiệu: Có thể bạn sẽ gặp khó khăn khi lưu trữ một tập hợp các phần tử dữ liệu giống nhau trong các biến khác nhau. Ví dụ, điểm cho tất cả 11 cầu thủ của một đội bóng đá phải được ghi nhận trong một trận đấu. Sự lưu trữ điểm của mỗi cầu thủ trong các biến có tên khác nhau thì chắc chắn phiền hà hơn dùng một biến chung cho chúng. Với mảng mọi việc sẽ được thực hiện đơn giản hơn. Một mảng là một tập hợp các phần tử dữ liệu có cùng kiểu. Mỗi phần tử được lưu trữ ở các vị trí kế tiếp nhau trong bộ nhớ chính. Những phần tử này được gọi là phần tử mảng. 11.1 Các phần tử mảng và các chỉ mục: Mỗi phần tử của mảng được định danh bằng một chỉ mục hoặc chỉ số gán cho nó. Chiều của mảng được xác định bằng số chỉ số cần thiết để định danh duy nhất mỗi phần tử. Một chỉ số là một số nguyên dương được bao bằng dấu ngoặc vuông [ ] đặt ngay sau tên mảng, không có khoảng trắng ở giữa. Một chỉ số chứa các giá trị nguyên bắt đầu bằng 0. Vì vậy, một mảng player với 11 phần tử được biểu diễn như sau: player[0], player[1], player[2], ... , player[10]. Như đã thấy, phần tử mảng bắt đầu với player[0], và vì vậy phần tử cuối cùng là player[10] không phải là player[11]. Điều này là do bởi trong C, chỉ số mảng bắt đầu từ 0; do đó trong mảng N phần tử, phần tử cuối cùng có chỉ số là N-1. Phạm vi cho phép của các giá trị chỉ số được gọi là miền giới hạn của chỉ số mảng, giới hạn dưới và giới hạn trên. Một chỉ số mảng hợp lệ phải có một giá trị nguyên nằm trong niềm giới hạn. Thuật ngữ hợp lệ được sử dụng cho một nguyên nhân rất đặc trưng. Trong C, nếu người dùng cố gắng truy xuất một phần tử nằm ngoài dãy chỉ số hợp lệ (như player[11] trong ví dụ trên của mảng), trình biên dịch C sẽ không phát sinh ra lỗi. Tuy nhiên, có thể nó truy xuất một giá trị nào đó dẫn đến kết quả không đoán được. Cũng có nguy cơ viết chồng lên dữ liệu hoặc mã lệnh chương trình. Vì vậy, người lập trình phải đảm bảo rằng tất cả các chỉ số là nằm trong miền giới hạn hợp lệ. Khai báo một mảng: Một mảng có một vài đặc tính riêng biệt và phải được khai báo khi sử dụng chúng. Những đặc tính này bao gồm: Lớp lưu trữ Kiểu dữ liệu của các phần tử mảng. Tên mảng – xác định vị trí phần tử đầu tiên của mảng. Kích thước mảng - một hằng số có giá trị nguyên dương. Mảng 1
- Một mảng được khai báo giống như cách khai báo một biến, ngoại trừ tên mảng được theo sau bởi một hoặc nhiều biểu thức, được đặt trong dấu ngoặc vuông [] xác định chiều dài của mảng. Cú pháp tổng quát khai báo một mảng như sau: lớp_lưu_trữ kiểu_dữ_liệu tên_mảng[biểu_thức_kích_thước] Ở đây, biểu_thức_kích_thước là một biểu thức xác định số phần tử trong mảng và phải định ra một trị nguyên dương. Lớp_lưu_trữ là một tùy chọn. Mặc định lớp automatic được dùng cho mảng khai báo bên trong một hàm hoặc một khối lệnh, và lớp external được dùng cho mảng khai báo bên ngoài một hàm. Vì vậy mảng player được khai báo như sau: int player[11]; Nên nhớ rằng, trong khi khai báo mảng, kích thước của mảng sẽ là 11, tuy nhiên các chỉ số của từng phần tử bên trong mảng sẽ là từ 0 đến 10. Các qui tắc đặt tên mảng là giống với qui tắc đặt tên biến. Một tên mảng và một tên biến không được giống nhau, nó dẫn đến sự nhập nhằng. Nếu một sự khai báo như vậy xuất hiện trong chương trình, trình biên dịch sẽ hiển thị thông báo lỗi. Một vài qui tắc với mảng: • Tất cả các phần tử của một mảng có cùng kiểu. Điều này có nghĩa là, nếu một mảng được khai báo kiểu int, nó không thể chứa các phần tử có kiểu khác. • Mỗi phần tử của mảng có thể được sử dụng bất cứ nơi nào mà một biến được cho phép hay được yêu cầu. • Một phần tử của mảng có thể được tham chiếu đến bằng cách sử dụng một biến hoặc một biểu thức nguyên. Sau đây là các tham chiếu hợp lệ: player[i]; /*Ở đó i là một biến, tuy nhiên cần phải chú ý rằng i nằm trong miền giới hạn của chỉ số đã được khai báo cho mảng player*/ player[3] = player[2] + 5; player[0] += 2; player[i / 2 + 1]; • Kiểu dữ liệu của mảng có thể là int, char, float, hoặc double. 11.2 Việc quản lý mảng trong C: Một mảng được “đối xử” khác với một biến trong C. Thậm chí hai mảng có cùng kiểu và kích thước cũng không thể tương đương nhau. Hơn nữa, không thể gán một mảng trực tiếp cho một mảng khác. Thay vì thế, mỗi phần tử mảng phải được gán riêng lẻ tương ứng với từng phần tử của mảng khác. Các giá trị không thể được gán cho toàn bộ một mảng, ngoại trừ tại thời điểm khởi tạo. Tuy nhiên, từng phần tử không chỉ có thể được gán trị mà còn có thể được so sánh. int player1[11], player2[11]; for (i = 0; i < 11; i++) player1[i] = player2[i]; Tương tự, cũng có thể có kết quả như vậy bằng việc sử dụng các lệnh gán riêng lẻ như sau: player1[0] = player2[0]; player1[1] = player2[1]; ... player1[10] = player2[10]; 2 Lập trình cơ bản C
- Cấu trúc for là cách lý tưởng để thao tác các mảng. Ví dụ 11.1: /* Program demonstrates a single dimensional array */ #include void main() { int num[5]; int i; num[0] = 10; num[1] = 70; num[2] = 60; num[3] = 40; num[4] = 50; for (i = 0; i < 5; i++) pirntf(“\n Number at [%d] is %d”, i, num[i]); } Kết quả của chương trình được trình bày bên dưới: Number at [0] is 10 Number at [1] is 70 Number at [2] is 60 Number at [3] is 40 Number at [4] is 50 Ví dụ bên dưới nhập các giá trị vào một mảng có kích thước 10 phần tử, hiển thị giá trị lớn nhất và giá trị trung bình. Ví dụ 11.2: /*Input values are accepted from the user into the array ary[10]*/ #include void main() { int ary[10]; int i, total, high; for (i = 0; i < 10; i++) { printf(“\nEnter value: %d: “, i + 1); scanf(“%d”, &ary[i]); } /* Displays highest of the entered values */ high = ary[0]; for (i = 1; i < 10; i++) { if (ary[i] > high) high = ary[i]; } printf(“\n Highest value entered was %d”, high); /* Prints average of value entered for ary[10] */ for (i = 0, total = 0; i < 10; i++) Mảng 3
- total = total + ary[i]; printf(“\nThe average of the element of ary is %d”, total/i); } Một ví dụ về kết quả được trình bày dưới đây: Enter value: 1: 10 Enter value: 2: 20 Enter value: 3: 30 Enter value: 4: 40 Enter value: 5: 50 Enter value: 6: 60 Enter value: 7: 70 Enter value: 8: 80 Enter value: 9: 90 Enter value: 10: 10 Highest value entered was 90 The average of the element of ary is 46 Việc khởi tạo mảng: Các mảng không được khởi tạo tự động, trừ khi mỗi phần tử mảng được gán một giá trị riêng lẻ. Không nên dùng các mảng trước khi có sự khởi tạo thích hợp. Điều này là bởi vì không gian lưu trữ của mảng không được khởi tạo tự động, do đó dễ gây ra kết quả không lường trước. Mỗi khi các phần tử của một mảng chưa khởi tạo được sử dụng trong các biểu thức toán học, các giá trị đã tồn tại sẵn trong ô nhớ sẽ được sử dụng, các giá trị này không đảm bảo rằng có cùng kiểu như khai báo của mảng, trừ khi các phần tử của mảng được khởi tạo một cách rõ ràng. Điều này đúng không chỉ cho các mảng mà còn cho các biến thông thường. Trong đoạn mã lệnh sau, các phần tử của mảng được gán giá trị bằng các dùng vòng lặp for. int ary[20], i; for(i=0; i
- Một phần kết quả của chương trình trên như sau: The character now assigned is A The character now assigned is B The character now assigned is C . . . Chương trình trên gán các mã ký tự ASCII cho các phần tử của mảng alpha. Kết quả là khi in với định dạng %c, một chuỗi các ký tự được xuất ra màn hình. Các mảng cũng có thể được khởi tạo khi khai báo. Điều này được thực hiện bằng việc gán tên mảng với một danh sách các giá trị phân cách nhau bằng dấu phẩy (,) đặt trong cặp dấu ngoặc nhọn {}. Các giá trị trong cặp dấu ngoặc nhọn {} được gán cho các phần tử trong mảng theo đúng thứ tự xuất hiện. Ví dụ: int deci[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; static float rates[4] = {0.0, -2.5, 13.75, 18.0}; char company[5] = {‘A’, ‘P’, ‘P’, ‘L’, ‘E’}; int marks[100] = {15, 13, 11, 9} Các giá trị khởi tạo của mảng phải là các hằng, không thể là biến hoặc các biểu thức. Một vài phần tử đầu tiên của mảng sẽ được khởi tạo nếu số lượng giá trị khởi tạo là ít hơn số phần tử mảng được khai báo. Các phần tử còn lại sẽ được khởi tạo giá trị 0. Ví dụ, trong mảng marks sau khi có sự khởi tạo như trên, bốn phần tử đầu tiên (từ 0 đến 3) tương ứng được khởi tạo là 15, 13, 11 và 9. Các phần tử còn lại có giá trị 0. Không thể chỉ khởi tạo các phần tử từ 1 đến 4, hoặc từ 2 đến 4, hay từ 2 đến 5 khi sự khởi tạo được thực hiện tại thời điểm khai báo. Trong C không có khả năng lặp lại sự khởi tạo giá trị. Trong trường hợp sự khởi tạo là tường minh, lớp extern hoặc static, các phần tử của mảng được đảm bảo khởi tạo là 0 (không giống lớp auto). Không cần thiết khai báo kích thước của mảng đang được khởi tạo. Nếu kích thước của mảng được bỏ qua khi khai báo, trình biên dịch sẽ xác định kích thước của mảng bằng cách đếm các giá trị đang được khởi tạo. Ví dụ, sự khai báo mảng external sau đây sẽ chỉ định kích thước của mảng ary là 5 vì có 5 giá trị khởi tạo. int ary[] = {1, 2, 3, 4, 5}; Các mảng chuỗi/ký tự: Một chuỗi có thể được khai báo như là một mảng ký tự, và được kết thúc bởi một ký tự NULL. Mỗi ký tự của chuỗi chiếm 1 byte, và ký tự cuối cùng của chuỗi luôn luôn là ký tự ‘\0’. Ký tư ‘\0’ được gọi là ký tự null. Nó là một mã thoát (escape sequence) tương tự như ‘\n’, thay thế cho ký tự có giá trị 0. Vì ‘\0’ luôn là ký tự cuối cùng của một chuỗi, nên các mảng ký tự phải có nhiều hơn một ký tự so với chiều dài tối đa mà chúng quản lý. Ví dụ, một mảng ary quản lý một chuỗi 10 ký tự phải được khai báo như sau: char ary[11]; Vị trí thêm vào được sử dụng để lưu trữ ký tự null. Nên nhớ rằng ký tự kết thúc (ký tự null) là rất quan trọng. Mảng 5
- Các giá trị chuỗi có thể được nhập vào bằng cách sử dụng hàm scanf(). Với chuỗi ary được khai báo ở trên, mã lệnh nhập sẽ như sau: scanf(“%s”, ary); Trong lệnh trên, ary xác định vị trí nơi mà lần lượt các ký tự của mảng sẽ được lưu trữ. Ví dụ 11.4: #include void main() { char ary[5]; int i; printf(“\n Enter string: ”); scanf(“%s”, ary); printf(“\n The string is %s \n\n”, ary); for (i = 0; i < 5; i++) printf(“\t%d”, ary[i]); } Các kết quả thực thi chương trình với những dữ liệu nhập khác nhau như sau: Nếu chuỗi được nhập là appl, kết quả sẽ là: The string is appl 97 112 112 108 0 Kết quả như trên là của 4 ký tự (appl) và ký tự thứ 5 là ký tự null. Điều này được thấy rõ với mã ASCII cho các ký tự được in ra ở dòng thứ hai. Ký tự thứ năm được in la 0, là giá trị của ký tự null. Nếu chuỗi nhập vào là apple, kết quả sẽ là: The string is apple 97 112 112 108 101 Kết quả ở trên của là một dữ liệu đầu vào có 5 ký tự a, p, p, l và e. Nó không được xem là một chuỗi bởi vì ký tự thứ 5 của mảng không phải là \0. Một lần nữa, điều này được thấy rõ bằng dòng in ra mã ASCII của các ký tự a, p, p, l, e. Nếu chuỗi được nhập vào là ap, thì kết quả sẽ là: The string is ap 97 112 0 6 100 Trong ví dụ trên, khi chỉ có hai ký tự được nhập, ký tự thứ ba sẽ là ký tự null. Điều này cho biết là chuỗi đã được kết thúc. Những ký tự còn lại là những ký tự không dự đoán được. Trong trường hợp trên, tính quan trọng của ký tự null trở nên rõ ràng. Ký tự null xác định sự kết thúc của chuỗi và là cách duy nhất để các hàm làm việc với chuỗi sẽ biết đâu là điểm kết thúc của chuỗi. Mặc dù C không có kiểu dữ liệu chuỗi, nhưng nó cho phép các hằng chuỗi. Một hằng chuỗi là một dãy các ký tự được đặt trong dấu nháy đôi (“”). Không giống như các hằng khác, nó không thể được sửa đổi trong chương trình. Ví dụ như: 6 Lập trình cơ bản C
- “Hi Aptechite!” Trình biên dịch C sẽ tự động thêm vào ký tự null cuối chuỗi. C hỗ trợ nhiều hàm cho chuỗi, các hàm này nằm trong thư viện chuẩn string.h. Một vài hàm được đưa ra trong bảng 11.1. Cách làm việc của các hàm này sẽ được thảo luận trong bài 17. Tên hàm Chức năng strcpy(s1, s2) Sao chép s2 vào s1 strcat(s1, s2) Nối s2 vào cuối của s1 strlen(s1) Trả về chiều dài của s1 strcmp(s1, s2) Trả về 0 nếu s1 và s2 là giống nhau; nhỏ hơn 0 nếu s1 s2 strchr(s1, ch) Trả về một con trỏ trỏ đến vị trí xuất hiện đầu tiên của ch trong s1 strstr(s1, s2) Trả về một con trỏ trỏ đến vị trí xuất hiện đầu tiên của chuỗi s2 trong chuỗi s1 Bảng 11.1 11.3 Mảng hai chiều: Chúng ta đã biết thế nào là mảng một chiều. Điều này có nghĩa là các mảng chỉ có một chỉ số. Các mảng có thể có nhiều hơn một chiều. Các mảng đa chiều giúp dễ dàng trình bày các đối tượng đa chiều, chẳng hạn một đồ thị với các dòng và cột hay tọa độ màn hình của máy tính. Các mảng đa chiều được khai báo giống như các mảng một chiều, ngoại trừ có thêm một cặp dấu ngoặc vuông [] trong trường hợp mảng hai chiều. Một mảng ba chiều sẽ cần ba cặp dấu ngoặc vuông,... Một cách tổng quát, một mảng đa chiều có thể được biểu diễn như sau: storage_class data_type ary[exp1][exp2]....[expN]; Ở đó, ary là một mảng có lớp là storage_class, kiểu dữ liệu là data_type, và exp1, exp2,..... , expN là các biểu thức nguyên dương xác định số phần tử của mảng được kết hợp với mỗi chiều. Dạng đơn giản nhất và thường được sử dụng nhất của các mảng đa chiều là mảng hai chiều. Một mảng hai chiều có thể xem như là một mảng của hai ‘mảng một chiều’. Một mảng hai chiều đặc trưng như bảng lịch trình của máy bay, xe lửa. Để xác định thông tin, ta sẽ chỉ định dòng và cột cần thiết, và thông tin được đọc ra từ vị trí (dòng và cột) được tìm thấy. Tương tự như vậy, một mảng hai chiều là một khung lưới chứa các dòng và cột trong đó mỗi phần tử được xác định duy nhất bằng toạ độ dòng và cột của nó. Một mảng hai chiều tmp có kiểu int với 2 dòng và 3 cột có thể được khai báo như sau, int tmp[2][3]; Mảng này sẽ chứa 2 x 3 (6) phần tử, và chúng có thể được biểu diễn như sau: Dòng 0 1 2 Cột 0 e1 e2 e3 1 e4 e5 e6 Ở đó e1 – e6 biểu diễn cho các phần tử của mảng. Cả dòng và cột được đánh số từ 0. Phần tử e6 được xác định bằng dòng 1 và cột 2. Truy xuất đến phần tử này như sau: tmp[1][2]; Mảng 7
- Khởi tạo mảng đa chiều: Khai báo mảng đa chiều có thể kết hợp với việc gán các giá trị khởi tạo. Cần phải cẩn thận lưu ý đến thứ tự các giá trị khởi tạo được gán cho các phần tử của mảng (chỉ có mảng external và static có thể được khởi tạo). Các phần tử trong dòng đầu tiên của mảng hai chiều sẽ được gán giá trị trước, sau đó đến các phần tử của dòng thứ hai, … Hãy xem sự khai báo mảng sau: int ary[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12}; Kết quả của phép khai báo trên sẽ như sau: ary[0][0] = 1 ary[0][1] = 2 ary[0][2] = 3 ary[0][3]= 4 ary[1][0] = 5 ary[1][1] = 6 ary[1][2] = 7 ary[1][3] = 8 ary[2][0] = 9 ary[2][1] = 10 ary[2][2] = 11 ary[2][3] = 12 Chú ý rằng chỉ số thứ 1 chạy từ 0 đến 2 và chỉ số thứ hai chạy tử 0 đến 3. Một điểm cần nhớ là các phần tử của mảng sẽ được lưu trữ ở những vị trí kế tiếp nhau trong bộ nhớ. Mảng ary ở trên có thể xem như là một mảng của 3 phần tử, mỗi phần tử là một mảng của 4 số nguyên, và sẽ xuất hiện như sau: Dòng 0 Dòng 1 Dòng 2 1 2 3 4 5 6 7 8 9 10 11 12 Thứ tự tự nhiên mà các giá trị khởi tạo được gán có thể thay đổi bằng hình thức nhóm các giá trị khởi tạo lại trong các dấu ngoặc nhọn {}. Quan sát sự khởi tạo sau: int ary [3][4] ={ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; Mảng sẽ được khởi tạo như sau: ary[0][0]=1 ary[0][1]=2 ary[0][2]=3 ary[0][3]=0 ary[1][0]=4 ary[1][1]=5 ary[1][2]=6 ary[1][3]=0 ary[2][0]=7 ary[2][1]=8 ary[2][2]=9 ary[2][3]=0 Một phần tử của mảng đa chiều có thể được sử dụng như một biến trong C bằng cách dùng các chỉ số để xác định phần tử của mảng. Ví dụ 11.5: /* Chương trình nhập các số vào một mảng hai chiều. */ #include void main() { int arr[2][3]; int row, col; for(row = 0; row < 2; row++) { for(col = 0; col < 3; col++) { printf(“\nEnter a Number at [%d][%d]: ”, row, col); 8 Lập trình cơ bản C
- scanf(“%d”, &arr[row][col]); } } for(row = 0; row < 2; row++) { for(col = 0; col < 3; col++) { printf(“\nThe Number at [%d][%d] is %d”, row, col, arr[row][col]); } } } Một ví dụ về kết quả thực thi chương trình trên như sau: Enter a Number at [0][0]: 10 Enter a Number at [0][1]: 100 Enter a Number at [0][2]: 45 Enter a Number at [1][0]: 67 Enter a Number at [1][1]: 45 Enter a Number at [1][2]: 230 The Number at [0][0] is 10 The Number at [0][1] is 100 The Number at [0][2] is 45 The Number at [1][0] is 67 The Number at [1][1] is 45 The Number at [1][2] is 230 Mảng hai chiều và chuỗi: Như chúng ta đã biết ở phần trước, một chuỗi có thể được biểu diễn bằng mảng một chiều, kiểu ký tự. Mỗi ký tự trong chuỗi được lưu trữ trong một phần tử của mảng. Mảng của chuỗi có thể được tạo bằng cách sử dụng mảng ký tự hai chiều. Chỉ số bên trái xác định số lượng chuỗi, và chỉ số bên phải xác định chiều dài tối đa của mỗi chuỗi. Ví dụ bên dưới khai báo một mảng chứa 25 chuỗi và mỗi chuỗi có độ dài tối đa 80 ký tự kể cả ký tự null. char str_ary[25][80]; Ví dụ minh hoạ cách sử dụng của một mảng hai chiều: Ví dụ bên dưới minh hoạ cách dùng của mảng hai chiều như các chuỗi. Xét bài toán tổ chức một danh sách tên theo thứ tự bảng chữ cái. Ví dụ sau đây nhập một danh sách các tên và sau đó sắp xếp chúng theo thứ tự bảng chữ cái. Ví dụ 11.6 #include #include #include void main() { int i, n = 0; Mảng 9
- int item; char x[10][12]; char temp[12]; clrscr(); printf(“Enter each string on a separate line \n\n”); printf(“Type ‘END’ when over \n\n”); /* Read in the list of strings */ do { printf(“String %d: ”, n + 1); scanf(“%s”, x[n]); } while (strcmp(x[n++], “END”)); /*Reorder the list of strings */ n = n – 1; for(item = 0; item < n - 1; ++item) { /* Find lowest of remaining strings */ for(i = item + 1; i < n; ++i) { if(strcmp(x[item], x[i]) > 0) { /*Interchange two strings*/ strcpy(temp, x[item]); strcpy(x[item], x[i]); strcpy(x[i], temp); } } } /* Display the arranged list of strings */ printf(“Recorded list of strings: \n”); for(i = 0; i < n; ++i) { printf("\nString %d is %s", i + 1, x[i]); } } Chương trình trên nhập vào các chuỗi đến khi người dùng nhập vào từ “END”. Khi END được nhập vào, chương trình sẽ sắp xếp danh sách các chuỗi và in ra theo thứ tự đã sắp xếp. Chương trình kiểm tra hai phần tử kế tiếp nhau. Nếu thứ tự của chúng không thích hợp, thì hai phần tử sẽ được đổi chỗ. Sự so sánh hai chuỗi được thực hiện với sự trợ giúp của hàm strcmp() và sự đổi chỗ được thực hiện với hàmg strcpy(). Một ví dụ về kết quả thực thi của chương trình như sau: Enter each string on a separate line Type ‘END’ when over String 1: has 10 Lập trình cơ bản C
- String 2: seen String 3: alice String 4: wonderland String 5: END Record list of strings: String 1 is alice String 2 is has String 3 is seen String 4 is wonderland Mảng 11
- Tóm tắt bài học Một mảng là một tập hợp các phần tử dữ liệu có cùng kiểu được tham chiếu bởi cùng một tên. Mỗi phần tử của mảng có cùng kiểu dữ liệu, cùng lớp lưu trữ và có cùng các đặc tính. Mỗi phần tử được lưu trữ ở vị trí kế tiếp nhau trong bộ nhớ chính. Các phần tử dữ liệu được biết như là các phần tử mảng. Chiều của mảng được xác định bởi số các chỉ số cần thiết để định danh duy nhất mỗi phần tử. Các mảng có thể có các kiểu dữ liệu như int, char, float, hoặc double. Phần tử của mảng có thể được tham chiếu bằng cách sử dụng một biến hoặc một biểu thức số nguyên. Một mảng không thể được khởi tạo, trừ khi mỗi phần tử được gán một giá trị riêng lẻ. Các mảng extern và static có thể được khởi tạo khi khai báo. Mảng hai chiều có thể xem như là một mảng của các mảng một chiều. 12 Lập trình cơ bản C
- Kiểm tra tiến độ học tập 1. Một ________ là một tập hợp các phần tử dữ liệu cùng kiểu và được tham chiếu bởi cùng một tên. A. Vòng lặp B. Mảng C. Cấu trúc D. Tất cả đều sai 2. Mỗi phần tử của mảng được định danh bằng ________ duy nhất hoặc ________ được gán tới nó. A. Chỉ mục, Chỉ số B. Miền giá trị, Chỉ số C. Tất cả đều sai 3. Một tên mảng và một tên biến có thể giống nhau (Đúng/Sai) 4. Một phần tử của mảng có thể được sử dụng bất kỳ vị trí nào mà một biến được cho phép và yêu cầu. (Đúng/Sai) 5. Hai mảng, ngay cả khi chúng có cùng kiểu và kích thước, không thể được xem là _________. A. Điều kiện B. Sự phủ định C. Bằng nhau D. Tất cả đều sai 6. Một chuỗi được khai báo như là một mảng kiểu ký tự, được kết thúc bởi ký tự _________. A. chấm phẩy B. phẩy C. NULL D. Tất cả đều sai 7. Các mảng có thể có nhiều hơn một chiều. (Đúng/Sai) 8. Sự so sánh hai chuỗi được thực hiện với sự giúp đỡ của ________ và sự đổi vị trí được thực hiện bằng _________. A. strcmp, strcpy B. strcat, strcpy C. strlen, strcat D. Tất cả đều sai Mảng 13
- Bài tập tự làm 1. Viết một chương trình để sắp xếp các tên sau đây theo thứ tự abc. George Albert Tina Xavier Roger Tim William 2. Viết một chương trình đếm số ký tự nguyên âm trong một dòng văn bản. 3. Viết một chương trình nhập các số sau đây vào một mảng và đảo ngược mảng 34 45 56 67 89 14 Lập trình cơ bản C
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập trình với ngôn ngữ C phần 1
22 p | 215 | 119
-
Lập trình với ngôn ngữ C phần 12
10 p | 148 | 70
-
Lập trình với ngôn ngữ C phần 5
10 p | 115 | 66
-
Lập trình với ngôn ngữ C phần 17
15 p | 94 | 60
-
Lập trình với ngôn ngữ C phần 14
8 p | 110 | 48
-
Lập trình đồ họa trong C (phần 11)
50 p | 87 | 36
-
Lập trình với ngôn ngữ C phần 16
5 p | 85 | 33
-
Một số kiến thức cơ sở về lập trình bằng ngôn ngữ C
153 p | 51 | 14
-
Ebook Sáng tạo trong thuật toán và lập trình với ngôn ngữ Pascal và C#: Tập 1
282 p | 16 | 9
-
Giáo trình Tin học cơ sở phần Lập trình trên ngôn ngữ C - Vũ Bá Huy
95 p | 25 | 8
-
Ebook Sáng tạo trong thuật toán và lập trình với ngôn ngữ Pascal và C#: Tập 3
163 p | 25 | 7
-
Ebook Sáng tạo trong thuật toán và lập trình với ngôn ngữ Pascal và C#: Tập 2
161 p | 17 | 7
-
Giáo trình Lập trình có cấu trúc với ngôn ngữ C: Phần 1
140 p | 14 | 2
-
Bài giảng Lập trình Web: Ngôn ngữ JavaScript trong trang Web - Trần Phước Tuấn
56 p | 11 | 2
-
Bài giảng Lập trình với hợp ngữ - GV. Lê Minh Triết
0 p | 19 | 1
-
Giáo trình Lập trình có cấu trúc với ngôn ngữ C: Phần 2
137 p | 9 | 1
-
Bài giảng Lập trình Windows - Ngôn ngữ C
123 p | 3 | 1
-
Bài giảng Lập trình WebForm: Tổng quan .Net, ngôn ngữ C# - ThS. Nguyễn Hà Giang
52 p | 5 | 0

markdown:
# Lập trình với ngôn ngữ C phần 11
Chia sẻ: Hai Hoang | Ngày: | Loại File: PDF | Số trang:14
lượt xem 56
download
![](http://image.tlvnimg.com/document/thumbnail/2009/20091111/nguyen3/80x100/session_11_concept_6538.jpg)
##
Lập trình với ngôn ngữ C phần 11
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](images/down16x21.png)
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Lập trình với ngôn ngữ C phần 11
- Bài 11 Mảng Mục tiêu: Kết thúc bài học này, bạn có thể: Hiểu được các phần tử của mảng và các chỉ số mảng Khai báo một mảng Hiểu cách quản lý mảng trong C Hiểu một mảng được khởi tạo như thế nào Hiểu mảng chuỗi/ ký tự Hiểu mảng hai chiều Hiểu cách khởi tạo mảng nhiều chiều. Giới thiệu: Có thể bạn sẽ gặp khó khăn khi lưu trữ một tập hợp các phần tử dữ liệu giống nhau trong các biến khác nhau. Ví dụ, điểm cho tất cả 11 cầu thủ của một đội bóng đá phải được ghi nhận trong một trận đấu. Sự lưu trữ điểm của mỗi cầu thủ trong các biến có tên khác nhau thì chắc chắn phiền hà hơn dùng một biến chung cho chúng. Với mảng mọi việc sẽ được thực hiện đơn giản hơn. Một mảng là một tập hợp các phần tử dữ liệu có cùng kiểu. Mỗi phần tử được lưu trữ ở các vị trí kế tiếp nhau trong bộ nhớ chính. Những phần tử này được gọi là phần tử mảng. 11.1 Các phần tử mảng và các chỉ mục: Mỗi phần tử của mảng được định danh bằng một chỉ mục hoặc chỉ số gán cho nó. Chiều của mảng được xác định bằng số chỉ số cần thiết để định danh duy nhất mỗi phần tử. Một chỉ số là một số nguyên dương được bao bằng dấu ngoặc vuông [ ] đặt ngay sau tên mảng, không có khoảng trắng ở giữa. Một chỉ số chứa các giá trị nguyên bắt đầu bằng 0. Vì vậy, một mảng player với 11 phần tử được biểu diễn như sau: player[0], player[1], player[2], ... , player[10]. Như đã thấy, phần tử mảng bắt đầu với player[0], và vì vậy phần tử cuối cùng là player[10] không phải là player[11]. Điều này là do bởi trong C, chỉ số mảng bắt đầu từ 0; do đó trong mảng N phần tử, phần tử cuối cùng có chỉ số là N-1. Phạm vi cho phép của các giá trị chỉ số được gọi là miền giới hạn của chỉ số mảng, giới hạn dưới và giới hạn trên. Một chỉ số mảng hợp lệ phải có một giá trị nguyên nằm trong niềm giới hạn. Thuật ngữ hợp lệ được sử dụng cho một nguyên nhân rất đặc trưng. Trong C, nếu người dùng cố gắng truy xuất một phần tử nằm ngoài dãy chỉ số hợp lệ (như player[11] trong ví dụ trên của mảng), trình biên dịch C sẽ không phát sinh ra lỗi. Tuy nhiên, có thể nó truy xuất một giá trị nào đó dẫn đến kết quả không đoán được. Cũng có nguy cơ viết chồng lên dữ liệu hoặc mã lệnh chương trình. Vì vậy, người lập trình phải đảm bảo rằng tất cả các chỉ số là nằm trong miền giới hạn hợp lệ. Khai báo một mảng: Một mảng có một vài đặc tính riêng biệt và phải được khai báo khi sử dụng chúng. Những đặc tính này bao gồm: Lớp lưu trữ Kiểu dữ liệu của các phần tử mảng. Tên mảng – xác định vị trí phần tử đầu tiên của mảng. Kích thước mảng - một hằng số có giá trị nguyên dương. Mảng 1
- Một mảng được khai báo giống như cách khai báo một biến, ngoại trừ tên mảng được theo sau bởi một hoặc nhiều biểu thức, được đặt trong dấu ngoặc vuông [] xác định chiều dài của mảng. Cú pháp tổng quát khai báo một mảng như sau: lớp_lưu_trữ kiểu_dữ_liệu tên_mảng[biểu_thức_kích_thước] Ở đây, biểu_thức_kích_thước là một biểu thức xác định số phần tử trong mảng và phải định ra một trị nguyên dương. Lớp_lưu_trữ là một tùy chọn. Mặc định lớp automatic được dùng cho mảng khai báo bên trong một hàm hoặc một khối lệnh, và lớp external được dùng cho mảng khai báo bên ngoài một hàm. Vì vậy mảng player được khai báo như sau: int player[11]; Nên nhớ rằng, trong khi khai báo mảng, kích thước của mảng sẽ là 11, tuy nhiên các chỉ số của từng phần tử bên trong mảng sẽ là từ 0 đến 10. Các qui tắc đặt tên mảng là giống với qui tắc đặt tên biến. Một tên mảng và một tên biến không được giống nhau, nó dẫn đến sự nhập nhằng. Nếu một sự khai báo như vậy xuất hiện trong chương trình, trình biên dịch sẽ hiển thị thông báo lỗi. Một vài qui tắc với mảng: • Tất cả các phần tử của một mảng có cùng kiểu. Điều này có nghĩa là, nếu một mảng được khai báo kiểu int, nó không thể chứa các phần tử có kiểu khác. • Mỗi phần tử của mảng có thể được sử dụng bất cứ nơi nào mà một biến được cho phép hay được yêu cầu. • Một phần tử của mảng có thể được tham chiếu đến bằng cách sử dụng một biến hoặc một biểu thức nguyên. Sau đây là các tham chiếu hợp lệ: player[i]; /*Ở đó i là một biến, tuy nhiên cần phải chú ý rằng i nằm trong miền giới hạn của chỉ số đã được khai báo cho mảng player*/ player[3] = player[2] + 5; player[0] += 2; player[i / 2 + 1]; • Kiểu dữ liệu của mảng có thể là int, char, float, hoặc double. 11.2 Việc quản lý mảng trong C: Một mảng được “đối xử” khác với một biến trong C. Thậm chí hai mảng có cùng kiểu và kích thước cũng không thể tương đương nhau. Hơn nữa, không thể gán một mảng trực tiếp cho một mảng khác. Thay vì thế, mỗi phần tử mảng phải được gán riêng lẻ tương ứng với từng phần tử của mảng khác. Các giá trị không thể được gán cho toàn bộ một mảng, ngoại trừ tại thời điểm khởi tạo. Tuy nhiên, từng phần tử không chỉ có thể được gán trị mà còn có thể được so sánh. int player1[11], player2[11]; for (i = 0; i < 11; i++) player1[i] = player2[i]; Tương tự, cũng có thể có kết quả như vậy bằng việc sử dụng các lệnh gán riêng lẻ như sau: player1[0] = player2[0]; player1[1] = player2[1]; ... player1[10] = player2[10]; 2 Lập trình cơ bản C
- Cấu trúc for là cách lý tưởng để thao tác các mảng. Ví dụ 11.1: /* Program demonstrates a single dimensional array */ #include void main() { int num[5]; int i; num[0] = 10; num[1] = 70; num[2] = 60; num[3] = 40; num[4] = 50; for (i = 0; i < 5; i++) pirntf(“\n Number at [%d] is %d”, i, num[i]); } Kết quả của chương trình được trình bày bên dưới: Number at [0] is 10 Number at [1] is 70 Number at [2] is 60 Number at [3] is 40 Number at [4] is 50 Ví dụ bên dưới nhập các giá trị vào một mảng có kích thước 10 phần tử, hiển thị giá trị lớn nhất và giá trị trung bình. Ví dụ 11.2: /*Input values are accepted from the user into the array ary[10]*/ #include void main() { int ary[10]; int i, total, high; for (i = 0; i < 10; i++) { printf(“\nEnter value: %d: “, i + 1); scanf(“%d”, &ary[i]); } /* Displays highest of the entered values */ high = ary[0]; for (i = 1; i < 10; i++) { if (ary[i] > high) high = ary[i]; } printf(“\n Highest value entered was %d”, high); /* Prints average of value entered for ary[10] */ for (i = 0, total = 0; i < 10; i++) Mảng 3
- total = total + ary[i]; printf(“\nThe average of the element of ary is %d”, total/i); } Một ví dụ về kết quả được trình bày dưới đây: Enter value: 1: 10 Enter value: 2: 20 Enter value: 3: 30 Enter value: 4: 40 Enter value: 5: 50 Enter value: 6: 60 Enter value: 7: 70 Enter value: 8: 80 Enter value: 9: 90 Enter value: 10: 10 Highest value entered was 90 The average of the element of ary is 46 Việc khởi tạo mảng: Các mảng không được khởi tạo tự động, trừ khi mỗi phần tử mảng được gán một giá trị riêng lẻ. Không nên dùng các mảng trước khi có sự khởi tạo thích hợp. Điều này là bởi vì không gian lưu trữ của mảng không được khởi tạo tự động, do đó dễ gây ra kết quả không lường trước. Mỗi khi các phần tử của một mảng chưa khởi tạo được sử dụng trong các biểu thức toán học, các giá trị đã tồn tại sẵn trong ô nhớ sẽ được sử dụng, các giá trị này không đảm bảo rằng có cùng kiểu như khai báo của mảng, trừ khi các phần tử của mảng được khởi tạo một cách rõ ràng. Điều này đúng không chỉ cho các mảng mà còn cho các biến thông thường. Trong đoạn mã lệnh sau, các phần tử của mảng được gán giá trị bằng các dùng vòng lặp for. int ary[20], i; for(i=0; i
- Một phần kết quả của chương trình trên như sau: The character now assigned is A The character now assigned is B The character now assigned is C . . . Chương trình trên gán các mã ký tự ASCII cho các phần tử của mảng alpha. Kết quả là khi in với định dạng %c, một chuỗi các ký tự được xuất ra màn hình. Các mảng cũng có thể được khởi tạo khi khai báo. Điều này được thực hiện bằng việc gán tên mảng với một danh sách các giá trị phân cách nhau bằng dấu phẩy (,) đặt trong cặp dấu ngoặc nhọn {}. Các giá trị trong cặp dấu ngoặc nhọn {} được gán cho các phần tử trong mảng theo đúng thứ tự xuất hiện. Ví dụ: int deci[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; static float rates[4] = {0.0, -2.5, 13.75, 18.0}; char company[5] = {‘A’, ‘P’, ‘P’, ‘L’, ‘E’}; int marks[100] = {15, 13, 11, 9} Các giá trị khởi tạo của mảng phải là các hằng, không thể là biến hoặc các biểu thức. Một vài phần tử đầu tiên của mảng sẽ được khởi tạo nếu số lượng giá trị khởi tạo là ít hơn số phần tử mảng được khai báo. Các phần tử còn lại sẽ được khởi tạo giá trị 0. Ví dụ, trong mảng marks sau khi có sự khởi tạo như trên, bốn phần tử đầu tiên (từ 0 đến 3) tương ứng được khởi tạo là 15, 13, 11 và 9. Các phần tử còn lại có giá trị 0. Không thể chỉ khởi tạo các phần tử từ 1 đến 4, hoặc từ 2 đến 4, hay từ 2 đến 5 khi sự khởi tạo được thực hiện tại thời điểm khai báo. Trong C không có khả năng lặp lại sự khởi tạo giá trị. Trong trường hợp sự khởi tạo là tường minh, lớp extern hoặc static, các phần tử của mảng được đảm bảo khởi tạo là 0 (không giống lớp auto). Không cần thiết khai báo kích thước của mảng đang được khởi tạo. Nếu kích thước của mảng được bỏ qua khi khai báo, trình biên dịch sẽ xác định kích thước của mảng bằng cách đếm các giá trị đang được khởi tạo. Ví dụ, sự khai báo mảng external sau đây sẽ chỉ định kích thước của mảng ary là 5 vì có 5 giá trị khởi tạo. int ary[] = {1, 2, 3, 4, 5}; Các mảng chuỗi/ký tự: Một chuỗi có thể được khai báo như là một mảng ký tự, và được kết thúc bởi một ký tự NULL. Mỗi ký tự của chuỗi chiếm 1 byte, và ký tự cuối cùng của chuỗi luôn luôn là ký tự ‘\0’. Ký tư ‘\0’ được gọi là ký tự null. Nó là một mã thoát (escape sequence) tương tự như ‘\n’, thay thế cho ký tự có giá trị 0. Vì ‘\0’ luôn là ký tự cuối cùng của một chuỗi, nên các mảng ký tự phải có nhiều hơn một ký tự so với chiều dài tối đa mà chúng quản lý. Ví dụ, một mảng ary quản lý một chuỗi 10 ký tự phải được khai báo như sau: char ary[11]; Vị trí thêm vào được sử dụng để lưu trữ ký tự null. Nên nhớ rằng ký tự kết thúc (ký tự null) là rất quan trọng. Mảng 5
- Các giá trị chuỗi có thể được nhập vào bằng cách sử dụng hàm scanf(). Với chuỗi ary được khai báo ở trên, mã lệnh nhập sẽ như sau: scanf(“%s”, ary); Trong lệnh trên, ary xác định vị trí nơi mà lần lượt các ký tự của mảng sẽ được lưu trữ. Ví dụ 11.4: #include void main() { char ary[5]; int i; printf(“\n Enter string: ”); scanf(“%s”, ary); printf(“\n The string is %s \n\n”, ary); for (i = 0; i < 5; i++) printf(“\t%d”, ary[i]); } Các kết quả thực thi chương trình với những dữ liệu nhập khác nhau như sau: Nếu chuỗi được nhập là appl, kết quả sẽ là: The string is appl 97 112 112 108 0 Kết quả như trên là của 4 ký tự (appl) và ký tự thứ 5 là ký tự null. Điều này được thấy rõ với mã ASCII cho các ký tự được in ra ở dòng thứ hai. Ký tự thứ năm được in la 0, là giá trị của ký tự null. Nếu chuỗi nhập vào là apple, kết quả sẽ là: The string is apple 97 112 112 108 101 Kết quả ở trên của là một dữ liệu đầu vào có 5 ký tự a, p, p, l và e. Nó không được xem là một chuỗi bởi vì ký tự thứ 5 của mảng không phải là \0. Một lần nữa, điều này được thấy rõ bằng dòng in ra mã ASCII của các ký tự a, p, p, l, e. Nếu chuỗi được nhập vào là ap, thì kết quả sẽ là: The string is ap 97 112 0 6 100 Trong ví dụ trên, khi chỉ có hai ký tự được nhập, ký tự thứ ba sẽ là ký tự null. Điều này cho biết là chuỗi đã được kết thúc. Những ký tự còn lại là những ký tự không dự đoán được. Trong trường hợp trên, tính quan trọng của ký tự null trở nên rõ ràng. Ký tự null xác định sự kết thúc của chuỗi và là cách duy nhất để các hàm làm việc với chuỗi sẽ biết đâu là điểm kết thúc của chuỗi. Mặc dù C không có kiểu dữ liệu chuỗi, nhưng nó cho phép các hằng chuỗi. Một hằng chuỗi là một dãy các ký tự được đặt trong dấu nháy đôi (“”). Không giống như các hằng khác, nó không thể được sửa đổi trong chương trình. Ví dụ như: 6 Lập trình cơ bản C
- “Hi Aptechite!” Trình biên dịch C sẽ tự động thêm vào ký tự null cuối chuỗi. C hỗ trợ nhiều hàm cho chuỗi, các hàm này nằm trong thư viện chuẩn string.h. Một vài hàm được đưa ra trong bảng 11.1. Cách làm việc của các hàm này sẽ được thảo luận trong bài 17. Tên hàm Chức năng strcpy(s1, s2) Sao chép s2 vào s1 strcat(s1, s2) Nối s2 vào cuối của s1 strlen(s1) Trả về chiều dài của s1 strcmp(s1, s2) Trả về 0 nếu s1 và s2 là giống nhau; nhỏ hơn 0 nếu s1 s2 strchr(s1, ch) Trả về một con trỏ trỏ đến vị trí xuất hiện đầu tiên của ch trong s1 strstr(s1, s2) Trả về một con trỏ trỏ đến vị trí xuất hiện đầu tiên của chuỗi s2 trong chuỗi s1 Bảng 11.1 11.3 Mảng hai chiều: Chúng ta đã biết thế nào là mảng một chiều. Điều này có nghĩa là các mảng chỉ có một chỉ số. Các mảng có thể có nhiều hơn một chiều. Các mảng đa chiều giúp dễ dàng trình bày các đối tượng đa chiều, chẳng hạn một đồ thị với các dòng và cột hay tọa độ màn hình của máy tính. Các mảng đa chiều được khai báo giống như các mảng một chiều, ngoại trừ có thêm một cặp dấu ngoặc vuông [] trong trường hợp mảng hai chiều. Một mảng ba chiều sẽ cần ba cặp dấu ngoặc vuông,... Một cách tổng quát, một mảng đa chiều có thể được biểu diễn như sau: storage_class data_type ary[exp1][exp2]....[expN]; Ở đó, ary là một mảng có lớp là storage_class, kiểu dữ liệu là data_type, và exp1, exp2,..... , expN là các biểu thức nguyên dương xác định số phần tử của mảng được kết hợp với mỗi chiều. Dạng đơn giản nhất và thường được sử dụng nhất của các mảng đa chiều là mảng hai chiều. Một mảng hai chiều có thể xem như là một mảng của hai ‘mảng một chiều’. Một mảng hai chiều đặc trưng như bảng lịch trình của máy bay, xe lửa. Để xác định thông tin, ta sẽ chỉ định dòng và cột cần thiết, và thông tin được đọc ra từ vị trí (dòng và cột) được tìm thấy. Tương tự như vậy, một mảng hai chiều là một khung lưới chứa các dòng và cột trong đó mỗi phần tử được xác định duy nhất bằng toạ độ dòng và cột của nó. Một mảng hai chiều tmp có kiểu int với 2 dòng và 3 cột có thể được khai báo như sau, int tmp[2][3]; Mảng này sẽ chứa 2 x 3 (6) phần tử, và chúng có thể được biểu diễn như sau: Dòng 0 1 2 Cột 0 e1 e2 e3 1 e4 e5 e6 Ở đó e1 – e6 biểu diễn cho các phần tử của mảng. Cả dòng và cột được đánh số từ 0. Phần tử e6 được xác định bằng dòng 1 và cột 2. Truy xuất đến phần tử này như sau: tmp[1][2]; Mảng 7
- Khởi tạo mảng đa chiều: Khai báo mảng đa chiều có thể kết hợp với việc gán các giá trị khởi tạo. Cần phải cẩn thận lưu ý đến thứ tự các giá trị khởi tạo được gán cho các phần tử của mảng (chỉ có mảng external và static có thể được khởi tạo). Các phần tử trong dòng đầu tiên của mảng hai chiều sẽ được gán giá trị trước, sau đó đến các phần tử của dòng thứ hai, … Hãy xem sự khai báo mảng sau: int ary[3][4] ={1,2,3,4,5,6,7,8,9,10,11,12}; Kết quả của phép khai báo trên sẽ như sau: ary[0][0] = 1 ary[0][1] = 2 ary[0][2] = 3 ary[0][3]= 4 ary[1][0] = 5 ary[1][1] = 6 ary[1][2] = 7 ary[1][3] = 8 ary[2][0] = 9 ary[2][1] = 10 ary[2][2] = 11 ary[2][3] = 12 Chú ý rằng chỉ số thứ 1 chạy từ 0 đến 2 và chỉ số thứ hai chạy tử 0 đến 3. Một điểm cần nhớ là các phần tử của mảng sẽ được lưu trữ ở những vị trí kế tiếp nhau trong bộ nhớ. Mảng ary ở trên có thể xem như là một mảng của 3 phần tử, mỗi phần tử là một mảng của 4 số nguyên, và sẽ xuất hiện như sau: Dòng 0 Dòng 1 Dòng 2 1 2 3 4 5 6 7 8 9 10 11 12 Thứ tự tự nhiên mà các giá trị khởi tạo được gán có thể thay đổi bằng hình thức nhóm các giá trị khởi tạo lại trong các dấu ngoặc nhọn {}. Quan sát sự khởi tạo sau: int ary [3][4] ={ {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; Mảng sẽ được khởi tạo như sau: ary[0][0]=1 ary[0][1]=2 ary[0][2]=3 ary[0][3]=0 ary[1][0]=4 ary[1][1]=5 ary[1][2]=6 ary[1][3]=0 ary[2][0]=7 ary[2][1]=8 ary[2][2]=9 ary[2][3]=0 Một phần tử của mảng đa chiều có thể được sử dụng như một biến trong C bằng cách dùng các chỉ số để xác định phần tử của mảng. Ví dụ 11.5: /* Chương trình nhập các số vào một mảng hai chiều. */ #include void main() { int arr[2][3]; int row, col; for(row = 0; row < 2; row++) { for(col = 0; col < 3; col++) { printf(“\nEnter a Number at [%d][%d]: ”, row, col); 8 Lập trình cơ bản C
- scanf(“%d”, &arr[row][col]); } } for(row = 0; row < 2; row++) { for(col = 0; col < 3; col++) { printf(“\nThe Number at [%d][%d] is %d”, row, col, arr[row][col]); } } } Một ví dụ về kết quả thực thi chương trình trên như sau: Enter a Number at [0][0]: 10 Enter a Number at [0][1]: 100 Enter a Number at [0][2]: 45 Enter a Number at [1][0]: 67 Enter a Number at [1][1]: 45 Enter a Number at [1][2]: 230 The Number at [0][0] is 10 The Number at [0][1] is 100 The Number at [0][2] is 45 The Number at [1][0] is 67 The Number at [1][1] is 45 The Number at [1][2] is 230 Mảng hai chiều và chuỗi: Như chúng ta đã biết ở phần trước, một chuỗi có thể được biểu diễn bằng mảng một chiều, kiểu ký tự. Mỗi ký tự trong chuỗi được lưu trữ trong một phần tử của mảng. Mảng của chuỗi có thể được tạo bằng cách sử dụng mảng ký tự hai chiều. Chỉ số bên trái xác định số lượng chuỗi, và chỉ số bên phải xác định chiều dài tối đa của mỗi chuỗi. Ví dụ bên dưới khai báo một mảng chứa 25 chuỗi và mỗi chuỗi có độ dài tối đa 80 ký tự kể cả ký tự null. char str_ary[25][80]; Ví dụ minh hoạ cách sử dụng của một mảng hai chiều: Ví dụ bên dưới minh hoạ cách dùng của mảng hai chiều như các chuỗi. Xét bài toán tổ chức một danh sách tên theo thứ tự bảng chữ cái. Ví dụ sau đây nhập một danh sách các tên và sau đó sắp xếp chúng theo thứ tự bảng chữ cái. Ví dụ 11.6 #include #include #include void main() { int i, n = 0; Mảng 9
- int item; char x[10][12]; char temp[12]; clrscr(); printf(“Enter each string on a separate line \n\n”); printf(“Type ‘END’ when over \n\n”); /* Read in the list of strings */ do { printf(“String %d: ”, n + 1); scanf(“%s”, x[n]); } while (strcmp(x[n++], “END”)); /*Reorder the list of strings */ n = n – 1; for(item = 0; item < n - 1; ++item) { /* Find lowest of remaining strings */ for(i = item + 1; i < n; ++i) { if(strcmp(x[item], x[i]) > 0) { /*Interchange two strings*/ strcpy(temp, x[item]); strcpy(x[item], x[i]); strcpy(x[i], temp); } } } /* Display the arranged list of strings */ printf(“Recorded list of strings: \n”); for(i = 0; i < n; ++i) { printf("\nString %d is %s", i + 1, x[i]); } } Chương trình trên nhập vào các chuỗi đến khi người dùng nhập vào từ “END”. Khi END được nhập vào, chương trình sẽ sắp xếp danh sách các chuỗi và in ra theo thứ tự đã sắp xếp. Chương trình kiểm tra hai phần tử kế tiếp nhau. Nếu thứ tự của chúng không thích hợp, thì hai phần tử sẽ được đổi chỗ. Sự so sánh hai chuỗi được thực hiện với sự trợ giúp của hàm strcmp() và sự đổi chỗ được thực hiện với hàmg strcpy(). Một ví dụ về kết quả thực thi của chương trình như sau: Enter each string on a separate line Type ‘END’ when over String 1: has 10 Lập trình cơ bản C
- String 2: seen String 3: alice String 4: wonderland String 5: END Record list of strings: String 1 is alice String 2 is has String 3 is seen String 4 is wonderland Mảng 11
- Tóm tắt bài học Một mảng là một tập hợp các phần tử dữ liệu có cùng kiểu được tham chiếu bởi cùng một tên. Mỗi phần tử của mảng có cùng kiểu dữ liệu, cùng lớp lưu trữ và có cùng các đặc tính. Mỗi phần tử được lưu trữ ở vị trí kế tiếp nhau trong bộ nhớ chính. Các phần tử dữ liệu được biết như là các phần tử mảng. Chiều của mảng được xác định bởi số các chỉ số cần thiết để định danh duy nhất mỗi phần tử. Các mảng có thể có các kiểu dữ liệu như int, char, float, hoặc double. Phần tử của mảng có thể được tham chiếu bằng cách sử dụng một biến hoặc một biểu thức số nguyên. Một mảng không thể được khởi tạo, trừ khi mỗi phần tử được gán một giá trị riêng lẻ. Các mảng extern và static có thể được khởi tạo khi khai báo. Mảng hai chiều có thể xem như là một mảng của các mảng một chiều. 12 Lập trình cơ bản C
- Kiểm tra tiến độ học tập 1. Một ________ là một tập hợp các phần tử dữ liệu cùng kiểu và được tham chiếu bởi cùng một tên. A. Vòng lặp B. Mảng C. Cấu trúc D. Tất cả đều sai 2. Mỗi phần tử của mảng được định danh bằng ________ duy nhất hoặc ________ được gán tới nó. A. Chỉ mục, Chỉ số B. Miền giá trị, Chỉ số C. Tất cả đều sai 3. Một tên mảng và một tên biến có thể giống nhau (Đúng/Sai) 4. Một phần tử của mảng có thể được sử dụng bất kỳ vị trí nào mà một biến được cho phép và yêu cầu. (Đúng/Sai) 5. Hai mảng, ngay cả khi chúng có cùng kiểu và kích thước, không thể được xem là _________. A. Điều kiện B. Sự phủ định C. Bằng nhau D. Tất cả đều sai 6. Một chuỗi được khai báo như là một mảng kiểu ký tự, được kết thúc bởi ký tự _________. A. chấm phẩy B. phẩy C. NULL D. Tất cả đều sai 7. Các mảng có thể có nhiều hơn một chiều. (Đúng/Sai) 8. Sự so sánh hai chuỗi được thực hiện với sự giúp đỡ của ________ và sự đổi vị trí được thực hiện bằng _________. A. strcmp, strcpy B. strcat, strcpy C. strlen, strcat D. Tất cả đều sai Mảng 13
- Bài tập tự làm 1. Viết một chương trình để sắp xếp các tên sau đây theo thứ tự abc. George Albert Tina Xavier Roger Tim William 2. Viết một chương trình đếm số ký tự nguyên âm trong một dòng văn bản. 3. Viết một chương trình nhập các số sau đây vào một mảng và đảo ngược mảng 34 45 56 67 89 14 Lập trình cơ bản C
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập trình với ngôn ngữ C phần 1
22 p |
215 |
119
-
Lập trình với ngôn ngữ C phần 12
10 p |
148 |
70
-
Lập trình với ngôn ngữ C phần 5
10 p |
115 |
66
-
Lập trình với ngôn ngữ C phần 17
15 p |
94 |
60
-
Lập trình với ngôn ngữ C phần 14
8 p |
110 |
48
-
Lập trình đồ họa trong C (phần 11)
50 p |
87 |
36
-
Lập trình với ngôn ngữ C phần 16
5 p |
85 |
33
-
Một số kiến thức cơ sở về lập trình bằng ngôn ngữ C
153 p |
51 |
14
-
Ebook Sáng tạo trong thuật toán và lập trình với ngôn ngữ Pascal và C#: Tập 1
282 p |
16 |
9
-
Giáo trình Tin học cơ sở phần Lập trình trên ngôn ngữ C - Vũ Bá Huy
95 p |
25 |
8
-
Ebook Sáng tạo trong thuật toán và lập trình với ngôn ngữ Pascal và C#: Tập 3
163 p |
25 |
7
-
Ebook Sáng tạo trong thuật toán và lập trình với ngôn ngữ Pascal và C#: Tập 2
161 p |
17 |
7
-
Giáo trình Lập trình có cấu trúc với ngôn ngữ C: Phần 1
140 p |
14 |
2
-
Bài giảng Lập trình Web: Ngôn ngữ JavaScript trong trang Web - Trần Phước Tuấn
56 p |
11 |
2
-
Bài giảng Lập trình với hợp ngữ - GV. Lê Minh Triết
0 p |
19 |
1
-
Giáo trình Lập trình có cấu trúc với ngôn ngữ C: Phần 2
137 p |
9 |
1
-
Bài giảng Lập trình Windows - Ngôn ngữ C
123 p |
3 |
1
-
Bài giảng Lập trình WebForm: Tổng quan .Net, ngôn ngữ C# - ThS. Nguyễn Hà Giang
52 p |
5 |
0

WARC-Type: response

Content-Type: application/http; msgtype=response

Set-Cookie: TLDEVNamespace=11ooio7jpp8j8o2mltrdmjeq62; path=/; domain=.tailieu.vn; HttpOnly

Connection: close

Server: Apache/2.2.31 (CentOS)

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8