4.6. Estructura de control For-to-do (Ascendente).
anterior :: indice :: siguiente
Cuando se conoce el número de veces que deberá ejecutarse un determinado bloque de instrucciones o una instrucción, la estructura de control repetitiva For-to-do es la forma más conveniente a usarse. La estructura For-to-do necesita de la declaración de una variable de control de tipo entero, enumerado o carácter, que nos permitirá controlar el número de repeticiones que realizará la estructura, pero los tipos de datos int64 y qword, no se pueden usar como variables de control en una estructura for-to-do. El siguiente ejemplo nos permite calcular la media de 5 números enteros ingresados por el usuario.
| |
{$codepage UTF8}
VAR i:byte;
a,suma,media:single;
BEGIN
suma:=0;
Writeln('Ingrese 5 numeros para calcular su media :');
for i:= 1 to 5 do
Begin
Write('[',i,'] ');readln(a);
suma:=suma+a;
End;
media:=suma/5;
Writeln('La media de los numeros ingresado es : ',media:10:3)
END. |
| |
Código fuente 17: Obtiene media de 5 números ingresados por teclado, usando for-to-do. |
En el ejemplo la variable i, es la variable de control de la estructura For-to-do, y se debe indicar el valor inicial y final en la estructura. En el ejemplo el valor inicial es 1 y el final es 5. A esta estructura también se le conoce como estructura de repetición ascendente, porque la variable de control se incrementa hasta alcanzar el valor final. Después del do de una estructura for-to-do no se debe colocar un punto y coma. A continuación se hará el mismo programa utilizado en las estructuras Repeat-Until y While-do, que nos permite mostrar el cuadrado y el cubo, desde el 1 hasta el numero entero n ingresado por el usuario; el programa del mismo modo pedirá al usuario si desea continuar con la ejecución del mismo.
| |
{$codepage UTF8}
USES math;
VAR rpta : char;
n,i : integer;
BEGIN
rpta:='S';
Repeat
Write('Ingrese n : ');readln(n);
for i:=1 to n do
Begin
Writeln(i:3,i**2:10,i**3:10);
i+=1
End;
Write('Desea continuar [S] Si, [N] No : ');
Readln(rpta)
Until (rpta<>'s') and (rpta<>'S')
END. |
| |
Código fuente 18: Uso de for-to-do anidado con While-do. |
Como puede observar la estructura While-do interior fue reemplazado por la estructura For-to-do. Dentro de una estructura For-to-do no se debe modificar el valor de la variable de control. El ejemplo que se escribe a continuación usa como variable de control a una variable de tipo carácter, no es un programa muy útil ya que sólo muestra el alfabeto ingles en mayúsculas de la A a la Z, pero sirve para mostrar como utilizar una variable de control de tipo carácter.
| |
{$codepage UTF8}
VAR a : char;
BEGIN
for a:='A' to 'Z' do Writeln(a)
END. |
| |
Código fuente 19: Uso de for-to-do con caracteres. |
A continuación otro programa que sirve sólo para mostrarnos como usar una variable de control de tipo enumerado.
|
{$codepage UTF8}
TYPE TDias=(Lunes,Martes,Miercoles,Jueves,Viernes,Sabado,Domingo);
VAR a:TDias;
BEGIN
for a:= Lunes to Viernes do Writeln(Ord(a))
END. |
| |
Código fuente 20: Uso de for-to-do con tipos de datos enumerados. |
Los bucles for-to-do también se pueden encadenar, se debe tener en cuenta que si el el bucle tiene un bloque de instrucciones, este debe estar entre las palabras reservadas Begin y End. El siguiente programa hace uso de un bucle for-to-do encadenado para saber de cuantas maneras pueden caer 2 dados, numerados del 1 al 6:
|
{$codepage UTF8}
VAR Dado01,Dado02:byte;
BEGIN
for Dado01:= 1 to 6 do
for Dado02:= 1 to 6 do
Writeln(Dado01,',',Dado02)
END. |
| |
Código fuente 21: Uso de for-to-do encadenado. |
En este ejemplo no se usan bloques de instrucciones, por lo que no se hace necesario el uso de las palabras reservadas Begin y End.
anterior :: indice :: siguiente |