Bài giảng Ngôn ngữ lập trình C - Các câu lệnh có cấu trúc
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
Tóm tắt nội dung Bài giảng Ngôn ngữ lập trình C - Các câu lệnh có cấu trúc, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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 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 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 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 { } Câu lệnh rẽ nhánh if Dạng khuyết Dạng đầy đủ Dạng khuyết Cú pháp: if (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 Biểu thức true false Sơ đồ khối Dạng đầy đủ Cú pháp: if (Biểu thức) ; else ; Biểu thức true false Sơ đồ khối Dạng đầy đủ (tiếp) Thực hiện Tính giá trị của 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 Biểu thức true false Sơ đồ khối 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; } 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; } Kết quả 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 đó Bài tập Giải và biện luận các phương trình: ax2+bx+c=0 ax+b=0 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 Câu lệnh while Cú pháp: while (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 , quay lại tính giá trị của Biểu thức Ngược lại, chuyển sang câu lệnh sau while Biểu thức True False Sơ đồ khối 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; } Kết quả 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; } Kết quả do while Cú pháp: do { ; } while (Biểu thức); Thực hiện: Thi hành Tính và kiểm tra Biểu thức 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 Biểu thức True False Sơ đồ khối 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(); } Kết quả Câu lệnh for Cú pháp: for ([BT1]; [BT2]; [BT3]) ; Thực hiện: Tương đương: BT1; while (BT2) { ; BT3; } BT1; BT2 ; BT3; False True Sơ đồ khối 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 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(); } 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 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(); } Kết quả Câu lệnh chọn switch BT=h1 BT=h2 BT=hn …False False False True True True Sơ đồ khối 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;]] } 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 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 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(); } Kết quả 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; 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(); } 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 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; 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(); } Kết quả 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; 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(); } Kết quả
File đính kèm:
- Bài giảng Ngôn ngữ lập trình C - Các câu lệnh có cấu trúc.pdf