|
Contenidos > 3.3
Repetitiva para ( la instrucción for
) |
|
|
|
En
Pascal, para escribir una instrucción
repetitiva para
se utiliza la sintaxis:
for <variable> := <valor_inicial> to <valor_final> do
begin
<bloque_de_instrucciones>
end
|
Cuando
el <bloque_de_instrucciones>
sólo contiene una
instrucción, las palabras reservadas begin
y end
son opcionales.
En una
instrucción repetitiva for,
siempre se utiliza una <variable>
a la que se debe asignar un <valor_inicial>.
En cada iteración
del bucle,
al valor de la <variable>
se le suma 1
y, cuando la <variable>
supera el <valor_final>,
el bucle finaliza.
En consecuencia, cuando el flujo
de un programa llega a un bucle for,
en primer lugar, se asigna el <valor_inicial>
a la <variable>
y, a partir de ese instante, existen dos posibilidades:
- Si el valor de
la <variable>
es mayor que el <valor_final>,
entonces no se ejecuta el bloque de instrucciones, y el bucle for
finaliza sin realizar ninguna iteración.
- Si el valor de
la <variable>
es menor o igual que el <valor_final>,
entonces, se ejecuta el bloque de instrucciones y, después,
se le suma 1
a la <variable>,
volviéndose, de nuevo, a comparar el valor de la <variable>
con el <valor_final>.
Y así sucesivamente, hasta que, el valor de la <variable>
sea mayor que el <valor_final>.
En resumen, una instrucción
repetitiva for
permite ejecutar, repetidamente, un bloque de instrucciones, en base a
un valor inicial y a un valor final.
El bucle for
es ideal usarlo cuando, de antemano, ya se sabe el número de
veces (iteraciones) que tiene que ejecutarse un determinado bloque de
instrucciones.
El bucle para
es una variante del bucle mientras
y, al igual que éste, puede iterar cero o más
veces (véase el apartado 10.1
Repetitiva mientras,
del Curso de Diseño de
Algoritmos).
Sin embargo, el bucle for
sólo se suele usar cuando se conoce el número
exacto de
veces que tiene que iterar el bucle. Éste es el caso del
problema planteado en el ejemplo 1
del apartado 3.1 Repetitiva mientras,
en el cual, se sabe de antemano
que el bucle tiene que iterar, exactamente, diez veces.
Ejemplo
1: Por
tanto, dicho problema,
se puede resolver con una instrucción repetitiva for
de la siguiente forma:
program EJE13131;
uses Crt;
var Contador :
Integer;
begin
ClrScr;
GotoXY( 4,
2 );
for
Contador := 1
to 10 do
begin
Write( Contador, '
' )
end
end.
|
Ejemplo
2: Si
en vez de querer mostrar los números del 1 al 10, se
quisieran
mostrar al revés, es decir, del 10 al 1,
podríamos
utilizar la palabra reservada downto
en vez de to.
Por tanto, en el programa, escribiríamos:
for
Contador := 10 downto 1 do
en vez de:
for
Contador := 1
to
10
do
¿Cuándo
usar un bucle u otro?
A la hora de elegir un bucle u otro, debemos hacernos la siguiente
pregunta:
- ¿Se
conoce, de antemano, el número de veces (iteraciones) que
tiene
que ejecutarse un determinado bloque de instrucciones?
Si la respuesta es
afirmativa, habitualmente se usa un bucle for.
En caso contrario, nos plantearemos la siguiente pregunta:
- ¿El bloque de
instrucciones debe ejecutarse al menos una vez?
En este caso, si la
respuesta es afirmativa, generalmente haremos uso de un bucle repeat...until,
y si la respuesta es negativa, usaremos un bucle while.
|
|
|
|
|