Está en la página 1de 387
ao ClO Java 7 Sea rca Ceea tie Rica Peat oe en at Cereus Dictate Narre oe eee cen Incas Nee ree ecw) enfoque actual, a través de la Perea eit) PIP cake eeeate tie eres ene Ruud OMT eect ea kG acto ee eee atic 1) Cee erie Re tt anmery Oca icc) Peataeecn eran Bee eee ceric variedad de ejemplos practicos, Pree tet ete an aca er eeu na Ete ees ace! Ponte our AOR eri ac) e Pee Cold MARK ALLEN WEISS (eerie nee BPAY. Caracteristicas Ce eu ered Cee ame rake ac) entidad, cuyo cédigo original Peer eit euler NE Rc) y revisado por un programador cael eae tes MEE) eer Mec enue e Ce Seca m rien amen ted Pearce eek AUC} (ue See a ecu PCS ie ue cca BeOS cae acs? al final de cada capitulo para Peg teu eid es eee ete set iy eee ee es cuces asec ae entre los distintos capitulos. Nea COMM ele Me Mae Runa Cur University. Se doctoré en Ciencias de la Computacién en la Universidad de eee ae en RR eeu eel om eee les PCE restated catch aru cect Peer ace mane iis ie kt Cuca R Ck Ol ie lenguajes estructurados mas modernos, que se ha materializado en diversos —__ Secrets ER Met erage RSet a eae kel) ER hee Ce ie eit ea eee ee Reem eee eee TSBN a4 035-4 9 il il bere ESO NN Secon A Contenido Prélogo | ce . _ . XIX Un enfoque novedoso. were: “: ns wae XX Prerrequisitos.... cone 2 — XX Java.. . ce 7 ce = ‘XXI Organizacién del libro: —e . a ee XXII Organizacién del libro por capitulos........ suanmeeewe XXII Dependencias entre capitulos . woe ce . XXIV Partes independientes xe - — 2 XXIV Fundamentos matemiaticos ae ane ws . XXV Organizacién del curso....... XXV Ejercicios ne XXVI Detalles pedadégice . XXVI Disponibilidad del cédigo.. eons XXVL Gufa del profesor 0 eonaitiniitss., SOMME Agradecimientos . XXVIT Prélogo a la edicién en espafiol...... a wees XXIX, PRIMERA PARTE Un recorrido por Java 1. Java bésico. 3 1.2. El primer programa 5 1.2.1. Comentarios 5 1.2.2. main a e 6 Le Salida por pantalla 6 1.3.1. Los tipos primitivos . 6 1.3.3, Declaracidn e inicializacin de tipos primitivos .... z 1.3.4. Entrada y salida por terminal 8 a 1.4. Operadores basicos... ‘ 8 1.4.1. Operadores de asignacién 8 1.4.2, Operadores aritméticos binarios 9 1.4.3. Operadores unarios. 10 14.4. Conversiones de tipo o 10 1.5, _Instrucciones condicionales.. 1.5.1. Operadores relacionales y de igualdad u 15.2, Operadores l6gicos ul 15.3. La instruccién i£ 12 15.4. La instruccién white 13 155. La instruccién for. Fete nes ae 1.56. La instruccién do... TERRES . 15 15.7. break y continue... . i 15 1.5.8. La instrucein switch Fe — 16 1.5.9. El operador condicional ce ee _ - 17 1.6. Métodos 18 1.6.1. Sobrecarga de los nombres de los métodos . . 18 1.6.2. Clases de almacenamiento o cnn Fipiaeean 19) Resumen...... ce 19 Elementos del juego sexepuaistie - croncares OO) Errores comunes...... ss ce . nnmmacieess Bl En Internet 2 Ejercicios. 2 Bibliografia.... 2 4 2. Referencias 25 2.1, Qué es una referencia?.... 25 2.2. Nociones bisicas sobre objetos y referencias. 1 2.2.1, El operador punto (.) 28 2.2.2. Declaracién de objeto: 28 2.2.3, Recogida de basura 29 2.24. El significado de =........ 29 2.2.5. Paso de parémetros . 30 2.2.6. El significado di 31 2.2.7. Sobrecarga de operadores para objetos 31 2.3. Cadenas de caracteres . ce 31 2.3.1. Conceptos bisicos de la manipulacién de Strings... 32 2.3.2. Concatenacién de cadenas 32 2.3.3. Comparando cadenas......... ‘ sts le 33 2.34. Otros métodos del tipo String... . gczateroeats! 38 2.3.5. Conversidn entre cadenas y tipos primitivos.............. cee BB 24. Vectores. . 34 24.1. Declaraci6n, asignacin y métodos. 4 2.4.2. Expansién dinémica de vectores 36 24.3. Vectores multidimensionales .... 3 sities cia? 37 2.4.4. Argumentos de la linea de comandos. r 39 2.5. Manejo de excepciones 39 2.5.1. Procesamiento de excepciones. 39 2. La cléusula finally... 2.5.3. Excepciones mas comunes 4, Las cléusulas throw y throws .. 2.6. Entrada y salida.. 26.1. Operaciones bisicas de E/S 2.6.2. El objeto StringTokenizer.... 2.6.3. Ficheros de acceso secuencial .. Resumen Elementos del juego Errores_comunes En Internet... Ejercicios z Referencias seimewsrenarnaense Objetos y clases SI 3.1, {Qué es la programacién orientada a objetos? si 3.2. Un ejemplo sencillo 33 3.3. Javadoc : 34 34, Métodos 37 3.4.1, Constructores " 37 3.4.2. Métodos modificadores y de acceso 37 34.3. Salida y toString... cece cecceesseceseteetesesesseeeseeees 58 344. equals... 58 3.4.5. Métodos static....... 59 3.46. main.. 60 3.5. Paquetes 60 3.5.1, La directiva import 60 3.5.2. La instrucci6n package 61 3.5.3. La variable de entorno CLASSPATH. nei 62 3.54, Reglas de visibifidad amistosa dentro de un paquete 63 5. Compilacién separada 64 3.6. Construcciones adicionales 64 3.6.1, La referencia this. 64 3.62. La abreviatura this para constructores. 65 3.6.3. El operador instanceof . ha 65 3.6.4. Atributos estaticos... i 65 3.6.5. Inicializadores. estéticos 66 Resumen 67 Elementos del juego 68 Errores_ comunes 69 En Internet... 69 Ejercicios 70 Bibliogratia 1 Retenclalsa2 gcncsarvras mere eee us B 4.1. (Qué es la herencia? 3 4.2. Sintaxis basica de Java...... . . ‘caendectbitin a 76 4.2.1, Realas de visibilidad Tec RETR lscaeaa eee 16 4.2.2. El constructor y super 4.2.3, Métodos y clases finales .... 4.2.4. Sobreescribiendo un método 4.2.5. Métodos y clases abstractos 4.3. Ejemplo: extensidn de la clase Figura...... 4.3.1. Disgresién: una introducci6n a ta ordenacién... 44. Herencia miltiple 45. El interfaz revere 4.5.1. Especificacién de una interfaz 4.5.2. Implementacién de una interfaz 4.5.3. Varios inferfaces....... 4.6. Implementacién de componentes genéricas. Resumen... Seance ei Elementos del juego..... vee Errores_ comunes En Internet Ejercicios......, Bibliografia.... SEGUNDA PARTE Algoritmos y fundamentos de programacién Analisis de algoritmos 5.1. {Qué es el andlisis de algoritmos? 5.2. Ejemplos de tiempo de ejecucién de algoritmos 5.3. El problema de la subsecuencia de suma maxima 5.3.1. El algoritmo O(N‘) obvio 5.3.2. Un algoritmo mejorado O( 5.33. Un algoritmo lineal 54, Reglas generales para la notacién O 5.5. Logaritmos 5.6. Problema de la bisqueda estética 5.6.1, Buisqueda secuencial 5.6.2, Baisqueda binaria 5.6.3, Buisqueda interpolada... 5.7. Comprobar el andlisis de un algoritmo cis 5.8. Limitaciones del andlisis 0 eae zi Resumen - Elementos del juego......... on RoR 7 Errores comunes. En Internet Ejercicios. Bibliografia Estructuras de datos 6.1. {Por qué necesitamos estructuras de datos? . 6.2. Las pilas 6.2.1. Las pilas y los lenguajes de programacién... 7. 8. 63. Las colas . 6.4. Listas enlazadas 6.5. Arboles generales sepazn 6.6. Arboles binarios de biisqueda........ 6.7. Tablas hash 6.8. Colas de prioridad Resumen... spat SEEREBIRES . Elementos del juego... Errores_ comunes pounce Eli INCRE cercecearversvexsnananaeta Ejercicios Bibliografia Recursion...... eens ensisSSRTEHER TA. (Qué es la recursién?. 7.2. Fundamentos: demostraciones por indu 7.3. Recursién basica oe . 73.1, Impresién de ntimeros en cualquier base we 7.3.2. (Por qué funciona? .........606+ 7 7.3.3. Cémo funciona na 7.34. Demasiada recursi6n puede ser pairs 8 7.3.5. Ejemplos adicionales 74. Aplicaciones numéricas 74.1. Aritmética modular... 7.4.2. Exponenciacin modular : 7.4.3, Maximo comiin divisor ¢ inversos multiplicativos . 7.4.4. Bl sistema de criptografia RSA 7.5. Algoritmos divide y vencerds 7.5.1. El problema de la subsecuencia de suma méxima... 7.5.2. Anilisis de un algoritmo divide y vencerés sencillo 1 Uina cota superior general para los tiempos de ejecucidn de fos algoritmos di- vide y venceris 7.6. Programacién dinémica 7.1. Algoritmos de vuelta atris Resumen Elementos del juego Errores. comunes En Internet Ejercicios. : Bibliograffa Algoritmos de ordenacién 8.1. {Por qué es importante la ordenacién? 8.2. Preliminares. 83. Andlisis de la ordenaci6n por insercin y otras ordenaciones simples. 8.4, Shellsort.. 8.4.1. Rendimiento de Shellson 165 165 166 170 170 172 174 175 176 180 181 181 183 185 188 188 190 195 197 201 205 205 206 207 207 2u 213 213 215 215 217 219 10. 8.5. Mergesort 8.5.1. Mezela lineal de vectores ordenados.. 8.5.2. El algoritmo mergesort 8.6. Quicksort 5 8.6.1. El algoritmo quicksort 8.6.2. Andlisis de quicksort.. 8.6.3. Seleccionando el pivote. 8.6.4. Estrategia de particién 8.6.5. Elements iguales al pivote 8.6.6. Particién con Ia mediana de tres 8.6.7. Vectotes _pequefios... 8.6.8. Rutina de quicksort en Java 8.7. Seleccién répida..... 88. Una cola inferior para la ordenacién Resumen... Elementos del juego... Errores comunes. sesame — En Internet ea — = . Ejercicios.... Bibliografia Nameros aleatorios 249, 9.1. {Por qué son necesarios los ntimeros aleatorios? . coe 249 9.2. Generadores de niimeros aleatorios 2 9.3. Niimeros aleatorios no uniformes....... 9.4. Generacién de una permutaci6n aleatoria 9.5. Algoritmos aleatorios... i oman 9.6. Test aleatorio de primalidad. Resumen - Elementos del juego. Errores comunes En Internet... Ejercicios Bibliografia.... TERCERA PARTE Aplicaciones Juegos y diversién 23 10.1. Sopas de letras a : foe 2B 10.1.1. Teorfa.. . womens 10TH 10.1.2. Implementacién en Java oxragy, 276 10.2. El juego de las tres en raya 281 10.2.1. Poda alfa-beta. ... 281 10.2.2, Tablas de transposicién 282 10.3. El ajedrez 285 Resumen . 287 Elementos del juego 287 12. 13. Errores comunes.. En Internet . Ejercicios Bibliografia Las pilas y los compiladores ............2.....202- 11.1, Anatizador de simbolos equilibrados 11.1.1, El algoritmo basico 11.1.2. Implementacién 11.2. Una calculadora sencilla 11.2.1, Méquinas postfijas 11.2.2. Conversién de notacién infija a posttija 11.2.3, Implementacién 11.2.4, Arboles sintécticos de expresiones.. Resumen... Elementos del juego Enrorescomunes. vo En Internet... ee Ejercicios Bibliografia. . Utilidades . 12.1, Compresién de ficheros 12.1.1. Cédigos sin prefijos. 12.1.2. Algoritmo de Huffman... 12.1.3. La fase de codificaci6n.. 12.1.4, La fase de decodificacién 12.1.5. Consideraciones précticas 12.2. Generador de referencias cruzadas. 12.2.1, Tdeas bisicas .... 122.2. Implementacién en Java Resumen... Elementos del juego Errorescomunes. En Internet Ejercicios Bibliograffa.... Simulacién 13.1. El problema Josephus 13.1.1. La soluci6n simple....... 13.1.2. Un algoritmo mis eficiente 13.2. Simulacién dirigida por eventos. 13.2.1. Ideas basicas 13.2.2. Bernt: simulacién de un banco de médems . Resumen Elementos del juego - 15. 16. Errores comunes. En Internet Ejercicios.. Grafos y caminos 14.1. Defin : 14.1.1. Representacin 14.2. Problema del camino minimo sin pesos. 142.1. Teorfa 14.2.2. Implementacién en Java. 14.3. Problema de los caminos minimos con pesos positivos. 143.1, Teorfa: algoritmo de Dijkstra...... 143.2. Implementaci6n en Java 3 te 14.4. Problema del camino minimo con costes negativos...- 14.4.1. Teorfa 144.2. Implementacién en Java 14.5. Problemas de caminos en grafos aci 14.5.1, Ordenaci6n topoldgica . I Teoria del algoritmo de caminos minimos con un grafo acielico 14.5.3. Implementaci6n en Java 1454. Una uplicacién: anilisis de caminos eriticos.. Resumen... Elementos del juego. Errores comunes..... En Internet...... Ejercicios . fe [BIB grat en-aumneawsicsanicurceveri Seen, (CUARTA PARTE Implementaciones Plas y COO ie recrssnsanenemsconens soanttnizialc ceceeeee 395 15.1. Implementacién dinémica de vectores .. 15.1. Pilas . 15.1.2. Colas 15.2. Implementaciones con listas enlazadas 15.2.1. Pilas 15.2.2. Colas 153. Comparacién de los dos métodos. 15.4, Colas dobles Resumen “ Elementos del juego. Errores comunes 412 En Internet a 413 Ejercicios..... nn 13 Listas enlazadas 4s 16.1. Ideas basicas..... 4s 6.1.1. Nodos cabecera.. ' . 417 7. 18. 16.2. 16.3. 164. 16.1.2, Implementacién en Java... Listas doblemente enlazadas y listas enlazdas circulares. Listas enlazadas ordenadas Resumen Elementos del juego... Errores comunes En Internet.....- Ejercicios Clases iteradoras generales.... Definiciones Implementacién . Una aplicacié: binarios. y recursi6n Recorrido de arboles: clases iteradoras .. Arboles... 17.1, Arboles 11d 171.2. 17.13. 17.2. Arboles 17.3. Arboles 174, 174.1 17.4.2. 17.43. 1744. Resumen Elementos del juego Errores. comunes En Internet Ejercicios... Recorrido en postorden - Recorrido en orden simétrico Recorrido en preorden....... Recorrido por niveles Arboles binarios de busqueda 18.1 18.2. 18.3, 184. 18.5. 18.6. Ideas bisicas..... 18.1.1 18.1.2. Baisqueda por posicis 18.2.1 Analisis de las operaciones de los arbotes binarios de basqueda Las operaciones. Implementacién en Java. n en el orden. Implementacién en Java. Arboles AVL 18.4.1. Propiedades 18.4.2. Rotacién simple 18.4.3. Rotacién doble 18.4.4. Resumen de la insereién enun frbol AVL Arboles. rojinegros 18.5.1, Insercién ascendente . 18.5.2. Arboles rojinegros descendentes 18.5.3. Implementaci6n en Java... 18.5.4. Eliminacién descendente AA-Arboles .. 18.6.1. Insercién 18.6.2. Eliminacién 418 419 426 428 430 431 431 431 432 435 435 435 437 437 441 448. 450 453 457 458 459 461 461 462 462 463 467 467 468 470 477 477 481 484 485 487 490 492 493 495 497 503 505 506 509 19. 20. 18.6.3. Implementacién en Java.........cccececeeeeeee 509 18.7. B-Arboles “. 2 walt L 512 Resumen 7 : 519 Elementos del “juego . . La . eee 520 Errores comunes .. 521 En Internet . eee sees wai 521 Ejercicios — a sine S22 Bibliogratia 524 Tablas hash... 19.1. Ideas basicas 19.2. Funcién de localizacién. 19.3. Exploracién lineal 19.3.1. Anilisis de la exploraci6n lineal .. 19.3.2. Lo que sucede realmente: la agrupacién primaria 19.3.3. Analisis de la operacién buscar 19.4. Exploracién cuadratica 19.4.1. Implementacién en Java... 19.4.2. Anilisis de In exploracién cuadrética 19.5. Hashing enlazado Resumen Elementos del juego... Errores comunes.. En Internet Ejercicios.. Bibliogratta Una cola de prioridad: el monticulo 553 20.1. Ideas basieas 553 20.1.1. Propiedad estructural st 554, 20.1.2. Propiedad de ordenacién de los monticulos. 555 20.1.3. Operaciones permitidas. ‘ 556 20.2. Implementacién de las operaciones baSiCaS............2.00 = srs 559 20.2.1, insertar . 559 20.2.2. eliminarMin = 562 203, arregLartonticulo: construccién en tiempo lineal del monticulo S64 20.4. Operaciones avanzadas: reducirClave y mezclar. nse 568 20.5. Ordenacién interna: método del monticulo . - 568 20.6. Ordenacién externa... - tease sil 20.6.1. Por qué necesitamos nuevos algoritmos 2.0.2... asda 572 20.6.2. Modelo de ordenacién externa... : - 52 20.6.3, El algoritmo sencillo.. 572 20.64. Mercla multiaria arenes cols nates STE 20.6.5. Mezcla multifase exdtcticdadst ex OS 20.6.6. Selecci6n del reemplazo............. Bid oo . 516 Resumen... cece ceceeeee coe . TEN AM STS Elementos del juego. . eats ee 578 Errores comunes BBs 579 21. 22. 23. En Internet Ejercicios vies 3 < Bibliografia. .. . Tas QUINTA PARTE Estructuras de datos avanzadas Arboles de ensanchamiento...... aa cosas weaned 21.1. Auto-ajustamiento y anélisis amortizado . 21.1.1. Cotas de tiempo amortizadas 311.2 Una estrategia simple de auto-ajustamiento (que no funciona) 21.2. Arboles bisicos de ensanchamiento ascendente . 21.3. Operaciones basicas de los drboles de ensanchamiento........ i 21.4. Analisis del ensanchamiento ascendente .. 21.4.1. Demostracién de fa cota de ensanchamiento 21.5, Arboles de ensanchamiento descendent 21.6. Implementacién de los drboles con ensanchamiento descendente 2U7 Comparaciones de los arboles de ensanchamiento con otros drboles de bisqueda.. Resumen . Elementos del juego. Errores_comunes En Internet..........+ Ejercicios....... were Bibliografia. Colas de prioridad con mezcla.. 22.1. Los monticulos sesgados 22.1.1. La mezcla es importante 22.12, Mezcla simple de drboles con ordenacién de monticulos 22.1.3. El monticulo sesgado: una modificaci6n sencilla. 22.1.4. Analisis del monticulo sesgado... 22.2. Los monticulos de emparejamientos . 22.2.1. Operaciones del monticulo de emparejamientos y teoria. 22.2.2. Implementacién del monticulo de emparejamientos. 22.2.3. Aplicacion: el algoritmo de Dijkstra para la obtencién de caminos minimos. Resumen Elementos del juego Errores_ comunes En Internet... Ejercicios.. Bibliografia Estructura de particién 23.1. Relaciones de equivalencia .. 23.2. Equivalencia dinamicas y dos aplica 23.2.1. Aplicacién #1: arboles de recubrimiento minimo : 332.2, Aplicacién #2: el problema del antecesor comiin ms prOximo.- 579 580 583 587 587 588 589 591 593 594 597 613 613 613 614 615 616 618 618 620 626 629 629 630 630 630 631 633 633 634 635 637

También podría gustarte