Bài giảng Ngôn ngữ lập trình C - Chương 2: Các câu lệnh có cấu trúc - Ninh Thị Thanh Tâm

pdf 43 trang phuongnguyen 5800
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Ngôn ngữ lập trình C - Chương 2: Các câu lệnh có cấu trúc - Ninh Thị Thanh Tâm", để 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:

  • pdfbai_giang_ngon_ngu_lap_trinh_c_chuong_2_cac_cau_lenh_co_cau.pdf

Nội dung text: Bài giảng Ngôn ngữ lập trình C - Chương 2: Các câu lệnh có cấu trúc - Ninh Thị Thanh Tâm

  1. NGÔN NGỮ LẬP TRÌNH C Các câu lệnh có cấu trúc Ninh Thị Thanh Tâm Khoa CNTT – HV Quản lý Giáo dục
  2. Mục đích  Sử dụng thành thạo hằng, biến  Làm quen với cách sử dụng các toán tử  Biết cách sử dụng các câu lệnh điều khiển để viết chương trình
  3. Nội dung  Câu lệnh đơn, câu lệnh ghép  Câu lệnh if  Câu lệnh switch  Câu lệnh while  Câu lệnh do while  Câu lệnh for  Câu lệnh điều khiển vòng lặp
  4. Câu lệnh  Câu lệnh đơn Một biểu thức lệnh, lời gọi hàm kết thúc bởi dấu chấm phẩy (;)  Câu lệnh ghép Là tập hợp các câu lệnh đơn được bao bởi cặp dấu { }
  5. Câu lệnh rẽ nhánh if  Dạng khuyết  Dạng đầy đủ
  6. Dạng khuyết  Cú pháp: if (Biểu thức) ; false true Biểu thức  Thực hiện:  Tính giá trị Biểu thức  Nếu Biểu thức != 0, thực hiện  Ngược lại, bỏ qua Sơ đồ khối
  7. Dạng đầy đủ  Cú pháp: if (Biểu thức) false ; true Biểu thức else ; Sơ đồ khối
  8. Dạng đầy đủ (tiếp)  Thực hiện  Tính giá trị của Biểu thức false true Biểu thức  Nếu Biểu thức != 0, thực hiện  Nếu Biểu thức = 0, thực hiện Sơ đồ khối
  9. Ví dụ 1 – Cách 1 /*IF1.C*/ #include main() { float a, b, c, max; printf("Nhap 3 so thuc\n"); scanf("%f%f%f",&a, &b, &c); if (a<b) if (b<c) max = c; else max = b; else if (a<c) max = c; else max = a; printf("Gia tri lon nhat cua %6.2f, %6.2f va %6.2f la\n",a,b,c); printf("%6.2f",max); getch(); return 0; }
  10. Ví dụ 1 - Cách 2 /*IF2.C*/ #include main() { float a, b, c, max; clrscr(); printf("Nhap 3 so thuc\n"); scanf("%f%f%f",&a, &b, &c); max = a; if (max<b) max = b; if (max<c) max = c; printf("Gia tri lon nhat cua %6.2f, %6.2f va %6.2f la\n",a,b,c); printf("%6.2f",max); getch(); return 0; }
  11. Kết quả
  12. Chú ý  Câu lệnh trước else vẫn có dấu (;)  Nên đặt Biểu thức (BT) trong cặp dấu ( )  Ta có thể viết if (BT) thay cho if (BT != 0)  , , có thể là câu lệnh đơn hoặc câu lệnh ghép  Khi có nhiều câu lệnh if lồng nhau:  else được gắn với if không có else ở gần nhất trước đó
  13. Bài tập  Giải và biện luận các phương trình: ax2+bx+c=0 ax+b=0
  14. Câu lệnh lặp  for  Lặp với điều kiện trước while  Lặp với điều kiện sau do while
  15. Câu lệnh while  Cú pháp: while (Biểu thức) False Biểu thức ;  Thực hiện: True  Tính giá trị Biểu thức  Nếu Biểu thức != 0, thực hiện , quay lại tính giá trị của Biểu thức Sơ đồ khối  Ngược lại, chuyển sang câu lệnh sau while
  16. Ví dụ 2 /*WHILE1.C*/ #include main() { int count = 0; int total = 0; clrscr(); while (count<=10) { total = total +count*count; count++; } printf("count=%d",count); printf("\ntotal=%d",total); getch(); return 0; }
  17. Kết quả
  18. Ví dụ 3 /*WHILE1.C*/ #include main() { float a, b, c; clrscr(); printf("\nNhap vao ba canh cua tam giac:"); scanf("%f%f%f",&a,&b,&c); while (a+b<=c||a+c<=b||b+c<=a) { printf("Chua dung, yeu cau nhap lai\n"); scanf("%f%f%f",&a,&b,&c); } printf("OK"); getch(); return 0; }
  19. Kết quả
  20. do while  Cú pháp: do { ; } while (Biểu thức); False  Thực hiện: Biểu thức  Thi hành  Tính và kiểm tra Biểu thức True  Nếu Biểu thức != 0, quay lại thực hiện  Ngược lại, thoát khỏi vòng lặp Sơ đồ khối
  21. Ví dụ /*dowhile.c*/ #include void main() { float a, b, c; printf("\nNhap va do dai ba canh tam giac:\n"); do { scanf("%f%f%f",&a,&b,&c); if (a+b<=c||a+c<=b||b+c<=a) printf("Not OK\n"); } while (a+b<=c||a+c<=b||b+c<=a); printf("OK"); getch(); }
  22. Kết quả
  23. Câu lệnh for  Cú pháp: BT1; for ([BT1]; [BT2]; [BT3]) ; False  Thực hiện: BT2 Tương đương: True BT1; while (BT2) { ; BT3; ; BT3; } Sơ đồ khối
  24. Câu lệnh for (tiếp)  Thực hiện: Thực hiện BT1 (đầu tiên và duy nhất) Tính giá trị của BT2  Nếu BT2 !=0, thực hiện và BT3, tính lại BT2  Nếu BT2 = 0, kết thúc vòng lặp for BT1 khởi đầu giá trị cho các biến điều khiển BT2 xác định số bước của vòng lặp for
  25. Chú ý  Có thể có nhiều biến điều khiển /*for2.c*/ #include #include void main() { int i, j; clrscr(); for (i = 1, j=100; i<j; i++, j ) printf("(%d,%d)",i,j); getch(); }
  26. Chú ý  Có thể bỏ qua một trong ba biểu thức thành phần của vòng for Phải có dấu “;” for (BT1; ;BT2) là một chu trình vô hạn  Thoát khỏi vòng lặp: dùng câu lệnh return hoặc break  Có nhiều vòng lặp for lồng nhau
  27. Ví dụ /*for3.c*/ #include #include void main() { int i, j; for(i=1; i<=10; i++) { for (j=1; j<=10; j++) printf("%5d",i*j); printf("\n"); } getch(); }
  28. Kết quả
  29. Câu lệnh chọn switch False BT=h1 False BT=h2 BT=hn False True True True Sơ đồ khối
  30. Câu lệnh chọn switch (tiếp)  Cú pháp switch (Biểu thức) { case (Giá trị 1): ; [break;] case (Giá trị 2): ; [break;] case (Giá trị n): ; [break;] [default: [break;]] }
  31. Câu lệnh chọn switch (tiếp)  Thực hiện Tính giá trị của Biểu thức, lần lượt so sánh với các Giá trị i Nếu giá trị của Biểu thức bằng Giá trị i nào đó thì thực hiện Trong trường hợp Biểu thức khác Giá trị i với mọi i=1 n thì  Khi có default, máy nhảy tới câu lệnh có nhãn default  Khi không có default, máy thoát ra khỏi toán tử switch
  32. Câu lệnh chọn switch (tiếp)  Ra khỏi toán tử switch khi Gặp câu lệnh break Gặp dấu ngoặc nhọn cuối cùng của switch Có thể sử dụng câu lệnh goto Sử dụng return nếu nằm trong thân hàm
  33. Ví dụ /*swith1.c*/ #include"stdio.h" main() { int ma; tt: printf("Nhap ma = "); scanf("%d", &ma); switch(ma) { case 1: printf("So cap\n"); break; case 2: printf("Trung cap\n"); break; case 3: printf("Dai hoc\n"); break; case 4: printf("Cao hoc\n"); break; case 5: printf("Pho tien sy\n"); break; case 6: printf("Tien sy\n"); break; default: printf("Nhap sai\n"); } getch(); }
  34. Kết quả
  35. Ví dụ /*switch2.c*/ #include #include void main() { int thang, nam; clrscr(); printf("\nNhap thang can tinh ngay:"); scanf("%d",&thang); printf("Nhap nam:"); scanf("%d",&nam); switch(thang) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("Thang %d nam %d co %d ngay\n",thang, nam,31); break;
  36. Ví dụ case 4: case 6: case 9: case 11: printf("Thang %d nam %d co %d ngay\n",thang, nam,30); break; case 2: if (nam%4==0||nam%100!=0) printf("Thang %d nam %d co %d ngay\n",thang, nam,29); else printf("Thang %d nam %d co %d ngay\n",thang, nam,28); break; } getch(); }
  37. Câu lệnh điều khiển vòng lặp  Lệnh break  Lệnh continue Khi cần thoát khỏi một chu trình mà không thực hiện kiểm tra điều kiện lặp
  38. Lệnh break  Mục đích: Thoát ra khỏi các vòng lặp for, while, do while trong cùng chứa nó Thoát khỏi câu lệnh rẽ nhánh switch  Câu lệnh: break;
  39. Ví dụ /*break.c*/ #include #include void main() { int n; clrscr(); do { printf("\nNhap n="); scanf("%d",&n); if (n>0) { printf("\nOK"); break; } else printf("\nNot OK"); } while (1); getch(); }
  40. Kết quả
  41. Lệnh continue  Bỏ qua câu lệnh còn lại trong thân vòng lặp để bắt đầu một lần lặp mới  Câu lệnh: continue;
  42. Ví dụ /*continue.c*/ #include #include void main() { int i, n, s=0; clrscr(); for (i=1; i<=10; i++) { printf("\nLan nhap thu %d:",i); printf("\nn="); scanf("%d",&n); if (n<=0) continue; printf("Ban vua nhap mot so duong"); s += n; } printf("Tong cac so duong vua nhap %d",s); getch(); }
  43. Kết quả