Programación en Pascal/Control repetitivo

De Wikilibros, la colección de libros de texto de contenido libre.

Básicamente, existen dos formas de repetir una rutina en Pascal, mediante iteración imperativa (bucles) o mediante recursividad. Veremos esto último más tarde.

El bucle For..to..do[editar]

Prueba el siguiente sencillo ejemplo:

program leccion7;

var
    contar, x : Integer;

begin
    write('Hasta donde tengo que contar: '); readln(contar);
    For x:=0 to contar do begin
        write('Voy por el ');
        writeln(x);
    end;
    writeln('Terminado');
end.

Por supuesto, detrás del do, si hubiera habido solo una instrucción, se hubiera podido evitar usar begin...end.

También es posible contar hacia atrás:

    For x:=100 downto 0 do begin
        write('Voy por el ');
        writeln(x);
    end;

El bucle For no tiene mayor complicación.

Bucle condicional repeat..until[editar]

Este bucle se repite siempre y cuando la condición propuesta sea verdadera. Es como un if que repite una y otra vez su bloque hasta que sea falso.

Prueba el siguiente ejemplo:

program leccion7;

var
    salida : Integer;

begin
    repeat
        write('Introduce un valor (0..9): ');
        readln(salida);
    until (salida>=0) and (salida<=9);
    writeln('Por fin un valor correcto. Terminando.');
end.

Prueba a introducir valores fuera del rango 0..9. El programa continuará pidiendo que introduzcas una y otra vez un valor, hasta que se cumpla la condición, momento en el que saldrá del bucle.

Bucle condicional while..do[editar]

Este bucle es muy similar a repeat...until. Solo tiene dos diferencias: hace el chequeo de la condición al principio, y se puede evitar usar un bloque si solo hay una instrucción. Ejemplo:

program leccion7;

var
    contar, x : Integer;

begin
    write('Introduce un número: '); readln(contar);
    x := 0;
    while x <> contar do begin
        writeln(x);
        x := x + 1;
    end;
end.