Opérateurs logiques, partie 3
Fait partie de la section Fundamentals du Journey Rust de Coddy. Leçon 23 sur 75.
Lors de la vérification de plusieurs conditions, l'ordinateur s'arrête de vérifier dès qu'il connaît le résultat final (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 égale 0, il n'évaluera donc pas y / x > 2. Si nous inversions l'ordre :
let result: bool = y / x > 2 && x != 0;Cela entraînera 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 evaluated car a > 0 et c < -5 sont tous deux faux.
Défi
DébutantCréons un programme pour décider si c'est une bonne journée pour la production d'énergie par panneaux solaires
Initialisez ces variables :
is_sunnyavec la valeur truewind_speedavec la valeur 5.4temperatureavec la valeur 23solar_panel_outputavec la valeur 9is_cloudyavec la valeur false
Créez une expression logique qui vérifie TOUTES ces conditions :
- Il fait ensoleillé
- La vitesse du vent est inférieure à 10
- La production du panneau solaire 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() {
// Initialiser les variables
// Remplacez les valeurs d'espace réservé ci-dessous par celles de la tâche
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 l'espace réservé 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!("\\nFinal result - Good day for solar energy production: {}", result);
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fundamentals
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Afficher dans la consoleLire la saisie utilisateurRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 33Variables - Partie 2
Déclaration de typeConventions de nommageInférence de typeRécapitulatif - Initialiser des variablesConversion de type9Boucles
Boucle For sur une sérieBoucle WhileBreakContinueBoucles imbriquéesÉtiquettes de boucleBoucle infinieRécapitulatif - Entrée dynamique12Bases des tableaux
Déclaration de tableauxTableau comme paramètreAccès aux élémentsModification de tableauxRécapitulatif - Affichage formaté d'un tableau15Opérations sur les chaînes
Méthodes de chaînesMacro format!Conversion de chaînesRécapitulatif - FormatEntraînez-vous par vous-même : Compilateur Rust en ligne