Các toán tử logic phần 3
Thuộc phần Kiến thức nền tảng trong hành trình Rust của Coddy. Bài học 23 trên 75.
Khi kiểm tra nhiều điều kiện, máy tính sẽ ngừng kiểm tra ngay khi biết được kết quả cuối cùng (cách này gọi là đánh giá đoản mạch).
Ví dụ:
let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;Ở đây, x bằng 0, vì vậy chương trình sẽ không đánh giá y / x > 2. Nếu đảo ngược thứ tự:
let result: bool = y / x > 2 && x != 0;Điều này sẽ gây ra lỗi vì y sẽ bị chia cho 0, điều 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ụ:
let a: i32 = 0;
let b: i32 = 2;
let c: i32 = 3;
let d: i32 = 5;
let result: bool = (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ì a > 0 và c < -5 đều sai.
Thử thách
Người mớiHãy tạo một chương trình để xác định hôm nay có phải là ngày tốt để sản xuất năng lượng bằng pin mặt trời hay không
Khởi tạo các biến sau:
is_sunnycó giá trị truewind_speedcó giá trị 5.4temperaturecó giá trị 23solar_panel_outputcó giá trị 9is_cloudycó 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 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ử
fn main() {
// Khởi tạo các biến (variables)
// Thay các giá trị giữ chỗ bên dưới bằng giá trị trong đề bài
let is_sunny: bool = false;
let wind_speed: f64 = 99.0;
let temperature: i32 = 0;
let solar_panel_output: i32 = 99;
let is_cloudy: bool = true;
// Biểu thức logic đầy đủ
// Thay phần giữ chỗ bên dưới bằng điều kiện đầy đủ
let result: bool = false;
// Đừng xóa các dòng bên dưới
println!("Checking conditions for solar energy production...");
println!("1. Is it sunny? {}", is_sunny);
println!("2. Is wind speed safe? {}", (wind_speed < 10.0));
println!("3. Can panels produce more? {}", (solar_panel_output < 15));
println!("4. Is temperature good OR no clouds? {}", (temperature > 20 || !is_cloudy));
println!("\\nFinal result - Good day for solar energy production: {}", result);
}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
5Các toán tử phần 2
Các toán tử logic phần 1Các toán tử logic phần 2Ôn tập: logic đơn giảnCác toán tử logic phần 33Biến phần 2
Khai báo kiểu dữ liệuQuy ước đặt tênSuy luận kiểu dữ liệuÔn tập: Khởi tạo biếnÉp kiểu dữ liệu9Vòng lặp
Vòng lặp for qua chuỗiVòng lặp whileBreakContinueVòng lặp lồng nhauNhãn vòng lặpVòng lặp vô hạnÔn tập: Đầu vào động12Kiến thức cơ bản về mảng
Khai báo mảngMảng làm tham sốTruy cập phần tửChỉnh sửa mảngÔn tập: In mảng đẹp mắtTự luyện tập: Trình biên dịch Rust online