La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "ADA Introducción Un lenguaje de programación para sistema empotrados."— Transcripción de la presentación:

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

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

3 Introducción histórica US DoD percibe un elevado gasto en software. En el ámbito de sistemas empotrados había un elevado número de leguajes en uso Strawman. Requisitos del nuevo lenguaje. Refinado en Woodenman 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 ADA estándar ANSI (RM83) ADA estándar ISO (8652).

4 Introducció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 ). Se generaron los siguientes documentos de referencia: Reference Manual for the Ada Programming Language (RM95). Annotated Ada Reference Manual (AARM).

5 Aspectos 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 E-1212E2 Base del número. Ej. 2#1010#16#AF28#4#32#E8 (32 x 4 8 ) Comentarios. -- Esto es un comentario

6 Aspectos generales Declaración I : integer; P: integer := 6; Q : constant Float := ; Bloques y visibilidad declare i,k : integer; begin …… declare i : integer; begin ……. end; …… end;

7 Tipos Declaración de tipos Type 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 subtipos Subtype Dia is integer range 1..31; D : Dia;

8 Tipos Tipos numéricos simples P: Integer; Q : Float; Atributos Subtype Natural is integer range 0..IntegerLast; Subtype Positive is integer range 1..IntegerLast; Cambio de tipo I: Integer := 3; F: Float := 5.6; …… I := Integer( F ) + I; F := F + Float( I );

9 Tipos Todos los tipos Compuestos Tarea Objeto protegido Discreto Enumerado Registro Entero Con signo ArrayModular Elementales Escalar Real Coma flotante Coma fija Ordinario AccesoDecimal

10 OperadorOperaciónOperando(s)Resultado And Or xor Y lógico O inclusivo O exclusivo Booleanos Booleano = /= < <= > >= Igualdad Desigualdad Menor que Menor o igual que Mayor que Mayor o igual que Cualquiera Escalar Booleano +-+- Adición Substracción Numérico Igual +-+- Identidad Negación Numérico Igual * / Mod Rem Multiplicación División Módulo Resto Integer o Float Integer Integer o Float Integer ** Not Abs Exponenciación Negación Valor absoluto Integer, Natural o Float, Integer Booleano Numérico Integer Float Booleano Igual Operadores escalares

11 Estructuras de control if 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;

12 Estructuras 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;

13 Estructuras de control loop Coge_tenedores; Come; Medita; end loop; loop if Hora_Dormir then exit; end if; Coge_tenedores; Come; Medita; end loop;

14 Estructuras de control loop exit when Hora_Dormir; Coge_tenedores; Come; Medita; end loop;

15 Estructuras de control for 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 loop Di_Numero( x ); end loop;

16 Sentencias Simple Secuencial Null Asignación Llamada a procedimiento Llamada a entry Requeue Delay Abort Code Control Exit Goto Raise Return Compuesta Secuencial If Case Loop Block Paralelo Accept Select

17 Subprogramas Subprograma ::= procedure nombre parámetros | function nombreparámetros resultado parámetros ::= (especificación{; especificación}) especificación ::= lista_identificadores: modo subtipo modo ::= [in | in out | out] resultado ::= return subtipo

18 Subprogramas Function factorial( N: Positive) return Positive is Begin 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) is Begin C := A+B; End Add;

19 Subprogramas Function * (A, B: Vector) return Float is Resultado : Float := 0.0; begin for x in ARange loop Resultado := Resultado + A(x)*B(x); end loop; return Resultado; end *;

20 Paquetes 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;

21 Excepciones Permiten tratar situaciones poco frecuentes, pudiendo controlar con ellas un fracaso del SW. Hay cuatro predefinidas Constraint_Error Program_Error Storage_Error Tasking_Error

22 Excepciones begin …………. ………..... exception when Constraint_Error => -- Tratamiento especifico end;

23 Excepciones 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;

24 Excepciones with Pila_enteros; procedure Actuar is begin ………. Pila_enteros.Push(5); ………. exception When Error => put(Error en la pila); end Actuar;

25 Tareas Permiten implementar acciones paralelas Ada suministra posibilidades añadidas Sincronización (rendezvous) Objetos protegidos Facilidades para programación de sistemas de tiempo real

26 Bibliografía Programming in ADA 95. John Barnes. Addison-Wesley. Real-Time Systems and Programming Languages. Alan Burns, Andy Wellings. Addison-Wesley.


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

Presentaciones similares


Anuncios Google