Boucles imbriquées
Fait partie de la section Fondamentaux du Journey R de Coddy — leçon 44 sur 78.
Vous pouvez placer une boucle à l'intérieur d'une autre boucle pour créer une boucle imbriquée. La boucle interne s'exécute complètement pour chaque itération de la boucle externe, ce qui est utile lors de la manipulation de combinaisons ou de modèles en forme de grille.
for (i in 1:3) {
for (j in 1:2) {
cat("i =", i, ", j =", j, "\n")
}
}Sortie :
i = 1 , j = 1
i = 1 , j = 2
i = 2 , j = 1
i = 2 , j = 2
i = 3 , j = 1
i = 3 , j = 2Pour chaque valeur de i, la boucle interne parcourt toutes les valeurs de j. Lorsque i vaut 1, j va de 1 à 2. Ensuite, i devient 2, et j recommence de 1 à 2.
Un exemple pratique consiste à créer un modèle de multiplication simple :
for (row in 1:3) {
for (col in 1:3) {
cat(row * col, " ")
}
cat("\n")
}Sortie :
1 2 3
2 4 6
3 6 9La boucle externe contrôle les lignes, tandis que la boucle interne gère chaque colonne au sein de cette ligne. Après avoir terminé chaque ligne, nous affichons un saut de ligne pour passer à la ligne suivante.
Défi
FacileLisez deux nombres à partir de l'entrée : rows et cols.
Utilisez des boucles imbriquées pour afficher un rectangle de nombres où chaque cellule contient la somme de son numéro de ligne et de son numéro de colonne. Les lignes sont numérotées de 1 à rows, et les colonnes sont numérotées de 1 à cols.
Affichez chaque ligne sur sa propre ligne, avec les valeurs séparées par un seul espace. Utilisez cat() pour la sortie, en ajoutant un saut de ligne après chaque ligne.
Par exemple, si les entrées sont 3 et 4, la sortie devrait être :
2 3 4 5
3 4 5 6
4 5 6 7Dans la première ligne (ligne 1), les valeurs sont 1+1=2, 1+2=3, 1+3=4, 1+4=5. Dans la deuxième ligne (ligne 2), les valeurs sont 2+1=3, 2+2=4, 2+3=5, 2+4=6, et ainsi de suite.
Aide-mémoire
Une boucle imbriquée est une boucle placée à l'intérieur d'une autre boucle. La boucle interne s'exécute complètement pour chaque itération de la boucle externe.
for (i in 1:3) {
for (j in 1:2) {
cat("i =", i, ", j =", j, "\n")
}
}Pour chaque valeur de i, la boucle interne parcourt toutes les valeurs de j.
Exemple de création d'un modèle de multiplication :
for (row in 1:3) {
for (col in 1:3) {
cat(row * col, " ")
}
cat("\n")
}La boucle externe contrôle les lignes, tandis que la boucle interne gère chaque colonne au sein de cette ligne. Utilisez cat("\n") pour imprimer un saut de ligne après avoir terminé chaque ligne.
Essayez vous-même
# Lire l'entrée
con <- file("stdin", "r")
rows <- as.integer(suppressWarnings(readLines(con, n = 1)))
cols <- as.integer(suppressWarnings(readLines(con, n = 1)))
close(con)
# TODO : Écrivez votre code ci-dessous
# Utilisez des boucles imbriquées pour imprimer un rectangle où chaque cellule contient ligne + colonne
# Utilisez cat() pour imprimer les valeurs séparées par des espaces, avec un saut de ligne après chaque ligneCette 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 2
Opérateurs logiques (AND, OR)Opérateurs logiques - Partie 2 (NOT)Récapitulatif - Logique simpleLogique vectorisée - Partie 1Logique vectorisée - Partie 27Calculateur de partage d'addition
Message de bienvenueRécupérer la saisie utilisateur10FizzBuzz avec une variante
Présentation du jeuLa fonction FizzBuzz2Variables et types de données
Type de données numériqueType de données entierType de données caractèreType de données logiqueVérification des types de donnéesConventions de nommageValeurs manquantes : NARécapitulatif - Création de variables8Boucles
Boucle ForBoucle WhileBreakSuivant (Continue)Récapitulatif - FactorielleGénération de séquences (seq, :)Boucles imbriquéesRécapitulatif - Saisie dynamique3Opérateurs, partie 1
Opérateurs arithmétiquesDivision entière et moduloOpérateurs d'affectationRécapitulatif - Mathématiques simplesOpérateurs de comparaison6Entrées/Sorties de base
Affichage avec PrintCat pour l'affichageAffichage avec des variablesLire l'entrée avec readline()Bases de la conversion de typesRécapitulatif - Calculateur d'âgeRécapitulatif - Vrai ou Faux9Fonctions
Déclarer une fonctionArguments de fonctionValeurs de retourRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validationValeurs de paramètres par défaut