Menu
CoddyTech

Bucle anidado

Parte de la sección Fundamentos del Journey de C# de Coddy. Lección 46 de 69.

Un bucle anidado es simplemente un bucle dentro de otro bucle. El bucle interno completará todas sus iteraciones en cada iteración individual del bucle externo.

Una buena analogía para esto es un reloj: por cada hora (bucle externo), la aguja de los minutos (bucle interno) debe completar su ciclo completo de 60 minutos.

Ejemplo de un bucle anidado:

int rows = 2;
int cols = 2;
for (int x = 0; x < rows; x++) {
	for (int y = 0; y < cols; y++) {
		Console.WriteLine(x + " " + y);
	}
}

// Esto mostrará:
// 0 0
// 0 1
// 1 0
// 1 1

El bucle externo (x) se ejecuta rows veces y, en cada una de esas veces, el bucle interno (y) se ejecuta cols veces, lo que significa que el cuerpo del bucle interno se ejecuta un total de 2 × 2 = 4 veces. Cada bucle tiene su propio contador: y vuelve a empezar desde 0 cada vez que se ejecuta el bucle externo, mientras que rows y cols permanecen iguales y solo indican a los bucles cuándo detenerse.

También puede que necesites Console.Write() al trabajar con bucles anidados. A diferencia de Console.WriteLine(), que imprime texto y pasa a una nueva línea, Console.Write() imprime texto sin añadir un salto de línea al final. Esto te permite ir generando la salida en la misma línea:

for (int y = 0; y < 4; y++) {
	Console.Write("* ");
}
Console.WriteLine();

// Esto mostrará:
// * * * * 

Aquí, Console.Write() sigue imprimiendo en la misma línea, y Console.WriteLine() al final pasa a la línea siguiente.

challenge icon

Desafío

Principiante

Escribe un programa que imprima un rectángulo de asteriscos (*) con un ancho y una altura determinados.

Entrada: dos números enteros: width y height

Por ejemplo:

Si width = 5 y height = 3, la salida debería ser:

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

Si width = 4 y height = 6, la salida debería ser:

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

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 height o width. No cambies height ni width: cada fila necesita width de nuevo.

Pruébalo tú mismo

using System;

public class Program {
    public static void Main(string[] args) {
        int width = int.Parse(Console.ReadLine());
        int height = int.Parse(Console.ReadLine());
        // Escribe tu código a continuación

    }
}
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 C# online