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.
typeT_SensorisrecordMagnitud : Natural; Alarma : Boolean;endrecord;
Acceso a los campos
[editar]Para acceder a los campos de un registro se usa la clásica notación registro.componente:
procedureMedir_temperaturaisSensor_temperatura : T_Sensor;beginSensor_temperatura.Magnitud := 23; Sensor_temperatura.Alarma := False;-- ...ifSensor_temperatura.AlarmathenPut_Line ("Alarma de temperatura");endif;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:
procedureAsignar_temperaturaisSensor_temperatura : T_Sensor;beginSensor_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:
typeT_SensorisrecordMagnitud : Natural := 0; Alarma : Boolean := False;endrecord;
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:
typeRegistro_Nuloisrecordnull;endrecord;
typeRegistro_Nuloisnullrecord;
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 :constantRegistro_Nulo := (nullrecord);
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.