STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ

    Cấu Trúc Rẽ Nhánh Switch ... Case trong Ngôn Ngữ C++

    Cơ bản về cơ chế và lập trình với switch ... case trong C/C++.
    Amy Lê

    Amy

    13/06/2015
    23/09/2020
    4 phút đọc
    Cấu Trúc Rẽ Nhánh Switch ... Case trong Ngôn Ngữ C++

    C/C++ cung cấp cho chúng ta 1 số cấu trúc rẽ nhánh cho chương trình trong đó có switch ... case để giải quyết các logic.

    • switch so sánh 1 biểu thức nguyên với 1 danh sách giá trị các số nguyên, các hằng kí tự hoặc biểu thức hằng. Mỗi giá trị trong danh sách chính là 1 case (trường hợp) trong khối lệnh của switch.
    • Trong khối lệnh switch còn có thể có 1 default case (trường hợp mặc định) có thể có hoặc không. Mặt khác, trong mỗi trường hợp còn chứa các khối lệnh chờ được thực thi.

    Cú pháp của cấu trúc rẽ nhánh switch…case

    Muốn sử dụng cấu trúc switchcase, sử dụng cú pháp sau:

    switch (expression)
    {
        case constant_1:
        {
            Statements;
            break;
        }
        case constant_2:
        {
            Statements;
            break;
        }
        .
        .
        .
        case constant_n:
        {
            Statements;
            break;
        }
        default:
        {
            Statements;
        }
    }

    Ví dụ:

    #include <iostream.h>
    using namespace std;
    
    int main()
    {
        int month;
        cout << "Month: " << endl;
        cin >> month;
    
        switch (month)
        {
            case 1:
            {
                cout << "January" << endl;
                break;
            }
            case 2:
            {
                cout << "February" << endl;
                break;
            }
            case 3:
            {
                cout << "March" << endl;
                break;
            }
            case 4:
            {
                cout << "April" << endl;
                cout << "April 2" << endl;
                break;
            }
            case 5:
            {
                cout << "May" << endl;
                break;
            }
            case 6:
            {
                cout << "June" << endl;
                break;
            }
            case 7:
            {
                cout << "July" <<endl;
                break;
            }
            case 8:
            {
                cout << "August" << endl;
                break;
            }
            case 9:
            {
                cout << "September" << endl;
                cout << "September 2" << endl;
                break;
            }
            case 10:
            {
                cout << "October" << endl;
                break;
            }
            case 11:
            {
                cout << "November" << endl;
                break;
            }
            case 12:
            {
                cout << "December" << endl;
                break;
            }
            default:
            {
                cout << "Input is false" << endl;
            }
        }
    
        return 0;
    }

    Nguyên tắc hoạt động cấu trúc switch…case

    Biểu thức nguyên trong switch được tính toán và kiểm tra lần lượt với giá trị của từng case.

    Đầu tiên, nó sẽ được so sánh với giá trị của case đầu tiên, nếu bằng nhau thì sẽ thực hiện các lệnh (statement) trong case này cho đến khi nó gặp được từ khoá break.

    Ngược lại, nếu như giá trị biểu thức nguyên không bằng giá trị case đầu tiên thì nó sẽ tiếp tục so sánh đến giá trị của case thứ hai và tiếp tục thực hiện như những bước trên. Giả sử, đến cuối cùng vẫn không tìm được giá trị bằng nó thì các khối lệnh trong default sẽ được thực hiện nếu như có tồn tại default.

    Khi cấu trúc switchcase kết thúc, chương trình sẽ thực hiện tiếp những dòng lệnh sau cấu trúc switchcase.

    Ta có sơ đồ hoạt động của cấu trúc switchcase như sau:

    Sơ đồ cấu trúc switch ... case

    1 số lưu ý khi dùng cấu trúc rẽ nhánh switch…case

    • Các giá trị của mỗi case phải cùng kiểu dữ liệu với giá trị của biểu thức được so sánh.
    • Số lượng các case là không giới hạn nhưng chỉ có thể có duy nhất 1 default.
    • Giá trị của các case là 1 hằng số và các giá trị của các case phải khác nhau.
    • Từ khóa break có thể sử dụng hoặc không.
      • Nếu không được sử dụng thì chương trình sẽ không kết thúc cấu trúc switchcase khi đã thực hiện hết khối lệnh của case đó. Thay vào đó, nó sẽ thực hiện tiếp các khối lệnh tiếp theo cho đến khi gặp từ khoá break hoặc dấu } cuối cùng của cấu trúc switchcase. Vì vậy, các bạn có thể sử dụng 1 khối lệnh cho nhiều trường hợp khác nhau.

    Ví dụ:

    #include <iostream.h>
    using namespace std;
    
    int main()
    {
            int month, day;
            cout << "Month: " << endl;
            cin >> month;
    
            switch (month)
            {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                {
                    day = 30;
                    break;
                }
                case 4:
                case 6:
                case 9:
                case 11:
                {
                    day = 31;
                    break;
                }
                default:
                {
                    day = 28;
                }
            }
    
            return 0;
    }

    Đọc thêm code Tính ngày kế tiếp có sử dụng switch-case

    0 Bình luận
    Modern C++

    Modern C++

    STDIO Training - Đào Tạo Lập Trình C++.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021