Table Of ContentAlgoritmos y Programaci¶on
en Pascal
Crist¶obal Pareja Flores
Manuel Ojeda Aciego
A¶ngel Andeyro Quesada
Carlos Rossi Jim¶enez
Algoritmos y Programaci¶on
en Pascal
A nuestros compan~eros y alumnos
¶
Indice
Presentaci¶on xix
Tema I Algoritmos e introducci¶on a Pascal 1
Cap¶‡tulo1 Problemas, algoritmos y programas 3
1.1 Soluci¶on de problemas mediante programas : : : : : : : : : : : : 3
1.2 Concepto de algoritmo : : : : : : : : : : : : : : : : : : : : : : : : 5
1.2.1 Una deflnici¶on de algoritmo : : : : : : : : : : : : : : : : : 6
1.2.2 Una deflnici¶on formal de algoritmo : : : : : : : : : : : : : 8
1.3 Aspectos de inter¶es sobre los algoritmos : : : : : : : : : : : : : : 11
1.3.1 Computabilidad : : : : : : : : : : : : : : : : : : : : : : : 11
1.3.2 Correcci¶on de algoritmos : : : : : : : : : : : : : : : : : : 14
1.3.3 Complejidad de algoritmos : : : : : : : : : : : : : : : : : 15
1.4 Lenguajes algor¶‡tmicos y de programaci¶on : : : : : : : : : : : : : 16
1.5 Desarrollo sistem¶atico de programas : : : : : : : : : : : : : : : : 18
1.6 Conclusi¶on : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 20
1.7 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 20
1.8 Referencias bibliogr¶aflcas : : : : : : : : : : : : : : : : : : : : : : 21
Cap¶‡tulo2 El lenguaje de programaci¶on Pascal 23
2.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 23
2.2 Otros detalles de inter¶es : : : : : : : : : : : : : : : : : : : : : : : 24
2.3 Origen y evoluci¶on del lenguaje Pascal : : : : : : : : : : : : : : : 24
2.4 Pascal y Turbo Pascal : : : : : : : : : : : : : : : : : : : : : : : : 25
Cap¶‡tulo3 Tipos de datos b¶asicos 27
3.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 28
viii ¶Indice
3.2 El tipo integer : : : : : : : : : : : : : : : : : : : : : : : : : : : : 28
3.3 El tipo real : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 32
3.4 El tipo char : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 35
3.5 El tipo boolean : : : : : : : : : : : : : : : : : : : : : : : : : : : : 36
3.6 Observaciones : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 39
3.7 El tipo de una expresi¶on : : : : : : : : : : : : : : : : : : : : : : : 43
3.8 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 43
Cap¶‡tulo4 Elementos b¶asicos del lenguaje 47
4.1 Un ejemplo introductorio : : : : : : : : : : : : : : : : : : : : : : 47
4.2 Vocabulario b¶asico : : : : : : : : : : : : : : : : : : : : : : : : : : 48
4.2.1 Constantes y variables : : : : : : : : : : : : : : : : : : : : 52
4.3 Instrucciones b¶asicas : : : : : : : : : : : : : : : : : : : : : : : : : 52
4.3.1 Asignaci¶on : : : : : : : : : : : : : : : : : : : : : : : : : : 52
4.3.2 Instrucciones de escritura : : : : : : : : : : : : : : : : : : 54
4.3.3 Instrucciones de lectura : : : : : : : : : : : : : : : : : : : 57
4.4 Partes de un programa : : : : : : : : : : : : : : : : : : : : : : : : 59
4.4.1 Encabezamiento : : : : : : : : : : : : : : : : : : : : : : : 59
4.4.2 Declaraciones y deflniciones : : : : : : : : : : : : : : : : : 60
4.4.3 Cuerpo del programa: : : : : : : : : : : : : : : : : : : : : 62
4.4.4 Conclusi¶on: estructura general de un programa : : : : : : 63
4.5 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 63
Cap¶‡tulo5 Primeros programas completos 67
5.1 Algunos programas sencillos : : : : : : : : : : : : : : : : : : : : : 68
5.1.1 Dibujo de la letra ‘‘C’’ : : : : : : : : : : : : : : : : : : : : 68
5.1.2 Suma de dos nu¶meros : : : : : : : : : : : : : : : : : : : : 69
5.2 Programas claros programas de calidad : : : : : : : : : : : : : 69
)
5.3 Desarrollo descendente de programas : : : : : : : : : : : : : : : : 71
5.4 Desarrollo de programas correctos : : : : : : : : : : : : : : : : : 73
5.4.1 Estado de los c¶omputos : : : : : : : : : : : : : : : : : : : 73
5.4.2 Desarrollo descendente con especiflcaciones : : : : : : : : 78
5.5 Observaciones flnales : : : : : : : : : : : : : : : : : : : : : : : : : 79
5.6 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 81
¶Indice ix
Tema II Programaci¶on estructurada 83
Cap¶‡tulo6 Instrucciones estructuradas 85
6.1 Composici¶on de instrucciones : : : : : : : : : : : : : : : : : : : : 86
6.2 Instrucciones de selecci¶on : : : : : : : : : : : : : : : : : : : : : : 88
6.2.1 La instrucci¶on if-then-else : : : : : : : : : : : : : : : : : 88
6.2.2 La instrucci¶on case : : : : : : : : : : : : : : : : : : : : : 92
6.3 Instrucciones de iteraci¶on : : : : : : : : : : : : : : : : : : : : : : 94
6.3.1 La instrucci¶on while : : : : : : : : : : : : : : : : : : : : : 94
6.3.2 La instrucci¶on repeat : : : : : : : : : : : : : : : : : : : : 98
6.3.3 La instrucci¶on for : : : : : : : : : : : : : : : : : : : : : : 100
6.4 Disen~o y desarrollo de bucles : : : : : : : : : : : : : : : : : : : : 103
6.4.1 Elecci¶on de instrucciones iterativas : : : : : : : : : : : : : 103
6.4.2 Terminaci¶on de un bucle : : : : : : : : : : : : : : : : : : : 105
6.4.3 Uso correcto de instrucciones estructuradas : : : : : : : : 106
6.5 Dos m¶etodos num¶ericos iterativos : : : : : : : : : : : : : : : : : : 113
6.5.1 M¶etodo de bipartici¶on : : : : : : : : : : : : : : : : : : : : 113
6.5.2 M¶etodo de Newton-Raphson : : : : : : : : : : : : : : : : 115
6.5.3 Inversi¶on de funciones : : : : : : : : : : : : : : : : : : : : 117
6.6 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 117
Cap¶‡tulo7 Programaci¶on estructurada 123
7.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 123
7.2 Aspectos te¶oricos : : : : : : : : : : : : : : : : : : : : : : : : : : : 125
7.2.1 Programas y diagramas de (cid:176)ujo : : : : : : : : : : : : : : : 125
7.2.2 Diagramas y diagramas propios : : : : : : : : : : : : : : : 126
7.2.3 Diagramas BJ (de B˜ohm y Jacopini) : : : : : : : : : : : : 130
7.2.4 Equivalencia de diagramas : : : : : : : : : : : : : : : : : : 135
7.2.5 Teoremas de la programaci¶on estructurada : : : : : : : : 137
7.2.6 Recapitulaci¶on : : : : : : : : : : : : : : : : : : : : : : : : 138
7.3 Aspectos metodol¶ogicos : : : : : : : : : : : : : : : : : : : : : : : 139
7.3.1 Seudoc¶odigo : : : : : : : : : : : : : : : : : : : : : : : : : : 139
7.3.2 Disen~o descendente : : : : : : : : : : : : : : : : : : : : : : 141
7.4 Reflnamiento correcto de programas con instrucciones
estructuradas : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 146
x ¶Indice
7.4.1 Un ejemplo detallado : : : : : : : : : : : : : : : : : : : : 147
7.4.2 Recapitulaci¶on : : : : : : : : : : : : : : : : : : : : : : : : 150
7.5 Conclusi¶on : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 151
7.6 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 151
7.7 Referencias bibliogr¶aflcas : : : : : : : : : : : : : : : : : : : : : : 153
Tema III Subprogramas 155
Cap¶‡tulo8 Procedimientos y funciones 157
8.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 158
8.2 Subprogramas con par¶ametros: : : : : : : : : : : : : : : : : : : : 162
8.2.1 Descripci¶on de un subprograma con par¶ametros : : : : : : 162
8.2.2 Par¶ametros formales y reales : : : : : : : : : : : : : : : : 165
8.2.3 Mecanismos de paso de par¶ametros : : : : : : : : : : : : : 165
8.2.4 Consistencia entre deflnici¶on y llamada : : : : : : : : : : 168
8.3 Estructura sint¶actica de un subprograma: : : : : : : : : : : : : : 169
8.4 Funcionamiento de una llamada : : : : : : : : : : : : : : : : : : : 170
8.5 A¶mbito y visibilidad de los identiflcadores : : : : : : : : : : : : : 174
8.5.1 Tipos de identiflcadores segu¶n su ¶ambito : : : : : : : : : : 174
8.5.2 Estructura de bloques : : : : : : : : : : : : : : : : : : : : 175
8.5.3 Criterios de localidad : : : : : : : : : : : : : : : : : : : : 181
8.5.4 Efectos laterales : : : : : : : : : : : : : : : : : : : : : : : 181
8.6 Otras recomendaciones sobre el uso de par¶ametros : : : : : : : : 183
8.6.1 Par¶ametros por valor y por referencia : : : : : : : : : : : 183
8.6.2 Par¶ametros por referencia y funciones : : : : : : : : : : : 183
8.6.3 Funciones con resultados mu¶ltiples : : : : : : : : : : : : : 184
8.7 Desarrollo correcto de subprogramas : : : : : : : : : : : : : : : : 184
8.8 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 186
Cap¶‡tulo9 Aspectos metodol¶ogicos de la programaci¶on con
subprogramas 189
9.1 Introducci¶on: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 189
9.2 Un ejemplo de referencia : : : : : : : : : : : : : : : : : : : : : : : 190
9.3 Metodolog¶‡a de la programaci¶on con subprogramas : : : : : : : : 192
9.3.1 Disen~o descendente con subprogramas : : : : : : : : : : : 193
¶Indice xi
9.3.2 Programa principal y subprogramas : : : : : : : : : : : : 194
9.3.3 Documentaci¶on de los subprogramas : : : : : : : : : : : : 195
9.3.4 Taman~o de los subprogramas : : : : : : : : : : : : : : : : 196
9.3.5 Reflnamiento con subprogramas y con instrucciones
estructuradas : : : : : : : : : : : : : : : : : : : : : : : : : 197
9.4 Estructura jer¶arquica de los subprogramas : : : : : : : : : : : : : 199
9.5 Ventajas de la programaci¶on con subprogramas : : : : : : : : : : 201
9.6 Un ejemplo detallado: representaci¶on de funciones : : : : : : : : 203
9.7 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 207
Cap¶‡tulo10 Introducci¶on a la recursi¶on 211
10.1 Un ejemplo de referencia : : : : : : : : : : : : : : : : : : : : : : : 212
10.2 Conceptos b¶asicos : : : : : : : : : : : : : : : : : : : : : : : : : : 213
10.3 Otros ejemplos recursivos : : : : : : : : : : : : : : : : : : : : : : 216
10.3.1 La sucesi¶on de Fibonacci : : : : : : : : : : : : : : : : : : 216
10.3.2 Torres de Hanoi : : : : : : : : : : : : : : : : : : : : : : : 216
10.3.3 Funci¶on de Ackermann : : : : : : : : : : : : : : : : : : : : 219
10.4 Correcci¶on de subprogramas recursivos : : : : : : : : : : : : : : : 219
10.4.1 Principios de inducci¶on : : : : : : : : : : : : : : : : : : : 220
10.5 Recursi¶on mutua : : : : : : : : : : : : : : : : : : : : : : : : : : : 222
10.6 Recursi¶on e iteraci¶on : : : : : : : : : : : : : : : : : : : : : : : : : 226
10.7 Ejercicios : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 227
10.8 Referencias bibliogr¶aflcas : : : : : : : : : : : : : : : : : : : : : : 228
Tema IV Tipos de datos deflnidos por el programador 231
Cap¶‡tulo11 Tipos de datos simples y compuestos 233
11.1 Tipos ordinales deflnidos por el programador : : : : : : : : : : : 234
11.1.1 Tipos enumerados : : : : : : : : : : : : : : : : : : : : : : 235
11.1.2 Tipo subrango : : : : : : : : : : : : : : : : : : : : : : : : 238
11.2 Deflnici¶on de tipos : : : : : : : : : : : : : : : : : : : : : : : : : : 240
11.2.1 Observaciones sobre la deflnici¶on de tipos : : : : : : : : : 242
11.3 Conjuntos : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 244
11.3.1 Operaciones sobre el tipo conjunto : : : : : : : : : : : : : 245
11.3.2 Observaciones sobre el tipo conjunto : : : : : : : : : : : : 247
Description:Cristóbal Pareja Flores. Manuel Ojeda Aciego. ´Angel Andeyro Quesada. Carlos Rossi Jiménez. Algoritmos y Programación en Pascal