Bucles

Los bucles, o ciclos, permiten repetir instrucciones dentro de un programa.

Son esenciales cuando necesitamos:

  • recorrer datos
  • repetir un cálculo
  • procesar colecciones
  • iterar hasta que ocurra cierta condición
  • automatizar tareas repetitivas

En BLOX, las estructuras de repetición principales son:

  • MIENTRAS ... HACER ... FIN_MIENTRAS
  • HACER ... MIENTRAS_QUE
  • PARA ... HASTA ... PASO ... HACER ... FIN_PARA

Cada una responde a una necesidad ligeramente distinta.

MIENTRAS ... HACER ... FIN_MIENTRAS

La estructura MIENTRAS ejecuta un bloque mientras una condición sea verdadera.

La condición se evalúa antes de entrar en cada iteración.

Por eso:

  • si la condición es falsa desde el comienzo, el bloque no se ejecuta ni una sola vez
  • si la condición sigue siendo verdadera, el bucle continúa

Sintaxis general

ejemplo.blox
MIENTRAS (condicion) HACER
    // instrucciones
FIN_MIENTRAS

Ejemplo

ejemplo.blox
FUNCION PRINCIPAL
INICIO

    NUMERICO i

    i = 0

    MIENTRAS (i < 100) HACER
        IMPRIMIR(i)
        i = i + 1
    FIN_MIENTRAS

FINAL

Este programa imprime los números del 0 al 99.

Cuándo conviene usar MIENTRAS

Usa MIENTRAS cuando:

  • no sabes de antemano cuántas veces se repetirá el bloque
  • la repetición depende de una condición dinámica
  • puede ocurrir que el bloque no deba ejecutarse nunca

HACER ... MIENTRAS_QUE

La estructura HACER ... MIENTRAS_QUE garantiza al menos una ejecución del bloque.

La condición se evalúa después de ejecutar el cuerpo del ciclo.

Sintaxis general

ejemplo.blox
HACER
    // instrucciones
MIENTRAS_QUE (condicion)

Ejemplo

ejemplo.blox
FUNCION PRINCIPAL
INICIO

    NUMERICO i

    i = 0

    HACER
        IMPRIMIR(i)
        i = i + 1
    MIENTRAS_QUE (i < 5)

FINAL

Este programa imprime:

  • 0
  • 1
  • 2
  • 3
  • 4

Cuándo conviene usar HACER ... MIENTRAS_QUE

Es útil cuando el bloque debe ejecutarse al menos una vez, por ejemplo:

  • lectura inicial de datos
  • menús interactivos
  • validaciones iterativas
  • procesos donde primero se actúa y luego se verifica si se continúa

PARA ... HASTA ... PASO ... HACER ... FIN_PARA

La estructura PARA se usa cuando queremos repetir un bloque un número controlado de veces.

Es ideal cuando existe una variable de control que avanza desde un valor inicial hasta un límite.

Sintaxis general

ejemplo.blox
PARA i = inicio HASTA fin HACER
    // instrucciones
FIN_PARA

También puede usarse con PASO:

ejemplo.blox
PARA i = inicio HASTA fin PASO salto HACER
    // instrucciones
FIN_PARA

Ejemplo simple

ejemplo.blox
FUNCION PRINCIPAL
INICIO

    NUMERICO i

    PARA i = 1 HASTA 5 HACER
        IMPRIMIR(i)
    FIN_PARA

FINAL

Ejemplo con paso

ejemplo.blox
FUNCION PRINCIPAL
INICIO

    NUMERICO i

    PARA i = 0 HASTA 10 PASO 2 HACER
        IMPRIMIR(i)
    FIN_PARA

FINAL

Este ejemplo imprime:

  • 0
  • 2
  • 4
  • 6
  • 8
  • 10

Cuándo conviene usar PARA

Usa PARA cuando:

  • el número de iteraciones es conocido
  • quieres recorrer un intervalo
  • necesitas una variable de control explícita
  • estás recorriendo índices o dimensiones

SALIR

La instrucción SALIR permite abandonar el bucle actual antes de que la condición natural de terminación se cumpla.

Ejemplo

ejemplo.blox
NUMERICO i

PARA i = 0 HASTA 10 HACER
    SI (i == 5) ENTONCES
        SALIR
    FIN_SI

    IMPRIMIR(i)
FIN_PARA

Este bucle termina cuando i llega a 5.

CONTINUAR

La instrucción CONTINUAR salta directamente a la siguiente iteración del bucle.

Ejemplo

ejemplo.blox
NUMERICO i

PARA i = 0 HASTA 5 HACER
    SI (i == 3) ENTONCES
        CONTINUAR
    FIN_SI

    IMPRIMIR(i)
FIN_PARA

Aquí se omite la impresión del valor 3.


Comparación rápida entre los tres tipos de bucle

EstructuraCuándo evalúa la condición¿Puede no ejecutarse nunca?Caso típico
MIENTRASAntes de cada iteraciónRepetición condicionada
HACER ... MIENTRAS_QUEDespués de ejecutarNoAl menos una ejecución
PARASegún rango y pasoDepende del rangoRepetición controlada

Buenas prácticas

  • Asegúrate de que la condición del bucle pueda dejar de cumplirse.
  • Actualiza correctamente la variable de control.
  • Usa PARA cuando el número de repeticiones esté claro.
  • Usa MIENTRAS cuando la condición sea la verdadera guía del proceso.
  • Usa HACER ... MIENTRAS_QUE cuando el cuerpo deba ejecutarse al menos una vez.
  • Usa SALIR y CONTINUAR con moderación y solo cuando hagan el flujo más claro.

Errores frecuentes

1. Crear un bucle infinito sin querer

ejemplo.blox
MIENTRAS (i < 10) HACER
    IMPRIMIR(i)
FIN_MIENTRAS

Si i nunca cambia, la condición seguirá siendo verdadera indefinidamente.

2. Elegir el tipo de bucle equivocado

Si el bloque debe ejecutarse al menos una vez, MIENTRAS puede no ser la mejor opción.
En ese caso suele convenir HACER ... MIENTRAS_QUE.

3. Usar mal los límites del PARA

El comportamiento del bucle depende del valor inicial, el límite y el paso.
Conviene revisar bien esos tres elementos antes de asumir cuántas iteraciones habrá.

4. Abusar de SALIR

SALIR es útil, pero si aparece demasiadas veces dentro del mismo bloque, el flujo puede volverse difícil de leer.

Resumen

En BLOX, los bucles principales son:

  • MIENTRAS
  • HACER ... MIENTRAS_QUE
  • PARA

Con ellos puedes expresar:

  • repeticiones condicionadas
  • ciclos con ejecución mínima garantizada
  • recorridos controlados por contador

Son una parte esencial del control de flujo y aparecen en casi todos los programas no triviales.