×

Bắt đầu cấu trúc điều kiện lựa chọn nhiều nhánh với switch trong C

Trong ngôn ngữ lập trình C, thường có nhiều tình huống yêu cầu kiểm tra và thực hiện các hành động khác nhau dựa trên giá trị của một biến. Để giải quyết các trường hợp này, lập trình viên có thể sử dụng lệnh switch, một công cụ mạnh mẽ và linh hoạt hơn so với cấu trúc if-else khi phải xử lý nhiều nhánh chọn lựa.

Cách thức hoạt động của lệnh switch

Lệnh switch kiểm tra giá trị của một biến hoặc một biểu thức và so sánh nó với các giá trị cụ thể (gọi là "case labels"). Nếu tìm thấy một khớp, nó sẽ thực hiện tập hợp các câu lệnh liên quan đến nhãn đó. Nếu không có nhãn nào khớp, tùy chọn default có thể được sử dụng để thực hiện một hành động mặc định.

Cú pháp cơ bản của lệnh switch

Dưới đây là cấu trúc tổng quát của một lệnh switch cơ bản:

switch (biểu_thức) {
    case giá_trị_1:
        // Các câu lệnh
        break;
    case giá_trị_2:
        // Các câu lệnh
        break;
    ...
    default:
        // Các câu lệnh mặc định
}

Trong đó:

  • biểu_thức là biểu thức hoặc biến được kiểm tra.
  • giá_trị_1, giá_trị_2, ... là các giá trị cụ thể mà biểu thức có thể so sánh.
  • break được sử dụng để thoát ra khỏi cấu trúc switch sau khi một nhánh cụ thể đã được thực hiện. Nếu không có break, chương trình sẽ tiếp tục thực hiện các nhánh tiếp theo cho đến khi gặp break hoặc kết thúc lệnh switch.

Ví dụ minh họa

Giả sử chúng ta có một chương trình đơn giản để hiển thị ngày của tuần dựa trên giá trị của một biến kiểu số nguyên:

#include <stdio.h>

int main() {
    int day = 3;

    switch (day) {
        case 1:
            printf("Monday\n");
            break;
        case 2:
            printf("Tuesday\n");
            break;
        case 3:
            printf("Wednesday\n");
            break;
        case 4:
            printf("Thursday\n");
            break;
        case 5:
            printf("Friday\n");
            break;
        case 6:
            printf("Saturday\n");
            break;
        case 7:
            printf("Sunday\n");
            break;
        default:
            printf("Invalid day\n");
            break;
    }

    return 0;
}

Trong ví dụ này, giá trị của biến day được đặt là 3, khiến lệnh switch chọn nhánh trường hợp với giá trị 3 và in ra "Wednesday".

Lưu ý quan trọng

  1. Sử dụng break cẩn thận: Thiếu break có thể dẫn đến hành vi "fall-through" (tiếp tục thực hiện nhánh tiếp theo), trừ khi đó là ý định của lập trình viên.
  2. Khả năng rẽ nhánh: Lệnh switch thường sử dụng với các giá trị hằng số. Các giá trị không thể là biến hoặc biểu thức phức tạp.
  3. Hiệu suất: Mặc dù switch có thể dễ đọc hơn cấu trúc nhiều if-else, nhưng hiệu suất của nó cũng có thể tốt hơn, nhất là khi có nhiều nhánh lựa chọn.

Kết luận

Lệnh switch là một công cụ mạnh mẽ và tiện lợi cho việc xử lý nhiều nhánh lựa chọn trong lập trình C. Nó giúp mã nguồn rõ ràng hơn, dễ đọc hơn và đôi khi hiệu suất cao hơn. Khi lập trình viên cần đối phó với nhiều lựa chọn dựa trên một biến hoặc biểu thức, lệnh switch là lựa chọn lý tưởng.

Comments