Estructura de un programa: unidades de programa

Explicación

Un programa en Ada se estructura como un conjunto de unidades de programa, pueden ser:

  1. subprogramas, hay dos clases (procedimientos y funciones) y sirven para definir algoritmos.
  2. paquetes, sirven para agrupar conjuntos de entidades relacionadas.
  3. tareas, definen acciones que pueden ejecutarse en paralelo con otras.
  4. unidades protegidas, sirven para coordinar la compartición de datos entre unidades que se ejecutan en concurrencia.
  5. unidades genéricas, son subprogramas o paquetes parametrizados que definen componentes reusables.

Las unidades de programa pueden anidarse unas dentro de otras, pero sólo los subprogramas, paquetes (especificación e implementación) y unidades genéricas pueden ocupar el nivel más externo de anidamiento y formar una unidad de compilación. Una unidad de compilación es un componente de un programa que puede compilarse por separado. Se distinguen dos clases de unidades de compilación: las subunidades, que se encuentran lógicamente incluidas en otro componente, y las unidades de librería, que son componentes independientes que pueden usarse en distintos programas.

Una unidad de compilación típica consta de dos partes: (1) una cláusula de contexto que sirve para especificar las unidades de librería que se necesitan (no hace falta si no se necesita ninguna) y (2) una unidad de programa (subprograma, paquete o unidad genérica).

Ejemplo

El siguiente ejemplo muestra una unidad de compilación que proporciona un procedimiento sin parámetros llamado "Hola" que puede servir como subprograma principal de un programa o como unidad de librería utilizable como parte de un programa más complejo.

with Ada.Text_IO; use Ada.Text_IO; --  Cláusula de contexto   
procedure
Hola is -- Elemento de librería (subprograma)
begin
  Put_Line("Hola mundo");
end Hola;