Bài giảng Nhập môn lập trình: Cấu trúc điều khiển - Trần Phước Tuấn

Cấu trúc điều khiển

„ 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

pdf13 trang | Chia sẻ: phuongt97 | Lượt xem: 421 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Nhập môn lập trình: Cấu trúc điều khiển - Trần Phước Tuấn, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
NMLT C?U TRÚC ?I?U KHI?N Tr?n Ph??c Tu?n tranphuoctuan.khoatoan.dhsp@gmail.com NH?P MÔN L?P TRÌNH 212/23/2009 C?u trúc ?i?u khi?n ? 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 312/23/2009 L?nh r? nhánh if Cú pháp: if (?i?u ki?n) S; ? ?i?u ki?n: bi?u th?c cho k?t qu? S?; ph?i ???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("%i %i", &a, &b); max = a; if(b > max) max = b; printf(“So lon la: %i\n“, max); scanf("%i %i", &a, &b); max = a; if(b > max) max = b; printf(“So lon la: %i\n“, max); ?i?u ki?n S 0 ?0 NH?P MÔN L?P TRÌNH 412/23/2009 ??u ý ? 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(“Nhap mot so nguyen: "); scanf("%i", &j); if(j > 0); printf(“%i la so duong“, j); printf(“Nhap mot so nguyen: "); scanf("%i", &j); if(j > 0); printf(“%i la so duong“, j); Nhap mot so nguyen: -6 -6 là so duong Nhap mot so nguyen: -6 -6 là so duong NH?P MÔN L?P TRÌNH 512/23/2009 L?nh r? nhánh if-else Cú pháp: if (?i?u ki?n) 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("%i %i", &a, &b); if(a > b) max = a; else max = b; printf(“So lon la: %i\n“, max); scanf("%i %i", &a, &b); if(a > b) max = a; else max = b; printf(“So lon la: %i\n“, max); ?i?u ki?n S 0 ?0 Se NH?P MÔN L?P TRÌNH 612/23/2009 Nhi?u l?nh if l?ng nhau else k?t n?i v?i l?nh if g?n nh?t int i = 100; if(i > 0) if(i > 1000) printf("i qua lon\n"); else printf("i chap nhan duoc\n"); int i = 100; if(i > 0) if(i > 1000) printf("i qua lon\n"); else printf("i chap nhan duoc\n"); i chap nhan duoci chap nhan duoc int i = -20; if(i > 0) { if(i > 1000) printf("i qua lon\n"); } else printf("i la so am\n"); int i = -20; if(i > 0) { if(i > 1000) printf("i qua lon\n"); } else printf("i la so am\n"); i la so ami la so am NH?P MÔN L?P TRÌNH 712/23/2009 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 812/23/2009 Ví d? l?nh switch switch(c) { case 'a': case 'A': printf(“Dien tich = %.2f\n", r * r * pi); break; case 'c': case 'C': printf(“Chu vi = %.2f\n", 2 * r * pi); break; case 'q': printf(“Thoat\n"); break; default: printf(“Chon khong hop le\n"); } switch(c) { case 'a': case 'A': printf(“Dien tich = %.2f\n", r * r * pi); break; case 'c': case 'C': printf(“Chu vi = %.2f\n", 2 * r * pi); break; case 'q': printf(“Thoat\n"); break; default: printf(“Chon khong hop le\n"); } NH?P MÔN L?P TRÌNH 912/23/2009 M?t s? ??u ý – switch ? 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 c?ng không x?y ra l?i. ? L?nh break r?t quan tr?ng. float f; switch(f) { case 2: .... float f; switch(f) { case 2: .... switch(i) { case 2 * j: .... switch(i) { case 2 * j: .... i = 3; switch(i) { case 3: printf("i = 3\n"); case 2: printf("i = 2\n"); case 1: printf("i = 1\n"); } i = 3; switch(i) { case 3: printf("i = 3\n"); case 2: printf("i = 2\n"); case 1: printf("i = 1\n"); } i = 3 i = 2 i = 1 i = 3 i = 2 i = 1 NH?P MÔN L?P TRÌNH 1012/23/2009 bi?u th?c S1; break; gt1 S2; break; Se; gt2 default C?u trúc nhi?u ch?n l?a – switch NH?P MÔN L?P TRÌNH 1112/23/2009 Ví d? khác – switch //Doan chuong trinh doc so 0..9 switch(so) { case 0: printf(“khong\n"); case 1: printf(“mot\n"); case 2: printf(“hai\n"); case 3: printf(“ba"); case 4: printf(“bon"); case 5: printf(“nam"); case 6: printf(“sau"); case 7: printf(“bay"); case 8: printf(“tam"); case 9: printf(“chin"); } //Doan chuong trinh doc so 0..9 switch(so) { case 0: printf(“khong\n"); case 1: printf(“mot\n"); case 2: printf(“hai\n"); case 3: printf(“ba"); case 4: printf(“bon"); case 5: printf(“nam"); case 6: printf(“sau"); case 7: printf(“bay"); case 8: printf(“tam"); case 9: printf(“chin"); } NH?P MÔN L?P TRÌNH 1212/23/2009 L?nh l?p while Cú pháp: while (?i?u ki?n) S; ? ?i?u ki?n: bi?u th?c cho k?t qu? S?; ph?i ???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. int j = 5; while(j > 0) printf("j = %i\n", j--); int j = 5; while(j > 0) printf("j = %i\n", j--); j = 5 j = 4 j = 3 j = 2 j = 1 j = 5 j = 4 j = 3 j = 2 j = 1 while(j > 0) { printf("j = %i\n", j); j--; } while(j > 0) { printf("j = %i\n", j); j--; } ? while th?c hi?n l?nh S ít nh?t 0 l?n ?i?u ki?n S 0 ?0 NH?P MÔN L?P TRÌNH 1312/23/2009 ??u ý d?u ch?m ph?y ; ? 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; while(j > 0); printf("j = %i\n", j--); int j = 5; while(j > 0); printf("j = %i\n", j--); Ch?ong trình b? ??p không thoát ???c ? ?ôi khi ng??i l?p trình c? ý s? d?ng l?nh r?ng int c, j; while(scanf("%i", &j) != 1) while((c = getch()) != 27) ; int c, j; while(scanf("%i", &j) != 1) while((c = getch()) != 27) ; ??t d?u ‘;’ ?? ??t thúc while không có S NH?P MÔN L?P TRÌNH 1412/23/2009 L?nh l?p do while Cú pháp: do { S; }while (?i?u 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 () ?i?u ki?n S 0 ?0 NH?P MÔN L?P TRÌNH 1512/23/2009 Ví d? do while int j = 5; printf("start\n"); do printf("j = %i\n", j--); while(j > 0); printf("stop\n"); int j = 5; printf("start\n"); do printf("j = %i\n", j--); while(j > 0); printf("stop\n"); start j = 5 j = 4 j = 3 j = 2 j = 1 stop start j = 5 j = 4 j = 3 j = 2 j = 1 stop NH?P MÔN L?P TRÌNH 1612/23/2009 Ví d? do while ? do while th?c hi?n l?nh S ít nh?t 1 l?n int j = -10; printf("start\n"); do { printf("j = %i\n", j); j--; } while(j > 0); printf("stop\n"); int j = -10; printf("start\n"); do { printf("j = %i\n", j); j--; } while(j > 0); printf("stop\n"); start j = -10 stop start j = -10 stop NH?P MÔN L?P TRÌNH 1712/23/2009 L?nh l?p for 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; ?i?u ki?n 0 ?0kh?i ??ng S ?i?u khi?n NH?P MÔN L?P TRÌNH 1812/23/2009 L?nh l?p for – Ví d? int j; for(j = 5; j > 0; j--) printf("j = %i\n", j); int j; for(j = 5; j > 0; j--) printf("j = %i\n", j); j = 5 j = 4 j = 3 j = 2 j = 1 j = 5 j = 4 j = 3 j = 2 j = 1 for(j = 5; j > 0; j--) { printf("j = %i ", j); printf("%s\n", ((j%2)==0)?“chan":“le"); } for(j = 5; j > 0; j--) { printf("j = %i ", j); printf("%s\n", ((j%2)==0)?“chan":“le"); } j = 5 le j = 4 chan j = 3 le j = 2 chan j = 1 le j = 5 le j = 4 chan j = 3 le j = 2 chan j = 1 le NH?P MÔN L?P TRÌNH 1912/23/2009 ???c l?p trong for ? C không gi?i h?n ?? l?n c?a b??c l?p trong for. #include int main(void) { double angle; for(angle = 0.0; angle < 3.14159; angle += 0.2) printf("sine of %.1lf is %.2lf\n", angle, sin(angle)); return 0; } #include int main(void) { double angle; for(angle = 0.0; angle < 3.14159; angle += 0.2) printf("sine of %.1lf is %.2lf\n", angle, sin(angle)); return 0; } NH?P MÔN L?P TRÌNH 2012/23/2009 Nói thêm v? for ? 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 (,) int i, j, k; for(i = 0, j = 5, k = -1; i < 10; i++, j++, k--) int i, j, k; for(i = 0, j = 5, k = -1; i < 10; i++, j++, 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(; i < 10; i++, j++, k--)for(; i < 10; i++, j++, k--) for(;i < 10;)for(;i < 10;) for(;;)for(;;) Dùng while s? ??p lý h?n Vòng l?p không k?t thúc NH?P MÔN L?P TRÌNH 2112/23/2009 break ? 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. ? C?n th?n khi s? d?ng! for(;;) { printf(“nhap m?t so nguyen: "); if(scanf("%i", &j) == 1) break; printf(“khong hop le, nhap lai\n“ } printf(“j = %i\n", j); for(;;) { printf(“nhap m?t so nguyen: "); if(scanf("%i", &j) == 1) break; printf(“khong hop le, nhap lai\n“ } printf(“j = %i\n", j); nhap mot so nguyen : int khong hop le, nhap lai nhap mot so nguyen: 16 j = 16 nhap mot so nguyen : int khong hop le, nhap lai nhap mot so nguyen: 16 j = 16 ??u scanf tr? ?? 1, ch??ng trình thoát kh?i vòng l?p for NH?P MÔN L?P TRÌNH 2212/23/2009 continue ? T? khóa continue ch? th? ???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! for(j = 1; j <= 10; j++) { if(j % 3 == 0) continue; printf("j = %i\n", j); } for(j = 1; j <= 10; j++) { if(j % 3 == 0) continue; printf("j = %i\n", j); } j = 1 j = 2 j = 4 j = 5 j = 7 j = 8 j = 10 j = 1 j = 2 j = 4 j = 5 j = 7 j = 8 j = 10 ??u j chia h?t cho 3 thì b? qua l?nh in j NH?P MÔN L?P TRÌNH 2312/23/2009 Tóm l??c ? 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 2412/23/2009 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) M?t s? bài t?p NH?P MÔN L?P TRÌNH 2512/23/2009 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) 3. Vi?t hàm: 1. Nh?p n s?, tính t?ng. 2. Nh?p n s?, tì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? 7. M?t s? bài t?p

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_nhap_mon_lap_trinh_cau_truc_dieu_khien_tran_phuoc.pdf