next up previous contents
Siguiente: Valores por omisión Subir: Tipos compuestos Anterior: Tipos compuestos   Índice General

Registro

Un registro es una estructura de datos heterogénea que nos permite agrupar declaraciones y referirnos a ellas como un todo. Por ejemplo:

  type T_Mes is (Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio,
                 Agosto, Septiembre, Octubre, Noviembre, Diciembre);
  subtype T_Dia is Positive range 1 .. 31; 
  type T_Fecha is 
       record 
           Dia : T_Dia;
           Mes : T_Mes;
           Año : Integer;  
       end record; 
  
  Aniversario: T_Fecha;

En este ejemplo, la variable Aniversario tiene tres partes llamadas campos: Aniversario.Dia, Aniversario.Mes y Aniversario.Año. Los campos de un registro pueden ser de cualquier tipo, incluyendo otros registros, y pueden utilizarse por separado. Por ejemplo:

      Aniversario.Dia := 18;
      Aniversario.Mes := Febrero; 
      Aniversario.Año := 2000;

También podemos iniciar todos los elementos del registro de una sola vez. Para ello Ada nos permite utilizar las dos posibilidades que teníamos en las llamadas a los subprogramas. La notación posicional y la notación nombrada. En el siguiente ejemplo asignamos los tres campos de una sola vez utilizando la notación posicional:

      Aniversario := (18, Febrero, 2000);

El objeto a la izquierda de la asignación es de tipo T_Fecha y el objeto a la derecha es un agregado con notación posicional (debido a que las tres partes están en el mismo orden que los tres campos de la definición del registro).

La notación nombrada es mucho más clara y nos permite especificar las partes del agregado en cualquier orden. Por ejemplo:

      Aniversario := (Mes => Febrero, Dia => 18, Año => 2000);

Esta notación facilita la lectura de los programas. También podemos combinar ambos tipos de notación dentro de un mismo agregado. Para ello comenzamos siempre con la notación posicional y desde que especificamos un elemento mediante notación nombrada ya tenemos que especificar el resto mediante notación nombrada. Por ejemplo:

      Aniversario := (18, Año => 2000, Mes => Febrero);



Subsecciones
next up previous contents
Siguiente: Valores por omisión Subir: Tipos compuestos Anterior: Tipos compuestos   Índice General
Javier Miranda 2002-10-03