Índice
Tema I Algoritmos e introducción a Pascal 1
Capitulo 1 Problemas, algoritmos y programas 3
1.1 Solución de problemas mediante programas . . . . . . . . . . . . 3
1.2 Concepto de algoritmo . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2.1 Una definici´on de algoritmo . . . . . . . . . . . . . . . . . 6
1.2.2 Una definici´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´aficas . . . . . . . . . . . . . . . . . . . . . . 21
Cap´?tulo 2 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´?tulo 3 Tipos de datos b´asicos 27
3.1 Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28viii ´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´?tulo 4 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 definiciones . . . . . . . . . . . . . . . . . 60
4.4.3 Cuerpo del programa . . . . . . . . . . . . . . . . . . . . . 62
4.4.4 Conclusi´on: estructura general de un programa . . . . . . 63
4.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Cap´?tulo 5 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 numeros ´ . . . . . . . . . . . . . . . . . . . . 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 especificaciones . . . . . . . . 78
5.5 Observaciones finales . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81´Indice ix
Tema II Programaci´on estructurada 83
Cap´?tulo 6 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 Diseno˜ 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´?tulo 7 Programaci´on estructurada 123
7.1 Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.2 Aspectos te´oricos . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.2.1 Programas y diagramas de flujo . . . . . . . . . . . . . . . 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 Diseno˜ descendente . . . . . . . . . . . . . . . . . . . . . . 141
7.4 Refinamiento correcto de programas con instrucciones
estructuradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146x ´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´aficas . . . . . . . . . . . . . . . . . . . . . . 153
Tema III Subprogramas 155
Cap´?tulo 8 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 definici´on y llamada . . . . . . . . . . 168
8.3 Estructura sint´actica de un subprograma . . . . . . . . . . . . . . 169
8.4 Funcionamiento de una llamada . . . . . . . . . . . . . . . . . . . 170
8.5 Am´ bito y visibilidad de los identificadores . . . . . . . . . . . . . 174
8.5.1 Tipos de identificadores segun´ 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 multiples ´ . . . . . . . . . . . . . 184
8.7 Desarrollo correcto de subprogramas . . . . . . . . . . . . . . . . 184
8.8 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Cap´?tulo 9 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 Diseno˜ 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 Tamano˜ de los subprogramas . . . . . . . . . . . . . . . . 196
9.3.5 Refinamiento 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´?tulo 10 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´aficas . . . . . . . . . . . . . . . . . . . . . . 228
Tema IV Tipos de datos definidos por el programador 231
Cap´?tulo 11 Tipos de datos simples y compuestos 233
11.1 Tipos ordinales definidos por el programador . . . . . . . . . . . 234
11.1.1 Tipos enumerados . . . . . . . . . . . . . . . . . . . . . . 235
11.1.2 Tipo subrango . . . . . . . . . . . . . . . . . . . . . . . . 238
11.2 Definici´on de tipos . . . . . . . . . . . . . . . . . . . . . . . . . . 240
11.2.1 Observaciones sobre la definici´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 . . . . . . . . . . . . 247xii ´Indice
11.3.3 Un ejemplo de aplicaci´on . . . . . . . . . . . . . . . . . . 248
11.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Cap´?tulo 12 Arrays 253
12.1 Descripci´on del tipo de datos array . . . . . . . . . . . . . . . . . 253
12.1.1 Operaciones del tipo array y acceso a sus componentes . . 257
12.1.2 Caracter´?sticas generales de un array . . . . . . . . . . . . 260
12.2 Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
12.3 Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
12.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Cap´?tulo 13 Registros 271
13.1 Descripci´on del tipo de datos registro . . . . . . . . . . . . . . . . 271
13.1.1 Manejo de registros: acceso a componentes y operaciones. 273
13.1.2 Registros con variantes . . . . . . . . . . . . . . . . . . . . 276
13.2 Arrays de registros y registros de arrays . . . . . . . . . . . . . . 279
13.3 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
Cap´?tulo 14 Archivos 285
14.1 Descripci´on del tipo de datos archivo . . . . . . . . . . . . . . . . 285
14.2 Manejo de archivos en Pascal . . . . . . . . . . . . . . . . . . . . 286
14.2.1 Operaciones con archivos . . . . . . . . . . . . . . . . . . 288
14.3 Archivos de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
14.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Cap´?tulo 15 Algoritmos de busqueda ´ y ordenaci´on 301
15.1 Algoritmos de busqueda ´ en arrays . . . . . . . . . . . . . . . . . 301
15.1.1 Busqueda ´ secuencial . . . . . . . . . . . . . . . . . . . . . 302
15.1.2 Busqueda ´ secuencial ordenada . . . . . . . . . . . . . . . 304
15.1.3 Busqueda ´ binaria . . . . . . . . . . . . . . . . . . . . . . . 304
15.2 Ordenaci´on de arrays . . . . . . . . . . . . . . . . . . . . . . . . . 306
15.2.1 Selecci´on directa . . . . . . . . . . . . . . . . . . . . . . . 307
15.2.2 Inserci´on directa . . . . . . . . . . . . . . . . . . . . . . . 309
15.2.3 Intercambio directo . . . . . . . . . . . . . . . . . . . . . . 310
15.2.4 Ordenaci´on r´apida (Quick Sort) . . . . . . . . . . . . . . 312
15.2.5 Ordenaci´on por mezcla (Merge Sort) . . . . . . . . . . . . 316´Indice xiii
15.2.6 Vectores paralelos . . . . . . . . . . . . . . . . . . . . . . 318
15.3 Algoritmos de busqueda ´ en archivos secuenciales . . . . . . . . . 320
15.3.1 Busqueda ´ en archivos arbitrarios . . . . . . . . . . . . . . 321
15.3.2 Busqueda ´ en archivos ordenados . . . . . . . . . . . . . . 321
15.4 Mezcla y ordenaci´on de archivos secuenciales . . . . . . . . . . . 322
15.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
15.6 Referencias bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . 330
Tema V Memoria din´amica 333
Cap´?tulo 16 Punteros 335
16.1 Introducci´on al uso de punteros . . . . . . . . . . . . . . . . . . . 336
16.1.1 Definici´on y declaraci´on de punteros . . . . . . . . . . . . 337
16.1.2 Generaci´on y destrucci´on de variables din´amicas . . . . . 338
16.1.3 Operaciones b´asicas con datos apuntados . . . . . . . . . 339
16.1.4 Operaciones b´asicas con punteros . . . . . . . . . . . . . . 341
16.1.5 El valor nil . . . . . . . . . . . . . . . . . . . . . . . . . . 343
16.2 Aplicaciones no recursivas de los punteros . . . . . . . . . . . . . 344
16.2.1 Asignaci´on de objetos no simples . . . . . . . . . . . . . . 345
16.2.2 Funciones de resultado no simple . . . . . . . . . . . . . . 346
16.3 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Cap´?tulo 17 Estructuras de datos recursivas 351
17.1 Estructuras recursivas lineales: las listas enlazadas . . . . . . . . 351
17.1.1 Una definici´on del tipo lista . . . . . . . . . . . . . . . . . 352
17.1.2 Inserci´on de elementos . . . . . . . . . . . . . . . . . . . . 353
17.1.3 Eliminaci´on de elementos . . . . . . . . . . . . . . . . . . 355
17.1.4 Algunas funciones recursivas . . . . . . . . . . . . . . . . 355
17.1.5 Otras operaciones sobre listas . . . . . . . . . . . . . . . . 358
17.2 Pilas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
17.2.1 Definici´on de una pila como lista enlazada . . . . . . . . . 363
17.2.2 Operaciones b´asicas sobre las pilas . . . . . . . . . . . . . 363
17.2.3 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 365
17.3 Colas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
17.3.1 Definici´on del tipo cola . . . . . . . . . . . . . . . . . . . 371xiv ´Indice
17.3.2 Operaciones b´asicas . . . . . . . . . . . . . . . . . . . . . 371
17.3.3 Aplicaci´on: gesti´on de la caja de un supermercado . . . . 374
17.4 Arb ´ oles binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
17.4.1 Recorrido de un ´arbol binario . . . . . . . . . . . . . . . . 378
17.4.2 Arb ´ oles de busqueda ´ . . . . . . . . . . . . . . . . . . . . . 379
17.4.3 Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 383
17.5 Otras estructuras din´amicas de datos . . . . . . . . . . . . . . . . 387
17.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
17.7 Referencias bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . 391
Tema VI Aspectos avanzados de programaci´on 393
Cap´?tulo 18 Complejidad algor´?tmica 395
18.1 Conceptos b´asicos . . . . . . . . . . . . . . . . . . . . . . . . . . 396
18.2 Medidas del comportamiento asint´otico . . . . . . . . . . . . . . 402
18.2.1 Comportamiento asint´otico . . . . . . . . . . . . . . . . . 402
18.2.2 Notaci´on O mayuscula ´ (una cota superior) . . . . . . . . 404
18.2.3 Notaci´on ? mayuscula ´ (una cota inferior) . . . . . . . . . 405
18.2.4 Notaci´on ? mayuscula ´ (orden de una funci´on) . . . . . . 405
18.2.5 Propiedades de O, ? y ? . . . . . . . . . . . . . . . . . . 406
18.2.6 Jerarqu´?a de ´ordenes de frecuente aparici´on . . . . . . . . 407
18.3 Reglas pr´acticas para hallar el coste de un programa . . . . . . . 408
18.3.1 Tiempo empleado . . . . . . . . . . . . . . . . . . . . . . 408
18.3.2 Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
18.3.3 Espacio de memoria empleado . . . . . . . . . . . . . . . 417
18.4 Utiles ´ matem´aticos . . . . . . . . . . . . . . . . . . . . . . . . . . 418
18.4.1 F´ormulas con sumatorios . . . . . . . . . . . . . . . . . . 419
18.4.2 Sucesiones de recurrencia lineales de primer orden . . . . 419
18.4.3 Sucesiones de recurrencia de orden superior . . . . . . . . 421
18.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
18.6 Referencias bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . 425
Cap´?tulo 19 Tipos abstractos de datos 427
19.1 Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428
19.2 Un ejemplo completo . . . . . . . . . . . . . . . . . . . . . . . . . 429´Indice xv
19.2.1 Desarrollo de programas con tipos concretos de datos . . 430
19.2.2 Desarrollo de programas con tipos abstractos de datos . . 431
19.2.3 Desarrollo de tipos abstractos de datos . . . . . . . . . . . 434
19.3 Metodolog´?a de la programaci´on de TADs . . . . . . . . . . . . . 440
19.3.1 Especificaci´on de tipos abstractos de datos . . . . . . . . 440
19.3.2 Implementaci´on de tipos abstractos de datos . . . . . . . 441
19.3.3 Correcci´on de tipos abstractos de datos . . . . . . . . . . 443
19.4 Resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
19.5 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
19.6 Referencias bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . 448
Cap´?tulo 20 Esquemas algor´?tmicos fundamentales 449
20.1 Algoritmos devoradores . . . . . . . . . . . . . . . . . . . . . . . 450
20.1.1 Descripci´on . . . . . . . . . . . . . . . . . . . . . . . . . . 450
20.1.2 Adecuaci´on al problema . . . . . . . . . . . . . . . . . . . 451
20.1.3 Otros problemas resueltos vorazmente . . . . . . . . . . . 452
20.2 Divide y vencer´as . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
20.2.1 Equilibrado de los subproblemas . . . . . . . . . . . . . . 454
20.3 Programaci´on din´amica . . . . . . . . . . . . . . . . . . . . . . . 455
20.3.1 Problemas de programaci´on din´amica . . . . . . . . . . . 455
20.3.2 Mejora de este esquema . . . . . . . . . . . . . . . . . . . 457
20.3.3 Formulaci´on de problemas de programaci´on din´amica . . 460
20.4 Vuelta atr´as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
20.4.1 Mejora del esquema de vuelta atr´as . . . . . . . . . . . . 466
20.5 Anexo: algoritmos probabilistas . . . . . . . . . . . . . . . . . . . 468
20.5.1 Busqueda ´ de una soluci´on aproximada . . . . . . . . . . . 468
20.5.2 Busqueda ´ de una soluci´on probablemente correcta . . . . 469
20.6 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
20.7 Referencias bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . 473
Ap´endices 475
Ap´endice A Aspectos complementarios de la programaci´on 477
A.1 Subprogramas como par´ametros . . . . . . . . . . . . . . . . . . . 477
A.1.1 Ejemplo 1: derivada . . . . . . . . . . . . . . . . . . . . . 479xvi ´Indice
A.1.2 Ejemplo 2: bipartici´on . . . . . . . . . . . . . . . . . . . . 480
A.1.3 Ejemplo 3: transformaci´on de listas . . . . . . . . . . . . 482
A.2 Variables aleatorias . . . . . . . . . . . . . . . . . . . . . . . . . . 482
A.2.1 Generaci´on de numeros ´ aleatorios en Turbo Pascal . . . . 483
A.2.2 Simulaci´on de variables aleatorias . . . . . . . . . . . . . . 484
A.2.3 Ejemplos de aplicaci´on . . . . . . . . . . . . . . . . . . . . 486
A.3 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
A.4 Referencias bibliogr´aficas . . . . . . . . . . . . . . . . . . . . . . 490
Ap´endice B El lenguaje Turbo Pascal 491
B.1 Elementos l´exicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
B.2 Estructura del programa . . . . . . . . . . . . . . . . . . . . . . . 492
B.3 Datos num´ericos enteros . . . . . . . . . . . . . . . . . . . . . . . 492
B.4 Datos num´ericos reales . . . . . . . . . . . . . . . . . . . . . . . . 493
B.5 Cadenas de caracteres . . . . . . . . . . . . . . . . . . . . . . . . 494
B.5.1 Declaraci´on de cadenas . . . . . . . . . . . . . . . . . . . 494
B.5.2 Operadores de cadenas . . . . . . . . . . . . . . . . . . . . 495
B.5.3 Funciones de cadenas . . . . . . . . . . . . . . . . . . . . 496
B.5.4 Procedimientos de cadenas . . . . . . . . . . . . . . . . . 496
B.6 Tipos de datos estructurados . . . . . . . . . . . . . . . . . . . . 498
B.7 Instrucciones estructuradas . . . . . . . . . . . . . . . . . . . . . 498
B.8 Paso de subprogramas como par´ametros . . . . . . . . . . . . . . 499
B.9 Archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
B.10 Memoria din´amica . . . . . . . . . . . . . . . . . . . . . . . . . . 501
B.11 Unidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
B.11.1 Unidades predefinidas de Turbo Pascal . . . . . . . . . . . 502
B.11.2 Unidades definidas por el usuario . . . . . . . . . . . . . . 503
B.11.3 Modularidad incompleta de Turbo Pascal . . . . . . . . . 505
Apendice C El entorno integrado de desarrollo 507
C.1 Descripci´on del entorno . . . . . . . . . . . . . . . . . . . . . . . 507
C.2 Desarrollo completo de un programa en Turbo Pascal . . . . . . 508
C.2.1 Arranque del entorno . . . . . . . . . . . . . . . . . . . . 508
C.2.2 Edicion del programa fuente . . . . . . . . . . . . . . . . . 510
C.2.3 Grabar el programa fuente y seguir editando . . . . . . . 510´Indice xvii
C.2.4 Compilaci´on . . . . . . . . . . . . . . . . . . . . . . . . . 512
C.2.5 Ejecucion . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
C.2.6 Depuraci´on . . . . . . . . . . . . . . . . . . . . . . . . . . 514
C.2.7 Salida de Turbo Pascal . . . . . . . . . . . . . . . . . . . . 516
C.3 Otros menus y opciones . . . . . . . . . . . . . . . . . . . . . . . 517
C.3.1 Search (Busqueda) ´ . . . . . . . . . . . . . . . . . . . . . . 517
C.3.2 Tools (Herramientas) . . . . . . . . . . . . . . . . . . . . . 517
C.3.3 Options (Opciones) . . . . . . . . . . . . . . . . . . . . . . 517
C.3.4 Window (Ventana) . . . . . . . . . . . . . . . . . . . . . . 519
C.3.5 Help (Ayuda) . . . . . . . . . . . . . . . . . . . . . . . . . 519
C.4 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 519
C.5 Referencias bibliograficas . . . . . . . . . . . . . . . . . . . . . . 520
Bibliograf?a 521
Libro
PDF
Tamaño: 6.1 Mb
0 comentarios :
Publicar un comentario