fundamentos de programacion
DESCRIPTION
Las tecnicas y requerimientos necesario para programarTRANSCRIPT
-
9 7 8 8 4 4 8 1 6 1 1 1 8
Fundamentos de Programacin, 4. edicin es la ltima revisin de un ttulo clsico de progra-macin que ha introducido a millares de lectores de Espaa y Latinoamrica en el mundo de la progra-macin de computadoras. Esta nueva edicin se ha reescrito teniendo presentes las crticas y propuestas de alumnos, autodidactas y profesores que han estu-diado o utilizado esta obra. Las primeras ediciones se apoyaban en la programacin estructurada y len-guajes de programacin clsicos, como Pascal y C. En la 3. edicin se extendi el contenido al lenguaje C++ y a los entonces emergentes Java, C#, Visual Basic, VB.NET. En el siglo xxi, se sigue utilizando la programacin estructurada tanto en la enseanza como en el campo profesional, pero es ya el maduro paradigma orientado a objetos el que convive con la programacin clsica, por lo que se han actualizado las caractersticas del lenguaje algortmico UPSAM adaptado a los ms utilizados C/C++, Java y C#, as como extensiones de Visual Basic y VB.NET. Por otra parte, desde hace ya varios aos, el Lengua-je Unificado de Modelado (UML) se ha convertido en un estndar, indispensable en cualquier desarrollo de software moderno y en esta nueva revisin se han incorporado, con 3 captulos especficos, las propie-dades de UML 2.0. La edicin que tiene en sus ma-nos trata de aprovechar la experiencia y todas las cualidades de su ya larga vida, prxima a su vigsi-mo aniversario.
Caractersticas Contiene un captulo actualizado completo de intro-duccin a la computacin y a la programacin. Describe con gran cantidad de ejemplos y ejercicios las herramientas de programacin ms utilizadas en el aprendizaje de la informtica y la computacin, tales como diagramas de flujo y lenguaje algortmico (pseudocdigo). Incluye un curso completo de diseo y construccin de algoritmos. Dedica una parte completa al estudio de estructuras de datos fundamentales, tanto estticas (arrays o arreglos, registros, estructuras) como din-micas (listas, pilas, colas, rboles y grafos). Dedica un captulo entero al importante tema de la recursividad como herramienta para resolver proble-mas complejos. Una parte completa, tres captulos, se dedica al estudio de UML y la programacin orientada a ob-jetos. Incorpora un apndice completo del lenguaje algo-rtmico UPSAM 2.1. Se incluyen reglas de sintaxis a lo largo de todo el libro, con reglas y consejos de buenas prcticas de programacin.
Cuarta edicin
FUN
DAM
ENTO
S D
EPRO
GRAM
ACI
NLuis Joyanes Aguilar
Luis Joyanes Aguilar
FUNDAMENTOS DEPROGRAMACIN
4.a ed.
FUNDAMENTOS DE PROGRAMACIN
www.mcgraw-hill.es
Algoritmos, estructura de datos y objetos
Algoritmos, estructura de datos y objetos
ISBN: 978-84-481-6111-8
El libro dispone de un sitio web, Portal Tecnolgico y de Conocimiento, donde el lector en-contrar tutoriales, bibliografa, ejercicios y gran cantidad de apndices como ayuda al estu-diante, junto con innumerables herramientas de programacin, guas de sintaxis de diferentes lenguajes de programacin y referencias de las ltimas versiones y revisiones de UML 2.0.
www.mhe.es/joyanes
-
FUNDAMENTOS DE PROGRAMACIN
Algoritmos, estructura de datos y objetos
Cuarta edicin
-
FUNDAMENTOS DE PROGRAMACIN
Algoritmos, estructura de datos y objetos
Cuarta edicin
Luis Joyanes AguilarCatedrtico de Lenguajes y Sistemas Informticos
Facultad de Informtica, Escuela Universitaria de InformticaUniversidad Pontificia de Salamanca campus de Madrid
MADRID BOGOT BUENOS AIRES CARACAS GUATEMALA LISBOA MXICONUEVA YORK PANAM SAN JUAN SANTIAGO SO PAULO
AUCKLAND HAMBURGO LONDRES MILN MONTREAL NUEVA DELHI PARSSAN FRANCISCO SIDNEY SINGAPUR ST LOUIS TOKIO TORONTO
-
FUNDAMENTOS DE PROGRAMACIN. Algoritmos, estructura de datos y objetos. Cuarta edicin.
No est permitida la reproduccin total o parcial de este libro, ni su tratamientoinformtico, ni la transmisin de ninguna forma o por cualquier medio, ya sea elec-trnico, mecnico, por fotocopia, por registro u otros mtodos, sin el permiso previo y por escrito de los titulares del Copyright.
DERECHOS RESERVADOS 2008, respecto a la cuarta edicin en espaol, por McGRAW-HILL/INTERAMERICANA DE ESPAA, S. A. U.Edifi cio Valrealty, 1. plantaBasauri, 1728023 Aravaca (Madrid)
ISBN: 978-84-481-6111-8 Depsito legal: M.
Editores: Jos Luis Garca y Cristina SnchezTcnicos editoriales: Blanca Pecharromn y Mara LenPreimpresin: Nuria Fernndez SnchezCubierta: Escria Diseo Grfi coCompuesto en: Grfi cas Blanco, S. L.Impreso en:
IMPRESO EN ESPAA - PRINTED IN SPAIN
-
Contenido
Prefacio a la cuarta edicin ................................................................................................................................................... xvii
PARTE I. ALGORITMOS Y HERRAMIENTAS DE PROGRAMACIN ................................................ 1
Captulo 1. Introduccin a las computadoras y los lenguajes de programacin ................................................................ 3INTRODUCCIN ......................................................................................................................................................... 31.1. Qu es una computadora? .................................................................................................................................. 4
1.1.1. Origen de las computadoras .................................................................................................................... 51.1.2. Clasificacin de las computadoras ........................................................................................................... 6
1.2. Organizacin fsica de una computadora ............................................................................................................. 71.2.1. Dispositivos de Entrada/Salida (E/S): perifricos ................................................................................... 81.2.2. La memoria principal ............................................................................................................................... 91.2.3. Unidades de medida de memoria ............................................................................................................ 101.2.4. El procesador ........................................................................................................................................... 121.2.5. Propuestas para seleccin de la computadora ideal para aprender programacin o para actividades profesionales ............................................................................................................................................ 14
1.3. Representacin de la informacin en las computadoras ..................................................................................... 151.3.1. Representacin de textos ......................................................................................................................... 151.3.2. Representacin de valores numricos ...................................................................................................... 161.3.3. Representacin de imgenes .................................................................................................................... 171.3.4. Representacin de sonidos ....................................................................................................................... 18
1.4. Codificacin de la informacin ........................................................................................................................... 191.4.1. Sistemas de numeracin .......................................................................................................................... 19
1.5. Dispositivos de almacenamiento secundario (almacenamento masivo) .............................................................. 211.5.1. Discos magnticos ................................................................................................................................... 211.5.2. Discos pticos: CD-ROM y DVD ........................................................................................................... 211.5.3. Discos y memorias Flash USB ................................................................................................................ 241.5.4. Otros dispositivos de Entrada y Salida (E/S) .......................................................................................... 24
1.6. Conectores de dispositivos de E/S ....................................................................................................................... 261.6.1. Puertos serie y paralelo ............................................................................................................................ 261.6.2. USB .......................................................................................................................................................... 271.6.3. Bus IEEE Firewire 1394 ....................................................................................................................... 27
1.7. Redes, Web y Web 2.0 ......................................................................................................................................... 281.7.1. Redes P2P, igual-a-igual (peer-to-peer, P2P) .......................................................................................... 291.7.2. Aplicaciones de las redes de comunicaciones ......................................................................................... 291.7.3. Mdem ..................................................................................................................................................... 301.7.4. Internet y la World Wide Web ................................................................................................................. 30
1.8. El software (los programas) ................................................................................................................................. 321.8.1. Software del sistema ................................................................................................................................ 321.8.2. Software de aplicacin ............................................................................................................................. 331.8.3. Sistema operativo ..................................................................................................................................... 34
1.8.3.1. Multiprogramacin/Multitarea .................................................................................................. 351.8.3.2. Tiempo compartido (mltiples usuarios, time sharing) ........................................................... 351.8.3.3. Multiproceso ............................................................................................................................. 35
-
1.9. Lenguajes de programacin ............................................................................................................................... 361.9.1. Traductores de lenguaje: el proceso de traduccin de un programa ..................................................... 371.9.2. La compilacin y sus fases .................................................................................................................... 381.9.3. Evolucin de los lenguajes de programacin ........................................................................................ 391.9.4. Paradigmas de programacin................................................................................................................. 40
1.10. Breve historia de los lenguajes de programacin .............................................................................................. 42RESUMEN .................................................................................................................................................................... 43
Captulo 2. Metodologa de la programacin y desarrollo de software ............................................................................. 45
INTRODUCCIN ......................................................................................................................................................... 452.1. Fases en la resolucin de problemas ................................................................................................................... 46
2.1.1. Anlisis del problema .............................................................................................................................. 472.1.2. Diseo del algoritmo ................................................................................................................................ 482.1.3. Herramientas de programacin ................................................................................................................ 482.1.4. Codificacin de un programa ................................................................................................................... 512.1.5. Compilacin y ejecucin de un programa ............................................................................................... 522.1.6. Verificacin y depuracin de un programa .............................................................................................. 522.1.7. Documentacin y mantenimiento ............................................................................................................ 53
2.2. Programacin modular ......................................................................................................................................... 542.3. Programacin estructurada .................................................................................................................................. 54
2.3.1. Datos locales y datos globales ................................................................................................................. 552.3.2. Modelado del mundo real ........................................................................................................................ 56
2.4. Programacin orientada a objetos ........................................................................................................................ 562.4.1. Propiedades fundamentales de la orientacin a objetos .......................................................................... 572.4.2. Abstraccin .............................................................................................................................................. 572.4.3. Encapsulacin y ocultacin de datos ....................................................................................................... 582.4.4. Objetos ..................................................................................................................................................... 592.4.5. Clases ....................................................................................................................................................... 612.4.6. Generalizacin y especializacin: herencia ............................................................................................. 612.4.7 Reusabilidad ............................................................................................................................................. 632.4.8. Polimorfismo ............................................................................................................................................ 63
2.5. Concepto y caractersticas de algoritmos ............................................................................................................ 642.5.1. Caractersticas de los algoritmos ............................................................................................................. 652.5.2. Diseo del algoritmo ................................................................................................................................ 66
2.6. Escritura de algoritmos ........................................................................................................................................ 682.7. Representacin grfica de los algoritmos ............................................................................................................ 69
2.7.1. Pseudocdigo ........................................................................................................................................... 702.7.2. Diagramas de flujo ................................................................................................................................... 712.7.3. Diagramas de Nassi-Schneiderman (N-S) ............................................................................................... 80
RESUMEN .................................................................................................................................................................... 81EJERCICIOS ................................................................................................................................................................. 81
Captulo 3. Estructura general de un programa .................................................................................................................. 83
INTRODUCCIN ......................................................................................................................................................... 833.1. Concepto de programa ......................................................................................................................................... 843.2. Partes constitutivas de un programa .................................................................................................................... 843.3. Instrucciones y tipos de instrucciones ................................................................................................................. 85
3.3.1. Tipos de instrucciones ............................................................................................................................. 853.3.2. Instrucciones de asignacin ..................................................................................................................... 863.3.3. Instrucciones de lectura de datos (entrada) ............................................................................................. 873.3.4. Instrucciones de escritura de resultados (salida) ..................................................................................... 873.3.5. Instrucciones de bifurcacin .................................................................................................................... 87
3.4. Elementos bsicos de un programa ..................................................................................................................... 893.5. Datos, tipos de datos y operaciones primitivas ................................................................................................... 89
3.5.1. Datos numricos ...................................................................................................................................... 903.5.2. Datos lgicos (booleanos) ....................................................................................................................... 923.5.3. Datos tipo carcter y tipo cadena............................................................................................................. 92
vi Contenido
-
3.6. Constantes y variables ....................................................................................................................................... 923.6.1. Declaracin de constants y variables ..................................................................................................... 94
3.7. Expresiones ........................................................................................................................................................ 943.7.1. Expresiones aritmticas ......................................................................................................................... 953.7.2. Reglas de prioridad ................................................................................................................................ 973.7.3. Expresiones lgicas (booleanas) ........................................................................................................... 99
3.8. Funciones internas ............................................................................................................................................. 102 3.9. La operacin de asignacin ............................................................................................................................... 104
3.9.1. Asignacin aritmtica ............................................................................................................................ 1053.9.2. Asignacin lgica .................................................................................................................................. 1053.9.3. Asignacin de cadenas de caracteres..................................................................................................... 1053.9.4. Asignacin mltiple ............................................................................................................................... 1053.9.5. Conversin de tipo ................................................................................................................................. 106
3.10. Entrada y salida de informacin ........................................................................................................................ 1073.11. Escritura de algoritmos/programas .................................................................................................................... 108
3.11.1. Cabecera del programa o algoritmo .................................................................................................... 1083.11.2. Declaracin de variables ..................................................................................................................... 1083.11.3. Declaracin de constantes numricas .................................................................................................. 1093.11.4. Declaracin de constantes y variables carcter ................................................................................... 1093.11.5. Comentarios ......................................................................................................................................... 1103.11.6. Estilo de escritura de algoritmos/programas ....................................................................................... 111
ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 113CONCEPTOS CLAVE .................................................................................................................................................. 124RESUMEN .................................................................................................................................................................... 124EJERCICIOS ................................................................................................................................................................. 125
Captulo 4. Flujo de control I: Estructuras selectivas ......................................................................................................... 127INTRODUCCIN ......................................................................................................................................................... 1274.1. El flujo de control de un programa ...................................................................................................................... 1284.2. Estructura secuencial ........................................................................................................................................... 1284.3. Estructuras selectivas ........................................................................................................................................... 1304.4. Alternativa simple (si-entonces/if-then) .................................................................................................... 131
4.4.1. Alternativa doble (si-entonces-sino/if-then-else) .................................................................... 1324.5. Alternativa mltiple (segn_sea, caso de/case) ........................................................................................ 1374.6. Estructuras de decisin anidadas (en escalera) .................................................................................................... 1444.7. La sentencia ir-a (goto) ................................................................................................................................... 148ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 151CONCEPTOS CLAVE .................................................................................................................................................. 154RESUMEN .................................................................................................................................................................... 154EJERCICIOS ................................................................................................................................................................. 155
Captulo 5. Flujo de control II: Estructuras repetitivas ...................................................................................................... 157
INTRODUCCIN ......................................................................................................................................................... 1575.1. Estructuras repetitivas .......................................................................................................................................... 1585.2. Estructura mientras ("while") ..................................................................................................................... 160
5.2.1. Ejecucin de un bucle cero veces ............................................................................................................ 1625.2.2. Bucles infinitos ........................................................................................................................................ 1635.2.3. Terminacin de bucles con datos de entrada ........................................................................................... 163
5.3. Estructura hacer-mientras ("do-while") ................................................................................................. 1655.4. Diferencias entre mientras (while) y hacer-mientras (do-while): una aplicacin en C++ .................... 1675.5. Estructura repetir ("repeat") ........................................................................................................................ 1685.6. Estructura desde/para ("for") ........................................................................................................................ 171
5.6.1. Otras representaciones de estructuras repetitivas desde/para (for) .................................................... 1715.6.2. Realizacin de una estructura desde con estructura mientras ............................................................ 174
5.7. Salidas internas de los bucles .............................................................................................................................. 1755.8. Sentencias de salto interrumpir (break) y continuar (continue) ............................................................ 176
5.8.1. Sentencia interrumpir (break) ........................................................................................................... 1765.8.2. Sentencia continuar (continue) ......................................................................................................... 177
Contenido vii
-
5.9. Comparacin de bucles while, for y do-while: una aplicacin en C++ ..................................................... 1785.10. Diseo de bucles (lazos) .................................................................................................................................... 179
5.10.1. Bucles para diseo de sumas y productos ........................................................................................... 1795.10.2. Fin de un bucle .................................................................................................................................... 179
5.11. Estructuras repetitivas anidadas ......................................................................................................................... 1815.11.1. Bucles (lazos) anidados: una aplicacin en C++ ................................................................................ 183
ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 186CONCEPTOS CLAVE .................................................................................................................................................. 197RESUMEN .................................................................................................................................................................... 197EJERCICIOS ................................................................................................................................................................. 198REFERENCIAS BIBLIOGRFICAS .......................................................................................................................... 199
Captulo 6. Subprogramas (subalgoritmos): Funciones ..................................................................................................... 201
INTRODUCCIN ......................................................................................................................................................... 201 6.1. Introduccin a los subalgoritmos o subprogramas ............................................................................................ 202 6.2. Funciones ........................................................................................................................................................... 203
6.2.1. Declaracin de funciones ......................................................................................................................... 2046.2.2. Invocacin a las funciones ....................................................................................................................... 205
6.3. Procedimientos (subrutinas) ................................................................................................................................ 2106.3.1. Sustitucin de argumentos/parmetros .................................................................................................... 211
6.4. mbito: variables locales y globales ................................................................................................................... 2156.5. Comunicacin con subprogramas: paso de parmetros....................................................................................... 218
6.5.1. Paso de parmetros .................................................................................................................................. 2196.5.2. Paso por valor .......................................................................................................................................... 2196.5.3. Paso por referencia................................................................................................................................... 2206.5.4. Comparaciones de los mtodos de paso de parmetros .......................................................................... 2216.5.5. Sntesis de la transmisin de parmetros ................................................................................................. 223
6.6. Funciones y procedimientos como parmetros ................................................................................................... 2256.7. Los efectos laterales ............................................................................................................................................. 227
6.7.1. En procedimientos ................................................................................................................................... 2276.7.2. En funciones ............................................................................................................................................ 228
6.8. Recursin (recursividad) ...................................................................................................................................... 2296.9. Funciones en C/C++ , Java y C# ......................................................................................................................... 2316.10. mbito (alcance) y almacenamiento en C/C++ y Java ....................................................................................... 2336.11. Sobrecarga de funciones en C++ y Java .............................................................................................................. 235ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 238CONCEPTOS CLAVE .................................................................................................................................................. 242RESUMEN .................................................................................................................................................................... 242EJERCICIOS ................................................................................................................................................................. 243
PARTE II. ESTRUCTURA DE DATOS ......................................................................................................... 245
Captulo 7. Estructuras de datos I (arrays y estructuras) .................................................................................................... 247
INTRODUCCIN ......................................................................................................................................................... 2477.1. Introduccin a las estructuras de datos ................................................................................................................ 2487.2. Arrays (arreglos) unidimensionales: los vectores ................................................................................................ 2487.3. Operaciones con vectores .................................................................................................................................... 251
7.3.1. Asignacin ............................................................................................................................................... 2527.3.2. Lectura/escritura de datos ........................................................................................................................ 2537.3.3. Acceso secuencial al vector (recorrido) ................................................................................................... 2537.3.4. Actualizacin de un vector ...................................................................................................................... 255
7.4. Arrays de varias dimensiones .............................................................................................................................. 2587.4.1. Arrays bidimensionales (tablas/matrices) ................................................................................................ 258
7.5. Arrays multidimensionales .................................................................................................................................. 2607.6. Almacenamiento de arrays en memoria .............................................................................................................. 262
7.6.1. Almacenamiento de un vector ................................................................................................................. 2627.6.2. Almacenamiento de arrays multidimensionales ...................................................................................... 263
viii Contenido
-
7.7. Estructuras versus registros ............................................................................................................................... 2657.7.1. Registros ................................................................................................................................................ 265
7.8. Arrays de estructuras ......................................................................................................................................... 266 7.9. Uniones .............................................................................................................................................................. 268
7.9.1. Unin versus estructura ......................................................................................................................... 2687.10. Enumeraciones ................................................................................................................................................... 270ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 272CONCEPTOS CLAVE .................................................................................................................................................. 282RESUMEN .................................................................................................................................................................... 282EJERCICIOS ................................................................................................................................................................. 283
Captulo 8. Las cadenas de caracteres ................................................................................................................................ 285
INTRODUCCIN ......................................................................................................................................................... 2858.1. Introduccin ......................................................................................................................................................... 2868.2. El juego de caracteres .......................................................................................................................................... 286
8.2.1. Cdigo ASCII .......................................................................................................................................... 2868.2.2. Cdigo EBCDIC ...................................................................................................................................... 2878.2.3. Cdigo universal Unicode para Internet .................................................................................................. 2878.2.4. Secuencias de escape ............................................................................................................................... 289
8.3. Cadena de caracteres ............................................................................................................................................ 2898.4. Datos tipo carcter ............................................................................................................................................... 291
8.4.1. Constantes ................................................................................................................................................ 2918.4.2. Variables ................................................................................................................................................... 2918.4.3. Instrucciones bsicas con cadenas ........................................................................................................... 292
8.5. Operaciones con cadenas ..................................................................................................................................... 2938.5.1. Clculo de la longitud de una cadena ...................................................................................................... 2938.5.2. Comparacin ............................................................................................................................................ 2948.5.3. Concatenacin .......................................................................................................................................... 2958.5.4. Subcadenas ............................................................................................................................................... 2968.5.5. Bsqueda .................................................................................................................................................. 297
8.6. Otras funciones de cadenas .................................................................................................................................. 2978.6.1. Insertar ..................................................................................................................................................... 2988.6.2. Borrar ....................................................................................................................................................... 2988.6.3. Cambiar .................................................................................................................................................... 2998.6.4. Conversin de cadenas/nmeros .............................................................................................................. 300
ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 300CONCEPTOS CLAVE .................................................................................................................................................. 305RESUMEN .................................................................................................................................................................... 305EJERCICIOS ................................................................................................................................................................. 306
Captulo 9. Archivos (ficheros) .......................................................................................................................................... 307
INTRODUCCIN ......................................................................................................................................................... 3079.1. Archivos y flujos (stream): La jerarqua de datos ............................................................................................... 308
9.1.1. Campos .................................................................................................................................................... 3099.1.2. Registros .................................................................................................................................................. 3099.1.3. Archivos (ficheros) .................................................................................................................................. 3109.1.4. Bases de datos .......................................................................................................................................... 3109.1.5. Estructura jerrquica ................................................................................................................................ 3109.1.6. Jerarqua de datos .................................................................................................................................... 311
9.2. Conceptos y definiciones = terminologa ............................................................................................................ 3129.2.1. Clave (indicativo) ..................................................................................................................................... 3129.2.2. Registro fsico o bloque ........................................................................................................................... 3129.2.3. Factor de bloqueo..................................................................................................................................... 312
9.3. Soportes secuenciales y direccionables ............................................................................................................... 3139.4. Organizacin de archivos ..................................................................................................................................... 314
9.4.1. Organizacin secuencial .......................................................................................................................... 3149.4.2. Organizacin directa ................................................................................................................................ 3159.4.3. Organizacin secuencial indexada ........................................................................................................... 316
Contenido ix
-
9.5. Operaciones sobre archivos ............................................................................................................................... 3179.5.1. Creacin de un archivo .......................................................................................................................... 3189.5.2. Consulta de un archivo .......................................................................................................................... 3189.5.3. Actualizacin de un archivo .................................................................................................................. 3199.5.4. Clasificacin de un archivo ................................................................................................................... 3199.5.5. Reorganizacin de un archivo ............................................................................................................... 3209.5.6. Destruccin de un archivo ..................................................................................................................... 3209.5.7. Reunin, fusin de un archivo ............................................................................................................... 3209.5.8. Rotura/estallido de un archivo ............................................................................................................... 321
9.6. Gestin de archivos............................................................................................................................................ 3219.6.1. Crear un archivo .................................................................................................................................... 3229.6.2. Abrir un archivo ..................................................................................................................................... 3229.6.3. Cerrar archivos ....................................................................................................................................... 3249.6.4. Borrar archivos ...................................................................................................................................... 324
9.7. Flujos ................................................................................................................................................................. 3249.7.1. Tipos de flujos ....................................................................................................................................... 3259.7.2. Flujos en C++ ........................................................................................................................................ 3259.7.3. Flujos en Java ........................................................................................................................................ 3259.7.4. Consideraciones prcticas en Java y C# ................................................................................................ 326
9.8. Mantenimiento de archivos................................................................................................................................ 3269.8.1. Operaciones sobre registros ................................................................................................................... 328
9.9. Procesamiento de archivos secuenciales (algoritmos) ...................................................................................... 3289.9.1. Creacin ................................................................................................................................................. 3289.9.2. Consulta ................................................................................................................................................. 3299.9.3. Actualizacin ......................................................................................................................................... 332
9.10. Procesamiento de archivos directos (algoritmos) .............................................................................................. 3359.10.1. Operaciones con archivos directos ...................................................................................................... 3359.10.2. Clave-direccin .................................................................................................................................... 3419.10.3. Tratamiento de las colisiones .............................................................................................................. 3419.10.4. Acceso a los archivos directos mediante indexacin .......................................................................... 341
9.11. Procesamiento de archivos secuenciales indexados .......................................................................................... 3439.12. Tipos de archivos: consideraciones prcticas en C/C++ y Java ........................................................................ 344
9.12.1. Archivos de texto ................................................................................................................................. 3449.12.2. Archivos binarios ................................................................................................................................. 3459.12.3. Lectura y escritura de archivos ............................................................................................................ 345
ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 346CONCEPTOS CLAVE .................................................................................................................................................. 352RESUMEN .................................................................................................................................................................... 352EJERCICIOS ................................................................................................................................................................. 353
Captulo 10. Ordenacin, bsqueda e intercalacin ............................................................................................................. 355
INTRODUCCIN ......................................................................................................................................................... 35510.1. Introduccin ....................................................................................................................................................... 35610.2. Ordenacin ......................................................................................................................................................... 357
10.2.1. Mtodo de intercambio o de burbuja .................................................................................................. 35810.2.2. Ordenacin por insercin .................................................................................................................... 36310.2.3. Ordenacin por seleccin .................................................................................................................... 36510.2.4. Mtodo de Shell .................................................................................................................................. 36810.2.5. Mtodo de ordenacin rpida (quicksort) ........................................................................................... 370
10.3. Bsqueda ............................................................................................................................................................ 37410.3.1. Bqueda secuencial ............................................................................................................................. 37410.3.2. Bqueda binaria ................................................................................................................................... 37910.3.3. Bsqueda mediante transformacin de claves (hasting) ..................................................................... 383
10.4. Intercalacin ...................................................................................................................................................... 388ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 391CONCEPTOS CLAVE .................................................................................................................................................. 402RESUMEN .................................................................................................................................................................... 402EJERCICIOS ................................................................................................................................................................. 403
x Contenido
-
Captulo 11. Ordenacin, bsqueda y fusin externa (archivos) .......................................................................................... 405
INTRODUCCIN ......................................................................................................................................................... 40511.1. Introduccin ....................................................................................................................................................... 40611.2. Archivos ordenados ........................................................................................................................................... 40611.3. Fusin de archivos ............................................................................................................................................. 40611.4. Particin de archivos .......................................................................................................................................... 410
11.4.1. Clasificacin interna ............................................................................................................................ 41011.4.2. Particin por contenido ....................................................................................................................... 41011.4.3. Seleccin por sustitucin ..................................................................................................................... 41111.4.4. Particin por secuencias ...................................................................................................................... 413
11.5. Clasificacin de archivos ................................................................................................................................... 41411.5.1. Clasificacin por mezcla directa ......................................................................................................... 41411.5.2. Clasificacin por mezcla natural ......................................................................................................... 41711.5.3. Clasificacin por mezcla de secuencias equilibridas .......................................................................... 421
ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 422CONCEPTOS CLAVE .................................................................................................................................................. 426RESUMEN .................................................................................................................................................................... 426EJERCICIOS ................................................................................................................................................................. 427
Captulo 12. Estructuras dinmicas lineales de datos (pilas, colas y listas enlazadas) ........................................................ 429
INTRODUCCIN ......................................................................................................................................................... 42912.1. Introduccin a las estructuras de datos .............................................................................................................. 430
12.1.1. Estructuras dinmicas de datos ........................................................................................................... 43012.2. Listas .................................................................................................................................................................. 43112.3. Listas enlazadas ................................................................................................................................................. 43312.4. Procesamiento de listas enlazadas ..................................................................................................................... 436
12.4.1. Implementacin de listas enlazadas con punteros............................................................................... 43612.4.2. Implementacin de listas enlazadas con arrays (arreglos) .................................................................. 442
12.5. Listas circulares ................................................................................................................................................. 45012.6. Listas doblemente enlazadas ............................................................................................................................. 450
12.6.1. Insercin .............................................................................................................................................. 45112.6.2. Eliminacin.......................................................................................................................................... 452
12.7. Pilas.................................................................................................................................................................... 45212.7.1. Aplicaciones de las pilas ..................................................................................................................... 458
12.8. Colas .................................................................................................................................................................. 46012.8.1. Representacin de las colas ................................................................................................................. 46112.8.2. Aprovechamiento de la memoria ........................................................................................................ 467
12.9. Doble cola .......................................................................................................................................................... 468ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 469CONCEPTOS CLAVE .................................................................................................................................................. 476RESUMEN .................................................................................................................................................................... 477EJERCICIOS ................................................................................................................................................................. 477
Captulo 13. Estructuras de datos no lineales (rboles y grafos) ......................................................................................... 479
INTRODUCCIN ......................................................................................................................................................... 47913.1. Introduccin ....................................................................................................................................................... 48013.2. rboles ............................................................................................................................................................... 480
13.2.1. Terminologa y representacin de un rbol general ............................................................................ 48113.3. rbol binario ...................................................................................................................................................... 482
13.3.1. Terminologa de los rboles binarios .................................................................................................. 48313.3.2. rboles binarios completos ................................................................................................................. 48413.3.3. Conversin de un rbol general en rbol binario ................................................................................ 48513.3.4. Representacin de los rboles binarios ............................................................................................... 48913.3.5. Recorrido de un rbol binario ............................................................................................................. 493
13.4. rbol binario de bsqueda ................................................................................................................................. 49513.4.1. Bsqueda de un elemento .................................................................................................................... 49713.4.2. Insertar un elemento ............................................................................................................................ 49813.4.3. Eliminacin de un elemento ................................................................................................................ 499
Contenido xi
-
13.5. Grafos ................................................................................................................................................................ 50613.5.1. Terminologa de grafos ........................................................................................................................ 50613.5.2. Representacin de grafos .................................................................................................................... 509
ACTIVIDADES DE PROGRAMACIN RESUELTAS .............................................................................................. 512CONCEPTOS CLAVE .................................................................................................................................................. 516RESUMEN .................................................................................................................................................................... 516EJERCICIOS ................................................................................................................................................................ 517
Captulo 14. Recursividad..................................................................................................................................................... 519
INTRODUCCIN ......................................................................................................................................................... 51914.1. La naturaleza de la recursividad ........................................................................................................................ 52014.2. Recursividad directa e indirecta ........................................................................................................................ 524
14.2.1. Recursividad indirecta ......................................................................................................................... 52714.2.2. Condicin de terminacin de la recursin .......................................................................................... 528
14.3. Recursin versus iteracin ................................................................................................................................. 52814.4. Recursin infinita............................................................................................................................................... 53114.5. Resolucin de problemas complejos con recursividad ..................................................................................... 535
14.5.1. Torres de Hanoi ................................................................................................................................... 53514.5.2. Bsqueda binaria recursiva .................................................................................................................. 54014.5.3. Ordenacin rpida (QuickSort) ........................................................................................................... 54214.5.4. Ordenacin mergesort ......................................................................................................................... 545
CONCEPTOS CLAVE .................................................................................................................................................. 548RESUMEN .................................................................................................................................................................... 548EJERCICIOS ................................................................................................................................................................. 549PROBLEMAS ............................................................................................................................................................... 549
PARTE III. PROGRAMACIN ORIENTADA A OBJETOS Y UML 2.1 ................................................. 551
Captulo 15. Tipos abstractos de datos, objetos y modelado con UML 2.1 ........................................................................ 553
INTRODUCCIN ......................................................................................................................................................... 55315.1. Programacin estructurada (procedimental)...................................................................................................... 554
15.1.1. Limitaciones de la programacin estructurada ................................................................................... 55415.1.2. Modelado de objetos del mundo real .................................................................................................. 555
15.2. Programacin orientada a objetos ..................................................................................................................... 55615.2.1. Objetos ................................................................................................................................................. 55715.2.2. Tipos abstractos de datos: CLASES.................................................................................................... 558
15.3. Modelado e identificacin de objetos ................................................................................................................ 56015.4. Propiedades fundamentales de orientacin a objetos ........................................................................................ 561
15.4.1. Abstraccin .......................................................................................................................................... 56115.4.2. La abstraccin en el software .............................................................................................................. 56115.4.3. Encapsulamiento y ocultacin de datos .............................................................................................. 56215.4.4 Herencia ............................................................................................................................................... 56215.4.5. Reutilizacin o reusabilidad ................................................................................................................ 56315.4.6. Polimorfismo ....................................................................................................................................... 564
15.5. Modelado de aplicaciones: UML ...................................................................................................................... 56515.5.1. Lenguaje de modelado ........................................................................................................................ 56615.5.2. Qu es un lenguaje de modelado? ..................................................................................................... 566
15.6. Diseo de software con UML ........................................................................................................................... 56715.6.1. Desarrollo de software orientado a objetos con UML ........................................................................ 56815.6.2. Especificaciones de UML ................................................................................................................... 568
15.7. Historia de UML ................................................................................................................................................ 56815.7.1. El futuro de UML 2.1 .......................................................................................................................... 569
15.8. Terminologa de orientacin a objetos .............................................................................................................. 569CONCEPTOS CLAVE .................................................................................................................................................. 570RESUMEN .................................................................................................................................................................... 570EJERCICIOS ................................................................................................................................................................. 570
xii Contenido
-
Captulo 16. Diseo de clases y objetos: Representaciones grficas en UML .................................................................... 573
INTRODUCCIN ......................................................................................................................................................... 57316.1. Diseo y representacin grfica de objetos en UML ........................................................................................ 574
16.1.1. Representacin grfica en UML ......................................................................................................... 57516.1.2. Caractersticas de los objetos .............................................................................................................. 57616.1.3. Estado .................................................................................................................................................. 57716.1.4. Mltiples instancias de un objeto ........................................................................................................ 57916.1.5. Evolucin de un objeto ........................................................................................................................ 57916.1.6. Comportamiento .................................................................................................................................. 58016.1.7. Identidad .............................................................................................................................................. 58216.1.8. Los mensajes ....................................................................................................................................... 58216.1.9. Responsabilidad y restricciones .......................................................................................................... 584
16.2. Diseo y representacin grfica de clases en UML .......................................................................................... 58416.2.1. Representacin grfica de una clase ................................................................................................... 58516.2.2. Declaracin de una clase ..................................................................................................................... 58816.2.3. Reglas de visibilidad ........................................................................................................................... 59016.2.4. Sintaxis ................................................................................................................................................ 592
16.3. Declaracin de objetos de clases ....................................................................................................................... 59316.3.1. Acceso a miembros de la clase: encapsulamiento .............................................................................. 59516.3.2. Declaracin de mtodos ...................................................................................................................... 59716.3.3. Tipos de mtodos ................................................................................................................................. 601
16.4. Constructores ..................................................................................................................................................... 60216.4.1. Constructor por defecto ....................................................................................................................... 603
16.5. Destructores ....................................................................................................................................................... 60616.6. Implementacin de clases en C++ ..................................................................................................................... 607
16.6.1. Archivos de cabecera y de clases ........................................................................................................ 60816.6.2. Clases compuestas ............................................................................................................................... 609
16.7. Recoleccin de basura ....................................................................................................................................... 61016.7.1. El mtodo finalize () .................................................................................................................... 610
CONCEPTOS CLAVE .................................................................................................................................................. 611RESUMEN .................................................................................................................................................................... 611EJERCICIOS ................................................................................................................................................................. 613LECTURAS RECOMENDADAS ................................................................................................................................ 614
Captulo 17. Relaciones entre clases: Delegaciones, asociaciones, agregaciones, herencia ................................................ 615
INTRODUCCIN ......................................................................................................................................................... 61517.1. Relaciones entre clases ...................................................................................................................................... 61617.2. Dependencia ...................................................................................................................................................... 61617.3. Asociacin ......................................................................................................................................................... 617
17.3.1. Multiplicidad ....................................................................................................................................... 61917.3.2. Restricciones en asociaciones ............................................................................................................. 62017.3.3. Asociacin cualificada......................................................................................................................... 62017.3.4. Asociaciones reflexivas ....................................................................................................................... 62017.3.5. Diagrama de objetos ............................................................................................................................ 62117.3.6. Clases de asociacin ............................................................................................................................ 62117.3.7. Restricciones en asociaciones ............................................................................................................. 625
17.4. Agregacin ......................................................................................................................................................... 62617.4.1 Composicin ........................................................................................................................................ 628
17.5. Jerarqua de clases: generalizacin y especializacin ....................................................................................... 62917.5.1. Jerarquas de generalizacin/especializacin ...................................................................................... 631
17.6. Herencia: clases derivadas ................................................................................................................................. 63417.6.1. Herencia simple ................................................................................................................................... 63417.6.2. Herencia mltiple ................................................................................................................................ 63517.6.3. Niveles de herencia ............................................................................................................................ 63617.6.4. Declaracin de una clase derivada ...................................................................................................... 63817.6.5. Consideraciones de diseo .................................................................................................................. 639
17.7. Accesibilidad y visibilidad en herencia ............................................................................................................. 64017.7.1. Herencia pblica .................................................................................................................................. 640
Contenido xiii
-
17.7.2. Herencia privada .................................................................................................................................. 64017.7.3. Herencia protegida............................................................................................................................... 641
17.8. Un caso de estudio especial: herencia mltiple................................................................................................. 64217.8.1. Caractersticas de la herencia mltiple ................................................................................................ 644
17.9. Clases abstractas ................................................................................................................................................ 64517.9.1. Operaciones abstractas ........................................................................................................................ 646
CONCEPTOS CLAVE .................................................................................................................................................. 647RESUMEN .................................................................................................................................................................... 647EJERCICIOS ................................................................................................................................................................. 648
PARTE IV. METODOLOGA DE LA PROGRAMACIN Y DESARROLLO DE SOFTWARE ................. 649
Captulo 18. Resolucin de problemas y desarrollo de software: Metodologa de la programacin .................................. 653
INTRODUCCIN ......................................................................................................................................................... 653 18.1. Abstraccin y resolucin de problemas ........................................................................................................... 654
18.1.1. Descomposicin procedimental ......................................................................................................... 65418.1.2. Diseo descendente ........................................................................................................................... 65518.1.3. Abstraccin procedimental ................................................................................................................ 65618.1.4. Abstraccin de datos .......................................................................................................................... 65618.1.5. Ocultacin de la informacin ............................................................................................................ 65718.1.6. Programacin orientada a objetos ..................................................................................................... 65718.1.7. Diseo orientado a objetos ................................................................................................................ 657
18.2. El ciclo de vida del software ........................................................................................................................... 65818.2.1. El ciclo de vida del software tradicional (modelo en cascada) ........................................................ 65818.2.2. El proceso unificado .......................................................................................................................... 66018.2.3. Cliente, desarrollador y usuario ......................................................................................................... 661
18.3. Fase de anlisis: requisitos y especificaciones ................................................................................................ 662 18.4. Diseo .............................................................................................................................................................. 664 18.5. Implementacin (codificacin) ........................................................................................................................ 666 18.6. Pruebas e integracin ....................................................................................................................................... 666
18.6.1. Verificacin ........................................................................................................................................ 66718.6.2. Tcnicas de pruebas ........................................................................................................................... 667
18.7. Mantenimiento ................................................................................................................................................. 66918.7.1. La obsolescencia: programas obsoletos ............................................................................................ 66918.7.2. Iteracin y evolucin del software .................................................................................................... 669
18.8. Principios de diseo de sistemas de software .................................................................................................. 67018.8.1. Modularidad mediante diseo descendente ....................................................................................... 67018.8.2. Abstraccin y encapsulamiento ......................................................................................................... 67118.8.3. Modificabilidad .................................................................................................................................. 67118.8.4. Comprensibilidad y fiabilidad ........................................................................................................... 67218.8.5. Interfaces de usuario .......................................................................................................................... 67218.8.6. Programacin segura contra fallos .................................................................................................... 67318.8.7. Facilidad de uso ................................................................................................................................. 67318.8.8. Eficiencia ........................................................................................................................................... 67418.8.9. Estilo de programacin, documentacin y depuracin ..................................................................... 674
18.9. Estilo de programacin .................................................................................................................................... 67418.9.1. Modularizar un programa en subprogramas ...................................................................................... 67418.9.2. Evitar variables globales en subprogramas ......