Логические операторы. Часть 3
Часть раздела Fundamentals путешествия по Rust на Coddy. Урок 23 из 75.
При проверке нескольких условий компьютер прекращает проверку, как только узнает конечный ответ (это называется сокращенным вычислением).
Например:
let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;Здесь x равно 0, поэтому выражение y / x > 2 вычисляться не будет. Если изменить порядок на противоположный:
let result: bool = y / x > 2 && x != 0;Это приведет к ошибке, так как y будет разделено на 0, что недопустимо в математике.
Эта техника используется для оптимизации вычисления логических выражений. Например:
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);В этом примере b < 2 и d < 10 не будут вычисляться, потому что a > 0 и c < -5 оба ложны.
Задание
НовичокДавайте создадим программу, которая определяет, подходит ли сегодняшний день для производства энергии солнечными панелями
Инициализируйте следующие переменные:
is_sunnyсо значением truewind_speedсо значением 5.4temperatureсо значением 23solar_panel_outputсо значением 9is_cloudyсо значением false
Создайте одно логическое выражение, которое проверяет ВСЕ следующие условия:
- Солнечно
- Скорость ветра меньше 10
- Выработка солнечной панели меньше 15
- Температура выше 20 ИЛИ облачности нет
Попробуйте сами
fn main() {
// Инициализировать переменные
// Замените значения-заполнители ниже на значения из задания
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;
// Полное логическое выражение
// Замените заполнитель ниже на полное условие
let result: bool = false;
// Не удаляйте строки ниже
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);
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Fundamentals
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияАрифметические сокращенияОператоры сравненияСравнение строк7Основы ввода-вывода
Вывод в консольЧтение ввода пользователяПовторение — До 120Повторение — True или False5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 38Приложение-калькулятор
Приветственное сообщениеПолучение чисел3Переменные. Часть 2
Объявление типаСоглашения об именованииВывод типовПовторение: инициализация переменныхПриведение типов9Циклы
Цикл For по последовательностиЦикл WhileОператор BreakОператор ContinueВложенные циклыМетки цикловБесконечный циклПовторение — Динамический вводПотренируйтесь самостоятельно: Онлайн-компилятор Rust