Tin học đại cương - Cấu trúc điều khiển

pdf 13 trang vanle 3020
Bạn đang xem tài liệu "Tin học đại cương - Cấu trúc điều khiển", để 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:

  • pdftin_hoc_dai_cuong_cau_truc_dieu_khien.pdf

Nội dung text: Tin học đại cương - Cấu trúc điều khiển

  1. NMLTNMLT CҨҨUU TRTRÚÚCC ĈĈIIӄӄUU KHIKHIӆӆNN Trҫn Phѭӟc Tuҩn tranphuoctuan.khoatoan.dhsp@gmail.com CCҩҩuu trtrúúcc ÿÿiiӅӅuu khikhiӇӇnn „ LӋnh rӁ nhánh: if – else „ LӋnh rӁ nhiӅu nhánh: switch „ Vòng lһp: while, do while, for „ Các tӯ khóa: break và continue NHҰP MÔN LҰP TRÌNH 12/23/2009 2
  2. LLӋӋnhnh rrӁӁ nhnháánhnh ifif Cú pháp: ÿiӅu 0 if (ÿiӃu kiӉn) kiӋn S; z0 „ ĈiӅu kiӋn: biӇu thӭc cho kӃt quҧ SӔ; phҧi S ÿѭӧc ÿһt giӳa cһp ngoһc ÿѫn () „ S phҧi là 1 câu lӋnh, nӃu nhiӅu hѫn 1 lӋnh, các lӋnh phҧi ÿѭӧc ÿһt giӳa cһp ngoһc nhӑn {} – khӕi lӋnh. scanf("%iscanf("%i %i",%i", &a, &a, &b);&b); maxmax == a;a; if(bif(b > > max)max) maxmax == b;b; printf(“Soprintf(“So lonlon la:la: %i\n“,%i\n“, max);max); NHҰP MÔN LҰP TRÌNH 12/23/2009 3 /ѭ/ѭuu ýý „ NӃu ÿһt dҩu chҩm phҭy (;) ӣ ngay sau biӇu thӭc ÿiӅu kiӋn thì lӋnh S cӫa if xem nhѭ “KHÔNG LÀM GÌ” printf(“Nhapprintf(“Nhap motmot soso nguyen:nguyen: "); "); scanf("%i",scanf("%i", &j);&j); if(jif(j >> 0)0);; printf(“%iprintf(“%i lala soso duong“,duong“, j);j); NhapNhap motmot soso nguyen:nguyen: -6-6 -6-6 làlà so so duongduong NHҰP MÔN LҰP TRÌNH 12/23/2009 4
  3. LLӋӋnhnh rrӁӁ nhnháánhnh ifif elseelse Cú pháp: ÿiӅu 0 if (ÿiӃu kiӉn) kiӋn S; z0 Se S else Se; „ Phҫn lӋnh else có thӇ thêm vào trong câu lӋnh if ÿӇ chӍ thӏ các lӋnh thӵc hiӋn khi ÿiӅu kiӋn bҵng 0 (FALSE). scanf("%iscanf("%i %i",%i", &a, &a, &b);&b); if(aif(a > > b)b) maxmax == a;a; elseelse maxmax == b;b; printf(“Soprintf(“So lonlon la:la: %i\n“,%i\n“, max);max); NHҰP MÔN LҰP TRÌNH 12/23/2009 5 NhiNhiӅӅuu llӋӋnhnh ifif llӗӗngng nhaunhau else k͇t n͙i vӟi lӋnh if gҫn nhҩt intint i i == 100;100; i chap nhan duoc if(iif(i > > 0)0) i chap nhan duoc if(iif(i >> 1000)1000) printf("iprintf("i quaqua lon\n");lon\n"); elseelse printf("iprintf("i chapchap nhannhan duoc\n");duoc\n"); intint i i == -20;-20; if(iif(i > > 0)0) {{ ii lala so so amam if(iif(i >> 1000)1000) printf("iprintf("i quaqua lon\n");lon\n"); }} elseelse printf("iprintf("i lala soso am\n");am\n"); NHҰP MÔN LҰP TRÌNH 12/23/2009 6
  4. Cҩu trúc nhiӅӅu chӑn lӵӵa – switch Cú pháp: switch (biӅu thӫc) { case gt1: S1; [break;] case gt2: S2; [break;] case gtn: Sn; [break;] default: Se; } „ BiӇu thӭc: cho kӃt quҧ SӔ NGUYÊN; phҧi ÿѭӧc ÿһt giӳa cһp ngoһc ÿѫn () „ Si : dãy các lӋnh. NHҰP MÔN LҰP TRÌNH 12/23/2009 7 VVíí ddөө llӋӋnhnh switchswitch switchswitch(c)(c) {{ casecase'a': 'a': casecase'A': 'A': printf(“Dienprintf(“Dien tichtich = = %.2f\n",%.2f\n", rr rr pi);pi); breakbreak;; casecase'c': 'c': casecase'C': 'C': printf(“Chuprintf(“Chu vivi = = %.2f\n",%.2f\n", 22 rr pi);pi); breakbreak;; casecase'q': 'q': printf(“Thoat\n");printf(“Thoat\n"); breakbreak;; defaultdefault:: printf(“Chonprintf(“Chon khongkhong hophop le\n");le\n"); }} NHҰP MÔN LҰP TRÌNH 12/23/2009 8
  5. MMӝӝtt ssӕӕ OѭOѭuu ýý –– switchswitch „ NӃu không có giá trӏ nào khӟp, các lӋnh trong phҫn default sӁ ÿѭӧc thӵc thi; và nӃu không có default cNJng không xҧy ra lӛi. „ LӋnh break rҩt quan trӑng. ii == 33 floatfloat f;f; ii == 22 ii == 3;3; ii == 11 switch(f)switch(f) {{ casecase 2:2: switch(i)switch(i) {{ casecase 3:3: printf("iprintf("i == 3\n");3\n"); casecase 2:2: printf("iprintf("i == 2\n");2\n"); switch(i) { switch(i) { casecase 1:1: printf("iprintf("i == 1\n");1\n"); case 2 * j: case 2 * j: }} NHҰP MÔN LҰP TRÌNH 12/23/2009 9 Cҩu trúc nhiӅӅu chӑn lӵӵa – switch gt1 biӇu default thӭc S1; gt2 break; S2; break; Se; NHҰP MÔN LҰP TRÌNH 12/23/2009 10
  6. VVíí ddөө khkháácc –– switchswitch //Doan//Doan chuongchuong trinhtrinh docdoc soso 0 90 9 switchswitch(so)(so) { { casecase0: 0: printf(“khong\n");printf(“khong\n"); casecase1: 1: printf(“mot\n");printf(“mot\n"); casecase2: 2: printf(“hai\n");printf(“hai\n"); casecase3: 3: printf(“ba");printf(“ba"); casecase4: 4: printf(“bon");printf(“bon"); casecase5: 5: printf(“nam");printf(“nam"); casecase6: 6: printf(“sau");printf(“sau"); casecase7: 7: printf(“bay");printf(“bay"); casecase8: 8: printf(“tam");printf(“tam"); casecase9: 9: printf(“chin");printf(“chin"); }} NHҰP MÔN LҰP TRÌNH 12/23/2009 11 LLӋӋnhnh llһһpp whilewhile Cú pháp: while (ÿiӃu kiӉn) ÿiӅu 0 S; kiӋn „ ĈiӅu kiӋn: biӇu thӭc cho kӃt quҧ SӔ; z0 phҧi ÿѭӧc ÿһt giӳa cһp ngoһc ÿѫn () z0 S „ S phҧi là 1 câu lӋnh, nӃu nhiӅu hѫn 1 lӋnh, các lӋnh phҧi ÿѭӧc ÿһt giӳa cһp ngoһc nhӑn {} – khӕi lӋnh. intwhile(j j = 5; > 0) { intwhile(j j = 5; > 0) { jj == 55 printf("j = %i\n", j); while(jprintf("j > 0) = %i\n", j); jj == 44 while(jj ; > 0) printf("jj ; = %i\n", j ); jj == 33 } printf("j = %i\n", j ); } jj == 22 jj == 11 „ while thӵc hiӋn lӋnh S ít nhҩt 0 lҫn NHҰP MÔN LҰP TRÌNH 12/23/2009 12
  7. /ѭ/ѭuu ýý ddҩҩuu chchҩҩmm phphҭҭyy ;; „ Dҩu ‘;’ ÿһt ngay sau biӇu thӭc ÿiӅu kiӋn ÿӗng nghƭa vӟi lӋnh S là rӛng. int j = 5; int j = 5; Chѭong trình bӏ Oһp không thoát ÿѭӧc while(jwhile(j >> 0);0); printf("jprintf("j == %i\n",%i\n", j );j ); ƒ Ĉôi khi ngѭӡi lұp trình c͙ ý s͵ dͭng l͏nh r͟ng intint c, c, j;j; while(scanf("%i",while(scanf("%i", &j)&j) !=!= 1)1) Ĉһt dҩu ‘;’ ÿӇ while((cwhile((c == getch()) getch()) != != 27)27) NӃt thúc while ;; không có S NHҰP MÔN LҰP TRÌNH 12/23/2009 13 LLӋӋnhnh llһһpp dodo whilewhile Cú pháp: do S { S; ÿiӅu 0 }while (ÿiӃu kiӉn); kiӋn „ ĈiӅu kiӋn: biӇu thӭc cho kӃt quҧ SӔ; phҧi ÿѭӧc ÿһt giӳa cһp ngoһc ÿѫn () z0 NHҰP MÔN LҰP TRÌNH 12/23/2009 14
  8. VVíí ddөө dodo whilewhile start intint j j == 5;5; start jj == 55 j = 4 printf("start\n");printf("start\n"); j = 4 j = 3 dodo j = 3 j = 2 printf("jprintf("j == %i\n",%i\n", j );j ); j = 2 j = 1 while(jwhile(j >> 0);0); j = 1 stop printf("stop\n");printf("stop\n"); stop NHҰP MÔN LҰP TRÌNH 12/23/2009 15 VVíí ddөө dodo whilewhile intint j j == -10;-10; printf("start\n");printf("start\n"); startstart dodo {{ jj == -10-10 printf("jprintf("j == %i\n",%i\n", j);j); stopstop j ;j ; }} while(jwhile(j >> 0);0); printf("stop\n");printf("stop\n"); „ do while thӵc hiӋn lӋnh S ít nhҩt 1 lҫn NHҰP MÔN LҰP TRÌNH 12/23/2009 16
  9. LLӋӋnhnh llһһpp forfor LӋnh lһp for dӗn hӃt các thành phҫn cӫa vòng lһp vào trong mӝt câu lӋnh. Cú pháp: for (khӡi ÿӛng; ÿiӃu kiӉn lҹp; ÿiӃu khiӅn) S; khӣi ÿiӅu ÿiӅu z0 S ÿӝng kiӋn khiӇn 0 NHҰP MÔN LҰP TRÌNH 12/23/2009 17 LLӋӋnhnh llһһpp forfor –– VVíí ddөө jj == 55 intint j; j; jj == 44 jj == 33 for(jfor(j == 5;5; jj >> 0;0; j )j ) {{ for(jfor(j == 5;5; jj >> 0;0; j )j ) jj == 22 printf("jprintf("j == %i%i ",", j);j); printf("jprintf("j == %i\n",%i\n", j);j); jj == 11 printf("%s\n",printf("%s\n", ((j%2)==0)?“chan":“le");((j%2)==0)?“chan":“le"); }} jj == 55 lele jj == 44 chanchan jj == 33 lele jj == 22 chanchan jj == 11 lele NHҰP MÔN LҰP TRÌNH 12/23/2009 18
  10. %ѭ%ѭӟӟcc llһһpp trongtrong forfor „ C không giӟi hҥn ÿӝ lӟn cӫa bѭӟc lһp trong for. #include#include intint main(void) main(void) {{ doubledouble angle;angle; for(anglefor(angle == 0.0;0.0; angleangle << 3.14159;3.14159; angleangle +=+= 0.20.2)) printf("sineprintf("sine ofof %.1lf%.1lf isis %.2lf\n",%.2lf\n", angle,angle, sin(angle));sin(angle)); returnreturn 0;0; }} NHҰP MÔN LҰP TRÌNH 12/23/2009 19 NNóóii thêmthêm vvӅӅ forfor „ Phҫn lӋnh khӣi ÿӝng và lӋnh ÿiӅu khiӇn có thӇ gӗm nhiӅu lӋnh ÿѫn giҧn, các lӋnh này cách nhau bӣi dҩu phҭy (,) intint i, i, j,j, k;k; for(ifor(i = = 0,0, jj == 5,5, kk == -1;-1; ii << 10;10; i++,i++, j++,j++, k )k ) ƒ Các phҫn: khӣi ÿӝng, ÿiӅu kiӋn lһp, ÿiӅu khiӇn có thӇ không có lӋnh nào. for(;for(; ii << 10;10; i++,i++, j++,j++, k )k ) for(;ifor(;i << 10;)10;) Dùng while sӁ Kӧp lý hѫn for(;;)for(;;) Vòng lһp không kӃt thúc NHҰP MÔN LҰP TRÌNH 12/23/2009 20
  11. breakbreak „ Tӯ khóa break chӍ thӏ viӋc thoát ngay lұp tӭc khӓi cҩu trúc ÿiӅu khiӇn. 1Ӄu scanf trҧ YӅ 1, „ Cҭn thұn khi sӱ dөng! chѭѫng trình thoát khӓi vòng lһp for for(;;)for(;;) {{ printf(“nhapprintf(“nhap mmӛӛtt soso nguyen:nguyen: "); "); if(scanf("%i",if(scanf("%i", &j)&j) === 1)1) breakbreak;; printf(“khongprintf(“khong hophop le,le, nhapnhap lai\n“lai\n“ }} nhap mot so nguyen : int printf(“jprintf(“j == %i\n", %i\n", j);j); nhap mot so nguyen : int khongkhong hophop le,le, nhapnhap lailai nhapnhap motmot soso nguyen:nguyen: 16 16 jj == 1616 NHҰP MÔN LҰP TRÌNH 12/23/2009 21 continuecontinue „ Tӯ khóa continue chӍ thӏ Eѭӟc nhanh ÿӃn bѭӟc lһp kӃ, bҩt kӇ phía sau ÿó còn nhiӅu lӋnh cҫn lһp. „ Hҥn chӃ sӱ dөng! 1Ӄu j chia hӃt cho 3 thì bӓ qua lӋnh in j j = 1 for(jfor(j == 1;1; jj <=<= 10;10; j++)j++) {{ j = 1 j = 2 if(jif(j %% 33 === 0)0) j = 2 j = 4 continue;continue; j = 4 j = 5 printf("jprintf("j == %i\n",%i\n", j);j); j = 5 j = 7 }} j = 7 jj == 88 jj == 1010 NHҰP MÔN LҰP TRÌNH 12/23/2009 22
  12. TTóómm llѭѭӧӧcc „ if else: rӁ nhánh „ switch rӁ nhiӅu nhánh vӟi ÿiӅu kiӋn là giá trӏ cӫa biӇu thӭc nguyên „ while, do while, for – 3 loҥi vòng lһp cӫa C „ break „ continue NHҰP MÔN LҰP TRÌNH 12/23/2009 23 M͙͙t s͑ bààii ttɪɪpp 1. Nhұp a, b, c. Tìm max. Phát triӇn nhiӅu sӕ 2. Giҧi phѭѫng trình ax+b=0 3. Giҧi phѭѫng trình ax2+bx+c=0 4. Giҧi hӋ phѭѫng trình: a1x+b1y=c1 a2x+b2y=c2 5. Nhұp vào ÿiӇm trung bình, hãy xӃp loҥi hӑc tұp 6. Tính tiӅn ÿiӋn (nhұp vào sӕ kw) 7. Dҥng tam giác (nhұp các cҥnh a, b,c ) 8. Nhұp vào 1 tháng, cho biӃt tháng này thuӝc quý mҩy? 9. ViӃt chѭѫng trình nhұp vào tháng, in ra sӕ ngày cӫa nó 10. ViӃt chѭѫng trình nhұp vào 2 sӕ x, y và 1 trong 4 toán tӱ +, -, *, /. Sau ÿó thӵc hiӋn phép tính (nӃu y = 0 thì thông báo không chia ÿѭӧc) NHҰP MÔN LҰP TRÌNH 12/23/2009 24
  13. 1. ViӃt hàm: 1. TruyӅn vào ký tӵ và sӕ n. In ra n ký tӵ ÿó 2. In hcn các dҩu * có kích thѭӟc m*n 3. In hcn rӛng các dҩu * có kích thѭӟc m*n 4. In tam giác cân các dҩu * có chiӅu cao h 5. In tam giác rӛng các dҩu * có chiӅu cao h 2. Tính các tәng sau: 1. S = 1 + 2 + + n 2. S = 2 + 4 + + 2.n (Îtәng các sӕ chҹn <=n) 3. S = 12+22+ + n2 4. S = 1.2+2.3+ + n.(n+1) 5. S = 1/2 + 2/3 + n/(n+1) 7. Mӝӝt sӕ bàii ttұұp 3. ViӃt hàm: 1. Nhұp n sӕ,, ttính tәng. 2. Nhұp n sӕ,, ttìm max 4. Tính sӕ hҥng thӭ n cӫa dãy fibonaci (f0=f1=1, fn=fn-1+fn-2) 5. Tìm UCLN, BCNN cӫa hai sӕ a,b (Æ Cҩu trúc Phân sӕ) 6. Rút gӑn phân sӕ 7. In ra các ѭӟc sӕ cӫa n 8. Tәng các ѭӟc sӕ cӫa n, Tәng các sӕ chҹn <=n 9. T = n! 10. KiӇm tra n có phҧi là sӕ nguyên tӕ hay không 11. KiӇm tra n có phҧi là sӕ chính phѭѫng hay không 12. Phân tích n thành tích các thӯa sӕ nguyên tӕ NHҰP MÔN LҰP TRÌNH 12/23/2009 25