|
CICLOS
En la mayor parte de los programas se necesita repetir bloques de instrucciones tantas veces como lo requiera, la vida diaria de cualquier persona, animal o cosa esta repleta de ejemplos de ciclos, las computadoras solo se han encargado de copiarlos.
Podemos citar la acción que se produce cuando ingieres un delicioso sandwich: lo muerdes y lo muerdes, y así repites el proceso hasta que este se acaba; en un equipo de sonido si colocas un casete de música y observas detenidamente el movimiento giratorio de los engranajes, estos se repiten y se repiten hasta que la cinta se ha rebobinado completamente o hasta que alguien la detiene, del mismo modo ocurre con los videojuegos que practicas podemos citar a MARIO BROS, aquí juegas hasta que se te acaben las vidas o rescates a la princesa.
Una forma de hacer un proceso repetitivo consiste en escribir tantas veces como se necesite las instrucciones a utilizar, como ejemplo de ello cito un programa en el que se deben almacenar 5 números en un arreglo de tipo entero y después sumarlos.
Program Sin_Ciclos;
Uses Crt;
Const
N=5;
Type
Vector = Array[1..N] Of Integer;
Var
Vector_Numeros : Vector;
Suma : Integer;
Promedio : Real;
Begin
Clrscr;
Textcolor(Lightmagenta);
Writeln(Lectura Sin Ciclos : );
Textcolor(White);
Write(Digite Número :);
Readln(Vector_Numeros[1]);
Write(Digite Número :);
Readln(Vector_Numeros[2]);
Write(Digite Número :);
Readln(Vector_Numeros[3]);
Write(Digite Número :);
Readln(Vector_Numeros[4]);
Write(Digite Número :);
Readln(Vector_Numeros[5]);
Suma:= Vector_Numeros[1]+ Vector_Numeros[2]+ Vector_Numeros[3]+ Vector_Numeros[4]+ Vector_Numeros[5];
Promedio:=Suma/N;
Writeln(La Suma Es = ,Suma);
Writeln(El Promedio Es ,Promedio:0:2);
Readln;
End.
Este programa es demasiado ineficaz, pues debe escribirse 5 veces el mismo mensaje, 5 veces la sentencia de lectura y ademas deben ser 5, ni mas ni menos para solucionar este tipo de problemas se inventaron los ciclos repetitivos, en TURBO PASCAL contamos con 3:
For Do
Repeat-Until
While Do

![]()
Ciclo For Do (Para Haga)
Este ciclo ejecuta una serie de instrucciones incrementando o decrementando una variable hasta un tope determinado.
SINTAXIS GENERAL
For Variable:=Inicio To Tope Do
Begin
{Bloque De Instrucciones}
End;
Forma Incremental
For Variable:=Valor_Menor To Valor_Mayor Do
Begin
{Bloque De Instrucciones}
End;
Forma Decremental
For Variable:=Valor_Menor To Valor_Mayor Do
Begin
{Bloque De Instrucciones}
End;
La variable controladora del ciclo es generalmente de tipo INTEGER, pero tambien se puede en algunas ocasiones declarar de tipo carácter asi:
For Letras:=a to z do
Begin
{En este ciclo se recorre el alfabeto de la a a la z de letra en letra}End;
Similar a otras instrucciones, si el ciclo FOR DO tiene una sola instrucción no requiere BEGIN END, en caso contrario si!, una delas desventajas de este ciclo es que hasta que no se hallan ejecutado el número de instrucciones determinado no se detiene, si alguna vez tienes un problemilla de este tipo deberas recurrir a alguno de los otros dos : REPEAT UNTIL o WHILE DO
Ejemplo:
Program Ciclo_For;
Uses Crt;
Const
N=5;
Type
Vector = Array[1..N] Of Integer;
Var
Vector_Numeros : Vector;
Suma : Integer;
Promedio : Real;
I : Byte;
Begin
Clrscr;
Textcolor(Lightmagenta);
Writeln(Lectura Con Ciclo For );
Textcolor(White);
For I:=1 To N Do
Begin
Write(Digite Número:);
Readln(Vector_Numeros[I]);
Suma:= Suma + Vector_Numeros[I];
End;
Promedio:=Suma/N;
Writeln(La Suma Es = ,Suma);
Writeln(El Promedio Es ,Promedio:0:2);
Readln;
End.
Compara este programa con el diseñado sin ciclos y veras la gran diferencia.
Para mayor claridad, a continuación presento otros ejemplos, codificalos, compilalos y observa que es lo que hacen.
Nota: Como puedes ver, estos programas usan ninguna unidad, en este caso emplean la estándar por defecto.
Program Segundo_ejemplo_ciclo_for;Var
Numero: integer;
Begin
For numero:=1 to 150 do writeln(numero);{Aquí se imprime de forma incremental linea a linea desde el número 1 hasta el 150}
Readln;
End.
![]()
Program Tercer_ejemplo_ciclo_for;
Var
Numero: integer;
Begin
For numero:=150 downto 1 do writeln(numero); {Aquí se imprime de forma decremental linea a linea desde el número 150 hasta el 1}
Readln;
End.
Begin
{Bloque De Instrucciones} End;Program Ciclo_While; Uses Crt; Const N=5; Type Vector = Array[1..N] Of Integer; Var
Vector_Numeros : Vector; Suma : Integer; Promedio : Real; I : Byte; Begin
Clrscr; Textcolor(Lightmagenta); Writeln(Lectura Con Ciclo While ); Textcolor(White); I:=0;{Notese Que Primero Se Debe Inicializar La Variable} While (I<=N) Do Begin
I:=I+1;{La Variable Controladora Del Ciclo Se Incrementa En Un Valor Determinado, En Este Caso Hemos Escogido 1, Pero Podría Ser Otro}
Readln(Vector_Numeros[I]); Suma:= Suma +Vector_Numeros[I]; End; Ppromedio:=Suma/N; Writeln(La Suma Es = ,Suma); Writeln(El Promedio Es ,Promedio:0:2); Readln; End.
![]()
Otro de impresión de números, pero este se incrementa de dos en dos.
Program ciclo_WHILE2;Begin
WriteLn (Numero);
Este no necesita BEGIN ni END, aunque tampoco dice nada si se los colocas.
SINTAXIS Repeat {Bloque de instrucciones} Until (Expresión_a_evaluar)Clrscr; Textcolor(LightMagenta); Writeln(Lectura con ciclo REPEAT ); Textcolor(White);
i:=0;{Notese que primero se debe inicializar la variable}
RepeatWrite(Digite número :); Readln(Vector_numeros[i]); Suma:= Suma + Vector_numeros[i]; Until (i>=N); Ppromedio:=Suma/N; Writeln(La Suma es = ,SUMA); Writeln(El promedio es = ,PROMEDIO:0:2); Readln; End.I:=i+1;{La variable controladora del ciclo se incrementa en un valor determinado, en este caso hemos escogido 1, pero podría ser otro}
![]()
Otro ejemplo del ciclo repeat, este imprime números de 5 en 5
Program
Ciclo_Repeat_Until2;
Var
Numero: Integer;
Begin
Numero:= 1;
Repeat
WriteLn (Numero);
Numero := Numero + 5;
Until Numero = 200;
readln;
End.
Ya para finalizar te presento un programa que mediante el uso de el ciclo REPEAT - UNTIL simula un PUBLIK, desplegando mensajes que se pueden entrar desde teclado, la hora que es tomada del sistema y una temperatura que se genera aleatoriamente al igual que los tipos de letra.
Como práctica seria muy provechoso que implementaras el mismo programa pero con CICLOS WHILE-DO y FOR - DO.
Ver Código Fuente 
![]()
Regresar