Você está na página 1de 4

Características De ADA

 La sintaxis, inspirada en Pascal, es bastante legible incluso para


personas que no conozcan el lenguaje. Es un lenguaje que no escatima
en la longitud de las palabras clave, en la filosofía de que un programa
se escribe una vez, se modifica decenas de veces y se lee miles de
veces (legibilidad es más importante que rapidez de escritura).
 Identificadores y palabras claves son equivalentes sea cual sea el uso
de mayúsculas y minúsculas, es decir es un lenguaje case-insensitive.
 En este caso, todo el programa es un único procedimiento, que puede
contener subprogramas (procedimientos o funciones) (en este caso: la
función Ack).
 Cada sentencia se cierra con end qué _ cerramos. Es un modo de evitar
errores y facilitar la lectura. No es necesario hacerlo en el caso de
subprogramas, aunque todos los manuales lo aconsejan y casi todos los
programadores de Ada lo hacen.
 El operador de asignación es :=, el de igualdad =. A los programadores
de C y similares les puede confundir este rasgo inspirado en Pascal.
 La sintaxis de atributos predefinidos es Objeto'Atributo (o Tipo'Atributo)
(nota: esto sólo aplica a atributos predefinidos por el lenguaje, ya que no
es el concepto de atributo típico de OOP).
 Se distingue entre "procedimientos" (subrutinas que no devuelven
ningún valor pero pueden modificar sus parámetros) y "funciones"
(subrutinas que devuelven un valor y no modifican los parámetros).
Muchos lenguajes de programación no hacen esta distinción. Las
funciones de Ada favorecen la seguridad al reducir los posibles efectos
colaterales, pues no pueden tener parámetros in out.

1. Legibilidad: programas fáciles de leer (libertad de formatos de escritura).

 Tipado fuerte: todo objeto tiene componentes de valor definido (es


mucho más fuerte que Pascal).
 Capaz de construir grandes programas: compilación separada de los
distintos paquetes (módulos).
 programación estructurada
 programación concurrente

 Manejo de excepciones: ideal para la programación en tiempo real.


 Abstracción de datos.
 Unidades genéricas: que se pueden agrandar todo lo que queramos con
nuevas funciones.
 Alta transportabilidad de los programas entre distintas plataformas:
UNIX, OS/2, Win32.

El lenguaje ha ido evolucionando hasta que en el año 1995 surgió la revisión


llamada ADA9X (o Ada95). En el Ada95 se añadieron nuevas sentencias y la
programación Orientada a Objeto. (Ver Apéndice A Figura 1 Evolución de Ada
95)

Alfabeto
El alfabeto de Ada consta de:

 Letras mayúsculas: A, ..., Z y minúsculas: a, ..., z.


 Dígitos: 0, ..., 9.
 Caracteres especiales.

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.

El alfabeto de minúsculas puede usarse en vez de o junto con el alfabeto de mayúsculas,


pero se considera que los dos son idénticos (a excepción de las cadenas de caracteres y
literales tipo carácter).

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:

Temperatura _ sala:= 25; -- Temperatura que debe tener la sala.

Esta línea contiene 5 elementos léxicos:

 El identificador Temperatura _ sala


 El delimitador compuesto :=
 El número 25
 El delimitador simple ;
 El comentario -- Temperatura que debe tener la sala.

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;

Você também pode gostar