La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

David I. Morales A. MCC- IIMAS- UNAM

Presentaciones similares


Presentación del tema: "David I. Morales A. MCC- IIMAS- UNAM"— Transcripción de la presentación:

1 David I. Morales A. MCC- IIMAS- UNAM
Lenguaje ADA 95 David I. Morales A. MCC- IIMAS- UNAM Lenguajes de Programación Dra. Ana Lilia Laureano Cruces Dra. Ana Lilia Laureano Cruces

2 Introducción Diseñado para aplicaciones militares.
11/24/2018 Introducción Diseñado para aplicaciones militares. Tiene una estructura de bloque y un mecanismo de tipo de datos igual al del lenguaje de programación Pascal. Extensiones para aplicaciones de tiempo real y distribuidas. Forma más segura de encapsulación, e incrementa el desarrollo de objetos y la herencia de métodos. 11/24/2018 MCC - IIMAS - UNAM David I. Morales A IIMAS-UNAM

3 Historia En los 70's el Departamento de Defensa de E.U.A. (DoD) se intereso en desarrollar un lenguaje sencillo para usar en sistemas de tiempo real. Reviso cerca de 500 lenguajes usados para desarrollar diversas aplicaciones militares Jean Ichbiah fue elegido en 1979 11/24/2018 MCC - IIMAS - UNAM

4 El lenguaje Pascal fue el punto de partida para el diseño de ADA
Ada es mas extenso y complejo, permite la ejecución concurrente, el control en tiempo real de la ejecución, manejo de excepciones y tipos de datos abstractos 11/24/2018 MCC - IIMAS - UNAM

5 ADA 95 el mas eficiente compilador de ADA.
Estandarizado en 1983, como estandar comercial de E.U.A., militar de E.U.A. e Internacional ANSI. La ultima revisión del lenguaje duro mas de 6 años, desde 1988 hasta 1995, en lo que se llamo el proyecto 9X . Implementación de mejores datos orientados a objetos, librerias jerárquicas y un mejor modelo de tareas para procesos. ADA 95 el mas eficiente compilador de ADA. 11/24/2018 MCC - IIMAS - UNAM

6 Tipos de Datos Primitivos
En ada existen los siguiente tipos de datos: Integer Real (float en ada) Character Boolean String Estos estan predefinidos, en el paquete Standard 11/24/2018 MCC - IIMAS - UNAM

7 Variables y Constantes
Cualquier declaración que empiece con la palabra constant es una constante y se deberá asignar un valor, el cual no se podrá cambiar en la ejecución. Si se omite la palabra constant, la misma declaración define un tipo de dato variable, a la cual se le debe asignar un valor inicial y el cual se podrá cambiar en la ejecución.  Ejemplo: MaxSize constant integer := 500; CurrentSize integer := 0; 11/24/2018 MCC - IIMAS - UNAM

8 Tipos de Datos Numericos
Atributos range (para enteros) y digits (para flotantes)  Ejemplo: type DayOfYear is range ; -- un valor entero de 1 a MyBirhtday: DayOfYear := 219; MyBirthday inicializada a type Result is digits flotante de 7 digitos Answer: Result :=3.17; varible de 7 digitos. 11/24/2018 MCC - IIMAS - UNAM

9 Los tipos Integer y float estan predefinidos en el paquete estandar como:
type integer is range implementation defined; type float is digits implementation defined; 11/24/2018 MCC - IIMAS - UNAM

10 Enumeraciones Enumeraciones deben de definirse usando un estilo como Pascal de definición e implementación. Ejemplo: type class is (Fresh, Soph, Junior, Senior);         La representación en la ejecución usa el número de posición para cada valor de la literal, empezando con 0 para el primer valor listado, 1 para el segundo, etc. 11/24/2018 MCC - IIMAS - UNAM

11 Tipos Caracter y Booleano
Estas son definidas en el paquete Standard para ser enumeraciones especificas. 11/24/2018 MCC - IIMAS - UNAM

12 Tipo de Dato Apuntador Se utiliza la palabra access junto con la función primitiva new, new crea un objeto de datosy regresa un apuntador a este. El cual es asignado a una variable de tipo access. Ejemplo type access_typename is access typename; 11/24/2018 MCC - IIMAS - UNAM

13 Vectores y Arreglos Un arreglo de objetos puede ser declarado con cualquier número de dimensiones, cualquier rango y cualquier tipo de componente. Ejemplo: Table: array (1..10, 1..20) of float; crea una matriz de 10 X 20 de numeros reales; 11/24/2018 MCC - IIMAS - UNAM

14 PowerOfTwo: array (1..6) of integer :=(2,4,8,16,32,64);
Definición de tipos puede ser utilizada para crear clases de cualquier tipo de arreglo de objetos. Ejemplo: type Matrix is array (integer range <>,integer range <>) of float; donde los < > indican un campo que se debe llenar. Inicialización: cualquier arreglo debe de estar inicializado en su declaración. PowerOfTwo: array (1..6) of integer :=(2,4,8,16,32,64); 11/24/2018 MCC - IIMAS - UNAM

15 Cadena de Caracteres Las cadenas de caracteres son tratadas como un tipo de vector predefinido usando otros dos tipos predefinidos positive (enteros) y character (enumerando los caracteres definidos en el paquete Standard). type string array (positive range <>) of character; Ejemplo: MyString : string(1..30); 11/24/2018 MCC - IIMAS - UNAM

16 Tipo de Dato Archivo Archivos y operaciones de entrada-salida son definidos como tipos de datos abstractos, usando paquetes predefinidos. El programador de Ada ve a los archivos como tipo de datos que en su estructura interna estan ocultos por ser encapsulados con los paquetes estandares. Existen diferentes tipos de archivos (texto, enteros, reales, etc.); cada paquete tiene su propio tipo de archivo ejemplo en TEXT_IO hay un tipo para archivos secuenciales o solo texto en FLOAT_IO hay un tipo de dato archivo para flotantes, y así sucesivamente. 11/24/2018 MCC - IIMAS - UNAM

17 Tipo de dato definido por el usuario
Los tipos de datos record en Ada son similares que en Pascal. En Ada a diferencia de Pascal un objeto record debe de ser definido primero usando una definición de tipo, para definir la estructura de record y despues dando la declaración de la variable usando el tipo de nombre. 11/24/2018 MCC - IIMAS - UNAM

18 Ejemplo: type Birthday is                 record                 Month: string (1..3) := "jun";               Day: integer range := 17; Year: integer range := 1970;               end record cada variable del tipo Birthday esta inicializada a "jun" 11/24/2018 MCC - IIMAS - UNAM

19 MyDay:Birthday := ("SEP",12,1975);
Ejemplo: MyDay:Birthday := ("SEP",12,1975); MyDay: Birthday := (Year => 1975, Month =>"SEP", Day => 12); 11/24/2018 MCC - IIMAS - UNAM

20 Expresiones Expresiones en Ada permiten primitivas y funciones definidas para ser combinadas en secuencias de manera usual. Notación infija es usada para la aritmética binaria, relacional y operaciones booleanas. Notación prefija es usada para operaciones unarias. (+,-, y NOT), los paréntesis deben de utilizarse para agrupar operaciones y la precedencia es la misma que en Pascal. 11/24/2018 MCC - IIMAS - UNAM

21 = /= < <= > >= in not in and or xor and then or else
** (exponentes) * / mod rem + - abs not (unario + y -) + - & (binarios + y -) = /= < <= > >= in not in and or xor and then or else 11/24/2018 MCC - IIMAS - UNAM

22 Sentencias Sentencias usuales condicionales (if y case) y las sentencias de iteración (loop, while, for). Todas las sentencias de control terminan con las sentencia end, seguida con la palabra de dicha sentencia; por ejemplo: end if, end loop. 11/24/2018 MCC - IIMAS - UNAM

23 Sentencia If if boolean expresion then - secuencias de sentencias
 elsif boolean expresion then   - secuencia de sentencias                elsif boolean expresion then     - secuencia de sentencias                   else  - secuencia de sentencias                end if; 11/24/2018 MCC - IIMAS - UNAM

24 Sentencia CASE case expresion is
when choice | ...| choice => secuencia de sentencias; ...                when others => secuencia de sentencias; end case; Ejemplo: case GradeLevel is when Fresh => sentencias; when Soph | Junior => secuencias; when Senior => secuencias; 11/24/2018 MCC - IIMAS - UNAM

25 Sentencia Loop La sentencia básica de iteración tiene la siguiente forma.   loop   secuencia de sentencias end loop;   La forma de terminar una sentencia de iteración loop se hace explicitamente con las sentencias exit, goto o return. 11/24/2018 MCC - IIMAS - UNAM

26 while boolean expresion ... Con for hay dos formas.
Sentencias controladas pueden ser creadas con las sentencias while y for.          while boolean expresion     Con for hay dos formas. for variable name in discrete_range; for variable name in reverse discrete_range; 11/24/2018 MCC - IIMAS - UNAM

27 for i in 1..10 loop end loop; while k > 0 loop temp:= temp + i;
for j in 1.. k loop temp =: temp + j; get(k); 11/24/2018 MCC - IIMAS - UNAM

28 PROGRAMAS Y SUBPROGRAMAS
     Procedimientos, funciones y tareas son los tres tipos de subprogramas que Ada maneja. Procedimiento - programa principal. 11/24/2018 MCC - IIMAS - UNAM

29 Funciones y Procedimientos
Un procedimiento o función tiene la forma de una especificación: procedure procname(formal-parameters) is ... function functioname(formal-parameters) return result_type is * Seguidos de un cuerpo de la forma: secuencia de declaraciones begin secuencia de sentencias exception manejadores de excepciones end procname o functioname; 11/24/2018 MCC - IIMAS - UNAM

30 Los subprogramas pueden ser recursivos
Los subprogramas pueden ser recursivos. La salida normal de un procedimiento o tarea es con la ejecución de return; o return expression para salir de una función En el enunciado formal-parameters deben de ir los tipos de datos con su nombre y su forma de transmisión para ser usado. Function “+” (A,B:in complex) return complex is... 11/24/2018 MCC - IIMAS - UNAM

31 Excepciones Al final de cada unidad de programa debe de especificarse un manejador de excepciones. Existen varias excepciones predefinidas en los paquetes estandares, todas las demas son declaradas usando la siguiente sentencia:                 exceptionname : exception Un manejador de excepciones empieza con el nombre de la excepción que este maneja, seguida con una secuencia de sentencias que toman la acción apropiada para manejar dicha excepción.        11/24/2018 MCC - IIMAS - UNAM

32 when exception_name | ... | exception_name
=> secuencia de sentenecias                ...                when others => secuencia de sentencias; donde cada secuencia de sentencias debera manejar una o mas excepciones nombradas. 11/24/2018 MCC - IIMAS - UNAM

33 Tareas Es un subprograma que puede ejecutarse concurrentemente con otras tareas. La definición de una tarea tiene una forma general, tiene una especificación que permite a otras tareas comunicarse entre si y un cuerpo de implementación. Usando un tipo de tarea, multiples tareas pueden ser creadas con una definición singular.              11/24/2018 MCC - IIMAS - UNAM

34 task taskname is -declaraciones de entrada end [taskname];
task body taskname is -secuencia de declaraciones begin -secuencia de setencias exception -manejador de excepciones 11/24/2018 MCC - IIMAS - UNAM

35 Embedded aplications Para acceso especial a hardware
For object_name use at memory_address For entry_name use at interrupt_address 11/24/2018 MCC - IIMAS - UNAM

36 ABSTRACION Y ENCAPSULAMIENTO
La definición de un paquete tiene dos partes una especificación y un cuerpo.La especificación contiene la información necesaria para la correcta utilización del paquete; el cuerpo proveee la encapsulación de variables y subprogramas que son llamados desde afuera. La parte visible de un paquete (todo lo que precede a la palabra private) define que es lo que el usuario final del paquete puede usar en un programa. 11/24/2018 MCC - IIMAS - UNAM

37 Uso de paquetes Se utiliza la sentencia with para que el paquete a utilizar sea visible. with packagename ; use packagename; with Standard; use Standard; 11/24/2018 MCC - IIMAS - UNAM

38 Declaración de paquetes
package packagename is -declaración de variables private -definición completa de datos privados end [packagename]; packages body packagename is -definiciones de objetos y subprogramas definidos begin -sentencias para inicializar el paquete cuando es por primera vez instanciado exception -manejador de excepciones 11/24/2018 MCC - IIMAS - UNAM

39 package nombre_actual is
new nombre_nuevo(parametros); 11/24/2018 MCC - IIMAS - UNAM

40 Herencia Ada 95 extiende el concepto de paquete para manejar herencia
Type Mydata is tagged record val: myarray; sz:integer:=0; end record; Type Doublestack is new Mydata with record Newdata : myarray; 11/24/2018 MCC - IIMAS - UNAM

41 Procesamiento en tiempo real
Un programa que debe interactuar con dispositivos de entrada y salida u otras tareas en un tiempo determinado. Controladores, con tiempos de reacción de menos de 100 ms. 11/24/2018 MCC - IIMAS - UNAM

42 En ada existe un paquete llamado Calendar que incluye el tipo Time y una función clock.
select DataReady; or delay 0.5; -espera 0.5 segundos end select; 11/24/2018 MCC - IIMAS - UNAM

43 Ada vs C++ Ada was designed for team development and embedded systems, leading to advantages over C in development time and debugging. An in-depth 1995 study by Stephen F. Zeigler ( showed that development in Ada costs about half that of C++. It also suggests that Ada produces "almost 90% fewer bugs for the final customer". 11/24/2018 MCC - IIMAS - UNAM

44 Ejemplo with Text_IO; use Text_IO; procedure Doit is
procedure Hola(x: in integer) is begin if x=2 then put("The Truth is out there"); else put ("Die, die, die my darling..."); end if; end Hola; y: integer; begin y:=2; Hola(y); end Doit;  The Truth is out there 11/24/2018 MCC - IIMAS - UNAM

45 Doit.ali - ada link information file
Doit.adb ada body Doit.o objet file Doit.ali - ada link information file herram.ads a package specification herram.adb a package body usa_herram.adb the client program 11/24/2018 MCC - IIMAS - UNAM


Descargar ppt "David I. Morales A. MCC- IIMAS- UNAM"

Presentaciones similares


Anuncios Google