PDF de programación - Introducción al lenguaje Ada95

Imágen de pdf Introducción al lenguaje Ada95

Introducción al lenguaje Ada95gráfica de visualizaciones

Publicado el 14 de Enero del 2017
910 visualizaciones desde el 14 de Enero del 2017
1,4 MB
6 paginas
Creado hace 23a (07/03/2001)
Introducción al lenguaje Ada95

Historia

z Concurso de ideas del Departamento de

Defensa norteamericano (1979)

z Primer estándar: Ada 83
z Utilizado en la industria militar, aeroespacial,

sistemas empotrados, etc.

z Ada influye en lenguajes posteriores (C++,

ObjectPascal, etc.)

2

ProgramaciónConcurrente2001

Historia (2)

Características

z Segundo estándar: Ada 95
z Actualiza el lenguaje: orientación a objetos,

monitores (objetos protegidos), anexos
especializados...

z La aparición de Linux provoca una expansión de
Ada como lenguaje de uso general: compilador
gratuito GNAT

z Lenguaje procedimental, con sintaxis tipo Algol

(Pascal)

z Orientado a grandes proyectos
z Sintaxis “verbosa”, en aras de la legibilidad
z Alta portabilidad

3

ProgramaciónConcurrente2001

4

ProgramaciónConcurrente2001

Características (2)

Elementos del lenguaje

z Su creación fue obra de un comité de expertos,

siguiendo criterios meditados y juiciosos:
y

lenguaje ortogonal
fuerte coherencia interna

y

z Ada 83 reunía CASI TODAS las prestaciones
consideradas buenas en los lenguajes de la
época:
y TADs, concurrencia, genéricos, excepciones
y pero no incluía orientación a objetos

z Tipos de datos
z Estructuras algorítmicas
z Subprogramas
z Excepciones
z Paquetes
z Genéricos

z Concurrencia
z Orientación a objetos
z Biblioteca estándar
z Anexos especializados

5

ProgramaciónConcurrente2001

6

ProgramaciónConcurrente2001

1

Hola, mundo

-- ejemplo de programa
with Text_IO;

procedure hola is
begin
Text_IO.Put_Line (“hola, mundo”);
end hola;

Hola, mundo Hola, mundo Hola,

with Text_IO; use Text_IO;

procedure hola10veces is
saludo : string := “hola, mundo”;
begin
for i in 1 .. 10 loop
Put_Line (saludo);

end loop;
end hola10veces;

7

ProgramaciónConcurrente2001

8

ProgramaciónConcurrente2001

Algunos detalles

Elementos léxicos

z No distingue mayúsculas de minúsculas
z Se pueden usar acentos y eñes en los

identificadores

z Comprobación muy estricta de tipos
z Las sentencias siempre terminan en punto y

coma

z Comentarios con doble guión: -- texto
z Identificadores tipo Pascal
z Cadenas entre “comillas dobles”
z Caracteres con ‘comilla simple’
z Números tipo Pascal, pero además:

y 123_456_789 (se pueden emplear separadores)
y 2#1001001# (se puede expresar la base)
y 16#1F2A# (hexadecimal)
y 12#40#E3 (es 4x12 x 123)

9

ProgramaciónConcurrente2001

10

ProgramaciónConcurrente2001

Tipos de datos

Tipos escalares

z Elementales

y Escalares (numéricos y enumerados)
y Accesos (punteros)

z Compuestos

y Arrays (vectores y strings)
y Records (registros)
y Tagged records (objetos POO)
y Tasks (tareas)
y Protected objects (objetos protegidos)

z Discretos

y enteros (integer, natural, positive...)
y modulares (mod N)
y enumerados (boolean, character...)

z Reales

y coma flotante (float, duration...)
y coma fija

11

ProgramaciónConcurrente2001

12

ProgramaciónConcurrente2001

2

Tipos predefinidos

z integer
z natural (de 0 en adelante)
z positive (de 1 en adelante)
z boolean (false,true)
z float
z character, wide_character
z string, wide_string
z duration

Declaraciones

x,y : Integer; -- variables enteras
a : Boolean := false; -- variable inicializada
diez : constant
dos : constant

constant Integer := 10; -- constante

constant := 2; -- otra constante

13

ProgramaciónConcurrente2001

14

ProgramaciónConcurrente2001

Operadores

z Los típicos y además:
y exponenciación: a**b
y módulo: a mod b
y resto: a rem b
y valor absoluto: abs a
y concatenar cadenas y vectores: a & b

Operadores (2)

z Programadores de C, ojo a estos:

igualdad: a=b

y
y no igualdad: a/=b
y expresiones lógicas: and, or, xor, not

15

ProgramaciónConcurrente2001

16

ProgramaciónConcurrente2001

Enumerados y rangos

Declaración de tipos simples

z Rangos: integer range 1 .. 10;
z Enumerados: type tipo is (valor,valor,...valor);
z Atributos: tipo’First, tipo’Last.
z Un tipo enumerado define un rango

z type nombre is definición;
z type nombre is new definición;
z subtype nombre is definición;

17

ProgramaciónConcurrente2001

18

ProgramaciónConcurrente2001

3

Declaraciones

Declaraciones (2)

type dia_semana is (lun,mar,mie,jue,vie,sab,dom);
subtype laborable is dia_semana range lun..vie;
un_dia : laborable;
otro_dia : dia_semana;

type DiaMes is 1 .. 31;
subtype i30 is integer range 1 .. 31;
dia : DiaMes := 15;
num30 : i30 := 5;
numero : integer;
...
numero := dia; -- incorrecto, tipos distintos
numero := Integer(dia); -- correcto
numero := num30; -- correcto, es subtipo
...
Numero := 33;
dia := DiaMes(numero); -- error en t.ejec.

19

ProgramaciónConcurrente2001

20

ProgramaciónConcurrente2001

Entrada y salida

Entrada y salida

z Text_IO: entrada y salida de strings

y Put(string), Get(string), Put_Line(string), New_Line

z Integer_IO, Enumeration_IO, Float_IO:

e/s de otros tipos
y Rutinas Put(dato) y Get(variable)
y Hay que instanciarlos al tipo deseado (ver ejemplo)

with Text_IO;
int_io is new Text_IO.Integer_IO(Integer);
dias_io is new Text_IO.Enumeration_IO(dias);
hoy : dias := miércoles;
...
Text_IO.Put(“Introduce un número entero: “);
int_io.Get(número);
Text_IO.New_Line;
int_io.Put(123);
dias_io.Put(hoy);

21

ProgramaciónConcurrente2001

22

ProgramaciónConcurrente2001

Estructuras algorítmicas

Sentencias simples

z Sentencias simples
z Bloque begin...end;
z Sentencias condicionales: if, case
z Sentencias iterativas: for, while, loop
z Subprogramas: function, procedure

z Las sentencias siempre terminan en punto y

z Asignación: var := expr;
z Sentencia nula: null;
z Llamada a procedimiento:

proc(parm1,parm2...);

coma

23

ProgramaciónConcurrente2001

24

ProgramaciónConcurrente2001

4

Bloque begin...end

Sentencias condicionales

z declare

declaraciones locales
begin
sentencias
exception
manejo de excepciones
end;

25

ProgramaciónConcurrente2001

26

z if expr then

z case expr is

sentencia
[elsif sentencia]
[elsif sentencia]
...
[else sentencia]
end if;

when caso =>
sentencias
...
[when others => sent ]
end case;

z expr: sólo tipos discretos
z caso: valor, rango, o lista de

valores v1|v2|v3...

z Todos los casos han de estar

contemplados

ProgramaciónConcurrente2001

Sentencias iterativas

Ejemplos de for

z while expr loop

sentencia
end loop;

z for ident in [reverse] rango loop

sentencia
end loop;

z loop

sentencia
end loop;

27

for i in 1 .. 10 loop
put(“hola, i=”); put(i); new_line;
end loop;

for i in reverse 1 .. 10
for i in lunes .. viernes
for i in dias range lunes .. miércoles

for i in dias’First .. dias’Last
for i in laborables

ProgramaciónConcurrente2001

28

ProgramaciónConcurrente2001

Exit y goto

Atributos

loop
if una_condición then exit
exit when
end loop;

exit when condición; -- otra forma

exit; end if;

goto Pabajo; end if;

if condición then goto
...
<<Pabajo>>
Put (“código después de la etiqueta”);

z Son valores asociados a tipos u objetos, que se

representan con un asterisco seguido del
nombre del atributo y, en algunos casos,
parámetros: tipo’atributo(paráms)

z Suelen usarse para devolver propiedades de un

tipo de datos, o efectuar operaciones
predefinidas sobre un tipo.

29

ProgramaciónConcurrente2001

30

ProgramaciónConcurrente2001

5

Atributos típicos

Ejemplos de atributos

z T’First
z T’Last
z T’Range
z T’Length
z T’Succ(e)
z T’Pred(e)

z T’Max(e1,e2)
z T’Min(e1,e2)
z T’Pos(e)
z T’Val(e)
z T’Value(string)
z T’Image(e)

type dias is (lunes,martes,miercoles,jueves,

viernes,sabado,domingo);

subtype laborables is dias range lunes .. viernes;

for dia in lunes .. sabado loop
Text_IO.Put (dias’Image(dia));
end loop;

hoy := lunes;
mañana := dias’Succ(hoy);
ayer := dias’Pred(hoy); --error

31

ProgramaciónConcurrente2001

32

ProgramaciónConcurrente2001

Ejemplo de ’Value e ’Image

Subprogramas

X : integer;
begin
Text_IO.Get (cadena);
x := Integer’Value(cadena);
Text_IO.Put (Integer’Image(x));
end;

z Procedimientos:

y modo del parámetro: in, out o in out
y paso de parámetros por posición o por nombre
y parámetros por omisión (default)

z Funciones:

y

los parámetros siempre son in (no se pueden
modificar)

z Se permite sobrecarga, recursividad y

anidamiento.

33

ProgramaciónConcurrente2001

34

ProgramaciónConcurrente2001

Procedimientos

Funciones

z procedure nombre (decl1; decl2; ...) is

declaraciones locales
begin
cuerpo del procedimiento
end nombre;

z Modo de acceso a los parámetros:

in: el parámetro funciona como una constante

y
y out: el parámetro funciona como una variable sin

inicializar
in out: el parámetro funciona como una variable
inicializada

ProgramaciónConcurrente2001

y

35

z function nombre (paráms) return tipo is

declars. locales
begin
cuerpo
end nombre;

z Sólo admite parámetros in

36

ProgramaciónConcurrente2001

6
  • Links de descarga
http://lwp-l.com/pdf510

Comentarios de: Introducción al lenguaje Ada95 (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