Cấu trúc rẽ nhánh trong C

Cấu trúc rẽ nhánh trong mỗi ngôn ngữ lập trình luôn luôn là một thành phần quan trọng. Đó là thành phần cơ bản tạo nên hầu hết các thuật toán hiện đại. Nếu bạn muốn mô tả một đoạn chương trình kiểu như: Nếu gặp điều kiện C thì thực hiện hành động A, ngược lại, thực hiện hành động B thì bạn chắc chắn cần sử dụng cấu trúc rẽ nhánh.

1. Cấu trúc rẽ nhánh dạng if…else (nếu… thì…)

*** Dạng đơn giản nhất: **

1if (<điều kiện>) <hành động>

/* Nếu <điều kiện> đúng thì thực hiện <hành động>

<hành động> thông thường là một khối lệnh, được đặt trong cặp dấu { } */

Chương trình ví dụ:

 1#include <stdio.h>
 2int main()
 3{
 4	int a = 5;
 5	if (a > 0) {
 6		printf("%d la so duong\n",a);
 7	}
 8	if (a < 0) {
 9		printf("%d la so am\n",a);
10		printf("a nho hon 0");
11	}
12	return 0;
13}

*** Dạng mở rộng if…else:**

1if (<điều kiện>)
2	<hành động 1>
3else
4	<hành động 2>

/* Nếu <điều kiện> đúng thì thực hiện <hành động 1> ; nếu <điều kiện> sai thì thực hiện <hành động 2>*/

Chương trình ví dụ:

 1#include <stdio.h>
 2int main() {
 3	int a = -5;
 4	if (a > 0)
 5		printf("%d > 0\n",a);
 6	else {
 7		printf("%d >= 0\n", a);
 8		printf("%d khong la so duong\n",a);
 9	}
10	return 0;
11}

*** Dạng mở rộng if…else if…else:**

1if (<điều kiện 1>)
2	<hành động 1>
3else if (<điều kiện 2>)
4	<hành động 2>
5else
6	<hành động 3>

/* Nếu <điều kiện 1> đúng thì thực hiện <hành động 1> ; nếu <điều kiện 1> sai -> tiến hành kiểm tra <điều kiện 2>: <điều kiện 2> đúng sẽ thực hiện <hành động 2>; nếu  <điều kiện 1> và <điều kiện 2> đều sai thì thực hiện <hành động 3> */

Chương trình ví dụ:

 1#include <stdio.h>
 2int main() {
 3	int a = 5;
 4	printf("Nhap so nguyen a: ");
 5	scanf("%d",&a);
 6
 7	if (a > 0)
 8		printf("a la so duong\n");
 9	else if (a < 0)
10		printf("a la so am\n");
11	else
12		f("a = 0");
13	return 0;
14}

Các bạn chạy đoạn chương trình với các giá trị a khác nhau xem sao nhé.

2. Cấu trúc rẽ nhánh switch case

Cú pháp:

1switch (<biểu thức nguyên>) {
2	case <giá trị 1>: <hành động 1>; break; /* có thể không có câu lệnh này*/
3	case <giá trị 2>: <hành động 1>; break; /* có thể không có câu lệnh này*/
4	....
5	default: <hành động mặc định>; break; /* có thể không có câu lệnh này*/
6}

• Khi một cấu trúc rẽ nhánh switch được thực thi, chương trình sẽ tính toán giá trị của biểu thức. Kết quả thu được phải là kiểu nguyên (ta có thể ép kiểu cho nó. Xem Toán tử trong C để biết cách ép kiểu). Tiếp đó nó so sánh kết quả thu được với các giá trị 1,2… , khi tìm thấy một giá trị bằng với kết quả thu được ở trên, nó thực hiện cách lệnh từ sau dấu : tương ứng cho tới cuối cấu trúc switch hoặc tới khi bắt gặp lệnh break; • Trường hợp không tìm thấy giá trị nào bằng với giá trị biểu thức, <hành động mặc định> được thực hiện.

Ví dụ về chương trình in ra cách đọc của một chữ số: (từ 0 -> 9)

 1#include < stdio.h >
 2int main() {
 3	int chuSo;
 4	printf("Nhap chu so: ");
 5	scanf("%d", & chuSo);
 6	switch (chuSo) {
 7		case 0:
 8			printf("Khong");
 9			break;
10		case 1:
11			printf("Mot");
12			break;
13		case 2:
14			printf("Hai");
15			break;
16		case 3:
17			printf("Ba");
18			break;
19		case 4:
20			printf("Bon");
21			break;
22		case 5:
23			printf("Nam");
24			break;
25		case 6:
26			printf("Sau");
27			break;
28		case 7:
29			printf("Bay");
30			break;
31		case 8:
32			printf("Tam");
33			break;
34		case 9:
35			printf("Chin");
36			break;
37		default:
38			printf("Khong phai chu so!");
39	}
40	return 0;
41}

Related Posts

Biến, hằng và nhập xuất dữ liệu trong C

Biến, hằng giống như những chiếc hộp có tên riêng mà chúng ta có thể để dữ liệu vào và mang ra mỗi khi chúng ta cần sử dụng.

Read more

Toán tử trong C

Định nghĩa toán tử trong [Wikipedia]: Trong toán học, một toán tử (tiếng Anh operator, phân biệt với operation - phép toán) là một hàm, thông thường có một vai trò quan trọng trong một lĩnh vực nào đấy.

Read more

Cài đặt Geany – gcc làm môi trường soạn thảo và biên dịch ngôn ngữ C trên Ubuntu

Trong bài viết này Việt Anh sẽ hướng dẫn các bạn cài Geany và gcc để soạn thảo và biên dịch chương trình viết bằng ngôn ngữ C trên Linux (cụ thể ở đây là hệ điều hành Ubuntu).

Read more