Publicado el 18 de Julio del 2020
848 visualizaciones desde el 18 de Julio del 2020
40,6 KB
14 paginas
Creado hace 19a (13/11/2005)
Paradigmas de Programación
Año 2005
LENGUAJE ADA
comienzo del cuerpo
parte declarativa
especificación del contexto
especificación del programa
Estructura de un programa
Todo programa Ada tiene 4 componentes:
· la especificación del contexto;
· la especificación del programa;
· la parte declarativa;
· el cuerpo.
La parte de especificación del contexto son directivas al compilador Ada. Pueden incluir
determinadas librerías, por ejemplo: la sentencia ”with ada_io” incluye la librería de
entrada/salida, en donde se encuentran los procedimientos que realizan la entrada/salida.
La especificación del programa da el nombre del programa.
La parte declarativa incluye las declaraciones de cualquier objeto. Puede contener
definiciones de variables y procedimientos.
El cuerpo del programa está compuesto de la secuencia de sentencias.
Ejemplo:
with ada_io; use ada_io;
procedure Doble is
x, y: integer;
begin
get(x); -- lee un número
y:=x*2; -- lo multiplica por 2
put(y); --imprime el resultado
new_line; -- avanza a la siguiente línea
end Doble;
Tipos predefinidos y operaciones
Tipo integer: Representa una secuencia de uno o más dígitos. Ada permite que cualquiera
de los dígitos (excepto el primero) esté precedido por el carácter “_” para dar legibilidad al
programa.
Ejemplo:
57
18_502_007 nro. de documento
10_18502007_001 nro. de IOMA
Por defecto, se asume que son números decimales, pero existen mecanismos para expresar
enteros en otra base:
Ejemplo:
8#377# 377 octal (255 en decimal)
fin del cuerpo
Lenguaje ADA – Página 1
Paradigmas de Programación
Año 2005
16#FF# FF hexadecimal (255 en decimal)
2#1111_1111# 1111_1111 binario (255 en decimal)
La base siempre se define en decimal y puede ser entre 2 y 16.
Están definidas las operaciones aritméticas tradicionales tales como +,-,*,/, y -(negación)
(los números negativos técnicamente son expresiones y no literales)
Existen dos procedimientos en ada_io para leer y escribir números enteros: get(i) y put(i)
Tipo flotante: se distinguen por la presencia de un punto decimal. Pueden incluir un
exponente.
Ejemplo:
10.0
0.5
3.14159_26
1.15E-12
1.0e+6
Las mismas operaciones que para los reales de Pascal.
Nota: Es importante aclarar que los valores flotantes y enteros NO pueden
mezclarse en una expresión
Tipo Boolean: Los valores booleanos están denotados por unos de dos literales
predefinidos: true y false.
Los operadores para este tipo son:
x and y
x or y
x xor y
not x
y los operadores relacionales (=,!=,<,>,etc.)
Tipo Character: Los valores de este tipo representan valores ASCII. Son caracteres
encerrados entre comillas simples.
Ejemplo:
‘a’,’A’,’’
Las únicas operaciones definidas para el tipo character son las relacionales.
Tipo string: todos los tipos anteriores son tipos escalares, esto es, que tiene valores que no
pueden ser divididos en partes más pequeñas. Ada tiene un tipo predefinido que es un tipo
compuesto, el tipo String, que consiste de una secuencia de valores character.
Un literal string es una secuencia de cero, o más caracteres encerrados entre comillas
dobles.
Lenguaje ADA – Página 2
Paradigmas de Programación
Año 2005
No es posible mezclar variables de distintos tipos en una misma expresión.
Ejemplo:
“estos es un string”
“ “
“123·
Expresiones
Ejemplo:
i: integer;
x: float;
x:=3.7;
i:=1;
x:=x+i; No es correcto.
La forma correcta sería realizando un casting (conversión de tipo explícita)
x:=x + float(i)
Una conversión de tipo consiste del nombre del tipo seguido por una expresión entre
paréntesis.
Declaraciones
Existen dos tipos de objetos: variables y constantes.
Ejemplo:
x: integer;
y: constant float:=1.9;
x es una variable e y es una constante de tipo flotante.
La declaración de constantes como en Pascal, debe incluir una inicialización. Las
declaraciones de variables pueden incluir una inicialización que especifica el valor inicial
de las variables.
Ejemplo:
n: integer:= 10;
p: integer:= n+1:
Lenguaje ADA – Página 3
Paradigmas de Programación
Año 2005
Estructuras de control
Asignación: “:=”
Sentencias condicionales
if condición
then sentencias
endif;
if condición
then sentencias
else sentencias
endif;
if condición
then sentencias
elseif cond then
elseif cond then
else
endif;
case n is
when 0 | 1 => sentencias
when 3 =>………
when 4..10 =>
when others =>
end case;
Sentencias de repetición
while condición loop
...................
end loop;
for i in 0..10 loop
……...
end loop;
Nota: la cláusula others debe ir obligatoriamente cuando no se especifican todos los
posibles valores de n.
Lenguaje ADA – Página 4
Paradigmas de Programación
Año 2005
parámetro formal
especificación del procedimiento
for i in reverse 0..10 loop
……....
end loop;
Subprogramas
Ada define dos tipos de subprogramas: procedimientos y funciones.
Ejemplo:
with ada_io; use ada_io;
procedure demo is
n: integer := 4;
procedure space (cant:integer) is
begin
for i in 1..cant loop
put (‘ ’);
end loop;
end space;
begin
space(6);
space(n+2);
end demo;
Parámetros formales
Recordamos que los parámetros formales representan objetos locales al procedure. Hay 3
tipos de pasaje de parámetro: in, out e in out.
Aclaración: notar que la variable i del loop no está declarada. Esto es porque Ada
permite declarar implícitamente las variables de control del for y son definidas como
de lectura únicamente, esto es, no es posible alterar su valor.
•
in: parecido al pasaje por copia, pero el parámetro actúa como una constante, y,
cuerpo del procedimiento
por lo tanto no se puede modificar su valor.
• out: parámetro por resultado
•
in out: actúa como una variable local que se inicializa con el valor del parámetro
real y es asignado al parámetro real cuando finaliza el procedimiento. (Según el
caso es valor-resultado o referencia)
Si no se especifica explícitamente ninguno de estos tipos, se asume in.
opcional
parámetro real
Lenguaje ADA – Página 5
Paradigmas de Programación
Año 2005
Los parámetros pueden tener valores por defecto.
Ejemplo:
procedure space(cant: integer:= 1) is.
……..
end space;
De esta manera se puede invocar al procedimiento space sin parámetros reales:
space;
Los nombres de los subprogramas se pueden”sobrecargar”. Es decir, que diferentes
subprogramas pueden tener el mismo nombre, pero distinto tipo y/o número de parámetros.
Ejemplo:
Procedure put(item:character)
Procedure put(item:integer);
Funciones
Ejemplo:
function pepe(n: intejer) return integer is
………….
return….
end pepe;
Los parámetros de una función siempre son in.
Alcance de variables
El alcance de las variables va desde su definición hasta el final del subprograma que la
engloba. (parecido a Pascal.-alcance estático-)
Es posible calificar una variable, de esta manera se puede acceder a un identificador que
está enmascarado.
Ejemplo:
procedure A is
x: integer:=10;
procedure B is
x:float:= 1.9;
begin
put(x);
put(A.x);
Lenguaje ADA – Página 6
Paradigmas de Programación
Año 2005
end B;
begin
B;
end A;
El alcance de la variable x entera definida en A es todo el procedure A y TODO el
procedure B (ya que es posible calificar y, por lo tanto, acceder a la variable).
Tipos enumerativos
Un tipo define un conjunto de valores posible para una variable o expresión y las
operaciones sobre ellos. Veamos la siguiente declaración:
type días_de_la_semana is (dom, lun,….sab);
hoy: días_de_la_semana;
Con esta declaración definimos un nuevo tipo (días_de_la_semana) enumerando todos los
posibles valores. La variable hoy es del tipo días_de_la_semana y, por lo tanto puede
asumir cualquiera de sus valores.
Ejemplo:
hoy:=dom;
Los tipos enumerativos son tipos discretos y sus valores pueden usarse como limites en un
rango discreto:
Ejemplo:
for ch in character loop;
for i in integer loop;
for dia in dias_de_la_semana loo
Comentarios de: Apuntes Ada (0)
No hay comentarios