If-Else imbriqués
Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 28 sur 75.
Nous pouvons imbriquer des instructions if-elif-else les unes dans les autres. Cela nous permet de créer des structures de prise de décision hiérarchiques.
Par exemple :
if age > 18 {
if hasLicense {
println!("You can drive");
} else {
println!("Get a license first");
}
} else {
println!("Too young to drive");
}Il peut être imbriqué à l'infini :
if condition1 {
if condition2 {
if condition3 {
// si condition1, condition2 et condition3 sont vraies
...
}
}
}Défi
DébutantCréez un programme qui vérifie si quelqu'un peut faire un tour de montagnes russes. Les conditions sont :
- Doit avoir au moins 12 ans
- Doit mesurer plus de 150 cm
- S'ils remplissent les deux conditions mais ont moins de 15 ans, ils ont besoin de la supervision d'un adulte
Affichez exactement ces messages pour chaque cas :
- Si trop jeune :
Sorry, you're too young - Si pas assez grand :
Sorry, you're not tall enough - Si moins de 15 ans et sans adulte :
Sorry, you need an adult with you - Si moins de 15 ans avec un adulte :
You can ride with adult supervision! - Si 15 ans ou plus et assez grand :
You can ride by yourself!
Aide-mémoire
Vous pouvez imbriquer des instructions if-elif-else les unes dans les autres pour créer des structures de prise de décision hiérarchiques :
if age > 18 {
if hasLicense {
println!("You can drive");
} else {
println!("Get a license first");
}
} else {
println!("Too young to drive");
}L'imbrication peut être faite à l'infini :
if condition1 {
if condition2 {
if condition3 {
// si condition1, condition2 et condition3 sont vraies
...
}
}
}Essayez vous-même
use std::io;
fn main() {
let mut age_input = String::new();
let mut height_input = String::new();
let mut adult_input = String::new();
io::stdin().read_line(&mut age_input).unwrap();
io::stdin().read_line(&mut height_input).unwrap();
io::stdin().read_line(&mut adult_input).unwrap();
let age: i32 = age_input.trim().parse().unwrap();
let height: i32 = height_input.trim().parse().unwrap();
let has_adult: bool = adult_input.trim().parse().unwrap();
// Écrivez votre code ci-dessous
}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 - Format