Bài giảng Công nghệ thông tin - Chương VI: Hàm và cấu trúc chương trình

ppt 34 trang huongle 3080
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ thông tin - Chương VI: Hàm và cấu trúc chương trình", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pptbai_giang_cong_nghe_thong_tin_chuong_vi_ham_va_cau_truc_chuo.ppt

Nội dung text: Bài giảng Công nghệ thông tin - Chương VI: Hàm và cấu trúc chương trình

  1. CHÆÅNG VI HAÌM VAÌ CÁÚU TRUÏC CHÆÅNG TRÇNH I. Haìm 1. Quy tàõc xáy dæûng mäüt haìm: Haìm coï thãø xem laì mäüt âån vë âäüc láûp cuía chæång trçnh. Caïc haìm coï vai troì ngang nhau, vç váûy khäng cho pheïp xáy dæûng mäüt haìm bãn trong mäüt haìm khaïc. Doìng âáöu tiãn (cuía mäüt haìm) chæïa caïc thäng tin vãö haìm: 1. Kiãøu giaï trë cuía haìm (nãúu haìm coï giaï trë) 2. Tãn haìm 3. Danh saïch caïc âäúi säú (nãúu coï)
  2. Caïc doìng tiãúp theo duìng âãø khai baïo kiãøu giaï trë cuía âäúi säú.Vaì bàõt buäüc phaíi khai baïo kiãøu giaï trë cho táút caí caïc âäúi säú. Tieïp theo laì thán haìm. Thán haìm laì näüi dung chênh cuía haìm noï bàõt âáöu bàòng dáúu { vaì kãút thuïc } Trong thán haìm coï thãø duìng 1 hoàûc nhiãöu lãûnh return hoàûc coï thãø khäng duìng. Vaì coï thãø âàût chuïng åí báút kyì chäù naìo nãúu tháúy thêch håüp. Cuï phaïp chung cuía lãûnh return return ([Biãøu thæïc]); Giaï trë cuía biãøu thæïc trong ngoàûc seî âæåüc gaïn cho haìm.
  3. 2. Quy tàõc hoaût âäüng cuía haìm Caïch goüi haìm: tãn_haìm([Danh saïch tham säú thæûc]); Chuï yï: - Säú tham säú thæûc phaíi bàòng våïi säú tham säú hçnh thæïc (âäúi) vaì mäùi tham säú thæûc phaíi coï cuìng kiãøu våïi giaï trë nhæ kiãøu giaï trë cuía âäúi tæång æïng cuía noï. - Vãö nguyãn tàõc moüi haìm cáön âæåüc khaïi baïo træåïc khi sæí duûng noï. Noï hoaìn toaìn giäúng våïi viãûc khai baïo mäüt biãún.
  4. Vê duû: Viãút chæång trçnh tçm säú låïn nháút vaì nhoí nháút cuía tæìng cäüt trong ma tráûn, coï sæí duûng haìm tçm max, tçm min. #include "stdio.h" int max(a,b) int a,b; { int m; m=a>b?a:b; return (m); }
  5. int min(a,b) int a,b; { int m; m=a<b?a:b; return (m); } main() { int s,k,i,j,ma,mi,max(),min(),temp; int a[3][3]; clrscr();
  6. for (i=0;i<3;++i) for (j=0;j<3;++j) { printf("a[%d,%d] ",i,j); scanf("%d",&temp); a[i][j]=temp; } for (i=0;i<3;++i) { for (j=0; j<3;++j) printf(" %10d",a[i][j]); printf("\n"); }
  7. for (j=0;j<3;++j) { ma=mi=a[0][j]; for (i=0; i<3;++i) { mi=min(a[i][j],mi); ma=max(a[i][j],ma); } printf("\n Cot %d Max = %d \Min = %d",i,ma,mi); } getch(); return 0; }
  8. 3. Caïc khaïi niãûm liãn quan âãún haìm: - Tãn haìm - Kiãøu giaï trë cuía haìm - Âäúi hay tham säú hçnh thæïc - Thán haìm - Khaïi baïo haìm - Låìi goüi haìm - Tham säú thæûc
  9. 4. Caïch xáy dæûng haìm [type] tãn_haìm([Danh saïch âäúi säú]) [Khai baïo kiãøu giaï trë cho táút caí caïc âäúi] { [Caïc khai baïo kiãøu giaï trë cho caïc biãún cuûc bäü vaì caïc haìm noï sæí duûng] [return ([Biãøu thæïc]);] } Chuï yï: - Khi xáy dæûng haìm cáön nàõm væîng nhæîng qui âënh vãö mäúi quan hãû giæîa: tham säú thæûc vaì tham säú hçnh thæïc (âäúi) cuîng nhæ caïc âäúi trong thán cuía haìm
  10. - Âäúi våïi haìm khäng cho giaï trë thç chuïng ta khäng cáön khai baïo kiãøu giaï trë cuía noï. - Âäúi våïi caïc haìm coï giaï trë maì ta quãn khäng khai baïo kiãøu giaï trë cuía noï, thç maïy seî coi haìm âoï coï giaï trë nguyãn. Nhæ váûy âäúi våïi haìm coï gaïi trë kiãøu nguyãn thç khäng cáön khai baïo kiãøu giaï trë cho chuïng. - Khi gàûp lãûnh return coï chæïa biãøu thæïc, thç giaï trë cuía biãøu thæïc bao giåì cuîng âæåüc chuyãøn vãö theo kiãøu giaï trë cuía haìm træåïc khi noï âæåüc gaïn cho haìm.
  11. Ø Nguyãn tàõc hoaût âäüng cuía tham säú thæûc, caïc âäúi vaì caïc biãún cuûc bäü - Do âäúi vaì biãún cuûc bäü âãöu coï phaûm vi hoaût âäüng trong cuìng mäüt haìm nãn âäúi vaì biãún cuûc bäü cáön coï tãn khaïc nhau. - Âäúi vaì biãún cuûc bäü âãöu laì biãún tæû âäüng. Chuïng âæåüc cung cáúp bäü nhåï khi haìm âæåüc khåíi âäüng vaì chuïng seî láûp tæïc biãún máút khi maïy ra khoíi haìm. Nhæ váûy, khäng thãø mang giaï trë cuía âäúi ra khoíi haìm. Âiãöu naìy coï nghéa laì khäng thãø sæí duûng âäúi âãø laìm thay âäøi giaï trë cuía báút kyì mäüt âaûi læåüng naìo åí ngoaìi haìm. - Khi mäüt haìm âæåüc goüi tåïi, viãûc âáöu tiãn laì gaïi trë cuía caïc tham säú thæûc âæåüc gaïn cho caïc âäúi. Nhæ váûy, caïc âäúi chênh laì baín sao cuía caïc tham säú thæûc. Haìm chè laìm vcãûc trãn caïc âäúi, tæïc laì chè laìm viãûc trãn caïc baín sao naìy. Caïc âäúi coï tãø bë biãún âäøi nhæng caïc tham säú thæûc (caïc baín chênh) khäng hãö bë thay âäøi
  12. II. Con troí vaì âëa chè 1. Âia chè Liãn quan âãún mäüt biãún ta âaî coï caïc khaïi niãûm: - Tãn biãún - Kiãøu giaï trë cuía biãún - Giaï trë cuía biãún Khi khai baïo mäüt biãún thç maïy seî cáúp phaït cho biãún mäüt vuìng nhåï coï säú byte bàòng våïi âäü låïn cuía kiãøu âoï. Vê duû: Kiãøu int laì 2 byte Kiãøu float laì 4 byte
  13. Chuïng ta cuîng coï thãø hiãøu: Âëa chè cuía biãún laì säú thæï tæû cuía byte âáöu tiãn trong mäüt daîy caïc byte liãn tiãúp nhau maì maïy daình cho biãún. Cáön chuï yï ràòng: Âëa chè cuía biãún laì mäü säú nguyãn nhæng khäng âæåüc âaïnh âäöng noï våïi caïc säú nguyãn thäng thæåìng trong caïc pheïp tênh Pheïp toaïn &x cho ta âëa chè cuía biãún x
  14. 2. Con troí Con troí laì mäüt biãún duìng âãø chæïa âëa chè. Vç coï nhiãöu loaûi âëa chè nãn cuîng coï báúy nhiãu kiãøu con troí tæång æïng. Vê duû: Con troí kiãøu int duìng âãø chæïa âëa chè caïc biãún kiãøu int. Cuîng nhæ biãún thç con troí cuîng cáön phaíi âæûoc khai baïo træåïc khi sæí duûng. Cuï phaïp khai baïo: type *tãn_con_troí Vê duû: int x,y,*px,*py
  15. Toaïn tæí: & vaì * laì caïc toaïn tæí mäüt ngäi, noï chè taïc âäüng lãn biãún, pháön tæí cuía maíng hoàûc chuäùi. &: Toaïn tæí láúy âaûi chè cuía biãún *: Toaïn tæí láúy giaï trë taûi âëa chè naìo âoï. Caïc toaïn tæí naìy coï âäü æu tiãn hån caïc toaïn tæí säú hoüc vaì coï âäü æu tiãn tæång âæång våïi toaïn tæí mäüt ngäi. 3. Caïc biãøu thæïc con troí: a. Pheïp gaïn con troí: Con troí cuîng laì mäüt biãún nãn ta cuîng coï thãø aïp duûng pheïp gaïn lãn noï. Vê duû: int *p1, *p2,x; Luïc âoï caïc pheïp toaïn sau laì håüp lãû: p1=&x; p2=p1;
  16. b. Pheïp toaïn säú hoüc trãn con troí: Caïc pheïp toaïn säú hoüc âæåüc aïp duûng trãn biãún con troí cuîng nhæ giaï trë cuía noï laì 2 pheïp toaïn cäüng vaì træì. Vê duû: int *p; Thç ta coï thãø duìng: p++: âãø troí âãún pháön tæí kãú tiãúp; p : troí âãún pháön tæí træåïc âoï p= p+3: Nhaíy âãún âëa chè caïch p laì 3*Sizeof(p) Trong biãøu thæïc ta coï thãø duìng caïc daûng sau cuía mäüt biãún con troí p: (*p)++,++(*p):Tàng giaï trë taûi p lãn 1 *(p++): láúy gêa trë pháön tæí kãú tiãúp troí båíi p,
  17. c. So saïnh con troí Caïc pheïp toaïn so saïnh âëa chè cuía caïc biãún con troí laì: >,<, = = 4. Kiãøu giaï trë trong khai baïo: Moüi thaình pháön cuía cuìng mäüt khai baïo (biãún, pháön tæí maíng, haìm, con troí) khi xuáút hiãûn trong biãøu thæïc âãöu coï cuìng mäüt kiãøu giaï trë. Vê duû: int a, b[5], f(), *p; Thç a, b[i], f(x) hoàû *p xuáút hiãûn trong mäüt biãøu thæïc thç chuïng luän luän cho mäüt gia trë kiãøu float.
  18. 5. Haìm coï âäúi con troí: Nãúu âäúi laì con troí thç tham säú thæûc tæång æïng phaíi laì âëa chè cuía biãún hoàûc âëa chè cuía pháön tæí maíng coï kiãøu tæång æïng. Khi âoï âëa chè cuía biãún âæåüc truyãön cho âäúi con troí tæång æïng. Vê duû:
  19. #include "stdio.h" int swap(x,y) int x,y; { int tem; tem=x; x=y; y=tem; return (x,y); }
  20. main() { int x,y,swap(); printf("Nhap x = \n y = "); scanf("%d %d",&x,&y); printf("x = %d y = %d",x,y); swap(x,y); printf("x = %d y = %d",x,y); getch(); return 0; }
  21. #include "stdio.h" swap(x,y) int *x,*y; { int tem; tem=*x; *x=*y; *y=tem; }
  22. main() { int x,y; clrscr(); printf("Nhap x = "); scanf("%d",&x); printf("\nNhap y = "); scanf("%d",&y); printf("x = %d y = %d",x,y); swap(&x,&y); printf("\nx = %d y = %d",x,y); getch(); return 0; }
  23. 6. Sæí duûng biãún con troí: Trong caïc âäúi cuía haìm, ta coï thãø chia thaình 2 loaûi: - Gäöm caïc âäúi duìng âãø chæïa caïc giaï trë âaî biãút.(Tham trë) - Gäöm caïc âäúi duìng âãø chæïa caïc kãút quaí måïi nháûn âæåüc (Tham biãún) Vê duû: Viãút chæång trçnh giaíi phuång trçnh báûc hai coï sæí duûng con troí âãø xáy dæûng haìm giaíi phæång trçnh
  24. #include "stdio.h" #include "math.h" int ptb2(a,b,c,x1,x2) float a,b,c,*x1,*x2; { float delta; if (a==0) return (0); delta=pow(b,2)-4*a*c; if (delta<0) return (-1); *x1=(-b+sqrt(delta))/(2*a); *x2=(-b-sqrt(delta))/(2*a); return (1); }
  25. main() { int s; float a,b,c,x1,x2; clrscr(); printf("Nhap cac gia tri cho he so"); scanf("%f%f%f",&a,&b,&c); printf("\na = %6.2f b = %6.2f c = %6.2f",a,b,c); s=ptb2(a,b,c,&x1,&x2); if (s==0) printf("\nKhong phai la phuong trinh bac 2 vi a=0");
  26. else if (s==-1) printf("\nPhuong trinh vo nghiem"); else printf("\n x1 = %6.2f x2 = %6.2f",x1,x2); getch(); return 0; }
  27. III. Con troí vaì maíng Vê duû: int a[10]; int *p; p =a; Tæì vê duû trãn thç luïc naìy con troí p troí âãún âáöu maíng a, âiãöu naìy coï nghéa p = &a[0] Khi âoï caïc biãøu thæïc sau laì tæång âæång nhau: *p  a[0] *(p+i)  a[i] p+i  &a[i] p=p+1  *pa=a[4]
  28. Viãûc khai baïo maíng laì âëa chè cuía maíng âæåüc cáúp roî raìng vaì âuí kêch thæåïc, âëa chè naìy khäng thay âäøi. Tãn maíng âæåüc xem nhæ mäüt hàòng âëa chè Viãûc khai baïo con troí thç vë trê âæåüc cáúp laì chäø cuía con troí åí, coìn vë trê con troí troí âãún laì tuyì yï, vaì noï chè trao âäøi âëa chè, giaï trë khi noï âaî coï âëa chè. Vê duû: Viãút chæång trçnh nháûp vaìo maíng mäüt chiãöu dæåïi daûng con troí.
  29. #include main() { int a[5],tam, *pa; int i; pa=a; for (i =0; i<5;++i) {printf("\na[%d] = ",i); scanf("%d",pa+i); }
  30. tam=0; for (i=0;i<5;++i) if (*(pa+i)<0) {tam+=1; continue; } for (i=0;i<5;++i) printf("%6d ",*(pa+i)); printf("\nTong so cac so am %d ",tam); getch(); return 0; }
  31. IV. Con troí vaì maíng nhiãöu chiãöu Viãûc xæí lyï maíng nhiãöu chiãöu phæïc taûp hån so våïi maíng mäüt chiãöu. Vç khäng phaíi moüi quy tàõc cuía maíng mäüt chiãöu coï thãø aïp duûng âæåüc våïi maíng nhiãöu chiãöu. Båíi nhæîng lyï do sau: Ø Pheïp toaïn láúy âëa chè khäng duìng âæåüc âäúi våïi caïc pháön tæí cuía maíng nhiãöu chiãöu. Ø Maíng nhiãöu chiãöu thç caïc pháön tæí âæåüc bäú trê liãn tiãúp nhau trong bäü nhåï hãút haìng naìy âãún haìng khaïc. Nhæng khäng thãø sæí dung pheïp toaïn a+i âãø nháûp säú liãûu cho pháön tæí cuía maíng nhiãöu chiãöu.
  32. Tuy nhiãu chuïng ta coï thãø duìng con troí âãø truy cáûp âãún tæìng pháön tæí cuía maíng nhiãöu chiãöu, våïi säú âëa chè bàòng våïi säú pháön tæí trong maíng nhiãöu chiãöu. Vê duû: Viãút chæång trçnh nháûp vaìo mäüt ma trán 3 doìng 3 cäüt vaì xaïc âënh pháön pháön tæí låïn nháút trong ma trán chè sæí duûng con troí, khäng duìng maíng.
  33. #include "stdio.h" main() { int i,max; int *pa; clrscr(); for (i=0;i<9;++i) scanf("%d",pa+i); for (i=1;i<10;++i) {printf(" %10d",*(pa+i-1)); if (i % 3 ==0) printf("\n"); }
  34. max=*pa; for (i=0;i max) max=*(pa+i); printf("\n Max = %d ",max); getch(); return 0; }