Programación en Pascal/Control repetitivo
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.