Estructuras Repetitivas en Java

Una guía visual de los bucles `while`, `do-while` y `for`.

¡Las rotondas del código!

1. El Bucle `while` (Mientras)

Analogía: "El Portero Exigente"

El `while` es como un portero que comprueba tu entrada (la condición) antes de dejarte pasar a la fiesta (el código). Si desde el principio no cumples la condición, no entras ni una sola vez.

Diagrama de Flujo

INICIO
¿Condición verdadera?
SÍ → Ejecutar Código → ↻
NO ↓
FIN

Se ejecuta 0 o más veces.

Ejemplo: Tabla de Multiplicar

int numero = 5;
int i = 0;

// El "portero" comprueba si i <= 10
while (i <= 10) {
    System.out.println(
        numero + " x " + i + " = " + (numero * i)
    );
    i++; // Se actualiza la condición
}

2. El Bucle `do-while` (Hacer-Mientras)

Analogía: "El Club VIP"

Aquí siempre entras a la fiesta (ejecutas el código) al menos una vez. Es al salir cuando el portero comprueba si puedes volver a entrar para otra ronda (la condición).

Diagrama de Flujo

INICIO
Ejecutar Código
¿Condición verdadera?
SÍ → ↻
NO ↓
FIN

Se ejecuta 1 o más veces.

Ejemplo: Validar Entrada

Scanner teclado = new Scanner(System.in);
int numero;

// Entras al bucle sí o sí
do {
    System.out.print("Introduce un número positivo: ");
    numero = teclado.nextInt();
} while (numero <= 0); // Al final, comprueban

System.out.println("¡Correcto!: " + numero);

3. El Bucle `for` (Para)

Analogía: "El Tren con Paradas Fijas"

El `for` es como un tren que sabe exactamente dónde empieza su ruta, dónde termina y cómo avanza de una parada a la siguiente. Todo el control del viaje está en una sola línea.

Estructura Compacta

for (inicio; condición; incremento)
  • Inicio: Se ejecuta una sola vez, al empezar.
  • Condición: Se comprueba antes de cada vuelta.
  • Incremento: Se ejecuta al final de cada vuelta.

Ideal para un nº fijo de repeticiones.

Ejemplo: Tabla de Multiplicar

int numero = 5;

// Todo el control en una línea
for (int i = 0; i <= 10; i++) {
    System.out.println(
        numero + " x " + i + " = " + (numero * i)
    );
}

Herramientas Especializadas dentro de Bucles

Contador

"El portero de discoteca". Cuenta eventos, normalmente de 1 en 1.

// Contar números pares
int contadorPares = 0;
for (int i = 1; i <= 10; i++) {
  if (i % 2 == 0) {
    contadorPares++;
  }
}
// contadorPares será 5

Acumulador

"El carrito de la compra". Suma valores variables para obtener un total.

// Sumar precios de la compra
double[] precios = {1.5, 3.0, 2.25};
double total = 0.0;
for (int i = 0; i < precios.length; i++) {
  total = total + precios[i];
}
// total será 6.75

Interruptor

"El interruptor de la luz". Recuerda si un evento ha ocurrido (`true`/`false`).

// Terminar un bucle a petición
boolean salir = false;
int contador = 0;
while (!salir) {
  contador++;
  System.out.println("Vuelta nº " + contador);
  if (contador >= 3) {
    salir = true; // Se pulsa el interruptor
  }
}
// El bucle termina

Resumen: ¿Cuándo usar cada bucle?

while

Cuando NO sabes cuántas veces se repetirá, pero la condición debe comprobarse al principio.

0 o más veces

do-while

Cuando necesitas que el código se ejecute al menos una vez, sin importar la condición inicial.

1 o más veces

for

Cuando SÍ sabes el número exacto de repeticiones o vas a recorrer una estructura como un array.

Nº fijo de veces