Anda di halaman 1dari 24

HISTORIA

A principios de los aos de 1970 el Departamento de Defensa identifico un grave problema en el coste del software en los sistemas de computadoras empotradas, es decir, sistemas que estn incluidos en distintos vehculos militares. La principal causa de este problema era la ausencia de un lenguaje de programacin adecuado y de un entorno de programacin para desarrollar y mantener este software. En 1975 el Departamento de Defensa formo un grupo de trabajo en lenguaje de alto orden cuya misin era:

1. Identificar el conjunto completo de requerimientos para los lenguajes del DD.


2. Evaluar la adecuacin de los lenguajes ya existentes seleccionados sobre la base de estos requerimientos. 3. Hacer una recomendacin sobre si el DD deba adoptar uno o mas lenguajes existentes o promover el diseo de uno nuevo.

HISTORIA
Durante el periodo 1976-1977 se realizo una extensa evaluacin de los veintitrs lenguajes existentes, de los cuales ninguno era un candidato adecuada por lo tanto deba desarrollarse un nuevo lenguaje. En 1977 se inicio el diseo de un nuevo lenguaje como un proyecto competitivo, se seleccionaron cuatro de los competidores para desarrollar diseos detallados del lenguaje (AZUL, AMARILLO, ROJO Y VERDE) se evaluaron extensamente en 1978 y en 1979 fue seleccionado el diseo VERDE propuesto por Honeywell-Bull. El lenguaje se denomino Ada en reconocimiento de Augusta Ada Byron considerada por algunos como la primera programadora del mundo. Desde 1979, los esfuerzos de han dirigido a desarrollar un documento e implementaciones estndar para Ada. El primero de tales documentos se publico en 1980, y la versin final, llamada Reference Manual for the Ada Programming Language, fue aprobado a principios de 1983 como el estndar militar.

FILOSOFIA

Ada contiene mecanismos especiales para la gestin de sucesos concurrentes en un momento de tiempo real, desarrollando paquetes especficos de la aplicacin y definiendo operadores y procedimientos genricos.
Ada esta orientado a usarse como lenguaje de programacin de sistemas, particularmente en las reas en las que es necesario un control en tiempo real de procesos asncronos.

PARADIGMA

Ada es un lenguaje de programacin orientado a objetos y fuertemente tipado de forma esttica. Ada se usa principalmente en entornos en los que se necesita una gran seguridad y fiabilidad como la defensa, la aeronutica (Boeing o Airbus), la gestin del trfico areo (como Indra en Espaa) y la industria aeroespacial entre otros.

ESTRUCTURA
Un programa en Ada es una instancia de la as llamada unidad de compilacin, el cual tambin puede ser un subprograma o un paquete. En su forma mas sencilla un programa comprende una clausula de contexto y un procedimiento el cual, a su vez, contiene declaraciones y una serie de sentencias. A continuacin se muestra un sencillo programa en Ada que calcula y presenta la media de un nmero indeterminado de nmeros de entrada. En el programa se utiliza la variable x para almacenar un numero ledo y la variable n para determinar el numero de nmeros introducidos en el proceso, las variables suma y med contienen la suma de los nmeros y su media respectivamente.

with TEXT_TO: procedure PROMEDIADOR is use TEXT_IO; use INTEGER_IO; use FLOAT_IO; X, SUMA, MED: FLOAT; N: INTEGER; begin N := 0; SUMA := 0.0; PUT (INTRODUCIR UNA SERIE DE NUMEROS); NEW_LINE; GET(X); loop N :=N+1; SUMA := SUMA+X; GET (X); end loop; exception

when END_ERROR =>


MED :=SUMA FLOAT (N); PUT (N, 5); PUT( numerous dados<) ; NEW_LINE; PUT (MED); PUT(es su media<); NEW_LINE; end PROMEDIADOR;

De forma general vemos que begin end y loop.. end loop se utilizan para agrupar sentencias. Entonces las sentencias se encuentran a continuacin de loop, en este programa se trata como un grupo se repite hasta que se presenta el final de la entrada (END_ERROR). El formato general de un programa en Ada queda determinado por el programador.
Los comentario se escriben con doble guion, los nombre de variables, de programas y otros identificadores, se escriben en maysculas. Pueden usarse tambin letras minsculas pero su uso no crean nombres distintos. Es decir la variable llamada X y la variable x son la misma. La definicin en Ada adopta este criterio con visitas a promocionar la mxima transportabilidad de los programas.

Tipos de datos y valores elementales


Tipos de datos escalares:
1. FLOAT: -10^75 a +10^75 con 6 o 7 dgitos decimales. 2. INTEGER: -32768 a 32767

Tipos de enumeracin:
1. BOOLEAN: TRUE o FALSE 2. CHARACTER

Nombres, variables y declaraciones


Una declaracin de variable tiene la siguiente forma general:
Lista identificadores: tipo Ejemplo: X, SUMA, MED: FLOAT;

N: INTEGER;

Una variable puede inicializarse en el momento en el que se declara aadindole un smbolo de asignacin (:=) y el propio valor inicial despus de el.
N:INTEGER :=0;

Palabras reservadas en Ada


PALABRAS RESERVADAS DEL LENGUAJE ADA
abort
abs accept access

at
begin body case

delta
digits do else

exception
exit for function

in
is limited loop

null
of or others

private
procedure raise range

renames
restricted return select

terminate
then type use

xor
abstract aliased interface

all
and array

constant
declare delay

elsif
end entry

generic
goto if

mod
new not

out
package pragma

reverse
record rem

separate
subtype task

when
while with

overriding
tagged until

Estructuras de Control
Controlan la estructura de la ejecucin de un programa:

SENTENCIA GOTO: La forma bsica de la sentencia


bsica de goto es la siguiente: goto etiqueta; Etiqueta denota aqu la etiqueta de alguna otra sentencia del programa y puede ser un identificador que se coloca delante de alguna otra sentencia y va entre los delimitadores <<Y>> . Adems restringe el uso de las sentencias goto, de forma que no puedan transferir el control al inferior o fuera del bloque o procedimiento actual u otra forma que defina un nivel de control de ejecucin. En general las sentencias goto no deben de utilizarse, puesto que en la mayora de los casos puede conseguirse una mejor estructura de control sin ellas. Cuando se ejecuta la sentencia goto sirve para interrumpir la sentencia normal (textual) de ejecucin de sentencias transfiriendo el control a la sentencia que tiene la etiqueta indicada.

Sentencias condicionales: La forma de la sentencia condicional puede ser cualquiera de las siguientes:
1 if B then S1

end if;
2 if B then S1 else S2 end if; 3 if B then S1 elsif B then

S2
end if;

B es cualquier expresin con un resultado booleano. La forma 3 muestra el comienzo de sentencias if anidadas y puede existir cualquier numero de elsif anidados. Adems, la ultima elsif del anidamiento puede ir opcional en seguida de alguna clausula else como en la forma 2. Esta procede como se espera, evalundose cada expresin B hasta que se alcance el primer resultado TRUE con el cual se ejecuta la correspondiente secuencia de sentencias, saltndose todas las dems. Ejemplo: if A<B then A:=A+1; B:=B-1; end if;

LA SENTENCIA CASE: Permite la eleccin de una serie de sentencias alternativas dependiendo de valor de una expresin. Tiene la siguiente forma:

Case e is
when v1 =>S1 when v2=>S2 . . . when vn => Sn

when others=>T
end case;

Aqu, se denota a una expresin, v1 . Es una lista de valores alternativos que e se puede tomar, y cada una de las s1, , sn y T denotan la serie correspondiente de sentencias que se ejecutara para cada valor. La alternativa others es opcional e indica que se realizara una accin en el caso de que e no tome ninguno de los valores v1, , vn. Ejemplo: supongamos, que queremos realizar una de cuatro acciones diferentes dependiendo de si la direccin del viento actual DIR es N, S, E u O, respectivamente. Esto puede especificarse mediante una sentencia case como sigue: case DIR in when N=> ACCION_1; when S=> ACCION_2; when E=> ACCION_3; when O=> ACCION_4;

end case;

As pues, la sentencia case es equivalente a un anidamiento de sentencias if. El anterior ejemplo puede ser escrito equivalentemente como: if DIR=N then ACCION_1; elsif DIR=S then ACCION_2; elsif DIR=E then ACCION_3; elsif DIR=O then ACCION_4; end if; Lo cual es sustancialmente mas tedioso de escribir; en general, cualquiera de los valores v1, , vn, puede designar a una serie de alternativas (separadas por | ) o a un rango. Por ejemplo, en el ejemplo anterior podemos especificar ACCION_1 cuando DIR es N o E diciendo when N|E=> ACCION_1;. La sentencia case y otras necesitan frecuentemente una alternativa que consista en que la secuencia de sentencias que se ejecute sea vaca. Ada da la sentencia nula escribiendo simplemente: null; Para este propsito. Cuando se ejecuta una sentencia null no sucede nada, pero si se la utiliza la salida de una escritura compleja de control es normalmente mas suave.

SENTENCIAS ITERATIVAS
Gran parte de la programacin consiste en la correcta especificacin de bucles iterativos. Ada tiene varias formas de la sentencia loop para este propsito.

Un bucle controlado puede describirse como la ejecucin repetida de una secuencia de sentencias hasta que cierta condicin se haga TRUE. Gran parte de tales bucles son controlados por contador, en los cuales una variable de control es inicializada, comparada e incrementada cada vez que se ejecuta la secuencia de sentencias. Cuando la variable crece por encima del lmite especificado, termina la ejecucin del bucle.

En el siguiente esquema i es la variable de control y m1,m2 y m3 son expresiones aritmticas correspondientes al valor inicial, el limite y el valor del incremento de la variable de control, respectivamente. for i in m1,m2 loop secuencia de sentencias end loop; Por ejemplo, el siguiente bucle es una suma de los enteros desde 1 a 10:

for I in 1...10
loop SUMA :=SUM+I; end loop; Suponiendo que SUMA esta inicializada a cero.

Cuando se utilizan sentencias loop deben tenerse en cuenta otros 2 aspectos. Primero, el valor del incremento no necesita ser positivo. Por ejemplo SUMA puede calcularse en orden inverso al ejemplo anterior rescribiendo simplemente la sentencia for como sigue: for I in reverse 110 Loop SUMA :=SUMA+1;

end loop;
La forma while de la sentencia loop se utiliza para controlar bucles que se repiten un numero indeterminado de veces. Tiene la siguiente forma: while B loop Secuencia de sentencias end loop;

EJEMPLO DE UN PROGRAMA EN ADA


with Ada.Text_IO;
procedure Hola_Mundo is begin

Ada.Text_IO.Put_Line("Hola, mundo!");
end Hola_Mundo;

VERSIONES DE ADA
Ada 83 La primera versin del lenguaje se estandariz en 1983. Esta versin se establecen los principios fundadores de la lengua, y unas pocas lenguas existentes ofrecen la amplitud de la funcionalidad que ya estaba en Ada 83. Ada 95 Fue el primer lenguaje orientado a objetos estandarizados a nivel internacional, con ms de tres aos por delante de la segunda (C + +). Ada 2005 Ada 2005 es un verdadero lenguaje industrial que conserva las ventajas de las versiones anteriores y ofrece apoyo a las necesidades de hoy: herencia, interfaces, bibliotecas paralelas y distribuidas de ejecucin, y la compatibilidad con estndares de la industria.

COMPILADORES

Un compilador de Ada muy usado es GNAT, originalmente desarrollado por la Universidad de Nueva York bajo patrocinio del DoD. Est basado en la tecnologa de GCC y es software libre. Actualmente est mantenido por AdaCore (antes llamada Ada Core Technologies), empresa que ofrece soporte y servicios sobre el compilador.

REFERENCIAS
http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_ Ada

http://es.wikipedia.org/wiki/Ada_(lenguaje_de_program aci%C3%B3n)
http://www.gedlc.ulpgc.es/docencia/NGA/Ada2005/ada/ reserved/reservadas.html

Lenguajes de Programacin
Segunda Edicin Allen B. Tucker Jr. Editorial McGraw-Hill