Registros (record)

Un registro es una estructura que consiste de un número fijo de componentes llamados campos. Los campos pueden ser de diferentes tipos y deben tener un identificador de campo.

La definición de un tipo registro debe consistir de la palabra reservada record, seguida de una lista de campos y terminada por el identificador reservado end.

formato:

type
  tipo_reg = record
                 lista id1:tipo 1;
                 lista id2:tipo 2;
                          .
                          .
                          .
                 lista idn:tipo n
             end;             

 

tipo_reg nombre de la estructura o dato registro
lista id lista de uno o más nombres de campos 
         separados por comas
tipo     puede ser cualquier tipo de dato estándar
         o definido por el usuario

Ejemplo :

Type 
  registro_empleado = Record 
                        nombre    : string[30] ;
                        profesion : string[20] ;
                        puesto    : string[20] ;
                        sueldo    : real
                      end; 

Un registro puede representarse gráficamente en función de sus campos.

 
 

El registro como un todo tiene el nombre registro_empleado. Este nuevo tipo que se acaba de definir puede utilizarse en la sección Var, para declarar variables como por ejemplo :

Var
  empleado : registro_empleado ; 

Para asignar valores a cada campo del registro empleado, puede procederse de la siguiente manera :

.......................
.......................
....................... 
empleado.nombre    := 'MENDEZ ROMERO FEDERICÓ';
empleado.profesion := 'INGENIERO CIVIL';
empleado.puesto    := 'DIRECTOR';
empleado.sueldo    := 5000.00 ; 
.......................
.......................
.......................
 

Para simplificar la notación de los registros, se pueden utilizar instrucciones With Do.

Por ejemplo, la instrucción :

WriteLn(empleado.nombre:35,
        empleado.puesto:25,
        empleado.sueldo:15:0); 

puede escribirse :

With empleado Do
WriteLn(nombre:35,puesto:25,sueldo:15:0);

Asimismo, para leer datos usamos :

With empleado Do
begin
  Write('NOMBRE : ');
  ReadLn(nombre); 
  Write('PROFESION : ');
  ReadLn(profesion);
  Write('PUESTO : ');
  ReadLn(puesto);
  Write('SUELDO MENSUAL : ');
  ReadLn(sueldo)
end;
 

Obsérvese el siguiente segmento de programa :

..............................
..............................
.............................. 
Type
 fecha = Record
           anio : 1900..1989 ;
           mes  : 1..12 ;
           dia  : 1..31 
         end;
 datos = Record
           nombre        : string[30] ;
           sueldo        : real ;
           fecha_ingreso : fecha  
         end; 
Var
  personal : datos ;
  ...............................
  ...............................
  ............................... 

La asignación del valor 15 al campo dia del registro personal se hace de la siguiente manera :

personal.fecha_ingreso.dia := 15 ; 

donde :

personal.fecha_ingreso 

hace referencia al campo fecha_ingreso del registro personal, mientras que :

dia 

se refiere al campo dia del campo fecha_ingreso, que a su vez es un registro de tipo fecha.

Usando la forma With Do quedaría :

With personal Do With fecha_ingreso Do
  dia := 15 ; 

que es equivalente a :

With personal, fecha_ingreso Do
  dia := 15 ;

o también a:

with personal Do
 with fecha_ingreso Do
   dia:=15;

Ejemplo:

Program Registro;
   {EL siguiente programa captura 10 empleados y sus
   datos personales en un arreglo con la utilización de
   registros}
Uses Crt;
Const
  MaxEmpleados=10;
Type
  registro_empleado = Record
                        nombre    : string[30];
                        profesion : string[20];
                        puesto    : string[20];
                        sueldo    : real
                      end;
Var
  registro  : registro_empleado;
  empleado  :array[1..MaxEmpleados] of registro_empleado;
  i,col,ren :byte;
begin
  ClrScr;
  Write('    Nombre            Profesión          Puesto            Sueldo');
  col:=1;ren:=2;
  for i:=1 to MaxEmpleados do
   begin
    With registro do
       begin
         gotoxy(col,ren);
         ReadLn(empleado[i].nombre);
         gotoxy(col+21,ren);
         ReadLn(empleado[i].profesion);
         gotoxy(col+40,ren);
         ReadLn(empleado[i].puesto);
         gotoxy(col+59,ren);
         ReadLn(empleado[i].sueldo);
         inc(ren);
         col:=1;
       end
   end;
  ReadKey
end.
Hosted by www.Geocities.ws

1