Operadores lógicos Parte 3
Parte de la sección Fundamentals del Journey de Rust de Coddy. Lección 23 de 75.
Al evaluar múltiples condiciones, la computadora deja de verificar tan pronto como conoce el resultado final (esto se conoce como 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 invertimos el orden:
let result: bool = y / x > 2 && x != 0;Esto dará como resultado un error porque y se dividirá por 0, lo cual es ilegal 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 serán evaluated porque a > 0 y c < -5 son ambos falsos.
Desafío
PrincipianteVamos a crear un programa para decidir si es un buen día para la producción de 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 verifique TODAS estas condiciones:
- Hace sol
- La velocidad del viento es menor que 10
- La producción del panel solar es menor que 15
- La temperatura es superior a 20 O no hay nubes
Pruébalo tú mismo
fn main() {
// Inicializa las variables
// Reemplaza los valores de marcador de posición a continuación con 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 marcador de posición a continuación con 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!("\\nFinal 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 Fundamentals
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