Bucles

Los bucles son una de las herramientas más potentes en programación, permitiendo automatizar tareas repetitivas y manejar grandes volúmenes de datos de manera eficiente.

Bright living room with modern inventory
Bright living room with modern inventory

¿De que trata?

En programación, los bucles (también conocidos como ciclos o loops) son estructuras de control que permiten repetir un bloque de código varias veces. Imagina que tienes que realizar la misma acción 100 veces, o seguir haciendo algo hasta que se cumpla una condición específica. En lugar de escribir el mismo código una y otra vez, los bucles te permiten hacerlo de manera eficiente y concisa.

Los bucles son esenciales para tareas como:

  • Iterar sobre colecciones de datos: Recorrer todos los elementos de una lista, un arreglo, una cadena de texto, etc.

  • Realizar cálculos repetitivos: Calcular la suma de muchos números, aplicar una fórmula a cada elemento.

  • Esperar una condición: Continuar solicitando una entrada de usuario hasta que sea válida.

  • Animaciones o simulaciones: Actualizar el estado de algo en cada "cuadro" o "paso" de tiempo.

¿Cómo se hacen? (For, While, Repetir... Hasta Que)

Existen diferentes tipos de bucles, cada uno adecuado para escenarios ligeramente distintos. Los más comunes son for y while. Algunos lenguajes también tienen variaciones como do-while (que se asemeja a "repetir... hasta que").

1. Bucle for (Para)

El bucle for se utiliza generalmente cuando sabes cuántas veces quieres que se repita el código, o cuando quieres iterar sobre una secuencia de elementos (como una lista de números, una cadena de caracteres, etc.).

Sintaxis general:

  • Inicialización: Se ejecuta una sola vez al principio del bucle (ej. i = 0).

  • Condición: Se evalúa antes de cada iteración. Si es verdadera, el bucle continúa. Si es falsa, el bucle termina.

  • Actualización: Se ejecuta al final de cada iteración (ej. i++ para incrementar un contador).

Ejemplos:

Python (Iteración sobre un rango de números):

Para copiar:

for i in range(5):

print(f"Número de iteración (for): {i}")

print("---")

frutas = ["manzana", "banana", "cereza"]

for fruta in frutas:

print(f"Me gusta comer {fruta}.")

JavaScript (Bucle tradicional con contador):

Para copiar:

for (let i = 0; i < 3; i++) {

console.log(`Contador (for): ${i}`);

}

console.log("---");

const colores = ["rojo", "verde", "azul"];

for (let i = 0; i < colores.length; i++) {

console.log(`El color es: ${colores[i]}`);

}

Java (Bucle tradicional con contador):

Para copiar:

for (int i = 0; i < 4; i++) {

System.out.println("Iteración (for): " + i);

}

System.out.println("---");

String[] nombres = {"Ana", "Pedro", "Luisa"};

for (String nombre : nombres) {

System.out.println("Hola, " + nombre);

}

2. Bucle while (Mientras)

El bucle while se utiliza cuando quieres repetir un bloque de código mientras una condición específica sea verdadera. No necesariamente sabes de antemano cuántas veces se ejecutará; se repite hasta que la condición se vuelva falsa.

Sintaxis general:

Ejemplos:

Python:

Para copiar:

contador = 0

while contador < 3:

print(f"Contador (while): {contador}")

contador += 1

print("¡Fin del bucle while!")

JavaScript:

Para copiar:

let energia = 100;

while (energia > 0) {

console.log(`Nivel de energía: ${energia}`);

energia -= 20;

if (energia <= 0) {

console.log("¡Energía agotada!");

}

}

Java:

Para copiar:

int intentos = 3;

String claveCorrecta = "secreto";

String intentoUsuario = "";

intentoUsuario = "incorrecto";

while (!intentoUsuario.equals(claveCorrecta) && intentos > 0) {

System.out.println("Contraseña incorrecta. Te quedan " + intentos + " intentos.");

intentos--;

if (intentos > 0) {

intentoUsuario = "secreto";

}

}

if (intentoUsuario.equals(claveCorrecta)) {

System.out.println("¡Acceso concedido!");

} else {

System.out.println("Demasiados intentos. Acceso denegado.");

}

3. Bucle do-while (Repetir... Hasta Que)

Este tipo de bucle es una variación del while y se encuentra en lenguajes como Java, C++, C#. La característica principal es que el bloque de código se ejecuta al menos una vez, y luego la condición se evalúa al final de cada iteración.

Sintaxis general:

Ejemplo en Java:

Para copiar:

int numero = 0;

do {

System.out.println("El número es: " + numero);

numero++;

} while (numero < 3);

System.out.println("---");

int opcion;

do {

System.out.println("Presiona 1 para salir.");

opcion = 0;

if (numero == 3) {

opcion = 1;

}

} while (opcion != 1);

System.out.println("¡Saliste del programa!");

(Nota: Python y JavaScript no tienen un do-while nativo, pero puedes simularlo con un while que comience con una condición True y tenga un break interno).

Controlando el Flujo de los Bucles (break y continue)

Dentro de los bucles, a menudo querrás tener un control más fino sobre su ejecución:

  • break: Sirve para terminar el bucle inmediatamente, saltando al código que le sigue.

  • continue: Sirve para saltar la iteración actual y pasar a la siguiente iteración del bucle.

Ejemplo Python:

Para copiar:

for i in range(10):

if i == 5:

print("Encontré el 5, ¡saliendo del bucle!")

break

print(f"Procesando número: {i}")

print("\n---")

for j in range(5):

if j == 2:

print("Saltando el número 2.")

continue

print(f"Procesando otro número: {j}")