Sentencia REPEAT

REPEAT
    <sentencia> ;
    ...
UNTIL ( <condición> )

La sentencia REPEAT (REPEAT ... UNTIL( ... )) es una sentencia que implementa un bucle, es decir, que es capaz de repetir un grupo de sentencias un número determinado de veces.

Para implementar este bucle se debe comenzar con la palabra reservada REPEAT, seguida de las sentencias que se quieren repetir una o más veces y el final de la sentencia se determinará poniendo la palabra reservada UNTIL seguida de la condición que se debe cumplir para que se de por finalizada la sentencia.

Cuando se ejecute una sentencia REPEAT se ejecutarán primero las sentencias interiores (las que están entre el REPEAT y el UNTIL) y, tras hacerlo, se comprobará la condición especificada en el UNTIL y si ésta continúa siendo falsa, se volverán a ejecutar las sentencias interiores. El proceso se repetirá hasta que la condición del UNTIL resulte cierta, continuando entonces la ejecución del programa tras esta sentencia.

Cada vez que se ejecutan las sentencias interiores se dice que se ha realizado una iteración del bucle. La sentencia REPEAT ... UNTIL (literalmente traducida como REPETIR ... HASTA (que se cumpla la) <condición>) siempre ejecutará las sentencias interiores al menos una vez, ya que comprueba la condición siempre tras ejecutarlas.

Ejemplo:
PROGRAM mi_juego;
BEGIN
    x=0;
    REPEAT
        x=x+10;
        FRAME;
    UNTIL (x>320)
END


En este ejemplo se pondrá la variable local x (coordenada x del proceso) a cero y, después, se le sumarán 10 a x y se dará un FRAME hasta que x sea un número mayor que 320.

Una sentencia BREAK dentro de un bucle REPEAT lo finalizará de forma inmediata, continuando el programa por la sentencia siguiente a dicho bucle.

Una sentencia CONTINUE dentro de un bucle REPEAT forzará al programa a realizar la comprobación del UNTIL inmediatamente y, si ésta es falsa, volverá a ejecutar las sentencias interiores desde el principio (tras la palabra reservada REPEAT). Si la condición resulta cierta, la sentencia CONTINUE finalizará el bucle.

Las sentencias interiores a un bucle REPEAT pueden ser tantas como se quieran y de cualquier tipo incluyendo, por supuesto, nuevos bucles REPEAT.


Ver: Sintaxis