2. Registros en Ada Declaración de tipo registro type <nombre del tipo> is record <nombre de campo 1> : <tipo de dato 1>; <nombre de campo 2> : <tipo de dato 2>; … <nombre de campo N> : <tipo de dato N>; end record ; Un record se define con la palabra "record", seguida de la declaración de los campos del record y "end record".
3.
4. type t_fecha is record dia:integer range 1..31; mes:string (1..10); anio:integer; end record ; nacimiento: t_fecha; fecha_fija: constant t_fecha:= (dia => 01, mes => " Enero ", anio => 2011); Se pueden especificar valores iniciales para los campos de un record en la propia definición del tipo. Por ejemplo: type t_fecha is record dia:integer range 1..31 ; mes:string (1..10) := ( others => ' '); anio:integer := 2011 ; end record ; Ejemplo 1:
5.
6. -- otra forma de declarar tipo fecha type t_mes is (ene,feb,mar,abr,may,jun,jul,ago,sep,oct,nov,dic); type t_fecha is record dia : integer range 1..31 ; mes : t_mes; anio : integer:= 2010; end record ; descubrimiento : constant t_fecha ( 12 ,oct, 1492 ); ayer,hoy : t_fecha; Ejemplo 2:
7. type t_persona is record nombre : cadena25; dni : cadena8; domicilio : cadena25; cursadas : vector30; finales : vector30; end record ; alumno, auxiliar, egresado : t_persona; ……………… .. alumno.dni:=“10800854”; egresado.finales:=(9.0,8.0,7.0,8.0,6.0,8.0, 9.0,8.0,7.0,8.0,6.0,8.0, 9.0,8.0,7.0, 9.0,8.0,7.0,8.0,6.0,8.0, 9.0,8.0,7.0,8.0,6.0,8.0, 9.0,8.0,7.0); alumno.cursadas:=( others =>6.0); Ejemplo 3: En las siguientes dos diapositivas veremos el código fuente del Programa_ejemplo Programa ejemplo
8.
9.
10. Vector de registros Podemos agrupar registros por medio de un arreglo, el cual puede ser de cualquier tipo simple de datos (entero, flotante, caracter, etc. ) o tipos compuestos (registros, arreglos) Teniendo en cuenta la declaración de tipo siguiente y nuevas variables veremos como manipular un arreglo de registros . Tipos T_registro = registro Campo1: T_dato1 Campo2: T_dato2 FinRegistro Variables VariableRegistro : T_registro ArregloRegistro: arreglo (30) de T_registro Comienza ...... i 1 { quiero acceder a la posición 1 del arreglo } VariableRegistro ArregloRegistro ( i ) { accedo a la información de un registro} { si ahora quiero mostrar el primer campo de la 5 posición del arreglo de registros } Escribir (ArregloRegistro(5).Campo1) ...... Termina
11. Supongamos que queremos almacenar información del personal de la Facultad. Primero debemos definir qué estructura utilizaremos para contener la información. Una elección posible podría ser: Tipos T_Registro_Persona = Registro Nombre : cadena20 Edad : entero Ocupacion : cadena25 Salario :flotante Fin Registro Variables Yo : T_Registro_Persona Facultad : Arreglo (30) de T_Registro_Persona { permite mantener información de 30 personas } Ejemplo :
12. Veamos cómo se dispone la información en la memoria: Facultad Posición facultad(1).nombre facultad(1).edad facultad(1).ocupacion facultad(1).salario facultad(2).nombre facultad(2).edad facultad(2).ocupacion facultad(2).salario facultad(3).nombre facultad(3).edad facultad(3).ocupacion facultad(3).salario facultad(29).nombre facultad(29).edad facultad(29).ocupacion facultad(29).salario facultad(30).nombre facultad(30).edad facultad(30).ocupacion facultad(30).salario 1 2 3 4 5 6 7 8 9 … … 28 29 30
13. Ejemplo de Vector de Registros en Ada T_Persona is record nombre : cadena25; dni : cadena8; domicilio : cadena25; cursadas : vector30; finales : vector30; end record ; T_Vec_Personas is array (1..30) of T_Persona; Info: T_Vec_Personas; ……… -- en el programa pueden aparecer instrucciones como…. info(i).nombre:=“Juan Perez ”; info(i).dni:=“23455678”; for j in 1..30 loop get(info(i).cursadas(j)) end loop;
14. En la siguiente diapositiva veremos el código fuente del ejecutable enlazado El siguiente programa manipula un vector de registros, en los que cada componente contiene información de tipo T_Persona