Menu
CoddyTech

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.

challenge icon

Desafío

Principiante

Creemos un programa para decidir si es un buen día para producir energía con paneles solares

Inicializa estas variables:

  • is_sunny con el valor true
  • wind_speed con el valor 5.4
  • temperature con el valor 23
  • solar_panel_output con el valor 9
  • is_cloudy con 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);
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Rust online