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_MIENTRASHACER ... MIENTRAS_QUEPARA ... 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
MIENTRAS (condicion) HACER
// instrucciones
FIN_MIENTRAS
Ejemplo
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
HACER
// instrucciones
MIENTRAS_QUE (condicion)
Ejemplo
FUNCION PRINCIPAL
INICIO
NUMERICO i
i = 0
HACER
IMPRIMIR(i)
i = i + 1
MIENTRAS_QUE (i < 5)
FINAL
Este programa imprime:
01234
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
PARA i = inicio HASTA fin HACER
// instrucciones
FIN_PARA
También puede usarse con PASO:
PARA i = inicio HASTA fin PASO salto HACER
// instrucciones
FIN_PARA
Ejemplo simple
FUNCION PRINCIPAL
INICIO
NUMERICO i
PARA i = 1 HASTA 5 HACER
IMPRIMIR(i)
FIN_PARA
FINAL
Ejemplo con paso
FUNCION PRINCIPAL
INICIO
NUMERICO i
PARA i = 0 HASTA 10 PASO 2 HACER
IMPRIMIR(i)
FIN_PARA
FINAL
Este ejemplo imprime:
0246810
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
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
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
| Estructura | Cuándo evalúa la condición | ¿Puede no ejecutarse nunca? | Caso típico |
|---|---|---|---|
MIENTRAS | Antes de cada iteración | Sí | Repetición condicionada |
HACER ... MIENTRAS_QUE | Después de ejecutar | No | Al menos una ejecución |
PARA | Según rango y paso | Depende del rango | Repetició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
PARAcuando el número de repeticiones esté claro. - Usa
MIENTRAScuando la condición sea la verdadera guía del proceso. - Usa
HACER ... MIENTRAS_QUEcuando el cuerpo deba ejecutarse al menos una vez. - Usa
SALIRyCONTINUARcon moderación y solo cuando hagan el flujo más claro.
Errores frecuentes
1. Crear un bucle infinito sin querer
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:
MIENTRASHACER ... MIENTRAS_QUEPARA
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.