BASIC
CONTROL STATEMENTS
DATA TYPE
FUNCTIONS
FILE I/O
THAM KHẢO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Lệnh If .. Else trong C

Trong bài viết này chúng ta sẽ học lệnh If else trong C, đây là lệnh rẻ nhánh dùng để chia luồng chạy thành nhiều nhánh khác nhau, được sử dụng rất nhiều trong lập trình C.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Một ví dụ thực tế thế này. Giả sử bạn đang viết chương trình kiểm tra tính chẵn lẻ, thì sẽ sử dụng lệnh if else để kiểm tra phần chia lấy dư cho 2 có khác 0 hay không. Nếu bằng 0 thì số chẵn, ngược lại là số lẻ.

1. Lệnh If trong C

Cú pháp lệnh If else trong ngôn ngữ C như sau:

if (test expression) 
{
   // Đoạn code sẽ chạy khi test expression = TRUE
}

Cách hoạt động như sau:

Bài viết này được đăng tại [free tuts .net]

  • Nếu biểu thức test expression = true thì đoạn code bên trong cặp ngoặc nhọn {} sẽ được chạy.
  • Ngược lại, nếu biểu thức test expression = false thì chương trình bỏ qua đoạn code bên trong đó.

Hãy xem hình dưới đây:

working c if statement jpg

Ở ví dụ đầu tiên đoạn code bên trong if sẽ chạy vì điều kiện test < 10 = true, còn ví dụ thứ hai không chạy vì test > 10 = false.

Ví dụ: Viết chương trình in ra thông báo nếu người dùng nhập vào số âm.

Với bài này ta phải sử dụng lệnh scanf để nhận dữ liệu từ bàn phím.

#include <stdio.h>
int main() {
    int number;

    printf("Nhap vao mot so nguyen: ");
    scanf("%d", &number);

    // Kiem tra so co nho hon 0 hay khong
    if (number < 0) {
        printf("So %d la so am\n", number);
    }

    return 0;
}

Kết quả: Giả sử mình nhập số -2 nhé

Nhap vao mot so nguyen: -2
So -2 la so am.

Bạn hãy thử thay số 2 bằng một số dương thì sẽ không thấy thông báo gì cả.

2. Lệnh if else trong C

Lệnh if chỉ kiểm tra điều kiện và rẻ vào một nhánh duy nhất, vì vậy không thực sự linh động trong lập trình.

Ví dụ: Bạn cần kiểm tra một số là số âm hay số dương, và thông báo lên màn hình console như sau:

  • "%d là số dương" nếu bạn nhập vào số dương
  • "%d là số âm" nếu bạn nhập vào số âm

Trong ví dụ phần 1 mình có làm một trường hợp rồi, bây giờ cần sử dụng lệnh else để xử lý cho trường hợp còn lại. Tuy nhiên trước tiên hãy xem cú pháp của lệnh if else đã nhé.

if (test expression) {
    // Đoạn code sẽ chạy nếu test expression = true
}
else {
    // Đoạn code sẽ chạy nếu test expression = false
}

Xem ví dụ ở hình dưới đây.

how if else works c programming jpg

  • Ví dụ 1 Phần if sẽ chạy vì biểu thức test < 10 = true.
  • Ví dụ 2: Phần else sẽ chạy vì test > 10 = false.

Ví dụ: Viết chương trình kiểm tra số chẵn lẽ và thông báo lên màn hình console.

#include <stdio.h>
int main() {
    int number;
    printf("Nhập vào số nguyên: ");
    scanf("%d", &number);

    // Chia lấy dư
    if  (number%2 == 0) {
        printf("%d là số chẵn.",number);
    }
    else {
        printf("%d là số lẻ.",number);
    }

    return 0;
}

Bạn hãy thử nhập vào số 7 và chạy chưong trình thì thu được kết quả như sau:

Nhập vào số nguyên: 7
7 là số lẻ.

Bạn có thể dùng nhiều lệnh if nhưng với lệnh else thì chỉ được 1 lần mà thôi. Cú pháp của nó như sau:

if (test expression1) {
   // statement(s)
}
else if(test expression2) {
   // statement(s)
}
else if (test expression3) {
   // statement(s)
}
.
.
else {
   // statement(s)
}

Trình biên dịch sẽ chạy từ trên xuống, chỉ cần một lệnh if nào thỏa điều kiện thì nó sẽ bỏ qua những lệnh phía dưới. Nếu không có if nào thỏa mãn thì đoạn code ở lệnh else sẽ chạy, và đó cũng là đoạn code cuối cùng trong một tập hợp khối lệnh if else.

Ví dụ: Dùng lệnh if else để kiểm tra nhiều khoảng.

#include <stdio.h>
int main() {
    int number1, number2;
    printf("Nhập vào 2 số nguyên: ");
    scanf("%d %d", &number1, &number2);

    //Kiểm tra nếu hai số bằng nhau
    if(number1 == number2) {
        printf("Kết quả: %d = %d",number1,number2);
    }

    //Kiểm tra nếu số 1 lớn hơn số 2.
    else if (number1 > number2) {
        printf("Kết quả: %d > %d", number1, number2);
    }

    //Trường hợp còn lại là số  1 bé hơn số 2 nên ta không cần check
    else {
        printf("Két quả: %d < %d",number1, number2);
    }

    return 0;
}

Nếu mình nhập giá trị 12 thì sẽ có kết quả như sau:

Nhập vào 2 số nguyên: 12
23
Kết quả: 12 < 23

3. Lệnh if else lồng nhau trong C

If else lồng nhau tức là bên trong lệnh if else lại có thêm một hoặc nhiều lệnh if else khác.

Thường ta chỉ nên lồng từ 4 cấp đổ lại, vì nếu lồng quá nhiều cấp thì rát khó quản lý chương trình.

Ví dụ sau đây sử dụng hai lệnh if else lồng nhau.

#include <stdio.h>
int main() {
    int number1, number2;
    printf("Nhập vào hai số nguyên: ");
    scanf("%d %d", &number1, &number2);

    if (number1 >= number2) {
      if (number1 == number2) {
        printf("Kết quả: %d = %d",number1,number2);
      }
      else {
        printf("Kết quả: %d > %d", number1, number2);
      }
    }
    else {
        printf("Kết quả: %d < %d",number1, number2);
    }

    return 0;
}

Trên là kiến thức cơ bản của lệnh if else trong C, đây là lệnh được sử dụng khá thường xuyên trong lập trình nói chung và trong ngôn ngữ C nói riêng. Thực tế thì vẫn còn một lệnh rẻ nhánh khác nữa đó là lệnh switch case, tuy nhiên ta sẽ tìm hiểu nó ở một bài khác nhé.

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top