PDF de programación - Introducción a Ada

Imágen de pdf Introducción a Ada

Introducción a Adagráfica de visualizaciones

Publicado el 15 de Octubre del 2018
494 visualizaciones desde el 15 de Octubre del 2018
255,5 KB
87 paginas
Creado hace 15a (25/02/2009)
ditdit

UPM

Introducción a Ada

Juan Antonio de la Puente

DIT/UPM

Índice

u Introducción

– cómo escribir programas sencillos

u Datos e instrucciones

– aspectos básicos del lenguaje

u Abstracción de datos

– tipos de datos abstractos

u Programación con objetos

– herencia, polimorfismo, clases e interfaces

u Otros temas

25/02/09

Introducción a Ada

2

7
0
0
2
-
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


©

7
0
0
2
-
5
0
0
2

e
t
n
e
u
P

a
l

e
d

Introducción

i


o
n
o
t
n
A

n
a
u
J


©

25/02/09

Introducción a Ada

3

Ada

u Es un lenguaje imperativo, descendiente de Pascal

– estructura en bloques
– fuertemente tipado
– orientado a objetos

u 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

u Tres versiones normalizadas

– Ada 83 (ISO 8652:1987)
– Ada 95 (ISO 8652:1995)
– Ada 2005 (ISO 8652:1995 /Amd 1:2007)

25/02/09

Introducción a Ada

4

7
0
0
2
-
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


©

Estructura de un programa en Ada

u 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)

u 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

25/02/09

Introducción a Ada

5

7
0
0
2
-
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


©

Procedimientos

u Una abstracción básica que representa una acción:

7
0
0
2
-
5
0
0
2

e
t
n
e
u
P

a
l

e
d

procedure <nombre> [<parámetros>] is

<declaraciones>

begin

<instrucciones>

end <nombre>;

i


o
n
o
t
n
A

n
a
u
J


©

u Las declaraciones se elaboran al comenzar la ejecución

– reservar memoria, asignar valor inicial, etc.
u Las instrucciones se ejecutan después

25/02/09

Introducción a Ada

6

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

25/02/09

Introducción a Ada

7

7
0
0
2
-
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


©

Compilación con GNAT

u 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

u Se puede hacer todo de una vez:

$ gnatmake hello

# compila todo lo que haga falta

u Ejecución:

$ ./hello

25/02/09

Introducción a Ada

8

7
0
0
2
-
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

u Un paquete es un módulo donde se declaran datos, tipos

de datos, operaciones, etc.

u 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

25/02/09

Introducción a Ada

9

7
0
0
2
-
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


©

Especificación de un paquete

7
0
0
2
-
5
0
0
2

e
t
n
e
u
P

a
l

e
d

package <nombre> is
<declaraciones>
end <nombre>;

i


o
n
o
t
n
A

n
a
u
J


©

25/02/09

Introducción a Ada

10

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;

25/02/09

Introducción a Ada

11

7
0
0
2
-
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


©

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;

25/02/09

Introducción a Ada

12

7
0
0
2
-
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


©

Cuerpo de un paquete

package body <nombre> is
<declaraciones>
[begin
<instrucciones>]
end <nombre>;

25/02/09

Introducción a Ada

13

7
0
0
2
-
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


©

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 Float) is
begin
Ada.Float_Text_IO.Put(F,Exp=>0);
end Put;

-- (continúa)

25/02/09

Introducción a Ada

14

7
0
0
2
-
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


©

Ejemplo (2)

procedure Put (S : in String) is
begin
Ada.Text_IO.Put(S);
end Put;

procedure New_Line is
begin
Ada.Text_IO.New_Line;
end New_Line;

end Simple_IO;

25/02/09

Introducción a Ada

15

7
0
0
2
-
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


©

Compilación con GNAT

u Ahora tenemos varios ficheros fuente:

hello.adb, simple_io.ads, simple_io,adb

u Hay que compilarlos todos:

$ gcc -c simple_io.ads
$ gcc -c root.adb
$ gcc -c simple_io.adb

u Montaje y enlace :

$ gnatbind root.ali
$ gnatlink root.ali

u Se puede hacer todo de una vez:

$ gnatmake root

25/02/09

Introducción a Ada

16

7
0
0
2
-
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


©

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 … ;

25/02/09

Introducción a Ada

17

7
0
0
2
-
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


©

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;

25/02/09

Introducción a Ada

18

7
0
0
2
-
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


©

Errores y excepciones

u 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

25/02/09

Introducción a Ada

19

7
0
0
2
-
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


©

Ejemplo

7
0
0
2
-
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


©

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;

25/02/09

Introducción a Ada

20

Biblioteca estándar

Paquetes predefinidos para:
u Operaciones con caracteres y tiras

– Ada.Characters, Ada.Strings, etc.

u Cálculo numérico

– Ada.Numerics, Ada.Numerics.Generic_Elementary_Functions, etc.

» también números complejos, vectores y matrices

u Entrada y salida

– Ada.Text_IO, Ada.Integer_Text_IO, Ada.Float_Text_IO, etc.

u Secuencias (streams)
u Contenedores (listas, conjuntos, etc.)
u Interfaz con el sistema operativo
u Interfaz con otros lenguajes (C, C++, Fortran, COBOL)
u Otros

25/02/09

Introducción a Ada

21

7
0
0
2
-
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


©

7
0
0
2
-
5
0
0
2

e
t
n
e
u
P

a
l

e
d

Tipos de datos

i


o
n
o
t
n
A

n
a
u
J


©

25/02/09

Introducción a Ada

22

Tipos de datos

u Un tipo de datos es un conjunto de valores con un

conjunto de operaciones primitivas asociadas

u 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

u Una clase es la unión de varios tipos con características

comunes

25/02/09

Introducción a Ada

23

7
0
0
2
-
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


©

Clasificación de los tipos de datos

elementales

compuestos

tipos

acceso

escalares

formaciones

registrosetiquetadosprivadostareasprotegidos

tiras

discretos

numéricos

reales

enumerables

enteros

c. flotante c. fija

caracteres booleanos otros

modularescon signo

ordinariosdecimales

25/02/09

Introducción a Ada

24

7
0
0
2
-
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


©

Tipos discretos

u Enumerables

Boolean
Character
Wide_Character
type Mode is (Manual, Automatic);

-- predefinido
-- predefinido
-- predefinido
-- declarado

u Enteros

– Con signo

Integer
type Index is range 1 .. 10;

-- predefinido
-- declarado

– Modulares

type Octet is mod 256;

-- declarado

25/02/09

Introducción a Ada

25

7
0
0
2
-
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


©

Tipos reales

u Coma flotante

Float
  • Links de descarga
http://lwp-l.com/pdf13888

Comentarios de: Introducción a Ada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad