Estructuras de repetición
Según cómo se controle el ciclo (bucle / loop), hay tres posibilidades:
- for..to: La orden se repite desde que una variable tiene un valor inicial hasta que alcanza otro valor final (un cierto NÚMERO de veces).
- while..do: Repite una sentencia MIENTRAS que sea cierta la condición que indicamos.
- repeat..until: Repite un grupo de sentencias HASTA que se de una condición.
El formato de "FOR" es
for variable := ValorInicial to ValorFinal do
Sentencia;
Program For1;
var
contador: integer;
begin
for contador := 1 to 10 do
writeln( contador );
end.
While
La sintaxis de WHILE es
while condición do
sentencia;
sentencia;
Que se podría traducir como "MIENTRAS se cumpla la condición HAZ sentencia". Un ejemplo: que nos diga la longitud de una frase
Program While1;
var
frase: string;
begin
writeln('Escribe una frase, y deja una línea en blanco para salir');
write( '¿Primera frase?' );
readln( frase );
while frase <> '' do
begin
writeln( 'Su longitud es ', length(frase) );
write( '¿Siguiente frase?' );
readln( frase )
end
end.
En el ejemplo anterior, sólo se entra al bloque begin-end (una sentencia compuesta) si la primera palabra es correcta (no es una línea en blanco). Entonces escribe su longitud, pide la siguiente frase y vuelve a comprobar que es correcta.
Length es una función que nos dice cuantos caracteres componen una cadena de texto.
Si ya de principio la condición es falsa, entonces la sentencia no se ejecuta ninguna vez, como pasa en este ejemplo:
while (2<1) do
writeln('Dos es menor que uno');
writeln('Dos es menor que uno');
REPEAT
Para "repeat..until", la sintaxis es
repeat
sentencia;
...
sentencia;
sentencia
until condición;
sentencia;
...
sentencia;
sentencia
until condición;
La estructura REPEAT repite un grupo de sentencias HASTA que la condición sea cierta. Es un grupo de sentencias, no sólo una, como ocurría en "while", de modo que ahora no necesitaremos "begin" y "end" para crear sentencias compuestas.
El conjunto de sentencias se ejecutará al menos una vez, porque la comprobación se realiza al final.
No hace falta terminar con punto y coma la sentencia que va justo antes de "until", al igual que ocurre con "end".
Un ejemplo clásico es la "clave de acceso" de un programa:
program ClaveDeAcceso;
var
ClaveCorrecta, Intento: String[10];
begin
ClaveCorrecta := 'JVG';
repeat
WriteLn( 'Introduce la clave de acceso...' );
ReadLn( Intento )
until Intento = ClaveCorrecta;
(* Aquí iría el resto del programa *)
end.
Estaría bueno aclarar que los ejemplos de las estructuras de repetición y de condición son las que usamos en Free Pascal.
ResponderEliminar¿Decir estructura de decisión es lo mismo que decir Instrucciones de decisión?
ResponderEliminar