Programación en Ada/Tipos/Registros
Un registro es un tipo que almacena varios campos de tipos distintos y que se identifican por su nombre. En C/C++ se llaman struct y en Pascal y Ada record.
type T_Sensor is record Magnitud : Natural; Alarma : Boolean; end record;
Acceso a los campos Editar
Para acceder a los campos de un registro se usa la clásica notación registro.componente:
procedure Medir_temperatura is Sensor_temperatura : T_Sensor; begin Sensor_temperatura.Magnitud := 23; Sensor_temperatura.Alarma := False; -- ... if Sensor_temperatura.Alarma then Put_Line ("Alarma de temperatura"); end if; end;
Para asignar valores a todos los componentes se puede utilizar un agregado, lo cual es útil para asegurarnos de que no dejamos ninguno sin darle un valor:
procedure Asignar_temperatura is Sensor_temperatura : T_Sensor; begin Sensor_temperatura := (Magnitud => 23, Alarma => False); end;
También es posible dar un valor inicial a algunos o todos los componentes de un registro de modo que todos los objetos de ese tipo se inicialicen automáticamente con esos valores:
type T_Sensor is record Magnitud : Natural := 0; Alarma : Boolean := False; end record;
Registro nulo Editar
El registro nulo se puede usar cuando se necesita un tipo que no almacene ningún dato (aunque parezca raro hay casos en los que es útil, como instanciar un genérico que pide un tipo, para el cual no tenemos ningún dato que pasarle). Hay dos maneras de declarar un registro nulo:
type Registro_Nulo is record null; end record;
type Registro_Nulo is null record;
Ambas definiciones son semánticamente idénticas, la segunda es simplemente una sintaxis abreviada.
La declaración de una variable o constante de este tipo sería:
Nulo : constant Registro_Nulo := (null record);
Tipos especiales de registros Editar
- Registros con discriminante
- Registros con parte variante
- Registros etiquetados, dan soporte de la programación orientada a objetos en Ada 95.