T A R E A 12
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. Es indiferente el uso de mayúsculas y minúsculas en los identificadores y palabras claves. 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.
La sintaxis de atributos predefinidos es Objeto'Atributo (o Tipo'Atributo). 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).
Los comentarios se escriben con los signos --, seguido de su texto
Un programa en Ada consta de al menos dos partes: una cláusula de contexto y un procedimiento principal.
--Programa simple en Ada
with Text_IO; --cláusula de contexto
procedure Hola is --procedimiento principal
--Parte de declaraciones
begin
--Cuerpo de sentencias ejecutables
Text_IO.Put_Line("Hola");
end Hola;
ObjectAda for Windows. También Un compilador de Ada muy usado es GNAT, originalmente desarrollado por la Universidad de Nueva York bajo patrocinio del DoD.
Paradigma Orientado a objetos e imperativo.
with Text_IO, Buffer_servidor;
use Text_IO;
procedure Buffer is
Clave_Salida : constant String := "Salir";
type TMensaje is
record
NumOrden: Positive;
Contenido: String (1..20);
end record;
package Cola_mensajes is new Buffer_servidor (TElemento => TMensaje);
use Cola_mensajes;
Cola: TBuffer;
task Emisor;
task Receptor;
task body Emisor is
M: TMensaje := (NumOrden => 1, Contenido => (others => ' '));
Último: Natural;
begin
loop
Put ("[Emisor] Mensaje: ");
Get_Line (M.Contenido, Último);
M.Contenido (Último + 1 .. M.Contenido'Last) := (others => ' ');
EscribirBuf (Cola, M);
M.NumOrden := M.NumOrden + 1;
xit when M.Contenido(Clave_Salida'range) = Clave_Salida;
end loop;
end Emisor;
task body Receptor is
package Ent_IO is new Text_IO.Integer_IO(Integer);
use Ent_IO;
M: TMensaje;
begin
loop
LeerBuf (Cola, M);
exit when M.Contenido(Clave_Salida'range) = Clave_Salida;
Put ("[Receptor] Mensaje número ");
Put (M.NumOrden);
Put (": ");
Put (M.Contenido);
New_Line;
end loop;
end Receptor;
>
begin
null;
end Buffer;