Trang chủ » Bài 5 – Cấu trúc rẽ nhánh IF/ELSE, SWITCH
Lập trình C/C++

Bài 5 – Cấu trúc rẽ nhánh IF/ELSE, SWITCH

cplusplus

Xin chào mọi người!

Không hiểu tại sao hôm nay tâm trạng mình lại tốt để viết liền 2 bài nhỉ 😀 Thôi thì cứ viết vậy.

Bài viết hôm nay mình sẽ giới thiệu về cấu trúc rẽ nhánh. Bất kì ngôn ngữ lập trình nào cũng vậy, cấu trúc rẽ nhánh luôn là một trong những phần quan trọng nhất. Chính vì vậy trong bài này mình sẽ nói thật kĩ về vấn đề này.

Trong đời sống hằng ngày, ta bắt gặp những cấu trúc rẽ nhánh, dạng như “Hôm nay thầy giáo mà không ra bài tập thì tí tao với mày đi chơi” hay phũ phàng hơn thì “Anh chọn người ấy hay là em?” (đùa tí thôi :v)

Trong ngôn ngữ lập trình, cấu trúc rẽ nhánh được sử dụng khi tính toán điều kiện nào đó, nếu nó đúng thì làm cái này, sai thì làm cái kia hoặc chả làm gì cả. Trong C++ có sẵn 2 cấu trúc rẽ nhánh là if else switch

Mình nói về if else trước nhé :D. Cú pháp:

if (<điều kiện>)
{
// Câu lệnh khi <điều kiện> đúng
}

Cấu trúc if else đầy đủ sẽ là:

if (<điều kiện>)
{
// Câu lệnh khi <điều kiện> đúng
}
else
{
// Câu lệnh khi <điều kiện> sai
}

Ví dụ:

// Kiem tra so lon hon giua a va b
if (a > b)
{
cout << "a lon hon" << endl;
}
else
{
cout << "b lon hon" << endl;
}

Trong cấu trúc if else, <điều kiện> là 1 biểu thức logic. Biểu thức logic có thể là biến kiểu boolean hoặc 1 biểu thức logic. Với những cấu trúc if có 1 câu lệnh thì ta có thể rút gọn lại bằng cách xoá đi cặp móc nhọn (mình không khuyến khích cách này cho lắm, tốn có 2 dòng mà đỡ phải sửa code :3)

// Kiem tra so lon hon giua a va b
if (a > b) cout << "a lon hon" << endl;
else cout << "b lon hon" << endl;

Ngoài ra, với những đoạn code đặc biệt, ta cũng có thể rút gọn lại bằng cấu trúc sau:

(<điều kiện>) ? <giá trị 1> : <giá trị 2>;

Ta có thể sử dụng ngôn ngữ tự nhiên để đọc đoạn code trên như sau: kiểm tra <điều kiện> nếu đúng thì trả về <giá trị 1>, ngược lại thì trả về <giá trị 2>

Ví dụ:

// Kiem tra so lon hon giua a va b
int KQ = (a > b) ? a : b; // KQ se la a neu a lon hon b, va nguoc lai

Tiếp theo mình sẽ nói về switch, thì cú pháp của nó như sau

switch (<biểu thức nguyên>)
{
case <giá trị 1>:
// Câu lệnh 1
break;
case <giá trị 2>:
// Câu lệnh 2
break;
...
case <giá trị n>:
// Câu lệnh n
break;
default:
// Câu lệnh
}

Trong switch, <biểu thức nguyên> có thể là 1 biến, hàm trả về giá trị,… Nó sẽ lần lượt so sánh với những <giá trị> từng case, nếu case nào có giá trị bằng với <biểu thức nguyên>, nó sẽ chạy câu lệnh bên dưới, còn không có giá trị nào bằng thì nó sẽ chạy câu lệnh ở default.

Ví dụ:

// Xuất ra chữ các số tự nhiên nhỏ hơn 3
switch (so_tu_nhien)
{
case 0:
cout << "Khong" << endl;
break;
case 1:
cout << "Mot" << endl;
break;
case 2:
cout << "Hai" << endl;
break;
default:
cout << "Khong doc duoc :v" << endl;
}

Ơ vậy thì break ở trong đoạn code đó để làm gì nhỉ? Ta cùng xét ví dụ trên nhé 😀

// Xuất ra chữ các số tự nhiên nhỏ hơn 3
int so_tu_nhien = 1;
switch (so_tu_nhien)
{
case 0:
cout << “Khong” << endl;
break;
case 1:
cout << “Mot” << endl;
case 2:
cout << “Hai” << endl;
break;
default:
cout << “Khong doc duoc :v” << endl;
}

Chuyện gì vậy nhỉ? Kết quả xuất ra lại luôn cả “Hai”?

Một lưu ý với cấu trúc switch là sau khi hoàn tất khối lệnh trong case, nếu không gặp break thì chương trình sẽ tự động chuyển sang case kế tiếp. Ở ví dụ trên, do case 1 không có break khi kết thúc khối lệnh nên nó sẽ tự động chuyển sang case 2. Bạn nhớ lưu ý để tránh xảy ra lỗi không đáng có nhé 😀

Trên đây là bài viết về cấu trúc rẽ nhánh IF/ELSE và SWITCH. Cảm ơn các bạn đã theo dõi!

Tags

About the author

Võ Hoài Sơn

Tính tình bất định
Chọc vào là bịnh
Rất yêu lập trình
Luôn code hết mình
Mình hiện đang là sinh viên của trường ĐH Khoa học tự nhiên TPHCM. Bản thân rất thích code, kiêm luôn cả mần thơ nên thường hơi hâm hâm dở dở. Ngoài ra chém gió, chém chuối, chém trái cây các kiểu cũng là sở trường của mình. Rất mong được làm quen với các bạn :D

Add Comment