Tài liệu: Tóm tắt ngôn ngữ lập trình C

Chia sẻ: Doan Cong Tuan | Ngày: | Loại File: PDF | Số trang:50

0
587
lượt xem
282
download

Tài liệu: Tóm tắt ngôn ngữ lập trình C

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Kiểu dữ liệu có liên quan chặt chẽ với việc khai báo biến, hằng. Điều này là đương nhiên, bởi lẽ khi khai báo một biến nào đó bạn phải định kiểu dữ liệu tương ứng cho nó, còn việc hiểu biến, hằng là gì? Kiểu dữ liệu là gì? Tôi xin trình bày một cách nôn na, chắc là không chặt chẽ, ...

Chủ đề:
Lưu

Nội dung Text: Tài liệu: Tóm tắt ngôn ngữ lập trình C

  1. Tóm tắt ngôn ngữ lập trình C
  2. Thanh Tïng KS 20_CNTT - §HBKHN Tùa ®Ò trang s¸ch C¶m nghÜ: T«i viÕt lªn nh÷ng dßng nµy kh«ng môc ®Ých g× kh¸c ngoµi : 1. Ghi chÐp l¹i nh÷ng g× m×nh biÕt. 2. Chia xÎ kiÕn thøc víi nh÷ng ng−êi b¹n th©n cña T«i vµ mong ®−îc gãp ý kiÕn nh÷ng chç sai vµ thiÕu sãt ®Ó ®−îc bæ sung kiÕn thøc . V× vËy nh÷ng dßng ch÷ nµy kh«ng may ai cã cÇm ph¶i nã xin ®õng hái T«i lµ ai, v× T«i chØ lµ kÎ v« danh víi c¸c b¹n, vµ h∙y xem ®©y lµ nh÷ng dßng ch÷ nguyÖch ngo¹c mµ th«i. ( T«i xin nãi thËt m«n C nµy T«i cßn ph¶i thi l¹i ®Êy !) Xin ch©n thµnh c¶m ¬n ! Hµ Néi, ngµy 20 th¸ng 2 n¨m 2004 T¸c gi¶ 1 Tãm t¾t ng«n ng÷ lËp tr×nh C
  3. Thanh Tïng KS 20_CNTT - §HBKHN Giíi thiÖu Mét cuèn C dµy tíi h¬n 500 trang ®ã lµ cuèn s¸ch hoµn h¶o. Cßn ®©y T«i chØ ®−a ra ®−îc ph−¬ng ph¸p ®äc vµ hiÓu ®−îc phÇn nµo cuèn s¸ch ®ã th«i. T«i hi väng cuèn s¸ch C vµ thªm nh÷ng lêi gi¶i thÝch nµy cña T«i, nh÷ng ai ch−a biÕt sÏ hiÓu ra phÇn nµo. T«i nh¾c l¹i ®©y chØ lµ nh÷ng lêi gi¶i thÝch do T«i hiÓu khi ®äc s¸ch. ChÝnh v× vËy mµ T«i ®Æt cho nã c¸i tªn lµ: “Tãm t¾t ng«n ng÷ lËp tr×nh C” 2 Tãm t¾t ng«n ng÷ lËp tr×nh C
  4. Thanh Tïng KS 20_CNTT - §HBKHN PhÇn 1 : cÊu tróc mét ch−¬ng tr×nh C. I. C¸c #include : §©y lµ c¸c th− viÖn cña ng−êi lËp tr×nh ®· ®−îc Turbo C ®Þnh nghÜa s½n cho ng−êi lËp tr×nh. Khi viÕt ch−¬ng tr×nh ng−êi lËp tr×nh cÇn khai b¸o nã. Mét sè th− viÖn th−êng dïng lµ: Th− viÖn #include : lµ th− viÖn Vµo / Ra chuÈn. - Th− viÖn #include : lµ th− viÖn - Th− viÖn #include : lµ th− viÖn cho phÐp sö dông c¸c x©u kÝ tù. - Th− viÖn #include : cho phÐp sö dông c¸c hµm to¸n häc nh− - sin,cos…. Th− viÖn #include : lµ th− viÖn cho phÐp khai b¸o ®éng bé - nhí. §©y lµ mét sè th− viÖn th−êng dïng, ngoµi ra cßn mét sè th− viÖn kh¸c n÷a (mong tù t×m hiÓu). Chó ý : Khi viÕt ch−¬ng tr×nh nhÊt thiÕt ph¶i khai b¸o th− viÖn t−¬ng øng, nÕu kh«ng m¸y sÏ b¸o lçi. 2. Hµm chÝnh: §ã lµ hµm main() t¹m thêi b¹n h·y sö dông nã cßn phÇn gi¶i thÝch xin ®−îc tr×nh bµy trong phÇn “X©y dùng vµ sö dông Hµm”. 3.Th©n ch−¬ng tr×nh: §−îc b¾t ®Çu b»ng dÊu khãa “ { “ ,t−¬ng ®−¬ng víi BEGIN trong ng«n ng÷ Turbo Pascal vµ kÕt thóc tr−¬ng tr×nh b»ng dÊu “ } “ , t−¬ng ®−¬ng víi END. Trong th©n ch−¬ng tr×nh th−êng lµ c¸c tr×nh tù sau: - Khai b¸o c¸c biÕn,h»ng…cã sö dông trong ch−¬ng tr×nh. - NhËp gi¸ trÞ cho c¸c biÕn nÕu cÇn. - Xö lý c¸c phÐp to¸n. - §−a ra kÕt qu¶ sau xö lý. Chó ý: §©y chØ lµ cÊu tróc c¬ b¶n cña ch−¬ng tr×nh, cÊu tróc sÏ kh¸c vµ phøc t¹p h¬n rÊt nhiÒu, nÕu ta sö dông cÊu tróc tù ®Þnh nghÜa. 3 Tãm t¾t ng«n ng÷ lËp tr×nh C
  5. Thanh Tïng KS 20_CNTT - §HBKHN II. KiÓu d÷ liÖu vµ vÊn ®Ò khai b¸o biÕn, h»ng : KiÓu d÷ liÖu cã liªn quan trÆt trÏ víi viÖc khai b¸o biÕn, h»ng .§iÒu nµy lµ ®−¬ng nhiªn, bëi lÏ khi khai b¸o mét biÕn nµo ®ã b¹n ph¶i ®Þnh kiÓu d÷ liÖu t−¬ng øng cho nã, cßn viÖc hiÓu biÕn, h»ng lµ g×?, kiÓu d÷ liÖu lµ g× ? T«i xin tr×nh bµy mét c¸ch n«m na, ch¾c lµ kh«ng chÆt trÏ, nh−ng T«i nghÜ nã rÔ hiÓu: 1.BiÕn : Lµ gi¸ trÞ ®Çu vµo cña ch−¬ng tr×nh, nÕu nã chØ lµ thµnh phÇn trung gian ®Ó tÝnh to¸n ( trong tr−êng hîp nµy b¹n ph¶i nhËp gi¸ trÞ cho nã ) . Ng−îc l¹i biÕn lµ gi¸ trÞ ®Çu ra, nÕu nã lµ n¬i chøa kÕt qu¶ sau khi tÝnh to¸n. Chó ý : BiÕn cã thÓ thay ®æi gi¸ trÞ trong ch−¬ng tr×nh. 2.H»ng : Lµ gi¸ trÞ ®Çu vµo cña ch−¬ng tr×nh, h»ng kh«ng thÓ thay ®æi ®−îc gi¸ trÞ trong suèt thêi gian tÝnh to¸n. 3.KiÓu d÷ liÖu : §· ®−îc C ®Þnh nghÜa s½n, gåm cã mét sè kiÓu c¬ b¶n hay sö dông sau: + KiÓu sè nguyªn : Trong C nã ®−îc ®Æt tªn lµ int, chiÕm 2 byte trong bé nhí , cã gi¸ trÞ tõ -32768 -> 32767 (2 byte). Tøc lµ khi khai b¸o mét biÕn nµo ®ã, biÕn Êy kh«ng thÓ nhËn gi¸ trÞ v−ît qu¸ giíi h¹n nµy ®−îc. VD: int a=2345 ®óng. int a=32768 sai do v−ît qu¸ giíi h¹n. Tuy nhiªn kÕt qu¶ tÝnh to¸n ®−îc cña mét biÕn nµo ®ã còng kh«ng ®−îc v−ît qu¸ giíi h¹n trªn. + KiÓu sè thùc: Cã tªn lµ float, chiÕm 4 byte trong bé nhí ph¹m vi biÓu diÔn tõ -3.4E-38 ®Õn 3.4E+38. + KiÓu kÝ tù: Cã tªn lµ char, chiÕm 1 byte trong bé nhí. §©y lµ 3 kiÓu d÷ liÖu ®¬n gi¶n nhÊt vµ hay sö dông nhÊt, ngoµi ra cßn rÊt nhiÒu kiÓu d÷ liÖu kh¸c môc ®Ých lµm t¨ng ph¹m vi biÓu diÔn cña 3 kiÓu d÷ liÖu trªn. ( nÕu cã nhu cÇu xin tù tham kh¶o thªm ). 4 Tãm t¾t ng«n ng÷ lËp tr×nh C
  6. Thanh Tïng KS 20_CNTT - §HBKHN III. LÖnh vµo ( nhËp d÷ liÖu ), ra ( xuÊt d÷ liÖu ) trong C: 1.C¸ch khai b¸o trong C: - NÕu lµ sè nguyªn: int a; víi khai b¸o nµy ta nhËn ®−îc mét biÕn a cã kiÓu lµ sè nguyªn. - NÕu lµ sè thùc : float b; gi¶i thÝch t−¬ng tù trªn. - NÕu lµ m¶ng: VD : float a[10]; m¶ng tªn lµ a kiÓu thùc vµ cã 10 phÇn tö, int b[10]; m¶ng b kiÓu nguyªn cã 10 phÇn tö. Chó ý : Khi nhËp d÷ liÖu kiÓu cña biÕn t−¬ng øng. 2.NhËp ( vµo d÷ liÖu ), xuÊt d÷ liÖu trong C: a. NhËp d÷ liÖu: Có ph¸p: scanf(“%.kiÓu d÷ liÖu”,&.biÕn); VD : Gi¶ sö cã khai b¸o : float a;hoÆc int b; C©u lÖnh nhËp lµ : scanf(“%f ”,&a); hoÆc scanf(“%d”,&b); trong ®ã : -% : B¾t buéc ph¶i cã. - KiÓu d÷ liÖu : Cã thÓ lµ sè thùc (kÝ hiÖu lµ f ). Cã thÓ lµ sè nguyªn (kÝ hiÖu lµ d ). Cã thÓ lµ kÝ tù ( k/hiÖu lµ c ), -& : §¹i diÖn cho phÐp lÊy ®Þa chØ. - biÕn : Lµ 1 biÕn bÊt k× do b¹n tù ®Æt. b. XuÊt d÷ liÖu: Có ph¸p : printf(“ %.®Æc t¶.kiÓu d÷ liÖu”,biÕn); trong ®ã: - §Æc t¶ : Lµ kÜ thuËt lÊy phÇn nguyªn vµ phÇn thËp ph©n. + NÕu viÕt ®Æc t¶ = 4.2f nghÜa lµ 4 sè phÇn nguyªn vµ 2 sè phÇn thËp ph©n (c¸ch viÕt nµy chØ dïng cho sè thùc). + §Æc t¶ = 4d nghÜa lµ 4 chç cho ch÷ sè ®ã. (chØ sö dông cho sè nguyªn). VD: printf(“%4.2f”,a); hoÆc printf(“%4d”,b); 5 Tãm t¾t ng«n ng÷ lËp tr×nh C
  7. Thanh Tïng KS 20_CNTT - §HBKHN IV.Ch−¬ng tr×nh: Trong 3 phÇn trªn T«i ®· giíi thiÖu s¬ qua nh÷ng yÕu tè cÇn thiÕt khi viÕt mét ch−¬ng tr×nh. Trong phÇn nµy xÏ giíi thiÖu 1 cÊu tróc ch−¬ng tr×nh hoµn h¶o vµ mét sè c©u lÖnh cÇn thiÕt, b¾t buéc trong ch−¬ng tr×nh. Cã vÝ dô minh häa: a. CÊu tróc: 1. Khai b¸o c¸c th− viÖn cã liªn quan. Sau dÊu { lµ phÇn khai b¸o c¸c biÕn, h»ng .. cã sö dông trong ch−¬ng tr×nh. 2. 3. NhËp d÷ liÖu cho c¸c biÕn cÇn thiÕt. 4. Xö lý theo yªu cÇu cña ®Ò bµi ®Ó cã ®−îc kÕt qu¶. 5. XuÊt d÷ liÖu ra mµn h×nh. 6. KÕt thóc tr−¬ng tr×nh b»ng dÊu }. b.C¸c c©u lÖnh cÇn thiÕt: 1. LÖnh getch(); : LÖnh nµy yªu cÇu dõng mµn h×nh ®Ó xem kÕt qu¶. 2. LÖnh clrscr(); :LÖnh nµy dïng ®Ó xãa mµn h×nh tr−íc khi xuÊt d÷ liÖu. c. VÝ dô: T«i xin ®−a ra 1 vÝ dô hÕt søc ®¬n gi¶n lµ : Cho hai sè a, b lµ 2 sè thùc ®−îc nhËp vµo tõ bµn phÝm . Yªu cÇu tÝnh tæng cña hai sè ®ã kÕt qu¶ ®−îc bao nhiªu chøa vµo biÕn c, sau ®ã in kÕt qu¶ ra mµn h×nh. Tãm t¾t : D÷ liÖu ®Çu vµo gåm cã : 2 biÕn a vµ b kiÓu sè thùc . §Çu ra : In gi¸ trÞ nhËn ®−îc cña biÕn c (c ph¶i lµ sè thùc). ViÕt ch−¬ng tr×nh: #include #include main() /*hµm chÝnh b¾t buéc ph¶i cã*/ { clrscr(); float a,b,c; /*khai b¸o biÕn*/ printf(“nhËp gi¸ trÞ cho 2 biÕn:\ n”);scanf(“%f”,&a); scanf(“%f”,&b); /*nhËp */ c=a+b; /*tÝnh to¸n*/ printf(“kÕt qu¶ lµ c=%4.2f”,c); /* xuÊt d÷ liÖu*/ getch(); /*dõng mµn h×nh*/ } 6 Tãm t¾t ng«n ng÷ lËp tr×nh C
  8. Thanh Tïng KS 20_CNTT - §HBKHN B¹n cã thÓ tù lÊy cho m×nh vÝ dô ®¬n gi¶n ®Ò lµm quen víi ng«n ng÷ nµy. Bµi tËp vÝ dô: Gi¶i ph−¬ng tr×nh bËc nhÊt : ax + b = 0 ; víi a,b lµ hai sè thùc nhËp tõ bµn phÝm,vµ in kÕt qu¶ ra mµn h×nh. Tãm l¹i: - Khi viÕt mét ch−¬ng tr×nh b¹n ph¶i n¾m ®−îc ®Ò bµi cho g× vµ yªu cÇu lµm g×. §Ó ®¬n gi¶n hãa T«i thiÕt nghÜ b¹n nªn gi¶i bµi to¸n mét c¸ch b×nh th−êng ra giÊy. Sau ®ã b¹n t×m c¸ch ®−a nã vµo khu«n khæ cña ng«n ng÷, víi chó ý lµ. BiÕn nhËn kÕt qu¶ (gi¸ trÞ ®Çu ra) lu«n n»m bªn tr¸i cña phÐp to¸n. BiÕn, h»ng sè tham gia thùc hiÖn ph¸p to¸n (cßn gäi lµ ®Çu vµo) n»m bªn ph¶i biÓu thøc. VD: ViÕt ax=b; /*viÕt sai*/ ViÕt x=b/a /*viÕt ®óng*/ - Sau khi viÕt ®−îc ch−¬ng tr×nh nµy råi, T«i tin ch¾c r»ng b¹n xÏ ®−a ra kÕt luËn r»ng T«i phøc t¹p qu¸ viÕt ra giÊy cßn nhanh vµ ®¬n gi¶n gÊp v¹n lÇn. B¹n yªn t©m cø h·y cè g¾ng ®i, cßn rÊt nhiÒu ®iÒu thó vÞ ®ang chê b¹n khi ®ã T«i tin ch¾c b¹n xÏ cã mét c¸ch nghÜ kh¸c cho mµ xem. V. C¸c vßng lÆp x¸c ®Þnh vµ kh«ng x¸c ®Þnh: 1. C¸ch thøc l−u tr÷: Tr−íc hÕt T«i muèn gi¶i thÝch c¸ch l−u tr÷ trong bé nhí cña m¸y tÝnh nh− sau: Khi mµ b¹n nhËp d÷ liÖu vµo m¸y tÝnh ®−¬ng nhiªn m¸y tÝnh ph¶i cÊp ph¸t mét kho¶ng nhí ®Ó l−u tr÷ d÷ liÖu, vµ nã cã ®Þa chØ x¸c ®Þnh a.Víi sè thùc : Cø mét gi¸ trÞ bÊt k× nµo ®−îc nhËp vµo ®Òu chiÕm 4 byte=32 bit sè nµy ®−îc m· hãa b»ng d·y nhÞ ph©n 0.1 VD : float a; => m« h×nh cÊp ph¸t lµ: Bit cao nhÊt => (mçi « 1 bit) => bit thÊp nhÊt Víi khai b¸o : float a=23; th× sè 23 ®−îc m· hãa thµnh d·y nhÞ ph©n: 0000 0000 0000 0000 0000 0000 0001 0111 => m« h×nh l −u tr÷ lµ bit cao nhÊt => => bit thÊp nhÊt 0 000000 0 0 0 00 00 00 00 00 00 00 00 01 01 1 1 7 Tãm t¾t ng«n ng÷ lËp tr×nh C
  9. Thanh Tïng KS 20_CNTT - §HBKHN b. Víi sè nguyªn: M¸y sÏ cÊp ph¸t 2 byte=16 bit ®Ó l−u tr÷ . M« h×nh l−u tr÷ => Bit cao nhÊt => =>bit thÊp nhÊt VD: Víi khai b¸o: int a=23; => m« h×nh cÊp ph¸t lµ: 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 T−¬ng tù nh− trªn b¹n cã thÓ biÓu diÔn ®−îc víi kiÓu kÝ tù. c. NhËn xÐt: ThËt ®¬n gi¶n khi b¹n nhËp mét sè bÊt k× nµo ®ã, th× lËp tøc m¸y xÏ tù m· hãa vµ cÊp ph¸t mét vïng nhí cho biÕn ®ã. Nh−ng vÊn ®Ò kh«ng ph¶i lµ nhËp vµo nh− thÕ nµo, mµ lµ ®Þa chØ cña nã . B¹n ph¶i biÕt ®−îc ®Þa chØ cña nã th× b¹n míi mong gäi ®−îc nã ra. §©y qu¶ lµ mét vÊn ®Ò hÕt søc phøc t¹p ®èi víi nh÷ng ng−êi b¾t ®Çu lµm quen víi ng«n ng÷ lËp tr×nh.T«i xin ®−a ra hai c¸ch lÊy ®Þa chØ nh− sau: a. goi theo tªn biÕn : Lµ c¸ch gäi b»ng chÝnh c¸i tªn cña biÕn do b¹n ®Æt. b. gäi theo ®Þa chØ : Lµ c¸ch gäi theo chç nhí cña biÕn t−¬ng øng. C¸ch nµy rÊt cã hiÖu qu¶ trong viÖc l−u tr÷ biÕn nhiÒu phÇn tö, tuy nhiªn b¹n ph¶i sö dông 1 con trá ®Ó l−u tr÷ ®Þa chØ (T«i xÏ giíi thiÖu sau) VD nh− biÕn m¶ng, biÕn cÊu tróc).Trong Pascal ®· giíi thiÖu rÊt kÜ vÒ m¶ng tuy nhiªn T«i xin nh¾c l¹i ®Þnh nghÜa m¶ng. M¶ng lµ mét sè c¸c phÇn tö ph©n bè kÕ tiÕp nhau trong bé nhí. VD : víi khai b¸o int a[20]; M¶ng a cã 20 phÇn tö v× vËy a[0] : Lµ phÇn tö ®Çu tiªn trong m¶ng a[1] : Lµ phÇn tö thø 2 trong m¶ng. …… a[19] : Lµ phÇn tö cuèi cïng trong m¶ng. 2. C©u lÖnh ®iÒu kiÖn: Có ph¸p : If { c«ng viÖc; } 8 Tãm t¾t ng«n ng÷ lËp tr×nh C
  10. Thanh Tïng KS 20_CNTT - §HBKHN else { c«ng viÖc; } VD: Gi¶i ph−¬ng tr×nh bËc nhÊt ax2+b=c (®iÒu kiÖn a#0)víi a,b,c ®−îc nhËp tõ bµn phÝm. ViÕt ch−¬ng tr×nh #include #include main() { float a,b,c,x; printf(“nhËp a,b,c=”);scanf(“%f%f%f”,&a&b&c); x2=(c-b)/a; If((c-b)>0) { printf(“ph−¬ng tr×nh cã 2 nghiÖm”); printf(“x1=%4.2f”,sqrt(x)); printf(“x2=%4.2f”,-sqrt(x)); } if((c-b)=0) printf(“co 1 nghiem x=0.”); if((c-b)
  11. Thanh Tïng KS 20_CNTT - §HBKHN VD: H·y nhËp mét m¶ng (10 phÇn tö) sè nguyªn bÊt k× tiªn sau ®ã cho hiÖn ra mµn h×nh d·y sè võa nhËp. Ch−¬ng tr×nh: #include #include main() { int a[10],i; for(i=0;i
  12. Thanh Tïng KS 20_CNTT - §HBKHN Gi¶i thÝch : Vßng lÆp trªn cã ý nghÜa lµ: Trong khi (while) (®iÒu kiÖn (cßn ®óng)) { th× cßn lµm c¸c c«ng viÖc; } VD: T×m gi¸ trÞ cña n ®Ó cã ®−îc giai thõa lín h¬n 120. Ch−¬ng tr×nh: #include #include main() { int n,gt; gt=1; n=0; while(gt
  13. Thanh Tïng KS 20_CNTT - §HBKHN Tãm l¹i: §Ó ph©n biÖt ®−îc sù kh¸c nhau gi÷a c¸c vßng lÆp lµ v« cïng khã kh¨n. Thùc ra mµ nãi th× gi÷a chóng gÇn nh− kh«ng cã danh giíi, mµ chØ tá ra −u viÖt h¬n trong tõng lo¹i bµi to¸n mµ th«i. V× vËy b¹n cÇn n¾m v÷ng vµ ph©n biÖt c¸c lo¹i bµi to¸n ®Ó ¸p dông nã mét c¸ch chÝnh x¸c. B¹n cã thÓ xem c¸c vßng lÆp nh− lµ nh÷ng c«ng cô lµm viÖc, cßn d÷ liÖu lµ nguyªn liÖu. T«i lÊy vÝ dô nh− cã bao giê b¹n dïng dao ®Ó trÆt ®¸ kh«ng trong khi ®ã b¹n cã bóa, tuy nhiªn b¹n cè t×nh th× vÉn cã thÓ lµm ®−îc. b. Vßng lÆp do…while: Có ph¸p: do { c«ng viÖc; } while ; Vßng lÆp nµy chØ kh¸c vßng lÆp trªn ë chç while ®−îc ®Æt ë cuèi c©u cßn néi dung th× gièng nhau. Ghi chó: §èi víi 2 vßng lÆp b, c b¹n cÇn kÕt hîp thªm c©u lÖnh sau th× rÊt cã hiÖu qu¶. (tham kh¶o trong s¸ch). - break ; môc ®Ých ®Ó tho¸t khái vßng lÆp kh«ng cÇn ®Õn ®iÒu kiÖn. - Continue; Khi gÆp lÖnh nµy nã xÏ bá c«ng viÖc ®ang thùc hiÖn vµ quay l¹i thùc hiÖn c«ng viÖc tiÕp theo. Chó ý: B¹n ph¶i hÕt søc quan t©m ®Õn phÇn nµy, v× nã lµ c«ng cô duy nhÊt ®Ó gi¶i quyÕt bµi to¸n. NÕu nh− kh«ng hiÓu phÇn nµy coi nh− b¹n ch¼ng biÕt g× c¶. C¸ch tèt nhÊt b¹n nªn lµm nhiÒu bµi tËp ®Ó hiÓu cÆn kÏ vÊn ®Ò. VI. Con trá vµ hµm: 1. Con trá: Con trá rÊt cã lîi trong mäi ng«n ng÷ v× nã rÊt tiÖn lîi sö dông trong viÖc l−u tr÷ ®Þa chØ. Cã nh÷ng viÖc nÕu nh− kh«ng cã con trá b¹n kh«ng thÓ thùc hiÖn ®−îc c«ng viÖc nh− ý muèn. VÝ dô viÖc lÊy kÕt qu¶ tõ mét ch−¬ng tr×nh con sang ch−¬ng tr×nh chÝnh, nÕu kh«ng sö dông con trá b¹n kh«ng thÓ lÊy kÕt qu¶ ra khái ch−¬ng tr×nh ®ã 12 Tãm t¾t ng«n ng÷ lËp tr×nh C
  14. Thanh Tïng KS 20_CNTT - §HBKHN ®−îc. Tuy nhiªn viÖc sö dông con trá lµm cho chóng ta c¶m thÊy rÊt phøc t¹p.Thùc ra nã còng ®¬n gi¶n th«i b¹n thÊy g× sù kh¸c nhau gi÷a hai ch−¬ng tr×nh sau: Ch−¬ng tr×nh 1: #include #include main() { int a=34; printf(“gia tri cña a la a= : %d”,a); getch(); } kÕt qu¶ in a=34; Ch−¬ng tr×nh 2: < cã con trá> #include #include main() { int a=34,*p; *p=a; printf(“gia tri cña a la a= : %d”,p); getch(); } kÕt qu¶ in a=844; V× sao vËy bëi v× con trá chØ l−u ®Þa chØ cña biÕn a chø nã kh«ng l−u gi¸ trÞ cña biÕn a. Mµ ®Þa chØ trong bé nhí th× ®−¬ng nhiªn kh«ng ph¶i lµ gi¸ trÞ cña biÕn nµo ®ã. §Õn ®©y T«i tin ch¾c b¹n ®· h×nh dung ra råi trø, nÕu ch−a T«i xin ®−îc lÊy mét vÝ dô vui thÕ nµy:B¹n cña b¹n nhê b¹n cÊt gi÷ hé mét c¸i va li ®−¬ng nhiªn b¹n kh«ng thÓ më nã ra ®−îc, chiÕc va li ®ã ch¼ng may bÞ mÊt, khi tr×nh b¸o víi c«ng an th× b¹n chØ cã thÓ tr×nh bµy lµ chiÕc va li ®Ó chç nµo th«i chø kh«ng biÕt ®−îc trong ®ã cã g×, cßn b¹n cña b¹n l¹i biÕt bªn trong cã g× nh−ng kh«ng biÕt nã n»m chç nµo. Tøc lµ g×: 13 Tãm t¾t ng«n ng÷ lËp tr×nh C
  15. Thanh Tïng KS 20_CNTT - §HBKHN “ Con trá chØ l−u tr÷ ®Þa chØ chø kh«ng l−u tr÷ gi¸ trÞ cña biÕn ®ã,®−¬ng nhiªn gi¸ trÞ ph¶i n»m trong ®Þa chØ ” Hi väng b¹n kh«ng cßn nhÇm lÉn n÷a. Vµ sau ®©y T«i xÏ cho c¸c b¹n thÊy sù t¸c dông cña con trá vµ viÖc sö dông nã. T«i xÏ nãi tiÕp vÒ con trá sau, v× nã g¾n liÒn víi viÖc sö dông hµm. 2.Hµm vµ ch−¬ng tr×nh: B¹n cã ph©n biÖt ®−îc hai tõ nµy kh«ng cßn theo T«i th×: + Hµm lµ 1 phÇn ch−¬ng tr×nh lín, gåm cã c¸c hµm sau: 2.1. Hµm void() : Lµ hµm kh«ng ch¶ l¹i kÕt qu¶ trong tªn hµm khi ch−¬ng tr×nh chÝnh gäi ®Õn nã. VD: Cã hµm void tim(int n); Khi ®ã trong ch−¬ng tr×nh chÝnh ®−a ra lêi gäi hµm lµ printf(“kÕt qu¶ t×m lµ%d”,tim(n)); th× ch¾c tr¾n b¹n kh«ng cã ®−îc kÕt qu¶ ®óng. 2.2. Hµm main() : Hµm nµy b¾t buéc cho mäi ch−¬ng tr×nh(cßn gäi lµ hµm chÝnh). 2.3. Hµm cã kiÓu : Trong ®ã cã thÓ lµ c¸c kiÓu nguyªn, thùc,char. VD: int gt(int n); hoÆc hµm float tbc(float a,float b); Lo¹i hµm nµy sau khi thùc hiÖn b¹n ®−a ra c©u lÖnh sau return(biÕn tæng); th× tù kh¾c kÕt qu¶ ®−îc tù ®éng chøa vµo tªn hµm lµ “tbc” , khi ®ã ë ch−¬ng tr×nh chÝnh b¹n gäi tíi nã th× nã sÏ cho kÕt qu¶ mµ nã nhËn ®−îc. 2.4. Hµm tù ®Þnh nghÜa: (T«i xin giíi thiÖu hµm nµy trong phÇn d÷ liÖu cã cÊu tróc v× phÇn nµy ch−a cÇn sö dông ®Õn). + Ch−¬ng tr×nh : Lµ mét d·y c¸c hµm kÕt hîp l¹i víi nhau trong ®ã cã hµm chÝnh ®−îc ®Þnh nghÜa lµ hµm main(). 3. Sö dông hµm: 14 Tãm t¾t ng«n ng÷ lËp tr×nh C
  16. Thanh Tïng KS 20_CNTT - §HBKHN Tõ ®Çu ®Õn giê cø mçi mét vÝ dô ®Òu ph¶i sö dông hµm ®ã lµ hµm main(). Nh−ng trong phÇn nµy T«i muèn tr×nh bµy c¸ch kÕt hîp nhiÒu hµm trong 1 ch−¬ng tr×nh, kÕt hîp víi viÖc sö dông con trá nh− thÕ nµo. a.KÕt hîp hµm main vµ hµm cã kiÓu: T«i sÏ x©y dùng 1 ch−¬ng tr×nh cã 2 hµm trong ®ã hµm main sÏ gäi ®Õn hµm void VD (bt 4,trang 133,ch−¬ng 5,s¸ch cña «ng Êt): ViÕt ch−¬ng tr×nh tÝnh sinx=x-x3/3!+x5/5!- …..+(-1)nx2n+1/(2*n+1)! Víi ®é chÝnh x¸c lµ 0.0001. G¬Þ ý: Ta thÊy x lu«n tû lÖ víi n, tøc n t¨ng th× mò cña x còng t¨ng theo, khi n t¨ng thªm 1 ®¬n vÞ th× ta l¹i cã ®−îc 1 th−¬ng míi, nÕu n lÎ th× th−¬ng nµy mang dÊu trõ vµ ng−îc l¹i. §é chÝnh x¸c 0.0001 tøc lµ khi cã mét th−¬ng míi, nÕu th−¬ng nµy 0.0001.biÕn sinx ®Ó chøa kÕt qu¶ nhËn ®−îc. Sau ®©y lµ ch−¬ng tr×nh: #include #include #include int gt(int n); 15 Tãm t¾t ng«n ng÷ lËp tr×nh C
  17. Thanh Tïng KS 20_CNTT - §HBKHN /*b¾t ®Çu hµm gt*/ int gt(int n) { int i,tg; tg=1; for(i=1;i
  18. Thanh Tïng KS 20_CNTT - §HBKHN NÕu còng víi bµi to¸n nµy T«i khai b¸o lµ: int *gt(int n);tøc lµ sö dông con trá th× ®iÒu g× xÏ x¶y ra: B¹n h·y tù ch¹y ch−¬ng tr×nh nµy th× b¹n xÏ hiÓu nh÷ng g× T«i nãi trong phÇn con trá. Sau ®©y lµ ch−¬ng tr×nh: #include #include #include int *gt(int n); /*b¾t ®Çu hµm gt*/ int *gt(int n) { int i,tg; tg=1; for(i=1;i
  19. Thanh Tïng KS 20_CNTT - §HBKHN while (abs(dk)
  20. Thanh Tïng KS 20_CNTT - §HBKHN main() { float a,b; printf("\n nhap gia tri cua a= ");scanf("%f",&a); printf("\n nhap gia tri cua b= ");scanf("%f",&b); vh(&a,&b); printf("\n nhap gia tri cua a= %4.2f",a); printf("\n nhap gia tri cua b= %4.2f",b); getch(); } nhËp a=2.4;b=3.0; kÕt qu¶ ch¹y: a=3.00;b=2.40; §Ó tá râ uy lùc cña con trá b¹n thö bá * ë p1 vµ p2 mµ xem. 4. C¸c lçi th−êng gÆp trong khi sö dông con trá: §−a ra phÇn nµy T«i, b¶n th©n c¶m thÊy rÊt xÊu hæ bëi v× vèn tiÕng anh cña T«i v« cïng khiªm tèn. Cã g× mong bá qu¸ cho. + M¸y b¸o : inconpatible type conversion : lçi nµy lµ do lêi gäi hµm sai lÏ ra lµ tªn hµm (&biÕn) b¹n chØ viÕt tªnhµm(biÕn) + M¸y b¸o : illegal use of floating point :b¹n ®· viÕt thiÕu dÊu “*” trong 1 biÓu thøc nµo ®ã v× ®©y lµ con trá. + M¸y b¸o : cannot covert int to int :thiÕu dÊu & trong return(tªnhµm) + M¸y b¸o : too few parameters in callto :®èi trong lêi gäi hµm kh«ng t−¬ng thÝch víi trong hµm. + M¸y b¸o : linler error undefined symbol ….:sai ®−êng dÉn gi÷a lêi gäi hµm vµ hµm. Ngoµi ra cßn rÊt nhiÒu lçi kh¸c n÷a mong tù t×m hiÓu.§Æc biÖt cã 1 lçi mµ ch−¬ng tr×nh kh«ng b¸o lçi, nh−ng ch−¬ng tr×nh cho kÕt qu¶ sai, th× ®ã lµ do thuËt to¸n cña b¹n sai hoÆc lµ b¹n sö dông con trá kh«ng ®óng, tøc lµ bµn vÉn ch−a hiÓu g× vÒ con trá . VII. M¶ng vµ con trá : M¶ng lµ mét sè c¸c phÇn tö cã cïng kiÓu d÷ liÖu ®−îc l−u tr÷ kÕ tiÕp nhau trong bé nhí. ViÖc truy nhËp vµo m¶ng b¾t buéc ph¶i th«ng qua chØ sè cña m¶ng. 19 Tãm t¾t ng«n ng÷ lËp tr×nh C
Đồng bộ tài khoản