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.
Défi
DébutantCréons un programme pour déterminer si la journée est propice à la production d’énergie par des panneaux solaires
Initialise 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é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);
}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
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