Você está na página 1de 3

Tipos de Datos Registro

Hasta ahora hemos visto como estructura de datos, los arrays uni y bi dimensionales. Dijimos, por otra parte, que un
array debe ser declarado de un tipo específico (entero, alfanumérico, etc.), ya que todos sus elementos de un tipo dado.
Ahora veremos una estructura de datos llamada comúnmente record. Se trata de una variable compuesta que puede
almacenar datos de distintas características. Definiremos a la variable compuesta o record como una estructura que consiste
de un número fijo de componentes que pueden ser de distinto tipo.
Una variable de este tipo puede tener la siguiente estructura:

Libros:
Título Autor Edición Disponible
Yo Robot Asimos, Isaac 1980 Si

En este caso la variable se llama Libros y contiene 4 componentes: Título, Autor, Edición y Disponible, que son de
distinto tipo (Titulo y Autor son caracteres de texto, Edición es entera y Disponible es lógica).
La diferencia fundamental con las matrices vistas anteriormente es que en este caso los datos de las componentes no
deben ser del mismo tipo obligatoriamente y que para acceder al contenido no se utiliza un índice sino el nombre del
componente.
De este modo, para acceder al dato “1980”, se utiliza la notación: Libros. Edición.
Este tipo de “llamado” a datos se conoce como ‘notación de punto’.
En nuestro pseudocódigo, las variables compuestas las notaremos de la siguiente manera:
Libros: Registro
Título: Alfanumèrica
Autor: Alfanumérica
Edicion: Entero
Disponible: Lógico
Fin Registro

Los componentes de una variable compuesta pueden ser de cualquier tipo, INCLUSO UN VECTOR. De esta
manera, una variable compuesta puede ser del tipo:

Materias: Registro
Alumno: Alfanumérica
Materias [48]: lógica
Fin Registro

Podría suponerse que se tiene un registro por alumno, cuya segunda componente es un vector que contiene V o F
según se haya aprobado o no determinada materia.
Asimismo, puedo suponer arreglos de registros:

Empleado: Registro
Apellido: Alfanumérica
Nombre: Alfanumérica
Direccion: Alfanumérica
Cant_hijos: entero
Categoría: entero
Fin Registro

Var:
empleados [20]: empleado

1
Con lo que estamos queriendo decir que tendremos un vector de 20 elementos, cada uno de los cuales será un
registro con los datos entrados anteriormente.
Otras características de las variables compuestas:
 No pueden usarse como operandos de expresiones aritméticas, relacionales o lógicas.
 El valor de una variable compuesta puede ser asignado a otra variable compuesta.
 Una variable compuesta puede ser pasada como parámetro a un procedimiento o función.
 Los nombres de las componentes deben ser únicos dentro de la variable compuesta.
Una variable compuesta es una estructura jerárquica, es decir que los distintos componentes se pueden considerar en
niveles.

Empleado: Registro
Nom : alfanumérico
Apell: alfanumérico
Dirección
calle: alfanumérica
Num: entero
CP: entero
Localidad: alfanumérica
E_Civil: alfanumérico
C_hijos: entero
Fin Registro

Vemos que los campos calle, num, cp y localidad se encuentran “anidados” dentro del campo dirección, por lo que
corresponden a un nivel inferior.
Para acceder a la localidad donde vive un empleado dado, deberíamos escribir:: empleado.dirección.localidad.
Si bien la estructura de tipo registro es característica de archivos, también puede utilizarse en vectores.
Supongamos un ejemplo
De un listado de 28 empleados, se desea saber los que son solteros.

Algoritmo “Empleados”
var:
Empleado: registro
apell: Alfanumérica
nom: alfanumérica
edad: entero
EC: alfanumérica
finregistro

emple[28]: empleado
i: entero
Comienzo
Para i=1 a 28
leer emple(i)
si emple(i).EC = “Soltero”
mostrar ‘Nombre y apellido : ’, emple(i).nom, emple(i).apell
finsi
finpara
fin
Obsérvese que en pseudocódigo estamos tratando a la variable de tipo record como una totalidad, es decir, en la
lectura simplemente leemos emple(i), y el elemento i de emple es un registro.
Implementación en Pascal.

2
Cada lenguaje tiene su forma particular de implementar los records. Pascal no escapa a la regla:
En la definición se especifican el nombre y el tipo de cada campo:
TYPE T = RECORD
s1 : T1;
s2 : T2;
.......
sn : Tn
END;
Ejemplos:
Complejo = RECORD
re : REAL ;
im : REAL
END;

fecha = RECORD
día : 1..31 ;
més : 1..12;
anio : 1..2000
END;

Veamos el ejemplo anterior, pasado a Pascal:

program empleados;
uses crt;
type empleado = record
apell: string;
nom: string;
edad: integer;
ec: string;
end;
var
emple: array[1..5] of empleado;
i: integer;
begin
{lectura de los datos}
for i:= 1 to 5 do
begin
writeln('ingrese apellido');
readln(emple[i].apell);
writeln('ingrese nombre');
readln(emple[i].nom);
writeln('ingrese edad');
readln(emple[i].edad);
writeln('ingrese estado civil');
readln(emple[i].ec);
end;
{procesamiento del vector}
for i:= 1 to 5 do
begin
if emple[i].ec = 'S' then
writeln(emple[i].apell,emple[i].nom,'***Soltero***');
end;
readln;
end.

Você também pode gostar