Câu lệnh điều kiện trong C: If, Else, If lồng nhau kèm ví dụ

⚡ Tóm tắt thông minh

Câu lệnh điều kiện trong C kiểm soát luồng chương trình bằng cách thực thi các khối mã chỉ khi điều kiện được kiểm tra đánh giá là đúng, cho phép đưa ra quyết định thông qua các cấu trúc if, if-else, lồng nhau và else-if dạng bậc thang.

  • 🔤 Câu lệnh if: Câu lệnh if chỉ thực thi khối lệnh của nó khi điều kiện là một giá trị đúng khác 0, trong khi 0 có nghĩa là sai.
  • 🔀 Câu lệnh if-else: Cấu trúc if-else thêm một nhánh false, thực thi một khối lệnh khi điều kiện đúng và một khối lệnh khác khi điều kiện sai.
  • ⚖️ Các toán tử quan hệ: Sáu toán tử (<, <=, >, >=, ==, !=) tạo nên các biểu thức Boolean mà mỗi điều kiện kiểm tra.
  • 🪜 Cấu trúc Else-if: Cấu trúc else-if lồng nhau kiểm tra nhiều biểu thức từ trên xuống dưới và thực thi nhánh đúng đầu tiên, hoặc một nhánh else mặc định.
  • Toán tử bậc ba: Biểu thức điều kiện ?: viết một câu lệnh if-else ngắn gọn, trả về một trong hai giá trị chỉ trên một dòng.
  • 🤖 Hỗ trợ AI: GitHub Copilot soạn thảo và xem xét logic if-else, phát hiện dấu ngoặc nhọn bị thiếu và đề xuất các điều kiện rõ ràng hơn.

Câu lệnh điều kiện C: IF, IF Else và IF Else lồng nhau

Câu lệnh có điều kiện trong C là gì?

Câu lệnh điều kiện trong lập trình C được sử dụng để đưa ra quyết định dựa trên các điều kiện. Câu lệnh điều kiện được thực thi tuần tự khi không có điều kiện nào bao quanh chúng. Nếu bạn đặt một số điều kiện cho một khối lệnh, luồng thực thi có thể thay đổi dựa trên kết quả được đánh giá bởi điều kiện đó. Quá trình này được gọi là ra quyết định trong 'C'.

Không giống như vòng lặp trong C Đoạn mã lặp lại đó, các câu lệnh điều kiện sẽ chọn một đường dẫn.

Trong lập trình C, các câu lệnh điều kiện có thể thực hiện được nhờ sự trợ giúp của hai cấu trúc sau:

  1. Câu lệnh if
  2. Câu lệnh if-else

Nó còn được gọi là phân nhánh vì chương trình quyết định câu lệnh nào sẽ thực thi dựa trên kết quả của điều kiện được đánh giá.

Câu lệnh if

Đây là một trong những câu lệnh điều kiện có tác dụng mạnh mẽ. Câu lệnh if chịu trách nhiệm sửa đổi luồng thực thi của chương trình. Câu lệnh if luôn được sử dụng với một điều kiện. Điều kiện được đánh giá trước khi thực hiện bất kỳ câu lệnh nào bên trong phần thân của If. Cú pháp của câu lệnh if như sau:

 if (condition) 
     instruction;

Điều kiện đánh giá là đúng hoặc sai. True luôn là giá trị khác 0 và false là giá trị chứa 0. Các lệnh có thể là một lệnh đơn hoặc một khối mã được bao bọc bởi dấu ngoặc nhọn { }.

Chương trình sau minh họa cách sử dụng cấu trúc if trong lập trình 'C':

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

Đầu ra:

num1 is smaller than num2

Chương trình trên minh họa việc sử dụng cấu trúc if để kiểm tra sự bằng nhau của hai số.

Sơ đồ lưu trình câu lệnh điều kiện (IF) trong C.

  1. Trong chương trình trên, chúng ta đã khởi tạo hai biến num1, num2 với giá trị lần lượt là 1, 2.
  2. Sau đó, chúng ta sử dụng if với biểu thức kiểm tra để kiểm tra số nào nhỏ nhất và số nào lớn nhất. Chúng ta đã sử dụng biểu thức quan hệ trong cấu trúc if. Vì giá trị của num1 nhỏ hơn num2 nên điều kiện sẽ có giá trị đúng.
  3. Như vậy nó sẽ in câu lệnh bên trong khối If. Sau đó, điều khiển sẽ đi ra ngoài khối và chương trình sẽ kết thúc với kết quả thành công.

Quan hệ Operaxoắn

Ngôn ngữ C có sáu toán tử quan hệ có thể được sử dụng để tạo thành biểu thức Boolean nhằm đưa ra quyết định và kiểm tra các điều kiện, trả về giá trị true hoặc false:

  • < — ít hơn
  • <= — nhỏ hơn hoặc bằng
  • > — lớn hơn
  • >= — lớn hơn hoặc bằng
  • == — bằng
  • != — không bằng

Lưu ý rằng phép kiểm tra bằng nhau (==) khác với toán tử gán (=) vì đây là một trong những vấn đề phổ biến nhất mà lập trình viên gặp phải khi trộn lẫn chúng.

Ví dụ:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

Đầu ra:

 You succeed

Hãy nhớ rằng điều kiện đánh giá thành giá trị khác 0 được coi là đúng.

Ví dụ:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

Đầu ra:

There is someone present in the classroom

Câu lệnh If-Else

Sơ đồ khối câu lệnh If-Else trong C

Câu lệnh if-else là một phiên bản mở rộng của câu lệnh If. Dạng tổng quát của if-else như sau:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

Trong cấu trúc này, nếu giá trị của biểu thức kiểm tra là đúng, thì khối lệnh đúng sẽ được thực thi. Nếu giá trị của biểu thức kiểm tra là sai, thì khối lệnh sai sẽ được thực thi. Trong mọi trường hợp, sau khi thực thi, quyền điều khiển sẽ tự động được chuyển đến các câu lệnh nằm ngoài khối If.

Các chương trình sau minh họa cách sử dụng cấu trúc if-else:

Chúng ta sẽ khởi tạo một biến với một giá trị nào đó và viết chương trình để xác định xem giá trị đó nhỏ hơn 10 hay lớn hơn 10.

Hãy bắt đầu.

#include<stdio.h>
int main()
{
	int num=19;
	if(num<10)
	{
		printf("The value is less than 10");
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

Đầu ra:

The value is greater than 10

Ví dụ về kết quả đầu ra của câu lệnh If-Else trong C

  1. Chúng ta đã khởi tạo một biến có giá trị 19. Chúng ta phải tìm hiểu xem số này lớn hơn hay nhỏ hơn 10 bằng chương trình 'C'. Để làm điều này, chúng tôi đã sử dụng cấu trúc if-else.
  2. Ở đây chúng ta đã cung cấp điều kiện num<10 vì chúng ta phải so sánh giá trị của mình với 10.
  3. Như bạn có thể thấy khối đầu tiên luôn là khối đúng, nghĩa là nếu giá trị của biểu thức kiểm tra là đúng thì khối đầu tiên là If sẽ được thực thi.
  4. Khối thứ hai là khối khác. Khối này chứa các câu lệnh sẽ được thực thi nếu giá trị của biểu thức kiểm tra trở thành sai. Trong chương trình của chúng tôi, giá trị của num lớn hơn 10 do đó điều kiện kiểm tra trở thành sai và khối khác được thực thi. Do đó, đầu ra của chúng ta sẽ đến từ một khối khác có tên “Giá trị lớn hơn XNUMX”. Sau if-else, chương trình sẽ kết thúc với kết quả thành công.

Trong lập trình 'C', chúng ta có thể sử dụng nhiều cấu trúc if-else bên trong nhau, được gọi là lồng các câu lệnh if-else.

Biểu thức có điều kiện

Một cách khác để diễn đạt câu lệnh if-else là sử dụng toán tử ?:. Trong một biểu thức điều kiện, toán tử ?: chỉ có một câu lệnh liên kết với mệnh đề if và mệnh đề else.

Ví dụ:

#include <stdio.h>
int main() {
  int y;
  int x = 2;
   y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */
   printf("y =%d ",y);
  return 0;}

Đầu ra:

y =2

Câu lệnh If-else lồng nhau

Khi cần một loạt quyết định, if-else lồng nhau sẽ được sử dụng. Lồng nhau có nghĩa là sử dụng một cấu trúc if-else bên trong một cấu trúc khác.

Hãy viết một chương trình để minh họa việc sử dụng if-else lồng nhau.

#include<stdio.h>
int main()
{
	int num=1;
	if(num<10)
	{
		if(num==1)
		{
			printf("The value is:%d\n",num);
		}
		else
		{
			printf("The value is greater than 1");
		}
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

Đầu ra:

The value is:1

Chương trình trên kiểm tra xem một số nhỏ hơn hay lớn hơn 10 và in kết quả bằng cách sử dụng cấu trúc if-else lồng nhau.

Câu lệnh if-else lồng nhau trong C

  1. Đầu tiên, chúng ta khai báo một biến num có giá trị là 1. Sau đó, chúng ta sử dụng cấu trúc if-else.
  2. Trong khối if-else bên ngoài, điều kiện được cung cấp kiểm tra xem một số có nhỏ hơn 10 hay không. Nếu điều kiện đúng thì và chỉ khi đó khối lệnh bên trong mới được thực thi. Trong trường hợp này, điều kiện đúng nên khối lệnh bên trong được xử lý.
  3. Trong khối lệnh bên trong, chúng ta lại có một điều kiện kiểm tra xem biến của chúng ta có chứa giá trị 1 hay không. Khi điều kiện đúng, khối lệnh If sẽ được thực thi, ngược lại nó sẽ thực thi khối lệnh else. Trong trường hợp này, điều kiện đúng nên khối lệnh If được thực thi và giá trị được in ra màn hình kết quả.
  4. Chương trình trên sẽ in ra giá trị của một biến và kết thúc khi thành công.

Hãy thử thay đổi giá trị của biến Hãy xem chương trình hoạt động như thế nào.

LƯU Ý: Trong câu lệnh if-else lồng nhau, chúng ta phải cẩn thận với việc thụt lề vì có nhiều cấu trúc if-else tham gia vào quá trình này, do đó việc nhận biết từng cấu trúc riêng lẻ trở nên khó khăn. Việc thụt lề đúng cách giúp chương trình dễ đọc hơn.

Các câu lệnh Else-if lồng nhau

Cấu trúc Else-if lồng nhau trong C

Lồng nhau else-if được sử dụng khi cần có các quyết định đa đường.

Cú pháp chung về cách xây dựng thang else-if trong lập trình 'C' như sau:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

Cấu trúc này được gọi là chuỗi điều kiện else-if. Chuỗi này thường trông giống như một cái thang, do đó nó cũng được gọi là chuỗi điều kiện else-if. Các biểu thức kiểm tra được đánh giá từ trên xuống dưới. Bất cứ khi nào tìm thấy một biểu thức kiểm tra đúng, câu lệnh liên kết với nó sẽ được thực thi. Khi tất cả n biểu thức kiểm tra đều trở thành sai, thì câu lệnh else mặc định sẽ được thực thi.

Chúng ta hãy xem công việc thực tế với sự trợ giúp của một chương trình.

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

Đầu ra:

First class

Chương trình trên sẽ in điểm theo số điểm đạt được trong một bài kiểm tra. Chúng ta đã sử dụng cấu trúc bậc thang else-if trong chương trình trên.

  1. Chúng tôi đã khởi tạo một biến có dấu. Trong cấu trúc bậc thang else-if, chúng ta đã cung cấp nhiều điều kiện khác nhau.
  2. Giá trị từ các dấu biến sẽ được so sánh với điều kiện đầu tiên vì câu lệnh liên quan đến nó đúng sẽ được in trên màn hình đầu ra.
  3. Nếu điều kiện kiểm tra đầu tiên sai thì nó sẽ được so sánh với điều kiện thứ hai.
  4. Quá trình này sẽ tiếp diễn cho đến khi tất cả các biểu thức được đánh giá, nếu không, quyền điều khiển sẽ thoát khỏi vòng lặp else-if và câu lệnh mặc định sẽ được in ra.

Hãy thử sửa đổi giá trị và nhận thấy sự thay đổi ở đầu ra.

Câu Hỏi Thường Gặp

Câu lệnh if-else kiểm tra bất kỳ biểu thức Boolean nào, bao gồm cả phạm vi và kiểm tra quan hệ. chuyển đổi… trường hợp So sánh một biến với các giá trị hằng số cố định và thường biên dịch thành bảng nhảy nhanh hơn trong nhiều trường hợp.

Vấn đề "else lơ lửng" là sự mơ hồ về việc câu lệnh if nào mà câu lệnh else thuộc về khi các câu lệnh if lồng nhau mà không có dấu ngoặc nhọn. Trong C, một câu lệnh else luôn được ghép nối với câu lệnh if gần nhất không có câu lệnh if nào được ghép nối. Việc thêm dấu ngoặc nhọn sẽ loại bỏ sự nhầm lẫn này.

Đúng vậy. Các toán tử logic kết hợp các điều kiện: && yêu cầu cả hai vế đều đúng, || cần ít nhất một vế đúng, và ! đảo ngược kết quả. Ví dụ, if (age > 18 && citizen) kiểm tra hai điều kiện cùng nhau trong một câu lệnh if.

Dấu ngoặc nhọn là tùy chọn khi phần thân chỉ là một câu lệnh duy nhất, do đó C chỉ thực thi dòng tiếp theo. Đối với hai hoặc nhiều câu lệnh, dấu ngoặc nhọn là bắt buộc để nhóm chúng lại. Luôn sử dụng dấu ngoặc nhọn là một thói quen an toàn giúp ngăn ngừa lỗi logic.

Quá trình đánh giá rút gọn dừng lại ngay khi biết kết quả. Với toán tử &&, nếu vế trái sai thì sẽ bỏ qua vế phải. Với toán tử ||, nếu vế trái đúng thì sẽ bỏ qua vế phải. Điều này giúp tránh công việc không cần thiết và các thao tác không an toàn.

Đúng vậy. Một chuỗi điều kiện else-if được đánh giá từ trên xuống dưới và dừng lại ở điều kiện đúng đầu tiên. Việc đặt các điều kiện rộng trước các điều kiện hẹp có thể che khuất các trường hợp hẹp, vì vậy hãy sắp xếp các phép thử từ cụ thể nhất đến tổng quát nhất.

Đúng vậy. Các trợ lý lập trình AI sẽ soạn thảo các khối điều kiện từ một bình luận, chuyển đổi các chuỗi if-else dài thành các cấu trúc gọn gàng hơn và phát hiện các lỗi tiềm ẩn như sử dụng = thay vì ==. Luôn luôn kiểm tra logic được tạo ra trước khi tin tưởng vào nó.

Trợ lý GitHub Chức năng tự động hoàn thành câu lệnh if, else-if và các điều kiện lồng nhau từ phần bình luận hoặc mã xung quanh. Nó đề xuất các biểu thức quan hệ và logic, đồng thời có thể thêm các dấu ngoặc nhọn bị thiếu, tuy nhiên bạn nên xem xét kỹ từng đề xuất.

Tóm tắt bài viết này với: