Bài 22. Lệnh switch case trong C

Bài số 20 trong 69 bài của series Học C Không Khó

Lệnh switch case là một cấu trúc điều khiển & rẽ nhánh hoàn toàn có thể được thay thế bằng cấu trúc if else. Tuy nhiên, việc sử dụng switch case sẽ giúp code của chúng ta dễ viết và dễ đọc hơn; Một điều nữa là sử dụng switch case có vẻ như cho hiệu năng tốt hơn so với sử dụng if else. Bạn có thể xem rõ hơn về ưu nhược điểm của dùng lệnh switch case ở phần tài liệu tham khảo

Video hướng dẫn lệnh switch case

Cách hoạt động của cấu trúc switch case

Dưới đây là cú pháp của lệnh switch case:

  • expression phải bắt buộc là giá trị hằng, có thể là biểu thức nhưng kết quả cần là hằng số.
  • Trong đó, expression sẽ được tính toán 1 lần duy nhất và sau đó so sánh với các giá trị của các case.
  • Nếu có 1 case nào đó khớp giá trị, các khối lệnh tương ứng sau case đó sẽ được thực hiện cho tới khi gặp lệnh break. Do đó, nếu chúng ta không sử dụng break thì tất cả các case kể từ case khớp giá trị đều được thực hiện.
  • Case default sẽ được thực hiện nếu không có case nào khớp giá trị với expression.

Dưới đây là sơ đồ khối mô tả hoạt động của lệnh switch case:

Bài 23. Lệnh switch case trong C
Sơ đồ khối của lệnh switch case, nguồn: programiz.com

Bài tập thực hành

/*
Nhập vào 2 số nguyên a, b
Nhập vào phép toán +, -, *, /
Thực hiện tính toán theo phép toán nhập vào với hai số a, b

Ví dụ:


*/

Lời giải tham khảo sử dụng lệnh switch case:

Kết quả chạy chương trình:

Lệnh goto trong C

Lệnh goto cho phép code của bạn nhảy đến thực hiện ở vị trí label bất kỳ của chương trình mà không cần nhất định phải theo thứ tự từ trên xuống. Do tính chất nhảy “lung tung” chẳng giống ai nên lệnh goto không được khuyến khích sử dụng.

Cú pháp của lệnh goto như sau:

Trong đó, label là một định danh. Hình dưới đây cho thấy code đang chạy nếu gặp lệnh goto sẽ bỏ tiến trình sau nó mà nhảy tới nơi label để chạy tiếp.

Bài 23. Lệnh switch case trong C
Cách hoạt động của lệnh goto, nguồn: programiz.com

Ví dụ về việc sử dụng lệnh goto trong C:

Kết quả chạy chương trình:

Tài liệu tham khảo

  1. https://stackoverflow.com/questions/2158759/
  2. https://stackoverflow.com/questions/767821/
  3. https://www.programiz.com/c-programming/c-switch-case-statement
Các bài viết trong SeriesBài trước: Bài 21. Lệnh break và continue trong CBài sau: Bài 23. Phân tích thừa số nguyên tố trong C/C++

10 COMMENTS

  1. //comment_form(Dạ thầy ơi cho em hỏi tại sao em viết code như này thì nó chạy mãi không dừng ạ :'(
    #include
    int main(){

    go_here:
    printf(“Xinh dep!\n”);

    for(int i = 1; i <= 5; i++){
    goto go_here;
    }

    return 0;
    });

  2. anh ơi, cũng cái bài /*
    Nhập vào 2 số nguyên a, b
    Nhập vào phép toán +, -, *, /
    Thực hiện tính toán theo phép toán nhập vào với hai số a, b

    nhưng em nhập số trước nhập kí tự các dấu sau lại mặc định ra cái default ạ?

  3. expression phải bắt buộc là giá trị hằng, có thể là biểu thức nhưng kết quả cần là hằng số.
    Trong đó, expression sẽ được tính toán 1 lần duy nhất và sau đó so sánh với các giá trị của các case.
    Nếu có 1 case nào đó khớp giá trị, các khối lệnh tương ứng sau case đó sẽ được thực hiện cho tới khi gặp lệnh break. Do đó, nếu chúng ta không sử dụng break thì tất cả.
    Thầy ơi em chưa hiếu lắm những đoạn này thầy giải thích ch em với ạ. Em cảm ơn!

    • em có thể truyền vào biến kiếu char hoặc int nhé, sau này cần thì em tìm hiểu sâu hơn.

  4. không thả tim được nên like đỡ.
    thích cái lệnh goto lắm luôn
    anh chỉ rất hay và dễ hiểu
    mong anh tiếp tục làm thêm nhiều hướng dẫn hay nữa

    • Do tính chất nhảy “lung tung” chẳng giống ai nên lệnh goto không được khuyến khích sử dụng.

LEAVE A REPLY

Please enter your comment!
Please enter your name here