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 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
  • Links de descarga
http://lwp-l.com/pdf5274

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