Fundamentos de Programación con Ada
Javier Miranda, Francisco Guerra
Luis Hernández
Copyright (c) Javier Miranda, Francisco Guerra, Luis Hernández
Universidad de Las Palmas de Gran Canaria
Islas Canarias
España
[email protected]
[email protected]
[email protected]
Se permite copiar, distribuir y/o modificar este documento
bajo los términos de la Licencia de Documentación Libre de
GNU, Versiones 1.1 o posteriores, publicadas por la Fundación
del Software Libre (Free Software Foundation)
3 de octubre de 2002
2
Copyright (c) Javier Miranda, Francisco Guerra, Luis Hernández. Ca-
nary Islands (Spain) 2002.
Permission is granted to copy, distribute and/or modify this document under
the terms of the GNU Free Documentation License, Version 1.1 or any later ver-
sion published by the Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in
the section entitled “GNU Free Documentation License”.
Índice general
1. Introducción
1.1. Breve historia de Ada .
.
. .
.
. .
1.2. Nuestro primer programa Ada . .
1.3. Uso del compilador: GNAT .
1.4.
Identificadores .
1.5. Resumen .
. .
.
.
. .
. .
.
.
.
.
. .
. .
.
.
.
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
2. Declaraciones
2.1. Constantes y variables
.
. .
.
. .
.
.
. .
2.1.1. Formato de las declaraciones .
. .
2.1.2. Tipos de datos básicos . .
2.1.3. Constantes
.
2.1.4. Variables
. .
.
.
.
.
. .
. .
.
.
. .
. .
.
.
.
.
.
.
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
2.1.5. Uso combinado de constantes y variables .
. .
2.2. Tipos
.
.
.
. .
.
. .
.
.
. .
2.2.1. Tipo enumerado . .
2.2.2. Subtipos
. .
.
.
. .
2.2.3. Tipos derivados .
. .
.
.
.
.
. .
. .
. .
. .
.
.
.
.
.
.
.
.
. .
. .
. .
. .
.
.
.
.
. .
. .
. .
. .
.
.
.
.
.
.
.
.
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
2.2.4. Ajuste de la precisión de números en coma flotante . .
11
. 11
. 12
. 14
. 16
. 17
19
. 19
. 20
. 21
. 22
. 23
. 23
. 24
. 25
. 27
. 27
. 28
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
4
ÍNDICEGENERAL
2.3. Atributos
. .
2.4. Resumen . .
.
.
. .
. .
.
.
.
.
. .
. .
3. Operadores básicos
3.1. Operadores aritméticos . .
3.2. Operadores relacionales . .
3.3. Operadores lógicos .
.
. .
3.4. Operador concatenación .
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
3.5. Evaluación óptima de expresiones
3.6. Resumen . .
.
. .
.
.
. .
.
. .
.
4. Entrada/Salida
4.1. Estructura de Text_IO .
. .
4.2. Letras .
.
. .
.
. .
.
.
. .
4.2.1. Escribir una letra .
4.2.2. Leer una letra .
. .
4.3. Texto .
.
. .
.
. .
.
.
. .
4.3.1. Escribir una frase .
4.3.2. Leer una frase .
. .
4.4. Números enteros
.
.
.
. .
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
4.4.1. Escritura de números enteros . .
4.4.2. Lectura de números enteros
. .
4.5. Números reales . .
.
.
. .
.
. .
.
.
. .
4.5.1. Escritura de números reales
. .
4.5.2. Lectura de números reales .
. .
4.6. Tipos enumerados .
4.7. Resumen . .
.
. .
.
.
.
.
. .
. .
.
.
. .
. .
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
28
31
33
33
34
35
35
36
37
39
39
41
41
41
41
41
42
44
44
45
46
46
46
47
47
ÍNDICEGENERAL
5. Control de flujo
5.1.
Introducción . .
.
. .
5.2. Estructura secuencial
.
.
.
.
. .
. .
5.3. Estructuras condicionales . .
5.3.1.
if
.
. .
5.3.2.
case . .
.
.
. .
. .
.
.
5.4. Estructuras repetitivas .
5.4.1.
loop . .
5.4.2. while .
5.4.3.
for .
. .
.
.
.
. .
. .
. .
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
5.4.4. Elección del bucle más apropiado .
. .
5.5. Resumen .
. .
.
. .
.
.
. .
.
. .
.
.
. .
.
. .
6. Subprogramas
6.1. Procedimientos y funciones .
.
. .
.
.
. .
.
. .
6.1.1. Elección del nombre del subprograma .
6.1.2. Variables locales . .
.
. .
6.1.3. Ambitos y visibilidad .
. .
6.2. Parámetros
. .
.
. .
.
.
. .
.
. .
6.2.1. Modo de los parámetros
.
6.2.2. Parámetros por omisión .
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
6.2.3. Parámetros de la línea de órdenes
6.3. Llamada a un subprograma .
6.3.1. Recursividad .
6.4. Traza
.
.
.
. .
.
. .
.
.
.
. .
. .
.
.
.
. .
. .
. .
6.4.1. Traza sin subprogramas
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
5
49
. 49
. 49
. 50
. 50
. 52
. 54
. 54
. 56
. 56
. 58
. 58
59
. 59
. 61
. 61
. 63
. 65
. 66
. 67
. 68
. 69
. 69
. 70
. 70
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
ÍNDICEGENERAL
6.4.2. Traza con subprogramas .
6.5. Resumen . .
.
. .
.
.
. .
.
. .
.
7. Tipos compuestos
7.1. Registro .
. .
.
. .
.
.
. .
.
. .
7.1.1. Valores por omisión . .
7.1.2. Registro con variantes
.
7.2. Formación (array) .
.
.
. .
.
. .
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
7.2.1. Formación unidimensional .
. .
7.2.2. Formación multidimensional . .
7.2.3.
Inicialización .
. .
7.2.4. Copia .
. .
.
.
. .
.
.
. .
. .
.
.
.
.
. .
. .
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
7.2.5. Porción de una formación unidimensional . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
7.2.6. Operadores para formaciones unidimensionales .
. .
7.2.7. Atributos First, Last y Length .
7.2.8. Formaciones irrestringidas .
. .
7.2.9. Cadenas de caracteres (Strings)
7.3. Resumen . .
.
. .
.
.
. .
.
. .
.
.
. .
8. Excepciones
8.1. Excepciones predefinidas .
.
. .
8.2. Declaración de excepciones .
. .
8.3. Manejador de excepciones
8.4. Resumen . .
.
. .
.
.
. .
.
.
. .
. .
.
.
.
.
.
.
.
.
. .
. .
. .
. .
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
9. Paquetes
9.1. Especificación .
. .
.
.
. .
.
. .
.
.
. .
.
. .
.
.
. .
.
.
. .
.
. .
71
73
75
75
76
77
78
78
79
79
81
82
82
84
85
85
87
89
89
90
91
92
93
93
ÍNDICEGENERAL
9.2. Cuerpo .
.
.
. .
.
. .
.
9.3. Uso de paquetes (with)
9.4. Resumen .
. .
.
. .
.
.
.
.
. .
. .
. .
.
.
.
. .
. .
. .
10. Ficheros
10.1. Excepciones asociadas a ficheros .
10.2. Ficheros de texto . .
.
.
. .
.
. .
10.2.1. Números y enumerados . .
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
10.2.2. Ejemplo: Copia de un fichero de texto .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
10.3. Ficheros de acceso secuencial y de acceso directo .
. .
10.4. Resumen .
. .
.
. .
.
.
. .
.
. .
.
.
. .
.
. .
.
.
. .
A. Ejercicios
A.1. Identificadores y tipos de datos. . .
A.2. Expresiones . .
A.3. Sentencias .
. .
A.3.1.
if
.
. .
A.3.2. case . .
A.3.3.
loop . .
A.4. Atributos
.
. .
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
A.5. Estructuras de datos .
A.5.1. Vectores .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. .
. .
. .
. .
. .
. .
. .
. .
A.5.2. Cadenas de caracteres
A.5.3. Matrices .
. .
.
.
. .
A.6. Procedimientos y funciones .
A.6.1. Recur
Comentarios de: Fundamentos de Programación con Ada (0)
No hay comentarios