Escolar Documentos
Profissional Documentos
Cultura Documentos
Alfabeto
El alfabeto de Ada consta de:
Es de destacar que en Ada 95 se admiten caracteres como 'Ñ', 'Ç' y vocales acentuadas
ya que se permiten los 256 caracteres comprendidos en ISO Latin-1.
Componentes léxicos
Se pueden encontrar en Ada los siguientes componentes léxicos:
Identificadores
Literales numéricos
Literales de tipo carácter
Cadenas de caracteres
Delimitadores
Comentarios
Palabras reservadas
Hacer constar, que el espacio no constituye nada más que un separador de elementos
léxicos, pero es muy importante utilizarlos para una mayor legibilidad, tanto dentro de
las sentencias, como elemento de sangrado para ayudar a diferenciar los bloques.
Ejemplo:
Ejemplos de codificación
Semáforos
Una posible implementación del tipo abstracto semáforo es con tareas Ada.
Pero este ejemplo no se ha de tomar muy en serio, puesto que es un típico
caso de inversión de la abstracción, es decir, se hace uso de un mecanismo de
alto nivel, las tareas, para implementar uno de bajo nivel, los semáforos. En
Ada 95 la mejor manera de implementar un semáforo es un objeto protegido.
Sin embargo a efectos didácticos es un buen ejemplo.
generic
ValorInicial: Natural := 1; -- Parám. genérico con valor por defecto.
package Semaforos is
type TSemaforo is limited private;
procedure Wait (Sem: in out TSemaforo);
procedure Signal (Sem: in out TSemaforo);
private
task type TSemaforo is
entry Wait;
entry Signal;
end TSemaforo;
end Semaforos;
package body Semaforos is
procedure Wait (Sem: in out TSemaforo) is
begin
Sem.Wait; -- Llamada a punto de entrada de la tarea.
end Wait;
procedure Signal (Sem: in out TSemaforo) is
begin
Sem.Signal; -- Llamada a punto de entrada de la tarea.
end Signal;
task body TSemaforo is
S: Natural := ValorInicial; -- Es el contador del semáforo.
begin
loop
select
when S > 0 =>
accept Wait;
S := S - 1;
or
accept Signal;
S := S + 1;
or
terminate;
end select;
end loop;
end TSemaforo;
end Semaforos;
with Semaforos;
procedure Prueba_Semaforos is
package Paquete_Semaforos is new Semaforos;
use Paquete_Semaforos;
Semaforo: TSemaforo;
begin -- Aquí se inicia la tarea de tipo TSemaforo (objeto Semaforo).
-- ...
Wait (Semaforo);
-- ...
Signal (Semaforo);
-- ...
end Prueba_Semaforos;