2 Cau Truc Dieu Khien

2,893 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,893
On SlideShare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
77
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2 Cau Truc Dieu Khien

  1. 1. Cấu trúc điều khiển
  2. 2. Cấu trúc điều khiển <ul><li>Lệnh rẽ nhánh: if – else </li></ul><ul><li>Lệnh rẽ nhiều nhánh: switch </li></ul><ul><li>Vòng lặp: while , do while , for </li></ul><ul><li>Các từ khóa: break và continue </li></ul>
  3. 3. Lệnh rẽ nhánh if <ul><li>Cú pháp : </li></ul><ul><li>if ( điều kiện ) </li></ul><ul><li>S ; </li></ul><ul><li>Điều kiện : biểu thức cho kết quả SỐ ; phải được đặt giữa cặp ngoặc đơn () </li></ul><ul><li>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 . </li></ul>scanf(&quot;%i %i&quot;, &a, &b); max = a; if(b > max) max = b; printf(“So lon la: %i “, max); điều kiện S 0  0
  4. 4. Lưu ý <ul><li>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Ì ” </li></ul>printf(“Nhap mot so nguyen: &quot;); scanf(&quot;%i&quot;, &j); if(j > 0) ; printf(“%i la so duong“, j); Nhap mot so nguyen: -6 -6 là so duong
  5. 5. Lệnh rẽ nhánh if-else <ul><li>Cú pháp : </li></ul><ul><li>if ( điều kiện ) </li></ul><ul><li>S ; </li></ul><ul><li>else S e ; </li></ul><ul><li>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). </li></ul>scanf(&quot;%i %i&quot;, &a, &b); if(a > b) max = a; else max = b; printf(“So lon la: %i “, max); điều kiện S 0  0 S e
  6. 6. Nhiều lệnh if lồng nhau <ul><li>else kết nối với lệnh if gần nhất </li></ul>int i = 100; if(i > 0) if(i > 1000) printf(&quot;i qua lon &quot;); else printf(&quot;i chap nhan duoc &quot;); i chap nhan duoc int i = -20; if(i > 0) { if(i > 1000) printf(&quot;i qua lon &quot;); } else printf(&quot;i la so am &quot;); i la so am
  7. 7. Cấu trúc nhiều chọn lựa – switch <ul><li>Cú pháp : </li></ul><ul><li>switch ( biểu thức ) </li></ul><ul><li>{ </li></ul><ul><li>case gt 1 : S 1 ; [ break ;] </li></ul><ul><li>case gt 2 : S 2 ; [ break ;] </li></ul><ul><li>... </li></ul><ul><li>case gt n : S n ; [ break ;] </li></ul><ul><li>default : S e ; </li></ul><ul><li>} </li></ul><ul><li>Biểu thức : cho kết quả SỐ NGUYÊN ; phải được đặt giữa cặp ngoặc đơn () </li></ul><ul><li>S i : dãy các lệnh. </li></ul>
  8. 8. Ví dụ lệnh switch switch (c) { case 'a': case 'A': printf(“Dien tich = %.2f &quot;, r * r * pi); break ; case 'c': case 'C': printf(“Chu vi = %.2f &quot;, 2 * r * pi); break ; case 'q': printf(“Thoat &quot;); break ; default : printf(“Chon khong hop le &quot;); }
  9. 9. Một số lưu ý – switch <ul><li>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. </li></ul><ul><li>Lệnh break rất quan trọng. </li></ul>float f; switch(f) { case 2: .... switch(i) { case 2 * j: .... i = 3; switch(i) { case 3: printf(&quot;i = 3 &quot;); case 2: printf(&quot;i = 2 &quot;); case 1: printf(&quot;i = 1 &quot;); } i = 3 i = 2 i = 1
  10. 10. Cấu trúc nhiều chọn lựa – switch biểu thức S 1 ; break; gt 1 … S 2 ; break; S e ; gt 2 default
  11. 11. Ví dụ khác – switch //Doan chuong trinh doc so 0..9 switch (so) { case 0: printf(“khong &quot;); case 1: printf(“mot &quot;); case 2: printf(“hai &quot;); case 3: printf(“ba&quot;); case 4: printf(“bon&quot;); case 5: printf(“nam&quot;); case 6: printf(“sau&quot;); case 7: printf(“bay&quot;); case 8: printf(“tam&quot;); case 9: printf(“chin&quot;); }
  12. 12. Lệnh lặp while <ul><li>Cú pháp : while ( điều kiện ) </li></ul><ul><li>S ; </li></ul><ul><li>Điều kiện : biểu thức cho kết quả SỐ ; phải được đặt giữa cặp ngoặc đơn () </li></ul><ul><li>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 . </li></ul>int j = 5; while(j > 0) printf(&quot;j = %i &quot;, j--); j = 5 j = 4 j = 3 j = 2 j = 1 while(j > 0) { printf(&quot;j = %i &quot;, j); j--; } <ul><li>while thực hiện lệnh S ít nhất 0 lần </li></ul>điều kiện S 0  0
  13. 13. Lưu ý dấu chấm phẩy ; <ul><li>Dấu ‘;’ đặt ngay sau biểu thức điều kiện đồng nghĩa với lệnh S là rỗng. </li></ul>int j = 5; while(j > 0); printf(&quot;j = %i &quot;, j--); Chưong trình bị lặp không thoát được <ul><li>Đôi khi người lập trình cố ý sử dụng lệnh rỗng </li></ul>int c, j; while(scanf(&quot;%i&quot;, &j) != 1) while((c = getch()) != 27) ; Đặt dấu ‘;’ để kết thúc while không có S
  14. 14. Lệnh lặp do while <ul><li>Cú pháp : </li></ul><ul><li>do </li></ul><ul><li>S ; </li></ul><ul><li>while ( điều kiện ); </li></ul><ul><li>Điều kiện : biểu thức cho kết quả SỐ ; phải được đặt giữa cặp ngoặc đơn () </li></ul><ul><li>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 . </li></ul>điều kiện S 0  0
  15. 15. Ví dụ do while int j = 5; printf(&quot;start &quot;); do printf(&quot;j = %i &quot;, j--); while(j > 0); printf(&quot;stop &quot;); start j = 5 j = 4 j = 3 j = 2 j = 1 stop
  16. 16. Ví dụ do while <ul><li>do while thực hiện lệnh S ít nhất 1 lần </li></ul>int j = -10; printf(&quot;start &quot;); do { printf(&quot;j = %i &quot;, j); j--; } while(j > 0); printf(&quot;stop &quot;); start j = -10 stop
  17. 17. Lệnh lặp for <ul><li>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. </li></ul><ul><li>Cú pháp : </li></ul><ul><li>for ( khởi động ; điều kiện lặp ; điều khiển ) </li></ul><ul><li>S ; </li></ul>điều kiện 0  0 khởi động S điều khiển
  18. 18. Lệnh lặp for – Ví dụ int j; for(j = 5; j > 0; j--) printf(&quot;j = %i &quot;, j); j = 5 j = 4 j = 3 j = 2 j = 1 for(j = 5; j > 0; j--) { printf(&quot;j = %i &quot;, j); printf(&quot;%s &quot;, ((j%2)==0)?“chan&quot;:“le&quot;); } j = 5 le j = 4 chan j = 3 le j = 2 chan j = 1 le
  19. 19. Bước lặp trong for <ul><li>C không giới hạn độ lớn của bước lặp trong for. </li></ul>#include <math.h> int main(void) { double angle; for(angle = 0.0; angle < 3.14159; angle += 0.2 ) printf(&quot;sine of %.1lf is %.2lf &quot;, angle, sin(angle)); return 0; }
  20. 20. Nói thêm về for <ul><li>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 (,) </li></ul>int i, j, k; for(i = 0, j = 5, k = -1; i < 10; i++, j++, k--) <ul><li>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. </li></ul>for(; i < 10; i++, j++, k--) for(;i < 10;) for(;;) Dùng while sẽ hợp lý hơn Vòng lặp không kết thúc
  21. 21. break <ul><li>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. </li></ul><ul><li>Cẩn thận khi sử dụng! </li></ul>for(;;) { printf(“nhap một so nguyen: &quot;); if(scanf(&quot;%i&quot;, &j) == 1) break ; printf(“khong hop le, nhap lai “ } printf(“j = %i &quot;, j); nhap mot so nguyen : int khong hop le, nhap lai nhap mot so nguyen: 16 j = 16 Nếu scanf trả về 1, chương trình thoát khỏi vòng lặp for
  22. 22. continue <ul><li>Từ khóa continue chỉ thị bước nhanh đến bước lặp kế, bất kể phía sau đó còn nhiều lệnh cần lặp. </li></ul><ul><li>Hạn chế sử dụng! </li></ul>for(j = 1; j <= 10; j++) { if(j % 3 == 0) continue; printf(&quot;j = %i &quot;, j); } j = 1 j = 2 j = 4 j = 5 j = 7 j = 8 j = 10 Nếu j chia hết cho 3 thì bỏ qua lệnh in j
  23. 23. Tóm lược <ul><li>if else : rẽ nhánh </li></ul><ul><li>switch rẽ nhiều nhánh với điều kiện là giá trị của biểu thức nguyên </li></ul><ul><li>while , do while , for – 3 loại vòng lặp của C </li></ul><ul><li>break </li></ul><ul><li>continue </li></ul>

×