Passer au contenu principal
eLearner.app
Module 2 · Leçon 1 sur 23/14 dans le cours~12 min
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 :

Code
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 :

Code
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 :

Code
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 :

Code
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 :

Code
// 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 :

Code
let mut count = 0;
'outer: loop {
    loop {
        if count == 5 {
            break 'outer; // Esce direttamente dal loop esterno
        }
        count += 1;
    }
}

À toi de jouer

Exercice#rust.m2.l1.e1
Tentatives : 0Chargement…

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!.

Chargement de l'éditeur…
Afficher l'indice

Écrivez `let message = if number > 5 { 'greater' } else { 'smaller' };` et passez-la à `println!`.

Solution disponible après 3 tentatives

Exercice#rust.m2.l1.e2
Tentatives : 0Chargement…

Écrivez une boucle for qui affiche les nombres de 1 à 5 inclus (donc 1, 2, 3, 4, 5) en utilisant println! à chaque itération.

Chargement de l'éditeur…
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

Exercice#rust.m2.l1.e3
Tentatives : 0Chargement…

É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.

Chargement de l'éditeur…
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