Menu
CoddyTech

Bucle anidado

Parte de la sección Fundamentos del Journey de GDScript de Coddy. Lección 49 de 92.

Un bucle anidado es un bucle dentro de otro bucle. En cada iteración del bucle externo, el bucle interno ejecuta todas sus iteraciones:

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

El bloque interno tiene dos niveles de sangría. Se ejecuta rows x cols = 3 x 2 = 6 veces en total. j vuelve a empezar desde 0 cada vez que se ejecuta el bucle externo, mientras que rows y cols siguen siendo iguales y solo indican a los bucles cuándo detenerse.

Los dos bucles necesitan nombres de variable diferentes. Escribir for i dentro de otro for i es un error que se informa antes de que se ejecute el programa.

Los bucles anidados son útiles para las filas y las columnas. print() siempre termina la línea, así que para imprimir una fila de estrellas, primero constrúyela en una cadena y luego imprímela cuando termine el bucle interno:

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

El bucle externo se ejecuta una vez por fila, y el bucle interno añade una estrella por columna. Un break dentro del bucle interno detiene solo el bucle interno: el bucle externo continúa con su siguiente iteración.

challenge icon

Desafío

Fácil

El programa lee dos números enteros: rows y cols.

Usa bucles anidados para imprimir un rectángulo de asteriscos (*) con rows líneas y cols asteriscos en cada línea.

Para las entradas 3 y 4, la salida es:

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

Usa un contador nuevo para cada bucle (por ejemplo, row para las filas y col para los asteriscos de una fila) y compáralo con rows o cols. No cambies rows ni cols: cada fila necesita cols de nuevo.

Pruébalo tú mismo

extends Node

func _ready():
	var rows := int(OS.read_string_from_stdin())
	var cols := int(OS.read_string_from_stdin())
	# Bucle externo: una iteración por fila
	# Bucle interno: añade una estrella por columna
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de GDScript online