ADA Introducción Un lenguaje de programación para sistema empotrados.

26
ADA ADA Introducción Introducción Un lenguaje de programación para sistema empotrados

Transcript of ADA Introducción Un lenguaje de programación para sistema empotrados.

Page 1: ADA Introducción Un lenguaje de programación para sistema empotrados.

ADAADAIntroducciónIntroducción

Un lenguaje de programación para sistema empotrados

Page 2: ADA Introducción Un lenguaje de programación para sistema empotrados.

ÍndiceÍndice

Introducción histórica Aspectos generales Tipos Estructuras de control Subprogramas Paquetes Excepciones Tareas

Page 3: ADA Introducción Un lenguaje de programación para sistema empotrados.

Introducción históricaIntroducción histórica 1974. US DoD percibe un elevado gasto en software. En el ámbito de sistemas

empotrados había un elevado número de leguajes en uso. 1975. Strawman. Requisitos del nuevo lenguaje. Refinado en Woodenman. 1976. Timan. Identificada la funcionalidad del nuevo lenguaje. Se evaluaron

lenguajes existentes para comprobar si cubrían la funcionalidad especificada. Resultado negativo. Se revisaron los requisitos y se generó Ironman.

Invitación para proponer el diseño del nuevo lenguaje. Se recibieron 16 propuestas y se seleccionaron 4. CII Honeywell Bull (Green), Intermetrics (Red), Softech (Azul), SRI International (Yellow). Los diseños iniciales se entregaron en 1978 y se evaluaron internacionalmente. Fueron preseleccionados los equipos Rojo y Verde. Se les dio un año más para mejorar. El 2 de mayo de 1979 se seleccionó la propuesta del lenguaje Verde desarrollada por un

equipo internacional dirigido por Jean Ichbiah. El DoD anunció que el nuevo lenguaje se llamaría Ada en honor de Augusta Ada

Byron (hija de Lord Byron). Ada fue ayudante y patrocinadora de Charles Babagge y trabajó en su máquina analítica mecánica. Se la considera la primera programadora.

1983. ADA estándar ANSI (RM83). 1987. ADA estándar ISO (8652).

Page 4: ADA Introducción Un lenguaje de programación para sistema empotrados.

Introducción históricaIntroducción histórica Ada se empezó a utilizar en muy diferentes áreas,

además de en sistemas empotrados. En 1988 arrancó el proyecto Ada 9X.

Se propusieron 41 nuevos requisitos junto con 22 estudios específicos de áreas que todavía no se entendían completamente.

Construir un compilador que tuviera en cuenta todas las propuestas nuevas parecía costoso e innecesario.

Ada 95 se constituyó como un núcleo fundamental, junto con una serie de anexos opcionales (estándar ISO 15-2-1995).

Se generaron los siguientes documentos de referencia: Reference Manual for the Ada Programming Language (RM95). Annotated Ada Reference Manual (AARM).

Page 5: ADA Introducción Un lenguaje de programación para sistema empotrados.

Aspectos generalesAspectos generales Identificadores.

Identificador ::= letra{[subrayado]letra_o_digito} letra_o_digito ::= letra | digito

Literales numéricos Tipos básicos:

Integer, float. Ej. Num_alumnos : Integer; Temperatura : Float;

Tanto los enteros como los reales pueden tener exponentes, pero en el caso de los enteros los exponentes no pueden ser negativos.

Ej. 10.22E-12 12E2 Base del número.

Ej. 2#1010# 16#AF28# 4#32#E8 (32 x 48) Comentarios.

-- Esto es un comentario

Page 6: ADA Introducción Un lenguaje de programación para sistema empotrados.

Aspectos generalesAspectos generales

DeclaraciónI : integer;P: integer := 6;Q : constant Float := 8.1632;

Bloques y visibilidad declare i,k : integer; begin …… declare i : integer; begin ……. end; …… end;

Page 7: ADA Introducción Un lenguaje de programación para sistema empotrados.

TiposTipos

Declaración de tiposType Color is (Rojo, Amarillo, Verde);

C : Color := Verde;

Q: constant Color := Verde;

Type Esquema is array (0..5) of integer;

Perfil : Esquema;

…………………..

Perfil(0) := 105;

Declaración de subtiposSubtype Dia is integer range 1..31;

D : Dia;

Page 8: ADA Introducción Un lenguaje de programación para sistema empotrados.

TiposTiposTipos numéricos simplesP: Integer;

Q : Float;

AtributosSubtype Natural is integer range 0..Integer’Last;

Subtype Positive is integer range 1..Integer’Last;

Cambio de tipoI: Integer := 3;

F: Float := 5.6;

……

I := Integer( F ) + I;

F := F + Float( I );

Page 9: ADA Introducción Un lenguaje de programación para sistema empotrados.

TiposTipos

Todos los tipos

Compuestos

Tarea

Objeto protegido

Discreto

Enumerado

Registro

Entero

Con signo

Array Modular

Elementales

EscalarReal

Coma flotante

Coma fija

Ordinario

Acceso Decimal

Page 10: ADA Introducción Un lenguaje de programación para sistema empotrados.

Operador Operación Operando(s) Resultado

And

Or

xor

Y lógico

O inclusivo

O exclusivo

Booleanos

Booleanos

Booleanos

Booleano

Booleano

Booleano

=

/=

<

<=

>

>=

Igualdad

Desigualdad

Menor que

Menor o igual que

Mayor que

Mayor o igual que

Cualquiera

Cualquiera

Escalar

Escalar

Escalar

Escalar

Booleano

Booleano

Booleano

Booleano

Booleano

Booleano

+

-

Adición

Substracción

Numérico

Numérico

Igual

Igual

+

-

Identidad

Negación

Numérico

Numérico

Igual

Igual

*

/

Mod

Rem

Multiplicación

División

Módulo

Resto

Integer o Float

Integer o Float

Integer

Integer

Integer o Float

Integer o Float

Integer

Integer

**

Not

Abs

Exponenciación

Negación

Valor absoluto

Integer, Natural o

Float, Integer

Booleano

Numérico

Integer

Float

Booleano

Igual

Operadores escalares

Page 11: ADA Introducción Un lenguaje de programación para sistema empotrados.

Estructuras de controlEstructuras de controlif Comando = Izquierda then

Girar_Izquierda;

elsif Comando = Derecha then

Girar_Derecha;

elsif Comando = Acelerar then

Incrementar_Velocidad;

elsif Comando = Decelerar then

Decrementar_Velocidad;

else

Mantener_Velocidad;

end if;

Page 12: ADA Introducción Un lenguaje de programación para sistema empotrados.

Estructuras de controlEstructuras de control

case Comando is

when Izquierda => Girar_Izquierda;

when Derecha => Girar_Derecha;

when Acelerar => Incrementar_Velocidad;

when Decelerar => Decrementar_Velocidad;

when others => Mantener_Velocidad;

end case;

Page 13: ADA Introducción Un lenguaje de programación para sistema empotrados.

Estructuras de controlEstructuras de control

loop

Coge_tenedores;

Come;

Medita;

end loop;

loop

if Hora_Dormir then

exit;

end if;

Coge_tenedores;

Come;

Medita;

end loop;

Page 14: ADA Introducción Un lenguaje de programación para sistema empotrados.

Estructuras de controlEstructuras de control

loop

exit when Hora_Dormir;

Coge_tenedores;

Come;

Medita;

end loop;

Page 15: ADA Introducción Un lenguaje de programación para sistema empotrados.

Estructuras de controlEstructuras de controlfor x in 1..3 loop

Medita;

Coge_tenedores;

Come;

end loop;

while not Hora_Dormir loop

Coge_tenedores;

Come;

Medita;

end loop;

for x in reverse 0..10 loop

Di_Numero( x );

end loop;

Page 16: ADA Introducción Un lenguaje de programación para sistema empotrados.

Sentencias

Simple

Secuencial

NullAsignación

Llamada a procedimientoLlamada a entry

RequeueDelayAbortCode

Control

Exit

Goto

Raise

Return

Compuesta

Secuencial

If

Case

Loop

Block

ParaleloAccept

Select

Page 17: ADA Introducción Un lenguaje de programación para sistema empotrados.

SubprogramasSubprogramas

Subprograma ::= procedure nombre parámetros |function nombre parámetros resultado

parámetros ::= (especificación{; especificación})

especificación ::= lista_identificadores: modo subtipo

modo ::= [in | in out | out] resultado ::= return subtipo

Page 18: ADA Introducción Un lenguaje de programación para sistema empotrados.

SubprogramasSubprogramasFunction factorial( N: Positive) return Positive isBegin if N = 1 then return 1; else return N * factorial( N – 1 ); end if;End factorial;

Procedure Add (A, B : in integer; C: out integer) isBegin C := A+B;End Add;

Page 19: ADA Introducción Un lenguaje de programación para sistema empotrados.

SubprogramasSubprogramas

Function “*” (A, B: Vector) return Float isResultado : Float := 0.0;

begin for x in A’Range loop

Resultado := Resultado + A(x)*B(x); end loop; return Resultado;end “*”;

Page 20: ADA Introducción Un lenguaje de programación para sistema empotrados.

PaquetesPaquetes

package Pila_enteros is

procedure Push( x: in integer );

function Pop return integer;

end Pila_enteros;

Package body Pila_enteros is Max: constant := 100; S: array(1..Max) of integer; Cima: integer range 0..Max;

procedure Push( x: integer) is begin Cima := Cima + 1; S(Cima) := x; end Push;

function Pop return integer is begin Cima := Cima -1; return S(Cima); end Pop;begin Cima := 0;end Pila_enteros;

Page 21: ADA Introducción Un lenguaje de programación para sistema empotrados.

ExcepcionesExcepciones

Permiten tratar situaciones poco frecuentes, pudiendo controlar con ellas un fracaso del SW.

Hay cuatro predefinidas Constraint_Error Program_Error Storage_Error Tasking_Error

Page 22: ADA Introducción Un lenguaje de programación para sistema empotrados.

ExcepcionesExcepciones

begin …………. ……….....exception when Constraint_Error => -- Tratamiento especifico

end;

Page 23: ADA Introducción Un lenguaje de programación para sistema empotrados.

ExcepcionesExcepciones

package Pila_enteros is

Error: exception;

procedure Push( x: in integer );

function Pop return integer;

end Pila_enteros;

Package body Pila_enteros is……….……….

procedure Push( x: integer) is begin if Cima = Max then raise Error; end if; Cima := Cima + 1; S(Cima) := x; end Push;

……….……….

end Pila_enteros;

Page 24: ADA Introducción Un lenguaje de programación para sistema empotrados.

ExcepcionesExcepcioneswith Pila_enteros;

procedure Actuar isbegin

……….……….

Pila_enteros.Push(5);……….……….

exception When Error => put(“Error en la pila”);end Actuar;

Page 25: ADA Introducción Un lenguaje de programación para sistema empotrados.

TareasTareas

Permiten implementar acciones paralelas Ada suministra posibilidades añadidas

Sincronización (rendezvous) Objetos protegidos Facilidades para programación de sistemas

de tiempo real

Page 26: ADA Introducción Un lenguaje de programación para sistema empotrados.

BibliografíaBibliografía

Programming in ADA 95. John Barnes. Addison-Wesley.

Real-Time Systems and Programming Languages. Alan Burns, Andy Wellings. Addison-Wesley.