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.