Publicado el 6 de Junio del 2017
1.960 visualizaciones desde el 6 de Junio del 2017
582,9 KB
56 paginas
Creado hace 16a (26/09/2008)
Parte I: Programación en Ada
UNIVERSIDAD DE CANTABRIA
1. Introducción a los computadores y su programación
2. Elementos básicos del lenguaje
3. Modularidad y programación orientada a objetos
4. Estructuras de datos dinámicas
5. Tratamiento de errores
6. Abstracción de tipos mediante unidades genéricas
7. Entrada/salida con ficheros
8. Herencia y polimorfismo
9. Programación concurrente y de tiempo real
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
1
2.1. Introducción
UNIVERSIDAD DE CANTABRIA
Motivación para el lenguaje: "Crisis del software" de
mediados de los años 70
• gran número de lenguajes
• necesidad de introducir técnicas de ingeniería de software
- fiabilidad
- modularidad
- programación orientada a objetos (comenzaba en ese
momento)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
2
Principios de diseño del
lenguaje Ada 83:
UNIVERSIDAD DE CANTABRIA
• Fiabilidad
- legibilidad
- tipificación estricta
- excepciones
• Modularidad
• Abstracción de datos y tipos
• Compilación separada
• Concurrencia
• Tiempo Real
• Estandarizado
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
3
Elementos introducidos por
Ada 95
UNIVERSIDAD DE CANTABRIA
• Mejor soporte a programación orientada a objetos
- extensión de objetos
• Más eficiencia en concurrencia
• Mejor soporte de sistemas de tiempo real
El Ada es el lenguaje de la ingeniería de software,
recomendable para grandes proyectos de software
Los principios del Ada son recomendables para todos los
desarrollos software, incluso los realizados en otros
lenguajes
Por ello es aconsejable como primer lenguaje de
programación.
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
4
2.2 Estructura de un
programa
UNIVERSIDAD DE CANTABRIA
with Nombres_de_Otros_Modulos_de_Programa;
procedure Nombre_Programa is
declaraciones;
begin
instrucciones;
end Nombre_programa;
Las declaraciones son:
• de datos: constantes, variables, tipos
• de fragmentos de programa: procedimientos, funciones,
paquetes
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
5
Ejemplo:
UNIVERSIDAD DE CANTABRIA
with Ada.Text_IO;
procedure Sencillo is
-- sin declaraciones
begin
Ada.Text_IO.Put("Esto es un programa sencillo");
end Sencillo;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
6
Comentarios sobre el ejemplo:
UNIVERSIDAD DE CANTABRIA
• Concepto de sangrado:
- legibilidad
- muestra visualmente la estructura del código
• Comentarios: comienzan por -- y acaban al final de la línea
• Las instrucciones y declaraciones acaban en ";". El
programa también
• Los nombres de identificadores:
- comienzan por letra
- siguen letras, números y "_"
- no se distinguen mayúsculas de minúsculas
- no es aconsejable usar acentos y ñ
- hay un conjunto de nombres reservados
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
7
Programa sencillo con
ventanas
UNIVERSIDAD DE CANTABRIA
with Message_Windows;
use Message_Windows;
procedure Sencillo is
Message : Message_Window_Type;
begin
Message:=Message_Window("Esto es un programa sencillo");
Wait(Message);
end Sencillo;
Message_Windows es un módulo software perteneciente a
Win_IO:
• No es estándar de Ada
• http://www.ctr.unican.es/win_io/
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
8
2.3. Variables, constantes, y
tipos simples
UNIVERSIDAD DE CANTABRIA
La información se guarda en casillas de memoria
• variables: el contenido puede variar
- algunas tienen nombre
- otras se crean dinámicamente sin nombre (se verán más
adelante)
• constantes: el contenido no puede variar
- las hay con nombre
- y sin nombre (literales): se pone directamente el valor
Todos los datos tienen siempre un tipo asociado:
• tipos predefinidos
• tipos definidos por el usuario
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
9
2.3.1. Tipos predefinidos
UNIVERSIDAD DE CANTABRIA
Son:
Tipo
Valores
Integer
Float
Character
String (1..n)
Boolean
Duration
entero de 16 bits mínimo [-2**15..2**15-1]
real de unos 6 dígitos como mínimo
caracter de 8 bits (Wide_Character
para 16 bits)
texto o secuencia de caracteres
True o False
número real en segundos
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
10
Atributos de los tipos
predefinidos:
UNIVERSIDAD DE CANTABRIA
Tipo
Atributo
Descripción
enteros, reales
y enumerados
reales
discretos (ente-
ros, caracteres
y enumerados)
strings
tipo’FIRST
tipo’LAST
tipo’IMAGE(numero)
tipo’VALUE(string)
tipo’DIGITS
tipo’SMALL
tipo’POS(valor)
tipo’VAL(numero)
Primero valor
Ultimo valor
Conversión a String
Conversión String a número
Número de dígitos
Menor valor positivo
Código numérico de un valor
Conversión de código a valor
s’LENGTH (s es un
string concreto)
Número de caracteres del
string
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
11
Componentes de los strings
UNIVERSIDAD DE CANTABRIA
Caracteres individuales
s(i)
Rodajas de string (también son strings)
s(i..j)
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
12
2.3.2. Constantes sin nombre o
literales
UNIVERSIDAD DE CANTABRIA
Números enteros
13 0 -12 1E7 13_842_234
16#3F8#
Números reales
13.0 0.0 -12.0 1.0E7
Caracteres
’a’ ’Z’
Strings
"texto"
Booleanos
True False
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
13
2.3.3. Variables y constantes
con nombre
UNIVERSIDAD DE CANTABRIA
Características
• Ocupan un lugar en la memoria
• tienen un tipo
• tienen un nombre : identificador
• las constantes no pueden cambiar de valor
Declaración de variables
identificador : tipo;
identificador : tipo:=valor_inicial;
Declaración de constantes:
identificador : constant := valor_inicial;
identificador : constant tipo:=valor_inicial;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
14
Ejemplos:
UNIVERSIDAD DE CANTABRIA
Numero_De_Cosas : Integer;
Temperatura : Float:=37.0;
Direccion : String(1..30);
Esta_Activo : Boolean;
Simbolo : Character:=’a’;
A,B,C : Integer;
Max_Num : constant Integer:=500;
Pi : constant:=3.1416;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
15
Ejemplo de un programa con
objetos de datos:
UNIVERSIDAD DE CANTABRIA
with Ada.Text_Io;
procedure Nombre is
Tu_Nombre,Tu_Padre : String (1..20);
N_Nombre,N_Padre : Integer;
-- Ejemplo de uso de strings de tamaño variable
begin
Ada.Text_Io.Put("Cual es tu nombre?: ");
Ada.Text_Io.Get_Line(Tu_Nombre,N_Nombre);
Ada.Text_Io.Put("Como se llama tu padre?: ");
Ada.Text_Io.Get_Line(Tu_Padre,N_Padre);
Ada.Text_Io.Put_Line("El padre de "&Tu_Nombre(1..N_Nombre)&
" es "&Tu_Padre(1..N_Padre));
end Nombre;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
16
El mismo ejemplo, con
cláusula “use”
UNIVERSIDAD DE CANTABRIA
with Ada.Text_Io;
use Ada.Text_Io;
procedure Nombre_Con_Use is
Tu_Nombre,Tu_Padre : String (1..20);
N_Nombre,N_Padre : Integer;
-- Ejemplo de uso de strings de tamaño variable
begin
Put("Cual es tu nombre?: ");
Get_Line(Tu_Nombre,N_Nombre);
Put("Como se llama tu padre?: ");
Get_Line(Tu_Padre,N_Padre);
Put_Line("El padre de "&Tu_Nombre(1..N_Nombre)&
" es "&Tu_Padre(1..N_Padre));
end Nombre_Con_Use;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
17
A observar
UNIVERSIDAD DE CANTABRIA
• Para strings de longitud variable
- Usamos un string grande y de él sólo una parte
- una variable entera nos dice cuántos caracteres útiles
hay
• Uso de rodajas de string
- para coger la parte útil del string
• Text_IO: Put, Get_Line, Put_Line, New_Line
• Cláusula use
• Uso de variables
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
18
El mismo ejemplo, con
ventanas
UNIVERSIDAD DE CANTABRIA
with Input_Windows;
use Input_Windows;
procedure Nombres is
Tu_Nombre,Tu_Padre : String (1..20);
N_Nombre,N_Padre : Integer;
Entrada : Input_Window_Type:=Input_Window("Nombres");
begin
Create_Entry(Entrada,"Cual es tu nombre?: ","");
Create_Entry(Entrada,"Como se llama tu padre?: ","");
Wait(Entrada,"Teclea datos y pulsa OK");
Get_Line(Entrada,"Cual es tu nombre?: ",Tu_Nombre,N_Nombre);
Get_Line(Entrada,"Como se llama tu padre?: ",Tu_Padre,N_Padre);
Put_Line(Entrada,"El padre de "&Tu_Nombre(1..N_Nombre)&
" es "&Tu_Padre(1..N_Padre));
Wait(Entrada,"");
end Nombres;
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
19
2.4. Expresiones
UNIVERSIDAD DE CANTABRIA
Permiten transformar datos para obtener un resultado
Se construyen con
• operadores
- dependen del tipo de dato
- se pueden definir por el usuario
- binarios (dos operandos) y unarios (un operando)
• operandos
- variables
- constantes
- funciones
GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
© Javier Gutiérrez, Michael González
26/sept/08
20
Precedencia de los
operadores
UNIVERSID
Comentarios de: Parte I: Programación en Ada - 2. Elementos básicos del lenguaje (0)
No hay comentarios