LENGUAJES DE PROGRAMACIÓN  
 
 
FreePascal

PASCAL CON FREE PASCAL

 
 

 

5.8. Estructura de control For-in.

 

anterior :: indice :: siguiente

 

La estructura For-in necesita de la declaración de una variable de control de tipo enumerados, subrangos, conjuntos, números enteros (excepto int64 y qword), que nos permitirá controlar el número de repeticiones que realizará la estructura de control en una estructura For-in.

Dependiendo de la variable de control, si la variable de control es de tipo enumerado el bucle se repetirá la cantidad de valores que tiene el tipo de dato enumerado, y la variable de control irá tomando dichos valores. Ejemplo: .

 

 
{$codepage UTF8}
TYPE
  Enum01=(UNO,DOS,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE,DIEZ);
VAr i:Enum01;
BEGIN
   for i in Enum01 do Writeln(i)
END.
 

Código fuente 23: Uso de for-in con tipos de datos enumerados.

 

La variable de control i, irá tomando los valores que tiene el tipo de dato enumerado Enum01, y luego los irá mostrando por pantalla. En el caso de conjuntos ocurre algo similar. Sólo que el bucle se ejecutará por cada elemento asignado a la variable de tipo conjunto, y la variable de control debe ser del tipo de dato del que se definió la variable de tipo conjunto. Ejemplo:

 

 
{$codepage UTF8}
VAR
 letras : Set of char;
 i: char;
BEGIN
  letras:=[];
  for i in letras do writeln(i); //no muestra nada
  letras:=['a','e','i','o','u'];
  for i in letras do writeln(i); //muestra las vocales
END.
 

Código fuente 24: Uso de for-in con conjuntos.

 

El bucle For-in también se puede usar con arreglos, en donde la variable de control debe ser del tipo de dato que se define para cada bloque de memoria del arreglo. Ejemplo:

 

 
{$codepage UTF8}
TYPE TReg=Record
           Nombre:String;
           Edad:byte;		   
     End;
VAR Registros:array [1..5] of TReg;
    i:TReg; 		  
    j:byte;
BEGIN
 for j:=1 to 5 do
  Begin
     Write('Nombre: ');Readln(Registros[j].Nombre);	 
     Write('Edad: ');Readln(Registros[j].Edad)
  End;
 Writeln('----------------------------------------'); 
 for i in Registros do
  Begin
   Writeln('Nombre: ',i.Nombre);
   Writeln('Edad: ',i.Edad)
  End;   
END.
 

Código fuente 25: Uso de for-in con arreglos.

 

Algo que se debe entender es que la variable de control, es una copia de todos los bloques o elementos que contenga un arreglo, es decir aunque el compilador compile el siguiente bucle:

 

 

for i in Registros do

   Begin

      Readln(i.Nombre);

      Readln(i.Edad)

   End;

 

no significa que hará cambios por cada elemento del arreglo, el bucle For-in siempre devolverá una copia de los valores de un arreglo, conjunto o un tipo de dato enumerado en la variable de control.

 

anterior :: indice :: siguiente

 

 
 

  SUGERENCIAS