Tin học đại cương - Cấu trúc điều khiển
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:
- tin_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
- 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
- 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
- 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
- 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
- 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
- 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
- /ѭ/ѭ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
- 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
- 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
- %ѭ%ѭӟӟ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
- 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
- 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
- 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