Bài viết “[Lập trình C từ 0 đến 1] Bài 10. Các cấu trúc điều khiển if…else, switch…case và goto” là bài viết tiếp theo nằm trong series hướng dẫn học lập trình C của tek4.vn.
Độc giả có thể tham khảo các bài viết khác trong series bài viết này tại đây
Bài viết này sẽ cung cấp đến độc giả các cấu trúc rẽ nhánh và cách sử dụng, ứng dụng trong các bài tập. Trong loạt bài hướng dẫn [Lập trình C từ 0 đến 1], IDE được sử dụng là Code::Blocks
1. CÂU LỆNH, KHỐI LỆNH
1.1. Khái niệm về câu lệnh
Mỗi câu lệnh thực hiện một chức năng nào đó (như lệnh gán, lệnh xuất dữ liệu ra màn hình), câu lệnh có thể được viết trên một hoặc nhiều dòng và được kết thúc bằng dấu chấm phẩy (;).
1.2. Khái niệm về khối lệnh trong chương trình C
Một dãy các câu lệnh được đặt trong cặp dấu { và } được gọi một là một khối lệnh, khi đó khối lệnh này được xem như một câu lệnh riêng lẻ. Những câu lệnh của một hàm, những câu lệnh của một cấu trúc phải được đặt vào dấu {}
Các toán tử điều khiển cho phép thay đổi trật tự thực hiện các câu lệnh (khối lệnh) do đó máy có thể đang từ một câu lệnh này nhảy tới thực hiện một câu lệnh ở trước, hoặc sau nó.
2. CẤU TRÚC IF
Trong C có một cấu trúc nếu thì ( if ..) như logic thực tế nếu điều kiện gì đó đúng thì thực hiện cái gì. Tương tự nếu sai thì thực hiện cái gì chúng ta lại có cấu trúc (if..else)
- Cấu trúc 1: if (biểu thức ÐK) <khối lệnh >;
Nếu biểu thức ĐK ( điều kiện) đúng thì thực hiện khối lệnh phía sau còn sai thì thực hiện dòng lệnh khác
- Cấu trúc 2: if (biểu thức ÐK) <khối lệnh 1>; else <khối lệnh 2>
Nếu biểu thức ĐK ( điều kiện) đúng thì thực hiện khối lệnh phía sau còn sai thì thực hiện khối lệnh thứ 2
2.1. if (biểu thức ÐK) <khối lệnh >;
Nếu biểu thức cho kết quả khác không thì thực hiện khối lệnh. Nếu khối lệnh có từ hai lệnh trở lên thì phải đặt vào dấu { }
Ví dụ:
|
||
Kết quả:
Nhập một số trong khoảng từ 1 đến 10 =>7 Số bạn nhập lớn hơn 5. 7.000000 là số bạn nhập. |
2.2. if (biểu thức ÐK) <khối lệnh 1> ; else<khối lệnh 2>;
Nếu biểu thức cho kết quả khác không thì thực hiện khối lệnh 1, ngược lại thì cho thực hiện khối lệnh thứ hai.
Ví dụ:
|
||
Kết quả:
Nhập một số trong khoảng từ 1 đến 10 =>3 Số bạn nhập nhỏ hơn hoặc bằng 5. Gía trị số bạn nhập là 7.000000 |
Lưu ý: Biểu thức ÐK phải đặt vào dấu ngoặc tròn. C cho phép ta viết các cấu trúc if lồng vào nhau.
2.3.Bài toán minh họa:
|
||
Kết quả:
Nhap vao 3 so a,b,c: 5 3 7 3 5 7 |
3.TOÁN TỬ SWITCH
3.1.Cú pháp
switch (Biểu thức)
{
case n1:
các câu lệnh
case n2:
các câu lệnh
….
case nk:
các câu lệnh
[default:
các câu lệnh]
}
ni là các hằng số nguyên, ký tự.
Phụ thuộc vào giá trị của biểu thức viết sau switch, nếu:
- Giá trị này =ni thì thực hiện câu lệnh sau case ni;
- Khi giá trị biểu thức khác tất cả các ni thì thực hiện câu lệnh sau default nếu co, hoặc thoát khỏi câu lệnh switch.
Khi chương trình đã thực hiện xong câu lệnh của case ni nào đó thì nó sẽ thực hiện luôn các lệnh thuộc case bên dưới nó mà không xét lại điều kiện ( do các ni được xem như các nhãn). Vì vậy, để chương trình thoát khỏi lệnh switch sau khi thực hiện xong một trường hợp, ta dùng lệnh break.
Ví dụ
|
||
Kết quả:
Chọn từ (A,B hoặc C) để xác định: A] Ðiện thế B] Dòng điện C] Ðiện trở Lựa chọn của bạn (A, B, or C) => A V=I*R |
3.2.Bài toán minh họa
|
||
Kết quả:
Nhap diem 9 Gioi |
4. TOÁN TỬ GOTO
Nhãn có cùng dạng như tên biến và có dấu hai chấm (: ) đứng sau. Nhãn có thể được gán cho bất kỳ câu lệnh nào trong chương trình.
Ví dụ: t:s+=a;/* t là nhãn của câu lệnh gán */
Cú pháp của toán tử goto
goto nhan;
Khi gặp toán tử này máy sẽ nhảy tới thực hiện câu lệnh viết sau từ khóa goto.
Ví dụ:
int s=1,a=3;
goto t;/*Nhảy tới thực hiện lệnh sau t*/
++a;
t: s+=a;/*Kết quả s=4, bỏ qua lệnh ++a*/
Chú ý:
- Câu lệnh goto và nhãn cần nằm trong một hàm.
- Không cho phép dùng toán tử goto nhảy từ ngoài vào trong một khối lệnh, tuy nhiên nhảy từ trong ra ngoài khối lệnh là hoàn toàn hợp lệ.
5. BÀI TẬP MINH HỌA
Bài 1:
Cho đoạn chương trình dưới đây, xác định kết quả in ra:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
#include<stdio.h> #include<conio.h> void main() { int a,b=4; clrscr(); switch((a=2)?5:2) { case 5:b+=2; default:a-b--; case 2:a--; } printf("%d %d",a,--b); getch(); } |
Bài 2:
Cho đoạn chương trình dưới đây, xác định kết quả in ra:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include<stdio.h> #include<conio.h> int a=-1,b; void main() { clrscr(); while(a>=b&&--b) if(a==b) break; printf("%d %d",a,b); getch(); } |
Chúng ta sẽ kết thúc “[Lập trình C từ 0 đến 1] Bài 10. Các cấu trúc điều khiển if…else, switch…case và goto” trong series [Lập trình C từ 0 đến 1] ở đây. Hãy cùng đón xem “Bài 11. Vòng lặp for trong C”.
Hãy để lại bình luận và theo dõi series bài viết: “Lập trình C từ 0 đến 1” để tiếp tục cập nhật những thông tin mới nhất.