if else , switch case trong C

Trong cuộc đời có rất nhiêu điều tất cả chúng ta phải lựa chọn, ví như lựa chọn giữa người ta yêu & người yêu ta, chọn nghe theo trái tim hay là lý trí,… Nếu bây giờ được nghỉ thì sẽ ở nhà học hay là đi chơi, nếu có người yêu thì ngồi code hay đi mua kem cùng ăn ngoài cổng trường, vân vân & mây mây. & lập trình là đi từ cuộc đời, phục vụ cuộc đời nên nó cũng nên cần có những thứ như thế. Bài này tất cả chúng ta sẽ tìm tòi về các lệnh để phục vụ những lựa chọn như thế, các lệnh này gọi là lệnh rẽ nhánh.

Trước khi tìm tòi về cấu tạo các lệnh rẽ nhánh, tất cả chúng ta nên tìm tòi một tí về lệnh đơn & khối lệnh.

1. Lệnh & khối lệnh

Lệnh là một tác vụ, biểu thức, hàm, cấu tạo điều khiển… nào đó đơn lẻ.

Chẳng hạn:

Ҳ = Ҳ + 2; // đây là một lệnh đơn 
printf("Day la mot lenhn");  // đây cũng là một lệnh đơn.

Khối lệnh: là một dãy các câu lệnh được bọc bởi cặp dấu { }.

Chẳng hạn:

{ //dau khoi
    α = 78;
    ɓ = 26;
    printf("Tong %d + %d = %d", α, ɓ, α+ɓ);
} //cuoi khoi

Khi mong muốn thực hiện một dãy các câu lệnh liên tiếp nào đó thì tất cả chúng ta dùng khối lệnh, tức là đặt chúng vào cặp dấu {} & viết thụt vào 1 tab cho bắt mắt.

Cảnh báo: Khi một lệnh được đặt trong cặp ngoặc {} thì cũng được xem là khối lệnh.

2. Lệnh if & if else

2.1 Lệnh if

Lệnh if dịch ra có nghĩa là nếu cái này thì làm cái kia. Chẳng hạn nếu bạn có người yêu thì chắc bạn sẽ đi chơi cùng ẻm chứ không ngồi xem bài của mình…

Cú pháp của lệnh if

Cú pháp, lưu đồ & cách hoạt động của lệnh if

Lưu ý:
Không đặt dấu chấm phẩy sau câu lệnh if. Chẳng hạn: if (α > 0);
Khi đặt dấu chấm phẩy ở lệnh if thì coi như chấm dứt lệnh if tại đó nên khối lệnh sẽ không được thực hiện dù điều kiện đúng hay sai.

Chẳng hạn: Ban đầu bạn có 100 (tỷ), hãy nhập vào một số vốn. Nếu số vốn là số dương thì cộng thêm vào ví của các bạn trái lại thì không làm gì cả. In ra số vốn bạn có sau khoảng thời gian nhập.

#include <stdio.hvàgt;

int main()
{     
    int Ҳ = 100; // So tien ban dau ban co
    int y; // so tien nhap moi

    printf("Nhap so tien = ");
    scanf("%d", &y);

    if( y > 0 ) // neu so tien nhap vao lon hon 0 thi cong vao vi
    {
        Ҳ = Ҳ + y;
    }

    printf("So tien sau = %d n", Ҳ);

    return 0;
}

Thật dễ dàng. Bạn chạy chương trình & xem cách nó hoạt động nhé.

Xem Thêm  Python - Từ điển in - cách in các giá trị từ điển trong python

2.2 Lệnh if – else

Lệnh if-else là dạng đủ của lệnh if. if là nếu, else là trái lại.

Cú pháp lệnh if – else

Cú pháp, lưu đồ & cách hoạt động lệnh if – else

Chẳng hạn: Tương đương chẳng hạn trên. Ban đầu bạn có 100 (tỷ), vợ bạn có 50 (tỷ), hãy nhập vào một số vốn. Nếu số vốn là số dương thì cộng thêm vào ví của các bạn một nửa, của vợ bạn một nửa, trái lại thì chỉ cộng vào ví của các bạn (bản chất là trừ đi vì số vốn có thể âm hoặc bằng 0). In ra số vốn bạn & vợ bạn có sau khoảng thời gian nhập.

#include <stdio.hvàgt;

int main()
{
    float Ҳ = 100, y = 50; // So tien ban va vo ban co
    float z; // so tien nhap moi

    printf("Nhap so tien = ");
    scanf("%f", &z);

    if( z > 0 ) // neu so tien nhap vao lon hon 0 thi cong vao vi
    {
        Ҳ = Ҳ + z / 2;
        y = y + z / 2;
    } else 
    {
        Ҳ = Ҳ + z;
    }

    printf("So tien cua ban = %.2f n", Ҳ);
    printf("So tien cua vo ban = %.2f n", y);

    return 0;
}

Khá là dễ dàng. Bạn thử chạy & xem kết quả nhé. (Ở bài này mình dùng kiểu float vì có phép chia nên số vốn có thể lẻ).

2.3 Lệnh if else lồng nhau & if-else-if

Trong nhiều trường hợp, tất cả chúng ta cần phải giải quyết nhiều điều kiện chứ không những có 1 điều kiện. Cho nên tất cả chúng ta có thể lồng nhiều câu lệnh if else vào với nhau.

Chẳng hạn: Công ty du học đang triển khai một loại cân sao cho cân theo cặp phục vụ cho cân các cặp tình nhân, & cảnh báo ra bạn trai nặng hơn hay bạn nữ nặng hơn hay hai bạn nặng bằng nhau.

Như thế tất cả chúng ta cần giải quyết 3 trường hợp chứ không phải chỉ dễ dàng là nếu & trái lại nữa. Tất cả chúng ta có code như sau:

#include <stdio.hvàgt;

int main()
{
    float α; // can nang cua ban trai
    float ɓ; // can nang cua ban gai

    printf("Nhap vao can nang ban trai va ban gai: n");
    scanf("%f%f", &α, &ɓ);

    if( α > ɓ )
    {
        printf("Ban trai nang hon!n");
    } else 
    {
        if( α < ɓ)
        {
            printf("Ban gai nang honn");
        } else
        {
            printf("Hai ban nang bang nhaun");
        }
    }

    return 0;
}

Ok. Vậy là tất cả chúng ta sử dụng được chúng lồng vào nhau. Bên cạnh đó phương pháp này sẽ làm code hơi rối & tốn giấy mực. Bạn có thể sử dụng lệnh if-else-if như sau:

#include <stdio.hvàgt;

int main()
{
    float α; // can nang cua ban trai
    float ɓ; // can nang cua ban gai

    printf("Nhap vao can nang ban trai va ban gai: n");
    scanf("%f%f", &α, &ɓ);

    if( α > ɓ )
    {
        printf("Ban trai nang hon!n");
    } else if( α < ɓ)
    {
        printf("Ban gai nang honn");
    } else
    {
        printf("Hai ban nang bang nhaun");
    }

    return 0;
}

Cách code & ý nghĩa cũng tương đối cụ thể, dễ hiểu thôi :).

Xem Thêm  jQuery: gt () Selector - jquery lớn hơn selector

2.4 Toán tử điều kiện – If else tóm gọn

Tất cả chúng ta có một toán tử tóm gọn của lệnh if else như sau:

điều kiện ? biểu thứ 1: biểu thức 2;

Nếu điều kiện đúng thì biểu thức 1 được thực hiện & giá trị của biểu thức 1 là giá trị của toàn thể lệnh. Nếu điều kiện sai thì biểu thức 2 được thực hiện & giá trị của biểu thức 2 trở thành giá trị của toàn thể lệnh.

Chẳng hạn:

#include <stdio.hvàgt;

int main()
{
    int Ҳ = 3;
    int y = 4;
    int z;

    z = Ҳ > y ? Ҳ : y;

    printf("z = %dn", z);

    Ҳ = Ҳ > y ? Ҳ : 100;

    printf("x = %dn", Ҳ);

    return 0;
}

Kết quả sau khoảng thời gian chạy chương trình:

z = 4
Ҳ = 100

Như thế ta thấy biểu thức 2 & biểu thức 3 có thể là 1 giá trị biến, hằng, hoặc một hàm nào đó có trả về giá trị.

2. Lệnh switch case

Lệnh switch cũng giống cấu tạo if, nhưng nó dẻo dai hơn & linh hoạt hơn nhiều đối với sử dụng if. Bên cạnh đó, nó cũng có mặt giới hạn là kết quả của biểu thức phải là giá trị hằng nguyên (có giá trị rõ ràng và cụ thể). Một bài toán sử dụng lệnh switch thì cũng có thể sử dụng if, nhưng trái lại thì còn tùy vào vào giải thuật của bài toán.

Cấu tạo lệnh switch case

Cú pháp, lưu đồ & cách hoạt động lệnh switch case

Chẳng hạn: Nhập vào 1 số từ 1->5 & in ra cách đọc tương ứng:

#include <stdio.hvàgt;

int main()
{
    int α;
    printf("Nhap a = ");
    scanf("%d",&α);

    switch(α)
    {
        case 1: printf("Motn"); 
                break;
        case 2: printf("Hain"); 
                break;
        case 3: printf("Ban"); 
                break;
        case 4: printf("Bonn"); 
                break;
        case 5: printf("Namn"); 
                break;
    }

    return 0;
}

Các bạn chạy thử, & thử bỏ một vài lệnh break xem nó ra sao nhé.

Không những thế, tất cả chúng ta có cấu tạo switch-case-default nữa. Nguyên lý hoạt động giống như switch-case nhưng nếu các trường hợp đều không đáp ứng thì sẽ thực hiện lệnh của trường hợp default (dịch là trường hợp mặc định).

#include <stdio.hvàgt;

int main()
{
    int α;
    printf("Nhap a = ");
    scanf("%d",&α);

    switch(α)
    {
        case 1: printf("Motn"); 
                break;
        case 2: printf("Hain"); 
                break;
        case 3: printf("Ban"); 
                break;
        case 4: printf("Bonn"); 
                break;
        case 5: printf("Namn"); 
                break;
        default: printf("Ban da nhap mot so khacn");
                break;
    }

    return 0;
}

3. Lúc nào dùng if-else, lúc nào dùng switch-case

Như mình đã nói ở trên, lệnh switch case có tính dẻo dai & linh hoạt hơn if else, cách viết cũng thoáng & khó nhầm hơn if else nhưng một bài dùng được switch case thí chắc nịch dùng được bằng if else còn khi dùng if else lại chưa chắc dùng được bằng switch case.

Xem Thêm  Nhóm đầu vào - đầu vào tìm kiếm bootstrap 4

Vậy các chúng ta nên dùng switch case khi:

  • Số lượng điều kiện là lớn như dạng list chọn,… -> switch case viết sẽ lạch mạc, dễ làm chủ.
  • Các trường hợp điều kiện cần có giá trị là số nguyên hoặc ký tự.

Các trường hợp còn sót lại, các bạn hãy dùng if – else.

Bài tập:

  1. Viết chương trình nhập vào 4 số nguyên. Tìm & in ra số lớn nhất.
    Chỉ dẫn: Ta có 4 số nguyên α, ɓ, ͼ, {d}. Tìm 2 số nguyên lớn nhất Ҳ, y của 2 cặp (α, ɓ) & (ͼ, {d}). Sau đó so sánh Ҳ & y để tìm thấy số nguyên lớn nhất.
  2. Hãy nhập vào một số là 1 tháng trong năm, in ra xem tháng đó có bao nhiêu ngày. (Coi như không có năm nhuận).

  3. Hãy lập trình chương trình giải phương trình bậc 2: với α, ɓ, ͼ nhập từ keyboard.

  4. Viết chương trình nhập vào 3 giá trị nguyên dương α, ɓ, ͼ. Kiểm soát xem α, ɓ, ͼ có phải là 3 cạnh của tam giác không? Nếu là 3 cạnh của tam giác thì tính diện tích của tam giác theo cách thức:

    với ᴘ là nửa chu vi tam giác.

  5. Viết chương trình tính tiền điện gồm các điều kiện sau:

  • Tiền thuê bao điện kế: 1000đ/tháng
  • Định mức sử dụng điện cho mỗi hộ là: 50 KW với giá 230đ/KW
  • Nếu phần vượt định mức <= 50KW thì tính giá 480đ/KW
  • Nếu 50KW < phần vượt định mức < 100KW thì tính giá 700đ/₭
  • Nếu phần vượt định mức >= 100KW thì tính giá 900đ/KW

    Chỉ số mới & cũ được nhập vào từ keyboard. In ra màn hình chỉ số cũ, chỉ số mới, tiền trả định mức, tiền trả vượt định mức, tổng tiền phải trả.

Viết một bình luận