Anterior | Superior | Siguiente

Guía de referencia básica de Ada 95

Variables y constantes

Objetos de datos.

Una variable es un objeto de datos con un nombre, un tipo y un valor asociado que puede modificarse libremente durante la ejecución de la parte de un programa en la que es visible (ámbito). Una declaración de variables consta de: (1) una lista de nombres de las variables que se declaran separadas por comas (",") y terminada con dos puntos (":"), (2) el tipo de las variables y, opcionalmente, (3) la asignación de un valor inicial.

X: Float;
Y, Z: Integer := 0;

Una constante es un objeto de datos con un nombre, un tipo y un valor asociado que no puede modificarse una vez definido. Una declaración de constantes es igual que una declaración de variables excepto en que se precede al tipo con la palabra constant .

C, K: constant Integer := 0;

En la parte visible de un paquete se puede hacer una declaración de constantes sin especificar el valor (deferred declaration, declaración diferida) siempre que en la parte private del mismo paquete se haga una nueva declaración (full declaration) para definirlo.

package Ejemplo is
    C: constant Integer; -- declaración diferida
    ...
private
    C: constant Integer := 0; -- declaración completa
    ...
end Ejemplo;

Ada contempla además una clase de constantes que sirve para asociar un nombre para identificar un valor numérico y que no requiere la especificación de un tipo.

Pi: constant := 3.1416;

Variables dinámicas explícitas.

Los objetos de datos creados mediante declaraciones escritas en el código son variables que se crean cuando se elabora la declaración al iniciarse la ejecución de la región donde se encuentra y se destruyen cuando se termina dicha ejecución. Se pueden crear variables de forma dinámica en cualquier momento de la ejecución de un programa usando la palabra reservada new acompañada del tipo de la variable que se pretende crear; como resultado se devuelve la dirección del bloque de memoria asociado a la variable que se crea, esta dirección puede almacenarse en una variable puntero (access) para poder acceder posteriormente a la variable dinámica.

P := new Integer; --P debe ser un puntero (access) a variables de tipo Integer.

Las variables dinámicas también se pueden crear con un valor inicial.

P := new Integer'(35); --la variable dinámica se crea con el valor 35.

En Ada, una variable dinámica se libera automáticamente cuando finaliza la ejecución de la parte del programa donde está definido el tipo puntero que permite referenciarla. Para realizar un control más eficiente de la memoria es necesario emplear operaciones de liberación explícita de las variables creadas dinámicamente cuando ya no sean necesarias; se necesita instanciar el procedimiento genérico "Unchecked_Deallocation" para lo que se debe incluir en la cláusula de contexto. La instanciación posterior tendrá que indicar el tipo de las variables a liberar y el tipo de puntero que se usa para referenciarlas.

--se incluye "Unchecked_Deallocation" en la cláusula de contexto
with Unchecked_Deallocation;
...
--se instancia dentro de la unidad de programa
--se supone que P_Integer ha sido declarado como "access Integer"
procedure Liberar_Integer is new Unchecked_Deallocation(Integer,P_Integer);
...
--ahora se puede usar Liberar_Integer para liberar variables dinámicas Integer
--Suponiendo que P es de tipo P_Integer y contiene la dirección de una
--variable Integer dinámica creada previamente:
Liberar_Integer(P); --Libera la variable dinámica referenciada por P

© Grupo de Estructuras de Datos y Lingüística Computacional - ULPGC.

Anterior | Superior | Siguiente