Boucles imbriquées
Fait partie de la section Fondamentaux du Journey Swift de Coddy — leçon 49 sur 86.
Une boucle imbriquée est simplement une boucle à l'intérieur d'une autre boucle. La boucle interne termine toutes ses itérations pour chaque itération de la boucle externe.
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// Sortie :
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2Pour chaque valeur de row, la boucle interne parcourt complètement toutes les valeurs de col. Ainsi, avec 3 itérations externes et 2 itérations internes, le code à l'intérieur s'exécute 6 fois au total (3 × 2).
Les boucles imbriquées sont couramment utilisées pour travailler avec des structures en forme de grille ou pour générer des motifs.
Voici un exemple qui affiche un simple rectangle d'astérisques :
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Passer à la ligne suivante
}
// Sortie :
// ****
// ****Le terminator: "" empêche print d'ajouter un saut de ligne, de sorte que les astérisques apparaissent sur la même ligne. Une fois la boucle interne terminée, print("") passe à la ligne suivante.
Défi
FacileLisez deux entiers à partir de l'entrée : rows et cols. Utilisez des boucles imbriquées pour imprimer une grille de nombres où chaque cellule affiche le produit de son numéro de ligne et de son numéro de colonne.
Vous recevrez les entrées suivantes :
- Première ligne : nombre de lignes (par exemple,
"3") - Deuxième ligne : nombre de colonnes (par exemple,
"4")
Exigences :
- Utilisez une boucle externe pour les lignes (1 à
rows) - Utilisez une boucle interne pour les colonnes (1 à
cols) - Imprimez le produit des numéros de ligne et de colonne actuels
- Séparez les valeurs sur une même ligne par un espace
- Chaque ligne doit être sur sa propre ligne
Conseil : Utilisez terminator: " " pour garder les valeurs sur la même ligne, puis utilisez print("") après la boucle interne pour passer à la ligne suivante.
Par exemple, si rows est 3 et cols est 4, la sortie devrait être :
1 2 3 4
2 4 6 8
3 6 9 12 Aide-mémoire
Une boucle imbriquée est une boucle à l'intérieur d'une autre boucle. La boucle interne effectue toutes ses itérations pour chaque itération unique de la boucle externe.
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// Output:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2Avec 3 itérations externes et 2 itérations internes, le code s'exécute 6 fois au total (3 × 2).
Les boucles imbriquées sont utiles pour les structures en grille et les motifs :
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Passer à la ligne suivante
}
// Output:
// ****
// ****Utilisez terminator: "" pour empêcher print d'ajouter un saut de ligne, gardant ainsi la sortie sur la même ligne. Utilisez print("") après la boucle interne pour passer à la ligne suivante.
Essayez vous-même
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// À FAIRE : Écrivez votre code ci-dessous
// Utilisez des boucles imbriquées pour afficher une grille de multiplication
// Boucle externe : itérer à travers les lignes (1 à rows)
// Boucle interne : itérer à travers les colonnes (1 à cols)
// Afficher le produit de row * column
// Utilisez print(..., terminator: " ") pour garder les valeurs sur la même ligne
// Utilisez print("") après la boucle interne pour passer à la ligne suivanteCette 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 ModuloAffectation composéeRécapitulatif - Mathématiques simplesOpérateurs de comparaison7Entrées/Sorties de base
Fonction PrintInterpolation de chaînesSaisie ReadLineConversion de typesRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux10Fonctions
Déclarer une fonctionParamètres et argumentsValeurs de retourÉtiquettes d'argumentRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs par défaut13Itération sur les séquences
Itérer sur les élémentsLa méthode d'énumérationItérer sur les chaînes P1Itérer sur les chaînes P22Variables
Let vs VarAnnotations de typeNombresStringsBooléensConventions de nommageRécapitulatif - Initialiser des variables5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 3Opérateur ternaire8Calculateur de partage de facture
Message de bienvenueSaisie des données11FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz3Les Optionnels
Comprendre les optionnelsDéballage avec If LetL'instruction Guard LetOpérateur de fusion nilRécapitulatif - Déballage sécurisé6Prise de décision
L'instruction IfIf - ElseRécapitulatif - Calculatrice simpleL'instruction SwitchSwitch avec des intervalles9Boucles
Boucle For-InBoucle WhileBoucle Repeat-WhileBreakContinueRécapitulatif - FactorielleIntervalles dans les bouclesBoucles imbriquéesRécapitulatif - Entrée dynamique