Registros (record) en Pascal
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 CARLOS';empleado.profesion :='INGENIERO';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 = Recordanio : 1900..1989 ; mes : 1..12 ; dia : 1..31end; datos = Recordnombre : string[30] ; sueldo : real ; fecha_ingreso : fechaend;
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 tipofecha.
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:
ProgramRegistro; {EL siguiente programa captura 10 empleados y sus datos personales en un arreglo con la utilización de registros}Uses Crt; ConstMaxEmpleados=10; Typeregistro_empleado = Recordnombre : string[30]; profesion : string[20]; puesto : string[20]; sueldo : realend; Var registro : registro_empleado; empleado :array[1..MaxEmpleados] ofregistro_empleado; i,col,ren :byte; beginClrScr; Write(' Nombre Profesión Puesto Sueldo'); col:=1;ren:=2; fori:=1to MaxEmpleadosdo beginWithregistrodobegingotoxy(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; endend; ReadKeyend.