Menu
CoddyTech

Opérateurs logiques, partie 3

Fait partie de la section Fondamentaux du Journey Rust de Coddy. Leçon 23 sur 75.

Lorsqu’il vérifie plusieurs conditions, l’ordinateur cesse de les vérifier dès qu’il connaît la réponse finale (c’est ce qu’on appelle l’évaluation en court-circuit).

Par exemple :

let x: i32 = 0;
let y: i32 = 5;
let result: bool = x != 0 && y / x > 2;

Ici, x est égal à 0, donc l’expression y / x > 2 ne sera pas évaluée. Si nous inversons l’ordre :

let result: bool = y / x > 2 && x != 0;

Cela provoquera une erreur, car y sera divisé par 0, ce qui est interdit en mathématiques.

Cette technique est utilisée pour optimiser l’évaluation des expressions logiques. Par exemple :

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);

Dans cet exemple, b < 2 et d < 10 ne seront pas évalués, car a > 0 et c < -5 sont toutes deux fausses.

challenge icon

Défi

Débutant

Créons un programme pour déterminer si la journée est propice à la production d’énergie par des panneaux solaires

Initialise ces variables :

  • is_sunny avec la valeur true
  • wind_speed avec la valeur 5.4
  • temperature avec la valeur 23
  • solar_panel_output avec la valeur 9
  • is_cloudy avec la valeur false

Crée une seule expression logique qui vérifie TOUTES ces conditions :

  • Il fait beau
  • La vitesse du vent est inférieure à 10
  • La production des panneaux solaires est inférieure à 15
  • La température est supérieure à 20 OU il n’y a pas de nuages

Essayez vous-même

fn main() {
    // Initialisez les variables
    // Remplacez les valeurs provisoires ci-dessous par celles de l’énoncé
    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;
    
    // L’expression logique complète
    // Remplacez la valeur provisoire ci-dessous par la condition complète
    let result: bool = false;
    
    // Ne supprimez pas les lignes ci-dessous
    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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Rust en ligne