Giới thiệu
Trong bài học trước: GIỚI THIỆU VỀ CẤU TRÚC ĐIỀU KHIỂN (Control flow introduction), chúng ta đã nắm được cách hoạt động và các loại cấu trúc điều khiển trong ngôn ngữ lập trình C++.
Trong bài viết này, tôi sẽ giới thiệu cho các bạn về cấu trúc rẽ nhánh trong C++, đặc biệt là Câu điều kiện If và Toán tử điều kiện trong C++.
Nội dung
Để hiểu rõ bài viết này, bạn nên có kiến thức cơ bản về các phần sau:
- KIỂU LUẬN LÝ & CƠ BẢN VỀ CÂU ĐIỀU KIỆN IF TRONG C++ (Boolean and If statements basic)
Trong bài viết này, chúng ta sẽ tìm hiểu về các vấn đề sau:
- Câu điều kiện If
- Toán tử điều kiện (Conditional operator)
Câu điều kiện If
Câu điều kiện If là cấu trúc rẽ nhánh cơ bản nhất trong C++. Cú pháp của câu điều kiện If được mô tả như sau:
Câu điều kiện If thiếu:
if (condition)
// nếu condition là true
statement; // thực thi câu lệnh này
Câu điều kiện If đủ:
if (condition)
// nếu condition là true
statement1; // thực thi câu lệnh này
else
statement2; // nếu condition là false, thực thi câu lệnh này
Theo cú pháp trên, nếu condition
là một biểu thức đúng (true), statement1
sẽ được thực thi. Ngược lại, nếu condition
là sai (false), statement2
sẽ được thực thi.
Dưới đây là một ví dụ về chương trình kiểm tra đăng nhập đơn giản sử dụng câu điều kiện If:
#include
#include
using namespace std;
int main() {
const string PASSWORD("howkteam.com");
string password;
cout << "Nhập mật khẩu: ";
getline(cin, password);
if (password == PASSWORD)
cout << "Đăng nhập thành công!" << endl;
else
cout << "Đăng nhập thất bại!" << endl;
return 0;
}
Đầu ra sẽ là:
Nếu bạn nhập sai mật khẩu "howkteam.com", chương trình sẽ thông báo "Đăng nhập thất bại". Ngược lại, nếu bạn nhập đúng, chương trình sẽ thông báo "Đăng nhập thành công".
Câu điều kiện If với nhiều dòng lệnh
Lưu ý rằng trong câu lệnh If hoặc Else, chỉ có một câu lệnh duy nhất được thực thi. Nếu bạn muốn thực thi nhiều câu lệnh trong If hoặc Else, bạn phải sử dụng khối lệnh (block).
#include
#include
using namespace std;
int main() {
const string PASSWORD("howkteam.com");
string password;
cout << "Nhập mật khẩu: ";
getline(cin, password);
if (password == PASSWORD) {
cout << "Đăng nhập thành công!" << endl;
cout << "Xin chào howkteam.com!" << endl;
cout << "Miễn phí học!" << endl;
// ...
}
else {
cout << "Đăng nhập thất bại!" << endl;
cout << "Xin chào howkteam.com!" << endl;
cout << "Miễn phí học!" << endl;
// ...
}
return 0;
}
Đầu ra sẽ là:
Kinh nghiệm: Nên đặt các câu lệnh của câu điều kiện If bên trong cặp dấu ngoặc nhọn {}, ngay cả khi chỉ có một dòng lệnh. Điều này giúp chương trình rõ ràng hơn và dễ hiểu hơn.
Chuỗi câu điều kiện If (Chaining if statements)
Nếu bạn muốn kiểm tra nhiều hơn 2 trường hợp trong một câu điều kiện If, bạn có thể sử dụng cú pháp "if ... else if ...":
if (condition) {
// làm A
} else if (another_condition) {
// làm B
} else if (one_more_condition) {
// làm C
} else {
// làm D
}
Dưới đây là một ví dụ về chương trình sử dụng chuỗi câu điều kiện if:
#include
using namespace std;
int main() {
cout << "Nhập số bạn yêu thích (1, 2, 3): ";
int n;
cin >> n;
if (n == 1)
cout << "Bạn thật đẹp trai!" << endl;
else if (n == 2)
cout << "Bạn quá đẹp trai!" << endl;
else if (n == 3)
cout << "Bạn đẹp trai vô địch vũ trụ!" << endl;
else
cout << "Dữ liệu chưa chính xác!" << endl;
return 0;
}
Đầu ra sẽ là:
Toán tử logic với câu điều kiện If (Using logical operators with if statements)
Bạn có thể sử dụng toán tử logic (AND, OR, NOT, ...) trong các mệnh đề so sánh để kiểm tra nhiều điều kiện cùng một lúc. Chi tiết về toán tử logic đã được hướng dẫn trong bài viết TOÁN TỬ QUAN HỆ, LOGIC, BITWISE, MISC & ĐỘ ƯU TIÊN TOÁN TỬ TRONG C++ (Operators).
Ví dụ:
#include
#include
using namespace std;
int main() {
const string USERNAME("kteam");
const string PASSWORD("howkteam.com");
string userName;
string password;
cout << "Nhập tên người dùng: ";
getline(cin, userName);
cout << "Nhập mật khẩu: ";
getline(cin, password);
if ((userName == USERNAME) && (password == PASSWORD)) {
cout << "Đăng nhập thành công!" << endl;
} else {
cout << "Đăng nhập thất bại!" << endl;
}
return 0;
}
Đầu ra sẽ là:
Bạn có thể xem lại bài viết TOÁN TỬ QUAN HỆ, LOGIC, BITWISE, MISC & ĐỘ ƯU TIÊN TOÁN TỬ TRONG C++ (Operators) để nắm rõ hơn về cách hoạt động của các toán tử logic.
Toán tử điều kiện (Conditional operator)
Cấu trúc câu điều kiện if/else:
if (condition)
expression1; // thực thi câu lệnh này
else
expression2; // nếu condition là false, thực thi câu lệnh này
Hoặc:
if (condition)
x = value1; // x = value 1
else
x = value2; // nếu condition là false, x = value 2
Viết lại dưới dạng toán tử điều kiện ( ?: ):
(condition) ? expression1 : expression2;
Hoặc:
x = (condition) ? value1 : value2;
Toán tử điều kiện "?: " là toán tử 3 ngôi duy nhất trong C++ (bởi vì nó chứa 3 toán hạng). Nó có thể được sử dụng để thay thế câu lệnh if/else cơ bản.
Chú ý: Các toán hạng của toán tử điều kiện không phải là một câu lệnh, vì vậy không cần dấu chấm phẩy ";".
Ví dụ 1:
int a = 10, b = 20, max;
if (a > b) {
max = a;
} else {
max = b;
}
Bạn có thể viết lại như sau sử dụng toán tử điều kiện:
int a = 10, b = 20;
int max = (a > b) ? a : b;
Ví dụ 2:
if (1 > 0) {
cout << 1 << endl;
} else {
cout << 0 << endl;
}
Bạn có thể viết lại như sau sử dụng toán tử điều kiện:
// Cách 1
(1 > 0) ? (cout << 1 << endl) : (cout << 0 << endl);
// Cách 2
cout << ((1 > 0) ? 1 : 0) << endl;
Kinh nghiệm: Khi viết các câu lệnh có nhiều toán tử, luôn sử dụng dấu ngoặc tròn để hạn chế sai sót về độ ưu tiên của toán tử.
Bạn có thể xem lại bài viết TOÁN TỬ QUAN HỆ, LOGIC, BITWISE, MISC & ĐỘ ƯU TIÊN TOÁN TỬ TRONG C++ (Operators) để nắm rõ hơn về độ ưu tiên của các toán tử.
Toán tử điều kiện tương đương với một biểu thức
Toán tử điều kiện "?: " có thể là một biểu thức, trong khi câu điều kiện if/else chỉ là một câu lệnh.
Ví dụ:
bool bIsVip = true; // Khởi tạo một biến hằng số
const double dPrice = bIsVip ? 1000 : 500;
Trong ví dụ trên, không thể sử dụng câu điều kiện if/else để thay thế. Bởi vì một biến hằng số phải được khởi tạo giá trị tại thời điểm khai báo.
Kết luận
Qua bài viết này, bạn đã nắm được cách sử dụng câu điều kiện If và toán tử điều kiện trong C++.
Trong bài viết tiếp theo, tôi sẽ giới thiệu thêm một cấu trúc rẽ nhánh khác trong C++, đó là câu điều kiện Switch trong C++.
Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để chúng tôi cải thiện bài viết. Đừng quên "Luyện tập - Thử thách - Không ngại khó".
Thảo luận
Nếu bạn có bất kỳ khó khăn hoặc thắc mắc nào về khóa học, đừng ngần ngại đặt câu hỏi trong phần Bình luận bên dưới hoặc trong mục Hỏi & Đáp trên trang Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.