Menu
CoddyTech

Toán tử logic phần 3

Thuộc phần Kiến thức nền tảng trong hành trình C++ của Coddy. Bài học 26 trên 74.

Khi kiểm tra nhiều điều kiện, máy tính sẽ dừng ngay khi biết câu trả lời cuối cùng (cách này gọi là đánh giá rút gọn).

Ví dụ:

int x = 0;
int y = 5;
bool result = x != 0 && y / x > 2;

Ở đây, x bằng 0, vì vậy biểu thức y / x > 2 sẽ không được đánh giá. Nếu đảo ngược thứ tự:

bool result = y / x > 2 && x != 0;

Điều này sẽ gây ra lỗi vì y sẽ bị chia cho 0, phép tính không hợp lệ trong toán học.

Kỹ thuật này dùng để tối ưu hóa việc đánh giá các biểu thức logic. Ví dụ:

int a = 0;
int b = 2;
int c = 3;
int d = 5;
bool result = (a > 0 && b < 2) || (c < -5 && d < 10);

Trong ví dụ này, b < 2 và d < 10 sẽ không được đánh giá vì cả a > 0 và c < -5 đều sai.

challenge icon

Thử thách

Người mới

Tạo một chương trình để xác định xem hôm nay có phù hợp để sản xuất năng lượng bằng tấm pin mặt trời hay không

Khởi tạo các biến sau:

  • isSunny với giá trị true
  • windSpeed với giá trị 5.4
  • temperature với giá trị 23
  • solarPanelOutput với giá trị 9
  • isCloudy với giá trị false

Tạo một biểu thức logic kiểm tra TẤT CẢ các điều kiện sau:

  • Trời nắng
  • Tốc độ gió nhỏ hơn 10
  • Sản lượng của tấm pin mặt trời nhỏ hơn 15
  • Nhiệt độ trên 20 HOẶC trời KHÔNG có mây

Tự làm thử

#include <iostream>

int main() {
    // Khởi tạo các biến
    // Thay từng giá trị giữ chỗ bên dưới bằng giá trị mà bài yêu cầu
    bool isSunny = false;
    double windSpeed = 0.0;
    int temperature = 0;
    int solarPanelOutput = 0;
    bool isCloudy = false;

    // Biểu thức logic hoàn chỉnh
    // Thay chỗ giữ chỗ bên dưới bằng một biểu thức kết hợp cả bốn điều kiện
    bool result = false;

    // In kết quả
    std::cout << "1. Is it sunny? " << std::boolalpha << isSunny << std::endl;
    std::cout << "2. Is wind speed safe? " << (windSpeed < 10) << std::endl;
    std::cout << "3. Do panels produce less? " << (solarPanelOutput < 15) << std::endl;
    std::cout << "4. Is temperature good OR no clouds? " << (temperature > 20 || !isCloudy) << std::endl;
    std::cout << "5. Final result: " << result << std::endl;

    return 0;
}
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch C++ online