Admin Học Vấn Cho Con|
08/10/2025
13lượt xem
0bình luận

C++ Bài 18: Toán tử logic – and, or, not – bộ não C++!

Mục lục

Chào các bạn! Hôm nay chúng ta sẽ học về “bộ não C++” – những toán tử giúp máy tính suy nghĩ phức tạp như con người! 🤖💭

🎭 Hãy tưởng tượng:

  • Bạn làthám tử logic🕵️‍♂️ cần kết hợp nhiều manh mối để giải án!
  • Hoặc bạn làcơ trưởng máy bay✈️ phải kiểm tra nhiều điều kiện trước khi cất cánh!
  • Hoặc đơn giản, bạn muốnđưa ra quyết định thông minhdựa trên nhiều yếu tố!

Hôm nay bạn sẽ học:

  • 3 toán tử logicsiêu mạnh: AND (&&), OR (||), NOT (!)
  • Bảng chân trị– bí quyết tính đúng sai
  • Kết hợp điều kiện phức tạpmột cách thông minh
  • Ứng dụng thực tếtrong game, website và ứng dụng!
// Thay vì phải viết dài dòng:
if (tuoi >= 18) {
    if (diem >= 7.0) {
        cout << "Được học bổng!";
    }
}

// Có thể viết gọn và thông minh:
if (tuoi >= 18 && diem >= 7.0) {
    cout << "Được học bổng!";
}

Từ bây giờ, bạn sẽ trở thành “master logic” có thể tạo ra những điều kiện phức tạp! 🚀


📚 3 TOÁN TỬ LOGIC CƠ BẢN

🎯 Bảng tổng quan toán tử logic:

Toán tửTênKý hiệuÝ nghĩa
&&AND (VÀ)Cả hai đều phải đúng
||OR (HOẶC)HoặcÍt nhất một phải đúng
!NOT (KHÔNG)KhôngĐảo ngược kết quả

🌟 Nguyên tắc hoạt động:

  • AND (&&): Nghiêm khắc – Tất cả phải đúng mới đúng
  • OR (||): Rộng rãi – Chỉ cần một cái đúng là được
  • NOT (!): Nổi loạn – Đúng thành sai, sai thành đúng!

🤝 TOÁN TỬ AND (&&) – CẢ HAI ĐỀU PHẢI ĐÚNG

🎪 Bảng chân trị AND:

ABA && B
truetruetrue ✅
truefalsefalse ❌
falsetruefalse ❌
falsefalsefalse ❌

Quy tắc vàng: Chỉ khi CẢ HAI đều true thì kết quả mới là true!

🏆 Ví dụ đơn giản:

#include <iostream>
using namespace std;

int main() {
    int tuoi = 20;
    double diem = 8.5;
    
    // Kiểm tra đủ điều kiện học bổng
    bool duDieuKien = (tuoi >= 18) && (diem >= 8.0);
    
    cout << "Tuổi: " << tuoi << " (cần >= 18)" << endl;
    cout << "Điểm: " << diem << " (cần >= 8.0)" << endl;
    cout << "Kết quả: " << (duDieuKien ? "✅ Đủ điều kiện!" : "❌ Chưa đủ điều kiện!") << endl;
    
    return 0;
}

💰 Ví dụ thực tế – Kiểm tra thẻ tín dụng:

int main() {
    int tuoi = 25;
    double luong = 15000000;      // 15 triệu/tháng
    bool coTaiKhoanNganHang = true;
    int diemTinDung = 720;        // Điểm tín dụng
    
    cout << "🏦 KIỂM TRA ĐIỀU KIỆN LÀM THẺ TÍN DỤNG:" << endl;
    cout << "════════════════════════════════════════" << endl;
    
    // Kiểm tra từng điều kiện
    bool duTuoi = (tuoi >= 18);
    bool duThu = (luong >= 10000000);
    bool coTaiKhoan = coTaiKhoanNganHang;
    bool tinDungTot = (diemTinDung >= 650);
    
    cout << "📋 Thông tin của bạn:" << endl;
    cout << "• Tuổi: " << tuoi << " " << (duTuoi ? "✅" : "❌") << endl;
    cout << "• Lương: " << luong << " VNĐ " << (duThu ? "✅" : "❌") << endl;
    cout << "• Có tài khoản: " << (coTaiKhoan ? "Có ✅" : "Không ❌") << endl;
    cout << "• Điểm tín dụng: " << diemTinDung << " " << (tinDungTot ? "✅" : "❌") << endl;
    
    // Kết hợp tất cả điều kiện với AND
    bool duocLamThe = duTuoi && duThu && coTaiKhoan && tinDungTot;
    
    cout << "\n🎯 KẾT QUẢ CUỐI CÙNG:" << endl;
    if (duocLamThe) {
        cout << "🎉 Chúc mừng! Bạn được duyệt làm thẻ tín dụng!" << endl;
    } else {
        cout << "😢 Rất tiếc! Bạn chưa đủ điều kiện làm thẻ!" << endl;
    }
    
    return 0;
}

🤲 TOÁN TỬ OR (||) – ÍT NHẤT MỘT PHẢI ĐÚNG

🎪 Bảng chân trị OR:

ABA || B
truetruetrue ✅
truefalsetrue ✅
falsetruetrue ✅
falsefalsefalse ❌

Quy tắc vàng: Chỉ cần MỘT TRONG HAI là true thì kết quả đã là true!

🎮 Ví dụ game – Điều kiện thắng:

int main() {
    int diem = 850;
    int mang = 3;
    double thoiGian = 45.5;  // giây
    
    cout << "🎮 GAME: ĐIỀU KIỆN THẮNG CẤP ĐỘ 1" << endl;
    cout << "══════════════════════════════════" << endl;
    
    // Các cách để thắng (chỉ cần 1 trong 3)
    bool thangTheoDiem = (diem >= 800);           // Đạt 800 điểm
    bool thangTheoMang = (mang >= 3);             // Còn đủ 3 mạng
    bool thangTheoThoiGian = (thoiGian <= 60);    // Hoàn thành dưới 60 giây
    
    cout << "📊 Thành tích của bạn:" << endl;
    cout << "• Điểm số: " << diem << "/800 " << (thangTheoDiem ? "✅ Đạt" : "❌ Chưa đạt") << endl;
    cout << "• Số mạng: " << mang << "/3 " << (thangTheoMang ? "✅ Đạt" : "❌ Chưa đạt") << endl;
    cout << "• Thời gian: " << thoiGian << "s/60s " << (thangTheoThoiGian ? "✅ Đạt" : "❌ Chưa đạt") << endl;
    
    // Dùng OR để kiểm tra thắng
    bool thang = thangTheoDiem || thangTheoMang || thangTheoThoiGian;
    
    cout << "\n🏆 KẾT QUẢ:" << endl;
    if (thang) {
        cout << "🎉 CHIẾN THẮNG! Bạn đã vượt qua cấp độ 1!" << endl;
        cout << "💡 Lý do: ";
        if (thangTheoDiem) cout << "Đạt điểm cao ";
        if (thangTheoMang) cout << "Giữ được mạng ";
        if (thangTheoThoiGian) cout << "Nhanh tay ";
        cout << endl;
    } else {
        cout << "😢 THẤT BẠI! Hãy thử lại!" << endl;
    }
    
    return 0;
}

🚫 TOÁN TỬ NOT (!) – ĐẢO NGƯỢC KẾT QUẢ

🎪 Bảng chân trị NOT:

A!A
truefalse ❌
falsetrue ✅

Quy tắc vàng: NOT đảo ngược kết quả – đúng thành sai, sai thành đúng!

🔐 Ví dụ bảo mật – Kiểm tra truy cập:

int main() {
    bool dangDangNhap = false;
    bool coQuyen = true;
    bool biBanTaiKhoan = false;
    
    cout << "🔒 HỆ THỐNG BẢO MẬT - KIỂM TRA TRUY CẬP" << endl;
    cout << "═══════════════════════════════════════" << endl;
    
    cout << "📋 Trạng thái hiện tại:" << endl;
    cout << "• Đã đăng nhập: " << (dangDangNhap ? "Có" : "Không") << endl;
    cout << "• Có quyền truy cập: " << (coQuyen ? "Có" : "Không") << endl;
    cout << "• Tài khoản bị ban: " << (biBanTaiKhoan ? "Có" : "Không") << endl;
    
    // Sử dụng NOT để kiểm tra
    bool chuaDangNhap = !dangDangNhap;           // Chưa đăng nhập
    bool khongCoQuyen = !coQuyen;                // Không có quyền
    bool khongBiBan = !biBanTaiKhoan;           // Không bị ban
    
    cout << "\n🔍 PHÂN TÍCH VỚI NOT:" << endl;
    cout << "• Chưa đăng nhập: " << (chuaDangNhap ? "Đúng" : "Sai") << endl;
    cout << "• Không có quyền: " << (khongCoQuyen ? "Đúng" : "Sai") << endl;
    cout << "• Không bị ban: " << (khongBiBan ? "Đúng" : "Sai") << endl;
    
    // Điều kiện từ chối truy cập
    bool biTuChoi = chuaDangNhap || khongCoQuyen || biBanTaiKhoan;
    
    cout << "\n🚪 QUYẾT ĐỊNH TRUY CẬP:" << endl;
    if (!biTuChoi) {  // NOT bị từ chối = được phép
        cout << "✅ ĐƯỢC PHÉP TRUY CẬP!" << endl;
    } else {
        cout << "❌ BỊ TỪ CHỐI TRUY CẬP!" << endl;
        if (chuaDangNhap) cout << "   → Vui lòng đăng nhập!" << endl;
        if (khongCoQuyen) cout << "   → Bạn không có quyền!" << endl;
        if (biBanTaiKhoan) cout << "   → Tài khoản đã bị khóa!" << endl;
    }
    
    return 0;
}

🔗 KẾT HỢP CÁC TOÁN TỬ LOGIC

🎯 Công thức phức tạp thực tế:

int main() {
    // Thông tin sinh viên
    double diemToan = 8.5;
    double diemLy = 7.8;
    double diemHoa = 9.0;
    int tuoi = 19;
    bool laCongDan = true;
    bool coHocBong = false;
    
    cout << "🎓 HỆ THỐNG XÉT TUYỂN ĐẠI HỌC" << endl;
    cout << "═══════════════════════════════" << endl;
    
    // Điều kiện cơ bản
    bool duTuoi = (tuoi >= 18) && (tuoi <= 25);
    bool laCongDanVN = laCongDan;
    
    // Điều kiện học lực (có nhiều cách đạt)
    bool diemCaoTatCa = (diemToan >= 8.0) && (diemLy >= 8.0) && (diemHoa >= 8.0);
    bool diemTrungBinhCao = ((diemToan + diemLy + diemHoa) / 3 >= 8.5);
    bool coMonGioi = (diemToan >= 9.0) || (diemLy >= 9.0) || (diemHoa >= 9.0);
    
    bool hocLucDat = diemCaoTatCa || diemTrungBinhCao || coMonGioi;
    
    // Ưu tiên đặc biệt
    bool uuTien = coHocBong || (tuoi <= 18);
    
    cout << "📊 THÔNG TIN THÍ SINH:" << endl;
    cout << "• Toán: " << diemToan << ", Lý: " << diemLy << ", Hóa: " << diemHoa << endl;
    cout << "• Tuổi: " << tuoi << " " << (duTuoi ? "✅" : "❌") << endl;
    cout << "• Công dân VN: " << (laCongDanVN ? "✅" : "❌") << endl;
    cout << "• Có học bổng: " << (coHocBong ? "Có" : "Không") << endl;
    
    cout << "\n🔍 PHÂN TÍCH HỌC LỰC:" << endl;
    cout << "• Tất cả môn >= 8.0: " << (diemCaoTatCa ? "✅" : "❌") << endl;
    cout << "• Trung bình >= 8.5: " << (diemTrungBinhCao ? "✅" : "❌") << endl;
    cout << "• Có môn >= 9.0: " << (coMonGioi ? "✅" : "❌") << endl;
    cout << "• Học lực đạt: " << (hocLucDat ? "✅" : "❌") << endl;
    
    // CÔNG THỨC CUỐI CÙNG
    bool duocTuyen = duTuoi && laCongDanVN && hocLucDat && !(!uuTien && (tuoi > 22));
    
    cout << "\n🎯 KẾT QUẢ XÉT TUYỂN:" << endl;
    if (duocTuyen) {
        cout << "🎉 CHÚC MỪNG! BẠN ĐÃ ĐƯỢC TUYỂN!" << endl;
        if (uuTien) {
            cout << "⭐ Bonus: Bạn còn được ưu tiên đặc biệt!" << endl;
        }
    } else {
        cout << "😢 RẤT TIẾC! BẠN CHƯA ĐẠT YÊU CẦU!" << endl;
    }
    
    return 0;
}

🎪 CHƯƠNG TRÌNH MẪU ĐẦY ĐỦ VÀ VUI NHỘN

/*
════════════════════════════════════════════════════════════
 BÀI 18: TOÁN TỬ LOGIC - BỘ NÃO C++ SIÊU THÔNG MINH
 Tác giả: [Tên bạn]
 Mục đích: Thực hành tất cả toán tử logic &&, ||, !
════════════════════════════════════════════════════════════
*/
#include <iostream>
#include <iomanip>
using namespace std;

int main() {
    
    // ═══════════════════════════════════════════════════════
    //                    PHẦN GIỚI THIỆU
    // ═══════════════════════════════════════════════════════
    
    cout << "🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟\n";
    cout << "🧠        TOÁN TỬ LOGIC - BỘ NÃO C++ SIÊU THÔNG MINH        🧠\n";
    cout << "🌟          Kết hợp điều kiện như chuyên gia!               🌟\n";
    cout << "🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟🌟\n\n";
    
    // ═══════════════════════════════════════════════════════
    //                  BẢNG CHÂN TRỊ CƠ BẢN
    // ═══════════════════════════════════════════════════════
    
    cout << "📋 BẢNG CHÂN TRỊ 3 TOÁN TỬ LOGIC:\n";
    cout << "════════════════════════════════════════════════\n";
    
    cout << "🤝 AND (&&) - Cả hai phải đúng:\n";
    cout << "┌───────┬───────┬─────────┐\n";
    cout << "│   A   │   B   │ A && B  │\n";
    cout << "├───────┼───────┼─────────┤\n";
    cout << "│ true  │ true  │  true   │ ✅\n";
    cout << "│ true  │ false │  false  │ ❌\n";
    cout << "│ false │ true  │  false  │ ❌\n";
    cout << "│ false │ false │  false  │ ❌\n";
    cout << "└───────┴───────┴─────────┘\n\n";
    
    cout << "🤲 OR (||) - Ít nhất một phải đúng:\n";
    cout << "┌───────┬───────┬─────────┐\n";
    cout << "│   A   │   B   │ A || B  │\n";
    cout << "├───────┼───────┼─────────┤\n";
    cout << "│ true  │ true  │  true   │ ✅\n";
    cout << "│ true  │ false │  true   │ ✅\n";
    cout << "│ false │ true  │  true   │ ✅\n";
    cout << "│ false │ false │  false  │ ❌\n";
    cout << "└───────┴───────┴─────────┘\n\n";
    
    cout << "🚫 NOT (!) - Đảo ngược kết quả:\n";
    cout << "┌───────┬───────┐\n";
    cout << "│   A   │  !A   │\n";
    cout << "├───────┼───────┤\n";
    cout << "│ true  │ false │ ❌\n";
    cout << "│ false │ true  │ ✅\n";
    cout << "└───────┴───────┘\n\n";
    
    // ═══════════════════════════════════════════════════════
    //                  DEMO TOÁN TỬ AND (&&)
    // ═══════════════════════════════════════════════════════
    
    cout << "🤝 DEMO TOÁN TỬ AND (&&):\n";
    cout << "════════════════════════════════════════════════\n";
    
    bool a1 = true, b1 = true;
    bool a2 = true, b2 = false;
    bool a3 = false, b3 = true;
    bool a4 = false, b4 = false;
    
    cout << "• " << boolalpha << a1 << " && " << b1 << " = " << (a1 && b1) << endl;
    cout << "• " << boolalpha << a2 << " && " << b2 << " = " << (a2 && b2) << endl;
    cout << "• " << boolalpha << a3 << " && " << b3 << " = " << (a3 && b3) << endl;
    cout << "• " << boolalpha << a4 << " && " << b4 << " = " << (a4 && b4) << endl;
    
    cout << "\n💡 Ứng dụng: Kiểm tra quyền truy cập\n";
    bool dangDangNhap = true;
    bool coQuyen = true;
    bool choPhepTruyCap = dangDangNhap && coQuyen;
    cout << "Đăng nhập: " << dangDangNhap << ", Có quyền: " << coQuyen;
    cout << " → " << (choPhepTruyCap ? "✅ Được phép" : "❌ Bị từ chối") << endl;
    cout << "\n";
    
    // ═══════════════════════════════════════════════════════
    //                  DEMO TOÁN TỬ OR (||)
    // ═══════════════════════════════════════════════════════
    
    cout << "🤲 DEMO TOÁN TỬ OR (||):\n";
    cout << "════════════════════════════════════════════════\n";
    
    cout << "• " << boolalpha << a1 << " || " << b1 << " = " << (a1 || b1) << endl;
    cout << "• " << boolalpha << a2 << " || " << b2 << " = " << (a2 || b2) << endl;
    cout << "• " << boolalpha << a3 << " || " << b3 << " = " << (a3 || b3) << endl;
    cout << "• " << boolalpha << a4 << " || " << b4 << " = " << (a4 || b4) << endl;
    
    cout << "\n💡 Ứng dụng: Điều kiện miễn phí vận chuyển\n";
    double tongTien = 800000;
    bool laThanhVien = false;
    bool mienPhiShip = (tongTien >= 500000) || laThanhVien;
    cout << "Tổng tiền: " << tongTien << ", VIP: " << laThanhVien;
    cout << " → " << (mienPhiShip ? "🚚 Miễn phí ship" : "💰 Có phí ship") << endl;
    cout << "\n";
    
    // ═══════════════════════════════════════════════════════
    //                  DEMO TOÁN TỬ NOT (!)
    // ═══════════════════════════════════════════════════════
    
    cout << "🚫 DEMO TOÁN TỬ NOT (!):\n";
    cout << "════════════════════════════════════════════════\n";
    
    bool trangThai = true;
    cout << "• !" << boolalpha << trangThai << " = " << !trangThai << endl;
    
    trangThai = false;
    cout << "• !" << boolalpha << trangThai << " = " << !trangThai << endl;
    
    cout << "\n💡 Ứng dụng: Kiểm tra trạng thái ngược lại\n";
    bool hetHang = false;
    bool conHang = !hetHang;
    cout << "Hết hàng: " << hetHang << " → Còn hàng: " << (conHang ? "✅ Còn" : "❌ Hết") << endl;
    cout << "\n";
    
    // ═══════════════════════════════════════════════════════
    //                    BÀI TẬP TƯƠNG TÁC
    // ═══════════════════════════════════════════════════════
    
    cout << "🎮 BÀI TẬP TƯƠNG TÁC - HỆ THỐNG ĐÁNH GIÁ SINH VIÊN:\n";
    cout << "════════════════════════════════════════════════\n";
    
    double diemToan, diemLy, diemHoa;
    int soNgayNghi;
    bool thamGiaHoatDong;
    
    cout << "Nhập điểm Toán (0-10): ";
    cin >> diemToan;
    cout << "Nhập điểm Lý (0-10): ";
    cin >> diemLy;
    cout << "Nhập điểm Hóa (0-10): ";
    cin >> diemHoa;
    cout << "Nhập số ngày nghỉ trong tháng: ";
    cin >> soNgayNghi;
    cout << "Có tham gia hoạt động ngoại khóa? (1: Có, 0: Không): ";
    cin >> thamGiaHoatDong;
    
    cout << "\n🔍 PHÂN TÍCH KẾT QUẢ:\n";
    cout << "────────────────────────────────────────────────\n";
    
    // Các điều kiện đánh giá
    bool hocLucGioi = (diemToan >= 8.0) && (diemLy >= 8.0) && (diemHoa >= 8.0);
    bool hocLucKha = ((diemToan + diemLy + diemHoa) / 3 >= 6.5);
    bool hanhKiemTot = (soNgayNghi <= 3);
    bool tichCuc = thamGiaHoatDong;
    bool khongYeu = !(diemToan < 5.0 || diemLy < 5.0 || diemHoa < 5.0);
    
    cout << "📊 Đánh giá từng tiêu chí:\n";
    cout << "• Học lực giỏi (tất cả >= 8.0): " << (hocLucGioi ? "✅ Đạt" : "❌ Chưa đạt") << endl;
    cout << "• Học lực khá (TB >= 6.5): " << (hocLucKha ? "✅ Đạt" : "❌ Chưa đạt") << endl;
    cout << "• Hạnh kiểm tốt (nghỉ <= 3 ngày): " << (hanhKiemTot ? "✅ Đạt" : "❌ Chưa đạt") << endl;
    cout << "• Tích cực hoạt động: " << (tichCuc ? "✅ Có" : "❌ Không") << endl;
    cout << "• Không có môn yếu: " << (khongYeu ? "✅ Không" : "❌ Có") << endl;
    
    // Kết hợp điều kiện phức tạp
    bool hocBongLoai1 = hocLucGioi && hanhKiemTot && tichCuc;
    bool hocBongLoai2 = hocLucKha && hanhKiemTot && khongYeu;
    bool biKyLuat = (!hanhKiemTot) || (!khongYeu);
    bool ducKhen = hocLucGioi || (hocLucKha && tichCuc);
    
    cout << "\n🏆 KẾT QUẢ CUỐI CÙNG:\n";
    cout << "────────────────────────────────────────────────\n";
    
    if (hocBongLoai1) {
        cout << "🥇 HỌC BỔNG LOẠI 1 - XUẤT SẮC!" << endl;
    } else if (hocBongLoai2) {
        cout << "🥈 HỌC BỔNG LOẠI 2 - KHUYẾN KHÍCH!" << endl;
    } else if (ducKhen) {
        cout << "🏅 ĐƯỢC KHEN THƯỞNG!" << endl;
    } else if (biKyLuat) {
        cout << "⚠️ BỊ KỶ LUẬT - CẦN CẢI THIỆN!" << endl;
    } else {
        cout << "😐 BÌNH THƯỜNG - HÃY CỐ GẮNG HƠN!" << endl;
    }
    
    // ═══════════════════════════════════════════════════════
    //                    DEMO NÂNG CAO
    // ═══════════════════════════════════════════════════════
    
    cout << "\n🚀 DEMO NÂNG CAO - KẾT HỢP NHIỀU TOÁN TỬ:\n";
    cout << "════════════════════════════════════════════════\n";
    
    bool A = true, B = false, C = true, D = false;
    
    cout << "Với A=" << A << ", B=" << B << ", C=" << C << ", D=" << D << ":\n";
    cout << "• (A && B) || (C && !D) = " << ((A && B) || (C && !D)) << endl;
    cout << "• !(A || B) && (C || D) = " << (!(A || B) && (C || D)) << endl;
    cout << "• (A && !B) || (!C && D) = " << ((A && !B) || (!C && D)) << endl;
    cout << "• !(!A || !B) = " << (!(!A || !B)) << endl;
    
    // ═══════════════════════════════════════════════════════
    //                    KẾT THÚC VUI VẺ
    // ═══════════════════════════════════════════════════════
    
    cout << "\n🎉 CHÚC MỪNG! BẠN ĐÃ THÀNH THẠO TOÁN TỬ LOGIC!\n";
    cout << "════════════════════════════════════════════════\n";
    cout << "✅ Đã học 3 toán tử logic: &&, ||, !\n";
    cout << "✅ Đã hiểu bảng chân trị và cách hoạt động\n";
    cout << "✅ Đã biết kết hợp điều kiện phức tạp\n";
    cout << "✅ Đã ứng dụng vào bài toán thực tế\n\n";
    
    cout << "🌟 BÂY GIỜ BẠN ĐÃ LÀ MASTER LOGIC C++! 🌟\n";
    
    return 0;
}

🎯 BÀI TẬP THỰC HÀNH – 3 CẤP ĐỘ

🟢 CẤP ĐỘ DỄ: Làm quen với logic

Bài 1: Kiểm tra tuổi và giới tính

/*
YÊU CẦU:
- Nhập tuổi và giới tính (M/F)
- Kiểm tra điều kiện:
  + Nam >= 18: Được đi nghĩa vụ quân sự
  + Nữ >= 18: Được lái xe ô tô
  + Cả hai >= 16: Được làm căn cước công dân
- Hiển thị tất cả quyền được phép
*/
// Gợi ý bắt đầu:
int tuoi;
char gioiTinh;
cout << "Nhập tuổi: ";
cin >> tuoi;
cout << "Nhập giới tính (M/F): ";
cin >> gioiTinh;

bool laNam = (gioiTinh == 'M' || gioiTinh == 'm');
bool laNu = (gioiTinh == 'F' || gioiTinh == 'f');
// Tiếp tục...

Bài 2: Game kiểm tra mật khẩu an toàn

/*
YÊU CẦU:
- Nhập mật khẩu từ người dùng
- Kiểm tra các tiêu chí:
  + Độ dài >= 8 ký tự
  + Có chứa số (0-9)
  + Có chữ hoa
  + Có chữ thường
- Mật khẩu "mạnh" khi đạt >= 3/4 tiêu chí
- Hiển thị mức độ: Yếu/Trung bình/Mạnh
*/

Bài 3: Máy tính điều kiện thời tiết

/*
YÊU CẦU:
- Nhập nhiệt độ, độ ẩm, tốc độ gió
- Đánh giá thời tiết:
  + "Đẹp": 20-30°C, độ ẩm 40-70%, gió < 15km/h
  + "Chấp nhận được": Ít nhất 2/3 điều kiện trên
  + "Xấu": Không đạt điều kiện nào
- Gợi ý hoạt động phù hợp
*/

🟡 CẤP ĐỘ TRUNG BÌNH: Logic phức tạp

Bài 4: Hệ thống đánh giá tín dụng

/*
YÊU CẦU:
- Nhập: tuổi, lương, thời gian làm việc, nợ hiện tại
- Điều kiện cho vay:
  + Cơ bản: 22-60 tuổi, lương >= 10 triệu
  + Kinh nghiệm: >= 1 năm HOẶC lương >= 20 triệu
  + Nợ xấu: tổng nợ < 70% lương
- Tính hạn mức cho vay và lãi suất
*/

Bài 5: Game RPG – Hệ thống level up

/*
YÊU CẦU:
- Thông tin nhân vật: level, EXP, HP, MP, skill points
- Điều kiện level up:
  + EXP >= level * 100
  + HP >= 50% max HP
  + Không trong trạng thái "poisoned"
- Điều kiện học skill mới:
  + Level >= 5 VÀ skill points >= 3
  + HOẶC level >= 10
- Tính toán stats mới sau level up
*/

Bài 6: Hệ thống chấm công thông minh

/*
YÊU CẦU:
- Nhập: giờ vào, giờ ra, nghỉ trưa, ngày trong tuần
- Tính lương:
  + Giờ hành chính: 8-17h, lương cơ bản
  + Tăng ca: sau 17h hoặc thứ 7, x1.5 lương
  + Chủ nhật: x2 lương
- Phạt đi trễ, về sớm
- Thưởng full attendance
*/

🔴 CẤP ĐỘ KHÓ: Logic chuyên gia

Bài 7: Thuật toán xếp hạng đa tiêu chí

/*
YÊU CẦU:
- 5 sinh viên với điểm Toán, Lý, Hóa, Văn, Anh
- Xếp hạng theo:
  + Ưu tiên 1: Điểm TB >= 8.0 VÀ không môn nào < 6.0
  + Ưu tiên 2: Có >= 2 môn >= 9.0 HOẶC TB >= 8.5
  + Ưu tiên 3: TB >= 7.0 VÀ Toán >= 8.0
- Hiển thị bảng xếp hạng chi tiết
*/

Bài 8: Hệ thống AI quyết định trong game

/*
YÊU CẦU:
- Game chiến thuật: HP, MP, vị trí, kẻ thù gần
- AI quyết định hành động:
  + Tấn công: HP > 50% VÀ MP > 30% VÀ kẻ thù trong tầm
  + Phòng thủ: HP < 30% HOẶC bị bao vây (>= 2 kẻ thù gần)
  + Hồi phục: HP < 50% VÀ MP > 70% VÀ an toàn
  + Chạy trốn: HP < 20% HOẶC (MP < 20% VÀ nhiều kẻ thù)
- Mô phỏng 10 turn với random events
*/

🏆 THỬ THÁCH BONUS – DÀNH CHO SIÊU SAO

Challenge 1: “Boolean Expression Parser”

/*
NHIỆM VỤ:
- Nhập biểu thức logic dạng string: "(A && B) || (!C && D)"
- Parse và tính toán với giá trị A, B, C, D cho trước
- Hiển thị cây phân tích cú pháp
- Tối ưu biểu thức (loại bỏ phép toán thừa)
- Chuyển đổi sang dạng CNF (Conjunctive Normal Form)
*/

Challenge 2: “Smart Decision System”

/*
NHIỆM VỤ:
- Hệ thống ra quyết định đa cấp độ
- Input: 10+ tiêu chí với trọng số khác nhau
- Sử dụng fuzzy logic (logic mờ) cơ bản
- Machine learning đơn giản: học từ quyết định trước
- GUI đơn giản bằng text
- Export decision tree ra file
*/

💡 MẸO VÀ THỦ THUẬT CHUYÊN NGHIỆP

🌟 1. Thứ tự ưu tiên toán tử:

// Thứ tự: ! → && → ||
bool ketQua = !a || b && c;
// Được tính như: (!a) || (b && c)
// KHÔNG phải: (!a || b) && c

// An toàn hơn: dùng ngoặc đơn
bool ketQua = (!a) || (b && c);

🎯 2. Short-circuit evaluation:

// Với AND: Nếu điều kiện đầu false, không kiểm tra điều kiện sau
if (x != 0 && (10/x > 2)) {  // An toàn! Không chia cho 0
    cout << "OK";
}

// Với OR: Nếu điều kiện đầu true, không kiểm tra điều kiện sau
if (isAdmin || hasPermission()) {  // Nếu là admin thì không gọi hàm
    cout << "Cho phép";
}

⚡ 3. De Morgan’s Laws – Luật biến đổi:

// Luật De Morgan:
// !(A && B) = !A || !B
// !(A || B) = !A && !B

// Ví dụ:
bool khongDuDieuKien = !(tuoi >= 18 && diem >= 8.0);
// Tương đương:
bool khongDuDieuKien = (tuoi < 18) || (diem < 8.0);

🎨 4. Viết code dễ đọc:

// Khó đọc:
if (((age >= 18 && score >= 8.0) || hasScholarship) && !isSuspended && (gpa > 3.0 || extraActivities >= 2)) {
    // ...
}

// Dễ đọc:
bool basicRequirement = (age >= 18 && score >= 8.0) || hasScholarship;
bool goodStanding = !isSuspended;
bool excellentRecord = (gpa > 3.0) || (extraActivities >= 2);

if (basicRequirement && goodStanding && excellentRecord) {
    // ...
}

🐛 TRÁNH CÁC LỖI THƯỜNG GẶP

❌ Lỗi 1: Nhầm = với ==

// SAI: Gán thay vì so sánh
bool isActive = true;
if (isActive = false) {  // SAI! Gán false cho isActive
    cout << "Active";
}

// ĐÚNG:
if (isActive == false) {  // So sánh với false
    cout << "Inactive";
}
// Hoặc ngắn gọn hơn:
if (!isActive) {         // Sử dụng NOT
    cout << "Inactive";
}

❌ Lỗi 2: Nhầm && với & (và || với |)

// SAI: Dùng toán tử bit thay vì logic
if (a > 5 & b < 10) {    // SAI! & là toán tử bit
    cout << "OK";
}

// ĐÚNG: Dùng toán tử logic
if (a > 5 && b < 10) {   // ĐÚNG! && là toán tử logic
    cout << "OK";
}

❌ Lỗi 3: Logic phức tạp khó debug

// SAI: Quá phức tạp, khó hiểu
if (!(!(a > 5) && !(b < 10)) || (c == 0 && !(d != 5))) {
    // Ai hiểu được đây? 😵
}

// ĐÚNG: Chia nhỏ, đặt tên có ý nghĩa
bool conditionA = (a > 5) || (b < 10);  // Sử dụng De Morgan
bool conditionB = (c != 0) || (d == 5);
if (conditionA || conditionB) {
    // Dễ hiểu hơn nhiều!
}

📋 CHECKLIST KIẾN THỨC

✅ Cơ bản (Beginner):

  • Biết 3 toán tử logic: &&, ||, !
  • Hiểu bảng chân trị của từng toán tử
  • Phân biệt được = và ==
  • Sử dụng && và || trong if đơn giản
  • Hiểu cách NOT (!) đảo ngược kết quả

✅ Trung cấp (Intermediate):

  • Kết hợp nhiều toán tử logic trong một biểu thức
  • Hiểu thứ tự ưu tiên: ! → && → ||
  • Biết short-circuit evaluation
  • Áp dụng De Morgan’s Laws
  • Viết điều kiện phức tạp dễ đọc

✅ Nâng cao (Advanced):

  • Tối ưu biểu thức logic phức tạp
  • Debug logic errors hiệu quả
  • Thiết kế hệ thống quyết định đa tầng
  • Hiểu và áp dụng Boolean algebra
  • Viết parser cho biểu thức logic

🎊 TỔNG KẾT BÀI HỌC

🏆 Chúc mừng! Bạn đã trở thành “LOGIC MASTER”!

📚 Những gì bạn đã học:

  • 3 toán tử logic:&& (AND), || (OR), ! (NOT) và cách hoạt động
  • 🎯Bảng chân trị:Hiểu khi nào true, khi nào false
  • 🔗Kết hợp điều kiện:Tạo logic phức tạp từ điều kiện đơn giản
  • Short-circuit:Tối ưu hiệu suất với đánh giá ngắn mạch
  • 🧠Tư duy logic:Phân tích và thiết kế hệ thống quyết định

🌟 Tại sao toán tử logic quan trọng:

  • Decision Making:Nền tảng cho mọi hệ thống quyết định thông minh
  • Real-world Logic:Mô phỏng cách con người ra quyết định
  • Complex Systems:Xây dựng AI, game logic, business rules
  • Foundation:Chuẩn bị cho algorithms, data structures nâng cao

🚀 Bước tiếp theo:

Bài 19: “Độ ưu tiên toán tử – Nhân chia trước, cộng trừ sau”– Tổng hợp tất cả toán tử!


🎮 MINI GAME: “LOGIC PUZZLE CHALLENGE”

🎯 Thử thách 120 giây:

Đoán kết quả của các biểu thức logic phức tạp:

  1. (true && false) || (false || true)→ ?
  2. !(true || false) && (true && true)→ ?
  3. (!false && true) || (!true && false)→ ?
  4. !(!true || !false) && (false || !false)→ ?
  5. (true && !false) || (false && !true)→ ?

⏰ Sẵn sàng? Bắt đầu!


💬 HỎI ĐÁP THÔNG MINH

❓ Câu hỏi thường gặp:

Q: Khác biệt giữa & và &&, | và || là gì?
A: & và | là toán tử bit (bitwise), còn && và || là toán tử logic. Logic operators có short-circuit evaluation, bit operators thì không.

Q: Tại sao (5 > 3 && 2 < 1) || (4 == 4) = true?
A: Vì OR chỉ cần một điều kiện đúng. (5 > 3 && 2 < 1) = false, nhưng (4 == 4) = true, nên kết quả cuối là true.

Q: Short-circuit evaluation là gì?
A: Khi đánh giá biểu thức logic, nếu kết quả đã xác định từ điều kiện đầu thì không cần kiểm tra điều kiện sau. VD: false && anything = false.

Q: Khi nào dùng ! thay vì == false?
A: Dùng ! ngắn gọn hơn và rõ ràng hơn. !isActive đọc như “not active”, còn isActive == false dài dòng.

🆘 Cần trợ giúp?

  • 💻Thử nghiệmtrên onlinegdb.com với các biểu thức khác nhau
  • 🎯Debugtừng phần của biểu thức phức tạp
  • 📚Vẽ bảng chân trịkhi gặp logic phức tạp

🎉 LỜI KHÍCH LỆ CUỐI BÀI

Xuất sắc! Bạn vừa master được “ngôn ngữ tư duy” của C++! 🚀

💪 Logic là trái tim của lập trình – từ những game đơn giản đến AI phức tạp, tất cả đều bắt đầu từ những phép AND, OR, NOT cơ bản như bạn vừa học!

🌟 Điều kỳ diệu: Với 3 toán tử đơn giản này, bạn có thể tạo ra vô số hệ thống quyết định thông minh – từ chatbot, hệ thống chấm điểm, cho đến AI trong game!

🎯 Real power: Khi kết hợp với if-else (bài sau), bạn sẽ có thể tạo ra những chương trình “biết suy nghĩ” và đưa ra quyết định như con người!

Tiếp tục hành trình chinh phục logic programming! 🧠✨


🏷️ Tags:

#C++ #toán-tử-logic #AND-OR-NOT #boolean-logic #bảng-chân-trị #kết-hợp-điều-kiện #decision-making #logic-programming #cơ-bản #thực-hành #if-else-preparation #dễ-hiểu #Việt-Nam #programming-tutorial

ThíchĐã Thích0
Chia Sẻ

C++ Bài 18: Toán tử logic – and, or, not – bộ não C++!

Học toán tử logic trong C++ dễ hiểu: && (AND), || (OR), ! (NOT) để kết hợp điều kiện phức tạp. Hướng dẫn chi tiết với bảng chân trị, ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.


Bạn muốn chia sẻ bài viết này:

# Bài Viết Liên Quan

  • Bai 24 if else – neu… thi… khong thi…

    C++ Bài 24: if-else – nếu… thì… không thì…!

    Học câu lệnh if-else trong C++ dễ hiểu: cú pháp “nếu… thì… không thì…”, ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 23 if neu thi dieu kien don

    C++ Bài 23: if – nếu… thì… (điều kiện đơn)

    Bài học về câu lệnh if đơn giản trong C++: cách dùng if để kiểm tra điều kiện, thực hiện lệnh khi điều kiện đúng. Hướng dẫn chi tiết với ví dụ dễ hiểu, bài tập từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 22 du an mini may tinh khoa hoc mini sieu calculator

    C++ Bài 22: [Dự Án Mini] Máy tính khoa học mini – siêu calculator!

    Dự án mini máy tính khoa học bằng C++ dễ hiểu: tổng hợp toán tử, if-else, input validation, menu lựa chọn. Code hoàn chỉnh với giao diện đẹp, xử lý lỗi và 20+ chức năng từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 21 bai tap kiem tra so chan le tham tu so hoc

    C++ Bài 21: [Bài Tập] Kiểm tra số chẵn lẻ – thám tử số học!

    Bài tập kiểm tra số chẵn lẻ bằng C++ dễ hiểu: sử dụng toán tử % (chia lấy dư), câu lệnh if-else, input validation. Code hoàn chỉnh với 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 20 bai tap giai phuong trinh bac nhat tham tu toan hoc

    C++ Bài 20: [Bài Tập] Giải phương trình bậc nhất – thám tử toán học!

    Bài tập giải phương trình bậc nhất ax + b = 0 bằng C++ dễ hiểu. Hướng dẫn từng bước, xử lý trường hợp đặc biệt, code hoàn chỉnh với 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 19 do uu tien toan tu nhan chia truoc cong tru sau

    C++ Bài 19: Độ ưu tiên toán tử – nhân chia trước, cộng trừ sau!

    Học độ ưu tiên toán tử trong C++ dễ hiểu: thứ tự tính toán (), *, /, %, +, -, ==, !=, &&, ||. Hướng dẫn chi tiết với bảng ưu tiên, ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    08/10/2025
  • Bai 17 toan tu so sanh ai lon hon ai

    C++ Bài 17: Toán Tử So Sánh – ai lớn hơn ai?

    Học toán tử so sánh trong C++ dễ hiểu: ==, !=, , = để so sánh số và chuỗi. Hướng dẫn chi tiết với ví dụ thực tế, tránh lỗi thường gặp và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    03/10/2025
  • Bai 16 toan tu gan dua gia tri vao bien nhu bo do vao hop

    C++ Bài 16: Toán tử gán – đưa giá trị vào biến như bỏ đồ vào hộp!

    Học toán tử gán trong C++ dễ hiểu: dấu = gán cơ bản, +=, -=, *=, /= gán kết hợp, ++ và — tăng giảm. Hướng dẫn chi tiết với ví dụ thực tế và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    01/10/2025
  • Bai 15 toan tu so hoc cong tru nhan chia nhu toan lop 1

    C++ Bài 15: Toán tử số học – cộng trừ nhân chia như toán lớp 1!

    Học toán tử số học trong C++ dễ hiểu: cộng +, trừ -, nhân *, chia /, chia lấy dư % và lũy thừa. Hướng dẫn chi tiết với ví dụ thực tế, thứ tự ưu tiên và 20+ bài tập thực hành từ cơ bản đến nâng cao.

    01/10/2025
  • Bai 14 du an mini chuong trinh tinh diem trung binh 2 bai don gian hon cong cu tinh diem than ky

    C++ Bài 14: [Dự Án Mini] Chương trình tính điểm trung bình 2 – bài đơn giản hơn – công cụ tính điểm thần kỳ!

    Dự án mini C++ dễ hiểu cho học sinh: tạo chương trình tính điểm trung bình với giao diện đẹp. Hướng dẫn từng bước đơn giản với ví dụ thực tế và bài tập vui nhộn.

    01/10/2025
  • Bai 13 du an mini chuong trinh tinh diem trung binh ung dung quan ly hoc tap hoan chinh

    C++ Bài 13: [Dự Án Mini] Chương trình tính điểm trung bình – ứng dụng quản lý học tập hoàn chỉnh!

    Dự án mini C++ tính điểm trung bình: tổng hợp cin, cout, formatting, validation và giao diện chuyên nghiệp. Hướng dẫn chi tiết từng bước xây dựng ứng dụng hoàn chỉnh với 10+ tính năng nâng cao cho học sinh.

    01/10/2025
  • Bai 12 bai tap may tinh don gian sieu cong cu tinh toan

    C++ Bài 12: [Bài Tập] Máy tính đơn giản (+, -, *, /) – siêu công cụ tính toán!

    Bài tập C++ tạo máy tính đơn giản: thực hành cin, cout, toán tử số học, validation input và giao diện đẹp mắt. Hướng dẫn từng bước với 15+ tính năng nâng cao và code mẫu hoàn chỉnh cho học sinh.

    29/09/2025
0 0 votes
Đánh Giá Bài Viết
Subscribe
Notify of
guest
0 Bình Luận
Oldest
Newest Most Voted
Inline Feedbacks
Xem tất cả bình luận
Top Views
  • Board Mo Rong Microbit V2 Tuong Thich Module Amp Sensor 3 3v 5v 01
    26/12/2024
  • Make Code
    24/12/2024
  • Tu Tao May Dem Buoc Chan Cho Minh
    06/01/2025
  • Module Led Rgb 3 Mau 4 Chan Hw 479 01
    26/12/2024
  • Micro:bit V2 – Máy Tính Bỏ Túi Cho Giáo Dục STEM
    06/01/2025
  • Bai 01 chao mung den voi c tu scratch den sieu ngon ngu 01
    26/09/2025
  • Bai 02 cai dat moi truong online code ngay khong can cai dat 01
    27/09/2025
  • Bai 04 cau truc chuong trinh c nhu mot bai van co dau co cuoi 01
    27/09/2025
  • Bai 05 bien va kieu du lieu hop chua thong tin than ky 01
    27/09/2025
  • Bai 06 cout dua thong tin ra man hinh nhu phep mau 01
    28/09/2025
Top Love
  • Tu Tao May Dem Buoc Chan Cho Minh
    06/01/2025
  • Micro:bit V2 – Máy Tính Bỏ Túi Cho Giáo Dục STEM
    06/01/2025
  • Module Led Rgb 3 Mau 4 Chan Hw 479 01
    26/12/2024
  • Make Code
    24/12/2024
  • Board Mo Rong Microbit V2 Tuong Thich Module Amp Sensor 3 3v 5v 01
    26/12/2024
  • Bai tap kiem tra so nguyen to trong khoang tim kho bau so hoc
    02/10/2025