Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

miércoles, 4 de febrero de 2015

Sintaxis de Ada

0

recuerda:
texto_io > es entrada y salida de caracteres
integer_text_io > es entrada y salida de caracteres numéricos enteros.

Ada tiene 69 palabras reservadas que tu no puedes utilizar para nombrar ninguna variable.

Delimitadores simples:
& >
' >
( >
) >
* >
+ >
- >
. >
: >
; >
< >
= >
> >
| > 

Tipos escalares
pi: constant float:=3.1415; > inicializo una constante pi con valor inicial de 3.1416.
final: constant charactere:='.'; > inicializo una constante final con valor inicial de '.'
i, j, k: integer; > i, j, k son números enteros.

Ada es fuertemente tipado, no se puede asignar valor a una variable de un tipo diferente.
type intenger is-; --predefinido

Subtipos
Sirve para caracterizar un subconjunto de los valores de un tipo.
NO constituye un nuevo tipo (la asignación está permitida)

Tipos definidos por enumeración
Hay dos predefinidos (booleanos y caracteres)
type día is (lunes, martes, miercoles, jueves, viernes, sabado, domingo);
subtype laborable is dia range lunes....viernes;
d1: dia; d2: laborable;

Atributos
dia 'first=lunes // el primero
dia ' last=domingo // el último
dia ' succ (lunes)=martes // el sucesor (siguiente)
dia 'pred(martes)=lunes // el predecesor (anterior)
dia 'pos(lunes)=0 // posición
dia 'val(1)=martes // valor
dia ' image(lunes)="LUNES" //convertir a cadena de texto
dia 'value ("martes")=martes // convertir una cadena de texto al tipo definido

Tipo booleano
type boolean is (false, true);
a, b, c, d:boolean;
((not a) and b) or (c xor d)

or     t     f
t       t     t
f       t     f

xor   t     f
t       f     t
f       t     f

Tipos escalares
Tipos enteros
Hay algunos predefinidos:
type interger is ... ;    //enteros
type short_integer is ...; // enteros cortos
type long_intenger is ...; // enteros largos
subtype natural is intenger range 0.. intenger' last; // desde el 0 adelante
subtype positivo is intenger range 1..intenger 'last; // desde el 1 adelante

¿?¿?

Prioridades:
and, or, xor
not
=, /=, <, <=, >, >=, in, not in
+, -      (binarios)
....

Tipos reales
type mis_reales is digits 7;
No se admite aritmética mixta:
n:integer; x:float;

n+x      //¡incorrecto!

float (n) +x
n+integer (x) // ambos correctos!!

La conversión de real a entero efectúa redondeo.

Estructuras de control
if...then
...
end if;

if...then
...
else
...
end if;

if ....then
....
elsif...then
...
elsif...then
...
else
....
end if;

case...is...    
when .... => .... // 1 opción 
when ....|...|... => ... // varias opciones
when ... . . ... => ... // con rango
when ... => NULL; //nulo
when others => ... //por defecto
end case;

Instrucciones iterativas
while...loop
...
end loop;

for d in dia loop ... end loop;

for d in lunes.. viernes loop
...
end loop;

for d in reverse lunes. . viernes loop
...
end loop;

loop
...
end loop;

loop
...; 
exit;
...;
end loop;

lopp
...
exit when ...;
...
end loop;

Estructuración del control: subalgoritmos (1...)
Procedimientos y funciones
Paso de parámetros:
in (entrada), out(salida), in out(entrada y salida).
Ada por defecto todos sera solo de entrada.

produce toto(x:T1; y: in out T2) is
...
end toto;

toto(e,z);      --llamada normal
toto (y=>z, x=>e);     --llamada nombrada

funciones
function factorial (n:natural) 
     return natural is
begin
     if n in 0..1
         then return 1;
         else return n*factorial (n-1);
     end if;
end factorial;

Existe sobrecarga, puedo llamar a 7 funciones de la misma manera (suma de coches, suma de motos...) el compilador por el contexto de los operandos(enteros, reales, vectores...) que estoy usando me sabrá distinguir a que función me estoy refiriendo. 
Es decir, el significado se distingue por el contexto.
No se pueden modificar la aridad ni la sintaxis de llamada (prefija o infija).

Ada no distingue entre mayúsculas y minúsculas.

En Ada las funciones y podrecimientos deben estar en funciones y procedimientos. En C tenias 3 funciones y el orden de llamada era indistinta. En Ada hay jerarquía, Y el orden importa...

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)