Operadores lógicos Parte 3
Parte de la sección Fundamentos del Journey de Rust de Coddy. Lección 23 de 75.
Al comprobar varias condiciones, el ordenador deja de comprobarlas en cuanto conoce la respuesta final (esto se llama evaluación de cortocircuito).
Por ejemplo:
let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;Aquí x es igual a 0, por lo tanto no evaluará y / x > 2. Si invirtiéramos el orden:
let result: bool = y / x > 2 && x != 0;Esto provocará un error porque y se dividirá entre 0, lo cual no está permitido en matemáticas.
Esta técnica se utiliza para optimizar la evaluación de expresiones lógicas. Por ejemplo:
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);En este ejemplo, b < 2 y d < 10 no se evaluarán porque tanto a > 0 como c < -5 son falsas.
Desafío
PrincipianteCreemos un programa para decidir si es un buen día para producir energía con paneles solares
Inicializa estas variables:
is_sunnycon el valor truewind_speedcon el valor 5.4temperaturecon el valor 23solar_panel_outputcon el valor 9is_cloudycon el valor false
Crea una expresión lógica que compruebe TODAS estas condiciones:
- Hace sol
- La velocidad del viento es inferior a 10
- La producción de los paneles solares es inferior a 15
- La temperatura es superior a 20 O no hay nubes
Pruébalo tú mismo
fn main() {
// Inicializa las variables
// Reemplaza los valores provisionales de abajo por los de la tarea
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;
// La expresión lógica completa
// Reemplaza el valor provisional de abajo por la condición completa
let result: bool = false;
// No borres las líneas de abajo
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!("Final result - Good day for solar energy production: {}", result);
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 33Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámicaPractica por tu cuenta: Compilador de Rust online