lunes, 14 de marzo de 2011

Ciclos de Pascal

While: (MIENTRAS – HAGA)

Este ejecuta una serie de instrucciones un número no determinado de veces hasta que se cumpla con una condición establecida , aunque tambien se puede hacer que trabaje de manera similar al ciclo FOR.

La instruccion while estudia primero la condicion y, en caso de que se cumpla, procedera a ejecutar la(s) instruccion(es) deseada(s).
Su estructura es:
while (condicion) do
 instruccion;
En caso de que haya mas de una instruccion a realizar, escribiremos:
while (condicion) do
 begin
  instrucciones;
 end;
EJEMPLO:

Program WHILE_a_FOR; 
Var
I: Integer; 
Begin 

I := 1;
WHILE I <= 4 Do 

Begin  
WriteLn (`Número ', I);
I := I + 1;
End; 
End.
 
PROGRAM Ciclo_WHILE; 
VAR Numero : Integer; 
 BEGIN 
Numero := 1; 
WHILE Numero <= 50 DO 
BEGIN WriteLn (Numero); 
Numero := Numero +1; 
END;
 END.
FOR:(Para – Haga)
Este ciclo ejecuta una serie de instrucciones incrementando 
o decrementando una variable hasta un tope determinado.
 
El ciclo for realiza la(s) instruccion(es) deseada(s) durante un numero de vueltas predeterminadas. Este numero de vueltas no podra ser modificado NUNCA dentro del bucle, 
por lo que debemos tener cuidado en no tocar la variable indice (la que controla el numero de vueltas). 
Un ejemplo:
program pruebaFor;
CONST
 N = 10; { numero de vueltas que dara el bucle}
VAR
 i: integer; { variable que contara el numero de vueltas que llevamos}
BEGIN
 for i:=1 to N do
  writeln(i);
END.
Y se mostraria por pantalla:
1
2
3
4
5
6
7
8
9
10
En caso de que tengamos que ejecutar mas instrucciones dentro del bucle, escribiriamos:
for (contador) do
 BEGIN
  instrucciones;
 END;
Un ejemplo de esto:
program pruebaForDos;
CONST
 N=10;
VAR
 i,j : integer; {Una nueva manera de declarar las variables. En caso de tener varias del mismo tipo,podemos separarlas por ","}
BEGIN
 j:=0;
 for i:=1 to N do
  begin
   writeln(i);
   j:=j+3;        {Con esta instruccion, a la variable j la sumamos durante N veces 3}
  end;
  write('j = ',j); {Cuando vamos a escribir varias cosas seguidas, podemos enviar la instruccion de esta manera}
END.
Y en pantalla se imprimiria:
1
2
3
4
5
6
7
8
9
10
j = 30
En los ciclos For, podemos seguir dos tipos de direccion. Ascendente (de 1 hasta N) o descendente (de N hasta 1). Esto lo deberemos indicar en el contador del siguiente modo (usaremos el ejemplo anterior): Ascendente
for i:=1 TO N do
...
Descendente
for i:=N DOWNTO 1 do
...
EJEMPLO:
Program Sin_Ciclo; 
Begin  
WriteLn (`Número = 1'); 
WriteLn (`Número = 2'); 
WriteLn (`Número = 3'); 
WriteLn (`Número = 4'); 
End. 



Program Con_Ciclo; 
Var 
I: Integer; 
Begin  
For I := 1 To 4 Do  
WriteLn (`Número = ', I); 
End. 



Program Ciclo_1_a_4; 
Var 
I: Integer; 
Begin 
For I := 1 To 4 Do  
WriteLn (`Número = ', I); 
End. 



Program Ciclo_4_a_1; 
Var 
I: Integer; 
Begin 
For I := 4 DownTo 1 Do  
WriteLn (`Número = ', I);

End.




 
 
 
 
REPEAT:
EL CICLO "REPITA" (Como cariñosamente se le llama en la jerga de los programadores) actua de manera similar al ciclo WHILE – DO, 
con la pequeña diferencia de que en este se ejecutan las instrucciones y despues se evalua la condición.
 El bucle Repeat realiza una serie de instrucciones y, una vez hechas, comprueba una condicion. En caso de cumplirse, no volvera a repetir dichas instrucciones, y en caso contrario las ejecutara. Su estructura es:
repeat
 instruccion(es);
until (condicion);
- Aclaraciones Observese que los 3 ciclos, bien implementados, son equivalentes entre si. Hay que tener especial cuidado en el ciclo que se desea usar: · Si se desea hacer un numero de vueltas FIJO, podemos usar cualquiera de los 3. · Si las vueltas dependen de una condicion que se modifica dentro del bucle, solo podemos usar los ciclos WHILE y REPEAT. · Si queremos comprobar una condicion antes de realizar ciertas instrucciones, debemos usar el WHILE.
 EJEMPLO:

Program REPEAT_a_FOR; 
Var
I: Integer; 
Begin
I := 1; 
REPEAT WriteLn (`Número ', I);
I := I + 1;
UNTIL I = 5; 
End.
 



 




PROGRAM Ciclo_RepeatUntil;
VAR
Numero : Integer;
BEGIN
Numero := 1;
REPEAT
WriteLn (Numero);
Numero := Numero + 1;
UNTIL Numero = 50;
END.














program EJE13101;

uses Crt;

var Contador : Integer;

begin
   ClrScr;
   GotoXY( 4, 2 );

   Contador := 1; { Inicializacion del contador }
   repeat
      Write( Contador, ' ' );     { Salida }
      Contador := Contador + 1;   { Incremento }
   until Contador > 10;           { Condicion }
end.

3 comentarios: