Hey Gen Z! Anh Creyt đây. Hôm nay, chúng ta sẽ "bẻ khóa" một khái niệm mà nói thật, nếu không có nó thì code của mấy đứa cũng chỉ là một cỗ máy đần độn chạy thẳng tắp. Anh đang nói về if – hay còn gọi là "người gác cổng" hay "bộ não ra quyết định" của chương trình.
Tưởng tượng này: Mấy đứa đang chơi game, nhân vật của mấy đứa gặp một con quái vật. Nó có đánh không? Hay bỏ chạy? Hay tìm item hồi máu? Tất cả những hành động "nếu... thì..." đó đều được điều khiển bởi if. Nó cho phép code của chúng ta "suy nghĩ", "đưa ra quyết định" dựa trên các điều kiện khác nhau. Giống như mấy đứa quyết định "Nếu trời mưa thì mang ô" vậy đó. Đơn giản vậy thôi!
Để làm gì? Nó giúp chương trình của bạn linh hoạt, phản ứng được với các tình huống khác nhau. Không còn là một kịch bản cứng nhắc, mà là một câu chuyện có nhiều ngã rẽ, phụ thuộc vào dữ liệu đầu vào hoặc trạng thái hiện tại của hệ thống.
Cú Pháp if Trong C++: Đơn Giản Mà Mạnh Mẽ
Trong C++, if có cú pháp cực kỳ dễ gần, như một người bạn thân thiết vậy:
if (dieu_kien) {
// Khối lệnh sẽ được thực thi NẾU dieu_kien là TRUE
}
dieu_kien ở đây là một biểu thức logic (Boolean expression) có thể trả về true hoặc false. Nếu true, khối lệnh bên trong dấu ngoặc nhọn {} sẽ được thực thi. Nếu false, khối lệnh đó bị bỏ qua, và chương trình tiếp tục chạy từ sau dấu ngoặc nhọn đóng.
Ví dụ Code Minh Họa if:
#include <iostream>
int main() {
int diemThi = 85;
// Nếu điểm thi lớn hơn hoặc bằng 50, thì đậu
if (diemThi >= 50) {
std::cout << "Chúc mừng! Bạn đã đậu môn này." << std::endl;
}
std::cout << "Chương trình kết thúc." << std::endl;
return 0;
}
Output:
Chúc mừng! Bạn đã đậu môn này.
Chương trình kết thúc.
Nếu diemThi là 45, thì dòng "Chúc mừng..." sẽ không xuất hiện.
Nâng Cấp Quyết Định: if-else và if-else if-else
Đời không chỉ có "nếu A thì làm X", mà còn có "nếu A thì làm X, còn không thì làm Y" (if-else). Hoặc phức tạp hơn nữa: "nếu A thì làm X, nếu B thì làm Y, còn không thì làm Z" (if-else if-else).
if-else:
if (dieu_kien) {
// Làm gì đó NẾU dieu_kien là TRUE
} else {
// Làm gì đó KHÁC NẾU dieu_kien là FALSE
}
Ví dụ:
#include <iostream>
int main() {
int tuoi = 17;
if (tuoi >= 18) {
std::cout << "Bạn đủ tuổi để bầu cử." << std::endl;
} else {
std::cout << "Bạn chưa đủ tuổi để bầu cử." << std::endl;
}
return 0;
}
if-else if-else (Chuỗi Quyết Định):
if (dieu_kien_1) {
// Làm gì đó NẾU dieu_kien_1 là TRUE
} else if (dieu_kien_2) {
// Làm gì đó NẾU dieu_kien_1 là FALSE VÀ dieu_kien_2 là TRUE
} else {
// Làm gì đó KHÁC NẾU TẤT CẢ các điều kiện trên đều FALSE
}
Ví dụ:
#include <iostream>
#include <string>
int main() {
char xepLoai = 'B'; // Có thể là 'A', 'B', 'C', 'D', 'F'
if (xepLoai == 'A') {
std::cout << "Xuất sắc! Bạn là thiên tài." << std::endl;
} else if (xepLoai == 'B') {
std::cout << "Rất tốt! Cố gắng thêm chút nữa." << std::endl;
} else if (xepLoai == 'C') {
std::cout << "Khá! Cần nỗ lực hơn." << std::endl;
} else if (xepLoai == 'D') {
std::cout << "Trung bình! Nguy hiểm rồi đó." << std::endl;
} else {
std::cout << "Rớt! Cần ôn lại bài." << std::endl;
}
return 0;
}
Ứng Dụng Thực Tế: if Ở Khắp Mọi Nơi!
if là xương sống của mọi logic tương tác, mọi quyết định tự động mà mấy đứa thấy hàng ngày:
- Facebook/Instagram: "Nếu" bạn đăng nhập thành công, "thì" hiển thị News Feed. "Nếu" không, "thì" hiển thị trang đăng nhập lại. "Nếu" có thông báo mới, "thì" hiện icon chuông đỏ.
- Shopee/Tiki: "Nếu" sản phẩm còn hàng, "thì" nút "Thêm vào giỏ" sáng lên. "Nếu" số lượng trong kho < 5, "thì" hiện cảnh báo "Sắp hết hàng!".
- Game (Liên Quân, Valorant): "Nếu" tướng/nhân vật của bạn mất máu dưới 20%, "thì" hiện hiệu ứng đỏ màn hình và gợi ý dùng skill hồi máu. "Nếu" bạn ở gần trụ địch, "thì" trụ sẽ tấn công.
- Hệ điều hành (Windows/macOS): "Nếu" bạn click đúp vào icon, "thì" mở chương trình tương ứng. "Nếu" pin yếu, "thì" hiện cảnh báo.
Thấy chưa? if là xương sống của mọi logic tương tác, mọi quyết định tự động.
Mẹo Hay Từ Creyt (Best Practices):
- Giữ Điều Kiện Đơn Giản: Đừng nhồi nhét quá nhiều điều kiện phức tạp vào một
ifduy nhất. Nếu quá rắc rối, hãy tách nhỏ ra hoặc dùng các toán tử logic&&(AND),||(OR),!(NOT) một cách hợp lý. - Luôn Dùng Dấu Ngoặc Nhọn
{}: Ngay cả khi khối lệnh chỉ có một dòng, hãy dùng{}. Nó giúp code dễ đọc, dễ bảo trì và tránh lỗi phát sinh khi bạn thêm dòng lệnh sau này. Đây là thói quen vàng của lập trình viên chuyên nghiệp! - Thứ Tự Quan Trọng Với
else if: Với chuỗiif-else if-else, thứ tự các điều kiện rất quan trọng. Chương trình sẽ kiểm tra từ trên xuống dưới và dừng lại ở điều kiệntrueđầu tiên. Đặt các điều kiện cụ thể hoặc có khả năng xảy ra cao hơn lên trước. - Tránh "If Lồng If" Quá Sâu: Nhiều
iflồng vào nhau (nested if) quá sâu sẽ khiến code khó đọc, khó debug. Hãy tìm cách refactor (tái cấu trúc) code để giảm độ sâu lồng ghép, có thể bằng cách tạo hàm mới hoặc dùngreturnsớm. - Sử dụng
switch-casekhi có nhiều lựa chọn rời rạc: Khi bạn có nhiềuelse ifkiểm tra cùng một biến với các giá trị cụ thể,switch-casethường là lựa chọn gọn gàng và hiệu quả hơn. (Ví dụxepLoaiở trên hoàn toàn có thể dùngswitch-case).
Thử Nghiệm Của Anh Creyt và Hướng Dẫn Sử Dụng:
Anh từng thấy mấy đứa newbie hay bị lú lẫn giữa if độc lập và if-else if. Nhớ nhé:
ifđộc lập: Mỗiiflà một quyết định riêng lẻ, không liên quan đến cácifkhác. Tất cả cácifđều được kiểm tra.if-else if-else: Đây là một chuỗi quyết định. Chỉ một khối lệnh duy nhất trong cả chuỗi được thực thi (khối lệnh của điều kiệntrueđầu tiên).
Khi nào dùng?
ifđơn lẻ: Khi bạn cần kiểm tra một điều kiện và thực hiện một hành động cụ thể, không ảnh hưởng đến các điều kiện khác. Ví dụ: "Nếu có tiền, mua cà phê." (Không có tiền thì thôi, không làm gì khác).if-else: Khi bạn có hai nhánh hành động đối lập nhau. Ví dụ: "Nếu đói, ăn bánh mì. Ngược lại (không đói), uống nước."if-else if-else: Khi bạn có nhiều lựa chọn, nhiều nhánh hành động phụ thuộc vào các điều kiện khác nhau, và chỉ một trong số đó được thực hiện. Ví dụ: "Nếu trời nắng, đi bơi. Nếu trời mưa, xem phim. Ngược lại (trời âm u), đọc sách."
Hãy tự mình thử nghiệm bằng cách thay đổi giá trị của biến trong các ví dụ code trên, hoặc tạo ra một kịch bản nhỏ của riêng bạn. Ví dụ: một chương trình hỏi tuổi người dùng và đưa ra thông báo phù hợp (trẻ em, thiếu niên, người lớn). Đó là cách nhanh nhất để "thấm" kiến thức này vào máu!
Thuộc Series: C++
Bài giảng này được tự động xuất bản ngẫu nhiên từ thư viện kiến thức. Đừng quên đón xem các Từ khoá Hướng Dẫn tiếp theo nhé!