Publicado el 11 de Julio del 2017
572 visualizaciones desde el 11 de Julio del 2017
116,4 KB
44 paginas
Creado hace 18a (15/09/2005)
Introducción a Ada
15/09/2005
ditdit
UPM
Introducción a Ada
Juan Antonio de la Puente
DIT/UPM
Índice
Introducción
– cómo escribir programas sencillos
Datos e instrucciones
– aspectos básicos del lenguaje
Abstracción de datos
– tipos de datos abstractos
Programación con objetos
– herencia, polimorfismo, clases e interfaces
Otros temas
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
15/09/2005
Introducción a Ada
1
© 2005 Juan Antonio de la Puente
1
Introducción a Ada
15/09/2005
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
Introducción
15/09/2005
Introducción a Ada
Ada
Es un lenguaje imperativo, descendiente de Pascal
– estructura en bloques
– fuertemente tipado
– orientado a objetos
Es un lenguaje pensado para realizar sistemas
empotrados de gran dimensión
– concurrencia y tiempo real incluidos en el lenguaje
– módulos (paquetes) que se compilan por separado
Tres versiones normalizadas
– Ada 83 (ISO 8652:1987)
– Ada 95 (ISO 8652:1995)
– Ada 2005 (en curso de aprobación por la ISO)
15/09/2005
Introducción a Ada
2
3
© 2005 Juan Antonio de la Puente
2
Introducción a Ada
15/09/2005
Estructura de un programa en Ada
Un programa en Ada se compone de una o más
unidades de programa
– subprogramas (procedimientos y funciones)
– paquetes (módulos)
– tareas y objetos protegidos (ejecución concurrente)
Los dos primeros se pueden compilar por separado
– un programa se hace a base de componentes
– hay un procedimiento principal que se ejecuta inicialmente
» a partir de ahí se pueden ejecutar otras unidades de programa
– normalmente se encapsula todo lo demás en paquetes
» hay una biblioteca de paquetes predefinidos
» se pueden añadir otros para cada programa concreto
– el compilador comprueba todas las interfaces
15/09/2005
Introducción a Ada
Procedimientos
Una abstracción básica que representa una acción:
procedure <nombre> [<parámetros>] is
<declaraciones>
begin
<instrucciones>
end <nombre>;
Las declaraciones se elaboran al comenzar la ejecución
– reservar memoria, asignar valor inicial, etc.
Las instrucciones se ejecutan después
15/09/2005
Introducción a Ada
4
5
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
© 2005 Juan Antonio de la Puente
3
Introducción a Ada
15/09/2005
Ejemplo
with Ada.Text_IO;
procedure Hello is
use Ada.Text_IO;
begin
Put(“Hello”); New_Line;
end Hello;
-- paquete de biblioteca
-- acceso al paquete
15/09/2005
Introducción a Ada
Compilación con GNAT
Compilación y montaje:
$ gcc -c hello.adb # compila el fichero fuente
$ gnatbind hello
$ gnatlink hello
# genera código de elaboración
# monta los módulos objeto
Se puede hacer todo de una vez:
$ gnatmake hello
# compila todo lo que haga falta
Ejecución:
$ ./hello
15/09/2005
Introducción a Ada
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
6
7
© 2005 Juan Antonio de la Puente
4
Introducción a Ada
15/09/2005
Paquetes
Un paquete es un módulo donde se declaran datos, tipos
de datos, operaciones, etc.
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
Tiene dos partes (que se compilan por separado)
– especificación: define la interfaz visible del paquete
» declaraciones de tipos (y a veces objetos) de datos
» declaraciones de operaciones (subprogramas)
– cuerpo: contiene los detalles de la implementación
» tipos, objetos y subprogramas adicionales (para uso local)
» cuerpos de subprogramas declarados en la especificación
Todo lo que aparece en el cuerpo es invisible para el resto del
programa
15/09/2005
Introducción a Ada
Especificación de un paquete
package <nombre> is
<declaraciones>
end <nombre>;
15/09/2005
Introducción a Ada
8
9
© 2005 Juan Antonio de la Puente
5
Introducción a Ada
15/09/2005
Ejemplo
package Simple_IO is
procedure Get (F : out Float);
procedure Put (F : in Float);
procedure Put (S : in String);
procedure New_Line;
end Simple_IO;
15/09/2005
Introducción a Ada
10
Utilización de paquetes
with Simple_IO, Ada.Numerics.Elementary_Functions;
procedure Root is
use Simple_IO, Ada.Numerics.Elementary_Functions;
X : Float;
begin
Put(“Enter a number :”);
Get(X);
Put(“The square root of “); Put(X);Put(“ is “);
Put(Sqrt(X));
New_Line;
end Root;
15/09/2005
Introducción a Ada
11
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
© 2005 Juan Antonio de la Puente
6
Introducción a Ada
15/09/2005
Cuerpo de un paquete
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
package body <nombre> is
<declaraciones>
[begin
<instrucciones>]
end <nombre>;
15/09/2005
Introducción a Ada
12
Ejemplo (1)
with Ada.Text_IO, Ada.Float_Text_IO;
package body Simple_IO is
procedure Get (F : out Float) is
begin
Ada.Float_Text_IO.Get(F);
end Get;
procedure Put (F : in
begin
Float) is
Ada.Float_Text_IO.Put(F,Exp=>0);
end Put;
-- (continúa)
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
15/09/2005
Introducción a Ada
13
© 2005 Juan Antonio de la Puente
7
Introducción a Ada
15/09/2005
Ejemplo (2)
procedure Put (S : in
begin
Ada.Text_IO.Put(S);
end Put;
String) is
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
procedure New_Line is
begin
Ada.Text_IO.New_Line;
end New_Line;
end Simple_IO;
15/09/2005
Introducción a Ada
14
Compilación con GNAT
Ahora tenemos varios ficheros fuente:
hello.adb, simple_io.ads, simple_io,adb
Hay que compilarlos todos:
$ gcc -c simple_io.ads
$ gcc -c root.adb
$ gcc -c simple_io.adb
Montaje y enlace :
$ gnatbind root.ali
$ gnatlink root.ali
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
Se puede hacer todo de una vez:
$ gnatmake root
15/09/2005
Introducción a Ada
15
© 2005 Juan Antonio de la Puente
8
Introducción a Ada
15/09/2005
Estructuras de control
Selección
if … then … else … end if;
Bucles
while … loop … end loop;
for i in 1..N loop … end loop;
loop … end loop;
Salida de bucle
exit when … ;
15/09/2005
Introducción a Ada
16
Ejemplo
with Simple_IO, Ada.Numerics.Elementary_Functions;
procedure Roots is
use Simple_IO, Ada.Numerics.Elementary_Functions;
X : Float;
begin
loop
Put(“Enter a number :”);
Get(X);
exit when X = 0.0;
Put(“The square root of “); Put(X); Put(“ is “);
if X > 0.0 then
Put(Sqrt(X));
else
Put(“not real”);
end if;
New_Line;
end loop;
end Roots;
15/09/2005
Introducción a Ada
17
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
© 2005 Juan Antonio de la Puente
9
Introducción a Ada
15/09/2005
Errores y excepciones
Una excepción es una manifestación de un cierto tipo de
error
– las excepciones tienen nombre, pero no son objetos
– cuando se produce un error, se eleva la excepción
correspondiente
– se abandona la ejecución normal y se pasa a ejecutar un
manejador asociado a la excepción
– se busca un manejador en el mismo cuerpo o bloque
» si no lo hay, la excepción se propaga al nivel superior
– si no se encuentra ningún manejador, se termina el programa
15/09/2005
Introducción a Ada
18
Ejemplo
with Simple_IO, Ada.Numerics.Elementary_Functions;
procedure Roots is
use Simple_IO, Ada.Numerics.Elementary_Functions;
X : Float;
begin
loop
begin
Put(“Enter a number :”);
Get(X);
exit when X = 0.0;
Put(“The square root of “); Put(X); Put(“ is “);
Put(Sqrt(X));
exception
when Ada.Numerics.Argument_Error =>
Put ("not real");
end;
New_Line;
end loop;
end Roots;
15/09/2005
Introducción a Ada
19
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
© 2005 Juan Antonio de la Puente
10
Introducción a Ada
15/09/2005
Biblioteca estándar
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
Paquetes predefinidos para:
Operaciones con caracteres y tiras
– Ada.Characters, Ada.Strings, etc.
Cálculo numérico
– Ada.Numerics, Ada.Numerics.Generic_Elementary_Functions, etc.
» también números complejos, vectores y matrices
Entrada y salida
– Ada.Text_IO, Ada.Integer_Text_IO, Ada.Float_Text_IO, etc.
Secuencias (streams)
Contenedores (listas, conjuntos, etc.)
Interfaz con el sistema operativo
Interfaz con otros lenguajes (C, C++, Fortran, COBOL)
Otros
15/09/2005
Introducción a Ada
20
Tipos de datos
15/09/2005
Introducción a Ada
21
© 2005 Juan Antonio de la Puente
11
Introducción a Ada
15/09/2005
Tipos de datos
Un tipo de datos es un conjunto de valores con un
conjunto de operaciones primitivas asociadas
5
0
0
2
e
t
n
e
u
P
a
l
e
d
i
o
n
o
t
n
A
n
a
u
J
©
Ada es estricto con los tipos de datos
– No se pueden usar valores de un tipo en operaciones de otro tipo
sin efectuar una conversión de tipo explícita
– Las operaciones dan siempre resultados del tipo correcto
Una clase es la unión de varios tipos con características
comunes
15/09/2005
Introducción a Ada
Comentarios de: Introducción a Ada (0)
No hay comentarios