Leçons du module (1/2)
Conditionnels et boucles
Le contrôle du flux en Rust s'articule autour de deux structures principales : les expressions conditionnelles pour décider quel chemin prendre, et les structures de boucle pour répéter des instructions.
Conditionnelles : if comme Expression
En Rust, l'instruction if est une expression, ce qui signifie qu'elle renvoie une valeur. Nous pouvons utiliser if pour assigner directement une valeur à une variable :
let condition = true;
let number = if condition { 5 } else { 6 }; // if/else come espressione
Boucles et Itérations
Rust fournit trois types de boucles natives : loop, while et for.
1. loop (Boucle Infinie)
Le mot-clé loop crée une boucle infinie qui continue jusqu'à ce que vous lui disiez explicitement de s'arrêter avec break :
let mut count = 0;
loop {
count += 1;
if count == 10 {
break; // Esce dal ciclo
}
}
De plus, vous pouvez renvoyer une valeur depuis un loop en la plaçant juste après break :
let result = loop {
count += 1;
if count == 10 {
break count * 2; // Restituisce 20
}
};
2. while (Boucle Conditionnelle)
Exécute un bloc de code tant qu'une condition booléenne reste vraie :
let mut number = 3;
while number != 0 {
println!("{}!", number);
number -= 1;
}
3. for (Itération sur des Collections et des Intervalles)
La boucle for est l'outil le plus courant et le plus sûr pour parcourir les éléments d'une collection ou des intervalles de nombres :
// Itera sui numeri da 1 a 3 (escluso il 4)
for number in 1..4 {
println!("Valore: {}", number);
}
// Itera includendo l'estremo destro usando '='
for number in 1..=3 {
println!("Valore: {}", number); // Stampa 1, 2 e 3
}
Étiquettes de Boucle (Loop Labels)
En cas de boucles imbriquées, les instructions break et continue se réfèrent par défaut à la boucle la plus interne. Rust permet d'appliquer une étiquette à une boucle (écrite sous la forme 'nom_etiquette:) afin de pouvoir explicitement interrompre ou continuer une boucle plus externe :
let mut count = 0;
'outer: loop {
loop {
if count == 5 {
break 'outer; // Esce direttamente dal loop esterno
}
count += 1;
}
}
À toi de jouer
Déclarez une variable nommée number avec la valeur 7. Utilisez ensuite une expression if/else pour attribuer à la variable message la valeur 'greater' si number est supérieur à 5, ou 'smaller' dans le cas contraire. Enfin, affichez message avec println!.
Afficher l'indice
Écrivez `let message = if number > 5 { 'greater' } else { 'smaller' };` et passez-la à `println!`.
Solution disponible après 3 tentatives
Écrivez une boucle for qui affiche les nombres de 1 à 5 inclus (donc 1, 2, 3, 4, 5) en utilisant println! à chaque itération.
Afficher l'indice
Utilisez la syntaxe d'intervalle inclusif `for i in 1..=5` et exécutez `println!('{}', i);` dans le bloc.
Solution disponible après 3 tentatives
Écrivez une boucle loop qui incrémente une variable mutable counter à partir de 0. Lorsque counter atteint la valeur 10, sortez de la boucle en renvoyant counter multiplié par 5 via l'instruction break pour attribuer cette valeur à une variable immuable result. Enfin, affichez result.
Afficher l'indice
Utilisez `let result = loop { ... };`. À l'intérieur de la boucle, incrémentez `counter` et insérez la condition `if counter == 10 { break counter * 5; }`.
Solution disponible après 3 tentatives