Boucles imbriquées
Fait partie de la section Fondamentaux du Journey Rust de Coddy. Leçon 41 sur 75.
Une boucle imbriquée est simplement une boucle à l’intérieur d’une autre boucle. La boucle interne effectuera toutes ses itérations pour chaque itération de la boucle externe. Une horloge en est une bonne analogie : pour chaque heure (boucle externe), l’aiguille des minutes (boucle interne) doit effectuer son cycle complet de 60 minutes.
Exemple de boucle imbriquée :
let rows = 2;
let cols = 2;
for x in 0..rows {
for y in 0..cols {
println!("{} {}", x, y);
}
}
// Cela affichera :
// 0 0
// 0 1
// 1 0
// 1 1La boucle externe (x) s’exécute rows fois, et pour chacune de ces fois, la boucle interne (y) s’exécute cols fois. Chaque boucle a son propre compteur : y repart de 0 à chaque exécution de la boucle externe, tandis que rows et cols restent identiques et indiquent uniquement aux boucles quand s’arrêter.
Défi
DébutantÉcris un programme qui affiche un rectangle d’astérisques (*) avec une largeur et une hauteur données.
Entrée : deux entiers : width et height (le code de départ les lit déjà).
Par exemple :
Si width = 5 et height = 3, la sortie doit être :
*****
*****
*****Si width = 4 et height = 6, la sortie doit être :
****
****
****
****
****
****Utilise un nouveau compteur pour chaque boucle (par exemple i pour les lignes et j pour les astérisques d’une ligne) et compare-le à height ou à width. Ne modifie pas height et width eux-mêmes : chaque ligne a de nouveau besoin de width.
Essayez vous-même
use std::io;
fn main() {
let mut width_input = String::new();
let mut height_input = String::new();
io::stdin().read_line(&mut width_input).unwrap();
io::stdin().read_line(&mut height_input).unwrap();
let width: i32 = width_input.trim().parse().unwrap();
let height: i32 = height_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 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