Menu
CoddyTech

Bucles anidados

Parte de la sección Fundamentos del Journey de GO de Coddy. Lección 49 de 109.

Los bucles anidados son bucles colocados dentro de otro bucle. El bucle interno se ejecuta por completo en cada iteración del bucle externo.

Vamos a crear una tabla de multiplicar para los números del 1 al 3 usando bucles anidados:

rows := 3
cols := 3
for i := 1; i <= rows; i++ {
    for j := 1; j <= cols; j++ {
        fmt.Printf("%d×%d=%d\t", i, j, i*j)
    }
    fmt.Println()
}

Después de ejecutar este código, obtenemos una tabla de multiplicar en la que cada fila representa un valor de la variable del bucle externo (i) multiplicado por todos los valores de la variable del bucle interno (j). La salida se mostrará en la pantalla:

1×1=1   1×2=2   1×3=3   
2×1=2   2×2=4   2×3=6   
3×1=3   3×2=6   3×3=9   

Entendamos cómo funciona esto paso a paso:

Primero, el bucle externo establece i=1 y el bucle interno se ejecuta por completo:

i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"

Después de que termine el bucle interno, imprimimos una nueva línea con fmt.Println().

Después, el bucle externo establece i=2 y el bucle interno empieza de nuevo, con j empezando otra vez desde 1:

i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"

Por último, el bucle externo establece i=3 y el bucle interno se ejecuta una última vez:

i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"

Cada bucle tiene su propio contador (i y j), y rows y cols nunca cambian: solo indican a los bucles cuándo detenerse. Este patrón es muy útil para trabajar con tablas de datos o crear estructuras en forma de cuadrícula.

challenge icon

Desafío

Principiante

En este desafío, practicarás el uso de bucles anidados para imprimir un patrón sencillo. El bucle externo recorrerá las filas y el bucle interno recorrerá las columnas para crear una pequeña cuadrícula de caracteres.

Completa los bucles anidados para imprimir una cuadrícula de 3x3 de asteriscos (*). Cada asterisco debe ir seguido de un espacio, así que cada fila debería verse así: * * * (con un espacio al final). El resultado esperado es:

* * * 
* * * 
* * * 

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

Pruébalo tú mismo

package main

import "fmt"

func main() {
	// Número de filas y columnas de nuestra cuadrícula
	rows := 3
	columns := 3
	
	// TODO: Crea un bucle anidado para imprimir una cuadrícula de asteriscos (*)
	// El bucle externo debe recorrer las filas
	// El bucle interno debe recorrer las columnas
	for i := 0; i < rows; i++ {
		// Añade aquí el bucle interno para imprimir asteriscos en cada columna
		
		// Esto imprime un salto de línea después de cada fila
		fmt.Println()
	}
}
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 Go online