Menu
CoddyTech

Boucle imbriquée

Fait partie de la section Fondamentaux du Journey GDScript de Coddy. Leçon 49 sur 92.

Une boucle imbriquée est une boucle à l’intérieur d’une autre boucle. À chaque itération de la boucle externe, la boucle interne effectue toutes ses itérations :

var rows := 3
var cols := 2
for i in range(rows):
	print("Outer: ", i)
	for j in range(cols):
		print("  Inner: ", j)
Outer: 0
  Inner: 0
  Inner: 1
Outer: 1
  Inner: 0
  Inner: 1
Outer: 2
  Inner: 0
  Inner: 1

Le bloc interne est indenté de deux niveaux. Il s’exécute rows x cols = 3 x 2 = 6 fois au total. j repart de 0 à chaque exécution de la boucle externe, tandis que rows et cols restent identiques et indiquent seulement aux boucles quand s’arrêter.

Les deux boucles ont besoin de noms de variables différents. Écrire for i à l’intérieur d’un autre for i est une erreur, signalée avant l’exécution du programme.

Les boucles imbriquées sont utiles pour les lignes et les colonnes. print() termine toujours la ligne ; pour afficher une ligne d’astérisques, construis-la d’abord dans une chaîne, puis affiche-la une fois la boucle interne terminée :

for row in range(2):
	var line := ""
	for col in range(3):
		line += "*"
	print(line)
***
***

La boucle externe s’exécute une fois par ligne, et la boucle interne ajoute une étoile par colonne. Un break à l’intérieur de la boucle interne arrête uniquement la boucle interne : la boucle externe poursuit avec l’itération suivante.

challenge icon

Défi

Facile

Le programme lit deux nombres entiers : rows et cols.

Utilise des boucles imbriquées pour afficher un rectangle d’astérisques (*) avec rows lignes et cols astérisques sur chaque ligne.

Pour les entrées 3 et 4, la sortie est :

****
****
****

Utilise un nouveau compteur pour chaque boucle (par exemple row pour les lignes et col pour les astérisques d’une ligne) et compare-le à rows ou à cols. Ne modifie pas rows et cols eux-mêmes : chaque ligne a de nouveau besoin de cols.

Essayez vous-même

extends Node

func _ready():
	var rows := int(OS.read_string_from_stdin())
	var cols := int(OS.read_string_from_stdin())
	# Boucle externe : une itération par ligne
	# Boucle interne : ajouter une étoile par colonne
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur GDScript en ligne