1. Câu điều kiện là gì?

1.1 Khái niệm câu điều kiện là gì?

Trong cuộc sống hàng ngày ta đã sử dụng khá nhiều câu điều kiện (sử dụng trong ngôn ngữ nói). Giả sử như: “Nếu mai trời mưa tôi sẽ nghỉ học”, “Nếu tôi được 9 điểm trở lên thì tôi được danh hiệu học sinh giỏi” … v.v

Như vậy câu điều kiện ở ngôn ngữ nói dùng để kiểm tra một khả năng nào đó nếu khả năng đó là đúng thì sự việc sẽ như thế nào, và khả năng đó là sai thì sự việc sẽ ra sao.

1.2 Câu điều kiện trong ngôn ngữ C

Trong ngôn ngữ C cũng tồn tại một cấu trúc điều kiện tương đương như câu điều kiện mà thường ngày ta vẫn hay sử dụng. Người lập trình sẽ chỉ định cho một hoặc nhiều điều kiện được đưa ra và việc đánh giá, kiểm tra điều kiện (kiểm tra tính đúng sai) thực hiện bởi chương trình.

Nếu điều kiện đúng sẽ bao gồm những lệnh nào được thực thi, nếu điều kiện sai sẽ có những lệnh nào được thực thi.

2. Câu điều kiện if

Dưới đây là sơ đồ làm việc của cấu trúc điều kiện if trong C

Cú pháp của câu điều kiện if đó là:

if(condition) {
   CodeBlock;
}

Trong đó:

  • Condition là điều kiện cần kiểm tra tính đúng sai (true/false)
  • CodeBlock là khối lệnh thực hiện khi điều kiện đúng (true)

Nếu biểu thức điều kiện được đánh giá là đúng (true) , thì khối lệnh bên trong câu lệnh ‘if’ sẽ được thực thi.

Nếu biểu thức điều kiện được đánh giá là false , thì không có đoạn mã nào được thực thi và kết thúc câu điều kiện.

Cùng xem xét ví dụ dưới đây, tôi khai báo hai biến a, b lần lượt có giá trị là 5 và 6 tôi sử dụng câu điều kiện để kiểm tra xem a có nhỏ hơn b hay không. Nếu đúng (a < b) thì tôi hiển thị ra màn hình “a nhỏ hơn b”.

#include <stdio.h>
int main(){
    //khai bao 2 bien a,b lan luot co gia tri la 5,6
    int a = 5;
    int b = 6;
    //kiem tra dieu kien a < b
    if(a < b){
        printf("a nho hon b");
    }   
}
a nho hon b

Một ví dụ nữa tôi sử dụng toán tử & (toán tử và) để kiểm tra a bằng 5 và b bằng 6 hay không. Nếu đúng (true) thì tôi hiển thị ra màn hình “a bằng 5 và b bằng 6”

#include <stdio.h>
int main(){
    //khai bao 2 bien a,b lan luot co gia tri la 5,6
    int a = 5;
    int b = 6;
    //kiem tra dieu kien a == 5 && b == 6
    if(a == 5 && b == 6){
        printf("a bang 5 va b bang 6");
    }   
}
a bang 5 va b bang 6

Bạn đọc có thể xem lại bài học về toán tử căn bản trong C để hiểu tại sao sử dụng hai dấu bằng (==) và sử dụng hai dấu và (&&)

3. Câu điều kiện if else

Nếu như câu điều kiện if là câu điều kiện chỉ thực hiện khối lệnh khi điều kiện cần kiểm tra là đúng (true).

Vậy giả sử tôi cần thực hiện cả khối lệnh khi điều kiện sảy ra là sai (false) thì sao?

Để làm được điều đó ta sử dụng cấu trúc câu điều kiện if else.

Cấu trúc câu điều kiện if else đó là:

if(condition){
    CodeBlockTrue
}else{
    CodeBlockFalse    
}

Trong đó:

  • Condition là điều kiện cần kiểm tra tính đúng sai (true/false)
  • CodeBlockTrue là khối lệnh thực hiện khi điều kiện đúng (true)
  • CodeBlockFalse là khối lệnh thực hiện khi điều kiện sai (false)

Nếu biểu thức điều kiện đúng sẽ thực thi khối lệnh cần thực thi, nếu điều kiện là sai thì vẫn thực thi một khối lệnh nào đó.

Ta cùng xem ví dụ dưới đây, tôi khai báo hai biến a, b gia trị 5,6 (như ví dụ trên). Tôi kiểm tra điều kiện a nhỏ hơn b nếu đúng thì tôi hiển thị ra “a nhỏ hơn b” ngược lại (else) tôi hiển thị ra “a không nhỏ hơn b”

#include <stdio.h>
int main(){
    //khai bao 2 bien a,b lan luot co gia tri la 5,6
    int a = 5;
    int b = 6;
    //kiem tra dieu kien a < b
    if(a < b){
        printf("a nho hon b");
    }else{
        printf("a khong nho hon b");
    }   
}
a nho hon b

Tôi sẽ thay a bằng 7 và thực hiện chuong trình:

Khi thay a bằng 7 thì điều kiện ban đầu không đúng nên khối lệnh trong else được thực hiện.

#include <stdio.h>
int main(){
    //khai bao 2 bien a,b lan luot co gia tri la 5,6
    int a = 7;
    int b = 6;
    //kiem tra dieu kien a < b
    if(a < b){
        printf("a nho hon b");
    }else{
        printf("a khong nho hon b");
    }   
}
a khong nho hon b

4. Câu lệnh if else lồng nhau

Việc lồng các câu lệnh if else vào nhau đề kiểm tra điều kiện là việc cần thiết khi bạn kiểm tra xong điều kiện đầu tiên và bạn cần kiểm tra điều kiện thứ 2 khi điều kiện đầu tiên được kiểm tra xong.

Cú pháp câu lệnh lồng nhau:

if( condition1) {
   CodeBlock1;
   if(condition2) {
      CodeBlock2;
   }
}

Trong đó:

  • Condition1 là điều kiện của if đầu tiên
  • CodeBlock1 là khối lệnh đầu tiên trong điều kiện đầu tiên
  • Condition2 là điều kiện của if thứ 2 nằm trong if đầu tiên
  • CodeBlock2 là khối lệnh trong điều kiện 2

Chú ý : Câu lệnh if thứ 2 nằm trong câu lệnh if đầu tiên, ta có thể coi câu lệnh if thứ 2 này chính là khối lệnh của câu lệnh if đầu tiên.

Cấu trúc ở trên là trường hợp lồng 2 câu lệnh if vào nhau, tùy nhiên ta có thể lồng thêm nhiều các câu lệnh if với nhau tùy vào bài toán cần giải quyết.

Để hiểu rõ hơn về câu lệnh if lồng nhau tôi có ví dụ như sau.

Tôi khai báo một biến a có giá trị do người dùng nhập vào, tôi kiểm tra điều kiện nếu a > 0 thì tôi hiển thị ra “a lớn hơn 0” và kiểm tra tiếp điều kiện thứ 2 nếu a là số chẵn thì tôi hiển thị ra “a là số chẵn và a lớn hơn 0”.

Giả sử tôi nhập vào giá trị số 4 cho biến a, kết quả là:

#include <stdio.h>
int main(){
    //khai bao 2 bien a,b lan luot co gia tri la 5,6
    int a;
    printf("Nhap vao so a: ");
    scanf("%d", &a);
    //kiem tra dieu kien a > 0
    if(a > 0){
        //in ra a > 0
        printf("a lon hon 0 \n");
        //tiep tuc kiem tra dieu kien 2, a la so chan
        if(a % 2 == 0){
            //in ra a > 0 va a la so chan
            printf("a la so chan va a lon hon 0 ");
        }
    }else{
        //truong hop nguoc lai a khong lon hon 0
        printf("a khong lon hon 0");
    }   
}
Nhap vao so a: 4

a lon hon 0

a la so chan va a lon hon 0

Trường hợp trên sảy ra khi tôi nhập vào số 4, khi đó số 4 thỏa mãn điều kiện đầu tiên (a >0) và thỏa mãn điều kiện 2 (a là số chẵn).

Giả sử tôi nhập vào số 5 thì điều kiện đầu tiên (a > 0) thỏa mãn tuy nhiên điều kiện thứ 2 không thỏa mãn và kết quả nhận được là:

Nhap vao so a: 5

a lon hon 0

Trường hợp cuối cùng, giả sử tôi nhập vào số -5 nghĩa là số này không thỏa mãn ngay điều kiện ban đầu vì thế nên sẽ thực hiện đoạn mã trong trường hợp else. Do đó kết quả khi thực thi với a bằng – 5 là:

Nhap vao so a: -5

a khong lon hon 0