Suscríbete a nuestro boletín de novedades y recíbelo en tu email.
PRÓLOGO xv PARTE I Resolución de problemas con software 1 CAPÍTULO 1 Fundamentos de computadoras y de lenguajes de programación 2 Introducción 2 1.1 Las computadoras en perspectiva 3 Generaciones de computadoras 3 1.2 Las computadoras modernas: una breve taxonomía 5 1.3 Estructura de una computadora 6 1.4 Hardware 7 Unidad central de proceso (CPU) 8 Memoria de la computadora 9 Dispositivos de entrada y salida 12 Dispositivos de almacenamiento secundario 12 Dispositivos de comunicación 13 1.5 Software: conceptos básicos y clasificación 13 Software de sistema 14 Software de aplicaciones 14 1.6 Sistema operativo 15 1.7 El lenguaje de la computadora 17 Representación de la información en las computadoras (códigos de caracteres) 18 Los lenguajes de programación ensambladores y de alto nivel 18 El proceso de programación 20 1.8 Internet y la Web 21 La revolución Web 2.0 22 Social Media 22 Desarrollo de programas web 23 La Web Semántica y la Web 3.0 23 1.9 Cloud computing (computación en la nube) 23 Software como servicio (SaaS) 24 1.10 Movilidad: tecnologías, redes e internet móvil 24 Redes inalámbricas 24 Redes móviles 25 Sistemas operativos móviles 25 Aplicaciones móviles 25 1.11 Geolocalización y realidad aumentada 26 ¿Qué es la realidad aumentada? 26 1.12 Internet de las cosas 26 1.13 Big data. Los grandes volúmenes de datos 27 1.14 Lenguajes de programación 27 Traductores de lenguaje: el proceso de traducción de un programa 29 La compilación y sus fases 29 1-15 Evolución de los lenguajes de programación 31 1.16 Paradigmas de programación 32 Lenguajes imperativos (procedimentales) 32 Lenguajes declarativos 32 Lenguajes orientados a objetos 33 Resumen 33 CAPÍTULO 2 Algoritmos, programas y metodología de la programación 34 Introducción 34 2.1 Resolución de problemas con computadoras: fases 34 Análisis del problema 35 Diseño del problema 36 Herramientas gráficas y alfanuméricas 37 Codificación de un programa 39 Compilación y ejecución de un programa 40 Verificación y depuración de un programa 40 Mantenimiento y documentación 42 2.2 Algoritmo: concepto y propiedades 42 Características de los algoritmos 43 2.3 Diseño de algoritmos 44 2.4 Escritura de algoritmos 45 2.5 Representación gráfica de los algoritmos 47 Pseudocódigo 47 Diagramas de flujo 48 Diagramas de Nassi-Schneiderman (N-S) 57 2.6 Metodología de la programación 58 Programación modular 58 Programación estructurada 58 Programación orientada a objetos 60 2.7 Herramientas de programación 61 Editores de texto 61 Programa ejecutable 62 Proceso de compilación/ejecución de un programa 62 Resumen 64 Ejercicios 64 Actividades de aprendizaje 65 Actividades complementarias 66 PARTE II Programación en C 67 CAPÍTULO 3 El lenguaje C: elementos básicos 68 Introducción 68 3.1 Estructura general de un programa en C 68 Directivas del preprocesador 70 Declaraciones globales 71 Función main () 72 Funciones definidas por el usuario 72 Comentarios 74 3.2 Creación de un programa 75 3.3 El proceso de ejecución de un programa en C 76 3.4 Depuración de un programa en C 79 Errores de sintaxis 79 Errores lógicos 79 Errores de regresión 80 Mensajes de error 80 Errores en tiempo de ejecución 80 3.5 Pruebas 81 3.6 Los elementos de un programa en C 81 Tokens (elementos léxicos de los programas) 82 Identificadores 82 Palabras reservadas 82 Comentarios 83 Signos de puntuación y separadores 83 Archivos de cabecera 83 3.7 Tipos de datos en C 83 Enteros (int) 84 Tipos de coma flotante (float/double) 85 Caracteres (char) 86 3.8 El tipo de dato lógico 87 Escritura de valores lógicos 88 3.9 Constantes 88 Constantes literales 88 Constantes definidas (simbólicas) 91 Constantes enumeradas 91 Constantes declaradas const y volatile 91 3.10 Variables 92 Declaración 93 Inicialización de variables 94 Declaración o definición 95 Duración de una variable 95 Variables locales 95 Variables globales 96 3.11 Entradas y salidas 97 Salida 97 Entrada 99 Salida de cadenas de caracteres 100 Entrada de cadenas de caracteres 100 Resumen 101 Ejercicios 102 CAPÍTULO 4 Operadores y expresiones 103 Introducción 103 Operador de asignación 104 Operadores aritméticos 105 Asociatividad 107 Uso de paréntesis 107 Operadores de incrementación y de incrementación 108 Operadores relacionales 111 Operadores lógicos 112 Asignaciones booleanas (lógicas) 114 Operador condicional? 115 4.8 Operador coma 116 4.9 Operadores especiales: ( ), [ ] 116 El operador ( ) 116 El operador [ ] 116 4.10 Operador sizeof 117 4.11 Conversiones de tipos 118 Conversión implícita 118 Reglas 118 Conversión explicita 118 4.12 Prioridad y asociatividad 119 Resumen 120 Ejercicios 120 Problemas 121 CAPÍTULO 5 Estructuras de selección: sentencias i f y switch 123 Introducción 123 5.1 Estructuras de control 123 5.2 La sentencia i f 124 5.3 Sentencia i f de dos opciones: i f-else 126 5.4 Sentencias i f-else anidadas 129 Sangría en las sentencias i f anidadas 130 Comparación de sentencias i f anidadas y secuencias de sentencias i f 131 5.5 Sentencia de control switch 132 Caso particular de case 136 Uso de sentencias switch en menús 137 5.6 Expresiones condicionales: el operador? 137 5.7 Evaluación en cortocircuito de expresiones lógicas 138 5.8 Puesta a punto de programas 139 Estilo y diseño 139 5.9 Errores frecuentes de programación 140 Resumen 142 Ejercicios 142 Problemas 144 CAPÍTULO 6 Estructuras de control: bucles 145 Introducción 145 6.1 Sentencia while 145 Operadores de incremento y decremento (+ +, —) 148 Terminaciones anormales de un bucle (c/c/o llave) 149 Diseño eficiente de bucles 149 Bucles while con cero iteraciones 150 Bucles controlados por centinelas 150 Bucles controlados por indicadores (banderas) 151 La sentencia break en los bucles 152 Bucles while (true) 153 6.2 Repetición: el bucle for 154 Diferentes usos de bucles for 158 6.3 Precauciones en el uso de for 159 Bucles infinitos 160 Los bucles for vacíos 161 Sentencias nulas en bucles for 161 Sentencias break y continue 162 6.4 Repetición: el bucle do-while 163 Diferencias entre while y do-while 164 6.5 Comparación de bucles while,for y do-while 165 6.6 Diseño de bucles 165 Final de un bucle 166 Bucles for vacíos 167 6.7 Bucles anidados 168 6.8 Enumeraciones 170 Resumen 172 Ejercicios 172 Problemas 174 CAPÍTULO 7 Funciones y recursividad 176 Introducción 176 7.1 Concepto de función 177 7.2 Estructura de una función 178 Nombre de una función 179 Tipo de dato de retorno 180 Resultados de una función 180 Llamada a una función 181 7.3 Prototipos de las funciones 184 Prototipos con un número no especificado de para metros 186 7.4 Parámetros de la función 187 Paso de parámetros por valor 188 Paso de parámetros por referencia 189 Diferencias entre paso de variables por valor y por referencia 189 Parámetros const de una función 191 7.5 Funciones en línea, macros con argumentos 191 Creación de macros con argumentos 193 7.6 Ámbito (alcance) de una variable 194 Ámbito del programa 194 Ámbito del archivo fuente 195 Ámbito de una función 195 Ámbito de bloque 195 Variables locales 196 7.7 Clases de almacenamiento 196 Variables automáticas 196 Variables externas 196 Variables registro 197 Variables estáticas 197 7.8 Concepto y uso de Funciones de biblioteca 198 7.9 Funciones de carácter 199 Comprobación alfabética y de dígitos 199 Funciones de prueba de caracteres especiales 201 7.10 Funciones de conversión de caracteres 201 Funciones numéricas 202 Funciones matemáticas de carácter general 202 Funciones trigonométricas 204 Funciones logarítmicas y exponenciales 204 7.11 Funciones aleatorias 205 Funciones de utilidad 206 7.12 Visibilidad de una función 208 7.13 Compilación separada 208 7.14 Funciones recursivas 210 Recursividad indirecta: funciones mutuamente recursivas 211 Condición de terminación de la recursión 213 7.15 Recursión versus iteración 213 Directrices en la toma de decisión iteración/recursión 214 7.16 Recursión infinita 215 Resume 216 Ejercicios 217 Problemas 219 CAPÍTULO 8 Arreglos (arrays), lista y tablas. Cadenas 221 Introducción 8.1 Arreglos (arrays) 222 Declaración de un arreglo o array 223 Subíndices de un arreglo 223 Almacenamiento en memoria de los arreglos (arra
ys) 224 El tamaño de los arreglos 225 Verificación del rango del índice de un arreglos 225 8.2 Inicialización de un arreglo (array) 225 8.3 Arreglos multidimensionales 228 Inicialización de arreglos multidimensionales 229 Acceso a los elementos de los arreglo bidimensionales 230 Lectura y escritura de elementos de arreglos bidimensionales 230 Acceso a elementos mediante bucles 231 Arreglo de más de dos dimensiones 232 Proceso de un arreglo de tres dimensiones 233 8.4 Utilización de arreglos como parámetros 234 Precauciones 237 Paso de cadenas como parámetros 238 8.5 Concepto de cadena 238 Declaración de variables de cadena 239 Inicialización de variables de cadena 240 8.6 Lectura de cadenas 241 Función gets ( ) 241 Función get char ( ) 243 Función putchar ( ) 243 Función puts ( ) 244 8.7 La biblioteca string. H 245 Utilización del modificador const con cadenas 245 8.8 Arreglos y cadenas como parámetros de Funciones 245 8.9 Asignación de cadenas 247 Función strncpy ( ) 248 8.10 Longitud y concatenación de cadenas 249 Función strlen ( ) 249 Funciones strcat ( ) y strncat ( ) 249 8.11 Comparación de cadenas 250 Función strcmp ( ) 250 Función strncmp ( ) 251 8.12 Conversión de cadenas a números 251 Función atoi ( ) 251 Función atof ( ) 252 Función atol ( ) 252 Función strtol ( ) y strtoul ( ) 253 Función strtod ( ) 254 Entrada de números y cadenas 255 Resumen 256 Ejercicios 256 Problemas 258 CAPÍTULO 9 Algoritmos de ordenación y búsqueda 260 Introducción 260 9.1 Ordenación 260 9.2 Ordenación por burbuja 261 Algoritmo de la burbuja 262 Codificación del algoritmo de la burbuja 263 Análisis del algoritmo de la burbuja 264 9.3 Ordenación por selección 265 Algoritmo de selección 266 Codificación del algoritmo de selección 266 9.4 Ordenación por inserción 266 Algoritmo de ordenación por inserción 266 Codificación del algoritmo de inserción 267 9.5 Ordenación rápida (quicksort) 267 Algoritmo quicksort 269 Codificación del algoritmo quicksort 270 Análisis del algoritmo quicksort 272 9.6 Búsqueda en listas: búsqueda secuencial y binaria 273 Búsqueda binaria 273 Algoritmo y codificación de la búsqueda binaria 273 Análisis de los algoritmos de búsqueda 275 Resumen 277 Ejercicios 277 Problemas 278 CAPÍTULO 10 Estructuras y uniones 280 Introducción 280 10.1 Estructuras 280 Declaración de una estructura 281 Definición de variables de estructuras 282 Uso de estructuras en asignaciones 283 Inicialización de una declaración de estructuras 283 El tamaño de una estructura 284 10.2 Acceso a estructuras 285 Almacenamiento de información en estructuras 285 Lectura de información de una estructura 286 Recuperación de información de una estructura 287 10.3 Sinónimo de un tipo de datos: typedef 287 10.4 Estructuras anidadas 288 Ejemplo de estructuras anidadas 290 10.5 Arreglos de estructuras 291 10.6 Arreglos como miembros 292 10.7 Utilización de estructuras como parámetros 293 10.8 Uniones 294 10.9 Tamaño de estructuras y uniones 295 Resumen 296 Ejercicios 296 Problemas 297 CAPÍTULO 11 Apuntadores (punteros) 299 Introducción 299 11.1 Direcciones en memoria 300 11.2 Concepto de apuntador (puntero) 301 Declaración de apuntadores 302 Inicialización (iniciación) de apuntadores 303 Indirección de apuntadores 304 Apuntadores y verificación de tipos 305 11.3 Apuntadores NULL y void 306 11.4 Apuntadores a apuntadores 307 11.5 Apuntadores y arreglos 308 Nombres de arreglos como apuntadores 308 Ventajas de los apuntadores 308 11.6 Arreglos (arrays) de apuntadores 309 Inicialización de un arreglo de apuntadores a cadenas 310 11.7 Apuntadores a cadenas 310 Apuntadores versus arreglos 310 11.8 Aritmética de apuntadores 311 Una aplicación de apuntadores: conversión de caracteres 312 11.9 Apuntadores constantes frente a apuntadores a constantes 313 Apuntadores constantes 313 Apuntadores a constantes 314 Apuntadores constantes a constantes 315 11.10 Apuntadores como argumentos de Funciones 316 11.11 Apuntadores a Funciones 317 Inicialización de un apuntador a una función 318 11.12 Apuntadores a estructuras 321 11.13 Asignación dinámica de la memoria 322 Almacén libre (free store) 322 11.14 Función de asignación de memoria malloc ( ) 322 Asignación de memoria de un tamaño desconocido 326 Uso de malloc( ) para arreglos multidimensionales 326 11.15 La función free ( ) 327 11.16 Funciones de asignación de memoria calloc( ) y realloc ( ) 328 Función calloc ( ) 328 Función realloc ( ) 330 11.17 Reglas de funcionamiento de la asignación dinámica 332 Resumen 333 Ejercicios 334 Problemas 335 CAPÍTULO 12 Entradas y salidas por archivos 337 Introducción 337 12.1 Flujos 337 12.2 Apuntador (puntero) FILE 338 12.3 Apertura de un archivo 339 Modos de apertura de un archivo 340 NULL y EOF 341 Cierre de archivos 341 Volcado del buffer. fflush( ) 341 12.4 Funciones de entrada/salida para archivos 342 Funciones putc ( ) y fputc ( ) 342 Funciones getc ( ) y fgetc ( ) Funciones fputs ( ) y fgets ( ) 343 344 Funciones fprintf ( ) y fscanf ( ) 345 Funcion feof ( ) 347 Funcion rewind ( ) 347 12.5 Archivos binarios en C 348 Funcion de salida fwrite ( ) 348 Funcion de lectura f read ( ) 350 12.6 Funciones para acceso aleatorio 351 Funcion f seek ( ) 352 Funcion ftell ( ) 353 Cambio de posicion: fgetpos ( ) y fsetpos( ) 353 12.7 Datos externos al programa con argumentos de main ( ) 355 Resumen 358 Ejercicios 358 Problemas 359 PARTE III Lenguaje unificado de modelado UML 2.5 361 CAPÍTULO 13 Programación orientada a objetos y UML 2.5 362 Introducción 362 13.1 Programación orientada a objetos 363 Objetos 364 Tipos abstractos de datos: Clases 365 13.2 Modelado e identificación de objetos 367 Estado 367 Comportamiento 367 Identidad 367 13.3 Propiedades fundamentales de la orientación a objetos 368 Abstracción 368 La abstracción en software 368 Encapsulamiento y ocultación de datos 369 Herencia 369 Reutilización o reusabilidad 370 Polimorfismo 371 13.4 Modelado de aplicaciones: UML 372 Lenguaje de modelado 372 13.5 Modelado y modelos 373 13.6 Diagramas de UML 2.5 374 13.7 Bloques de construcción (componentes) de UML 2.5 . 377 Elementos estructurales 377 Elementos de comportamiento 378 Elementos de agrupación 379 Especificaciones de UML 379 Historia de UML 379 Resumen 381 Ejercicios 381 CAPÍTULO 14 Diseño de clases y objetos: Representaciones graficas en UML 383 Introducción 383 14.1 Diseño y representación gráfica de objetos en UML 384 Representación gráfica en UML 385 Características de los objetos 386 Estado 387 Múltiples instancias de un objeto 388 Evolución de un objeto 389 Comportamiento 389 Identidad 391 Los mensajes 392 Responsabilidad y restricciones 393 Diseño y representación gráfica de clases en UML 394 Representación gráfica de una clase 395 Declaración de una clase 397 Reglas de visibilidad 398 Declaración de objetos de clases 400 Acceso a miembros de la clase: encapsulamiento 401 Declaración de métodos 403 Tipos de métodos 405 Resumen 405 Ejercicios 4U6 CAPÍTULO 15 Relaciones entre clases: delegaciones. asociaciones, agregaciones, herencia 409 Introducción 409 15.1 Relaciones entre clases 409 15.2 Dependencia 410 15.3 Asociación 411 Multiplicidad 413 Restricciones en asociaciones 414 Asociación cualificada 415 Asociaciones reflexivas 415 Diagrama de objetos 415 Clases de asociación 416 Asociaciones ternarias 417 Asociaciones cualificadas 418 Asociaciones reflexivas 419 Restricciones en asociaciones 419 15.4 Agregación 421 Composición 422 15.5 Jerarquía de clases: generalización y especialización 423 Jerarquías de generalización/especialización 425 15.6 Herencia: clases derivadas 427 Herencia simple 428 Herencia múltiple 429 Niveles de herencia 432 Declaración de una clase derivada 432 Consideraciones de diseño 432 15.7 Accesibilidad y visibilidad en la herencia 433 Herencia publica 434 Herencia privada 434 Herencia protegida 434 15.8 Un caso de estudio especial: herencia múltiple 435 Características de la herencia múltiple 437 15.9 Clases abstractas 438 Operaciones abstractas 439 Resumen 441 Ejercicios 441 PARTE IV Programar en C++ 443 CAPÍTULO 16 De C a C++ 444 Introducción 444 16.1 El primer programa C++ 444 Comentarios en C++ 446 El preprocesador de C++ y el archivo iostream 446 Entr
ada y salida 446 Archivos de cabecera 447 16.2 Espacios de nombres447 16.3 Tipos de datos nativos448 Tipos de datos básicos/primitivos 448 Tipos de coma flotantes (reales) 449 Constantes literales 450 Tipos apuntadores 450 Declaración de apuntadores 451 Tipos constantes 451 Referencias 452 Nombres de tipos definidos: typedef 452 Tipos enumeración 452 Arrays (arreglos) 452 Tipos carácter 453 Cadenas 453 16.4 Operadores 454 Operadores aritméticos 454 Operadores relacionales y lógicos 455 Operadores de asignación 456 Operadores incremento y decremento 456 Operador condicional 457 Operador sizeof 457 Operador coma 458 16.5 Conversiones de tipos 458 Conversión en expresiones 459 Conversiones en paso de argumentos 459 Conversiones explícitas 459 Operador new 459 16.6 Estructuras de control 461 Secuencia y sentencias compuestas 461 Selección y repetición 462 Sentencia i f 462 Sentencia Switch 463 Sentencia while 463 Sentencia do-while 464 Sentencia for 464 Sentencias break y continue 465 Estructura de break y continue 465 16.7 Funciones 466 Funciones de biblioteca 466 Definición de una función (función definida por el usuario) 467 Argumentos de la función: paso por valor y por referencia 468 La sentencia return 469 La sentencia using y el espacio de nombres std 469 Resumen 470 Ejercicios 471 Problemas 472 CAPÍTULO 17 Clases y objetos. Sobrecarga de operadores 473 Introducción 473 17.1 Clases y objetos 473 ¿Qué son objetos? 474 ¿Qué son clases? 474 17.2 Definición de una clase 475 Objetos de clases 479 Acceso a miembros de la clase: encapsulamiento 481 Datos miembros (miembros dato) 483 Funciones miembro 485 Llamadas a Funciones miembro 487 Tipos de Funciones miembro 488 Funciones en Iínea y fuera de línea 489 La palabra reservada línea 490 Nombres de parámetros de Funciones miembro 491 Implementación de clases 491 Archivos de cabecera y de clases 492 17.3 Constructores 493 Constructor por defecto 494 Constructores alternativos 495 Constructores sobrecargados 495 Constructor de copia 496 Inicialización de miembros en constructores 496 17.4 Destructores 493 Clases compuestas 499 17.5 Sobrecarga de Funciones miembro 499 17.6 Funciones amigas 500 17.7 Sobrecarga de operadores 502 17.8 Sobrecarga de operadores unitarios 504 Sobrecargar un operador unitario como función miembro 505 Sobrecarga de un operador unitario como una función amiga 506 17.9 Sobrecarga de operadores binarios 507 Sobrecarga de un operador binario como función miembro 507 Sobrecarga de un operador binario como una función amiga 508 17.10 Conversión de datos y operadores de conversión de tipos 509 17.11 Errores de programación frecuentes 510 Resumen 514 Ejercicios 515 Problemas 518 CAPÍTULO 18 Clases derivadas: herencia y polimorfismo 520 Introducción 520 18.1 Clases derivadas 520 Declaración de una clase derivada 522 Consideraciones de diseño 524 18.2 Tipos de herencia 525 Herencia pública 525 Herencia privada 528 Herencia protegida 528 Operador de resolución de ámbito 529 Constructores-inicializadores en herencia 530 Sintaxis del constructor 531 Sintaxis de la implementación de una función miembro 532 18.3 Destructores 532 18.4 Herencia múltiple 533 Características de la herencia múltiple 535 Dominación (prioridad) 536 Inicialización de la clase base 537 18.5 Ligadura 539 18.6 Funciones virtuales 539 Ligadura dinámica mediante funciones virtuales 540 18.7 Polimorfismo 542 El polimorfismo sin ligadura dinámica 543 El polimorfismo con ligadura dinámica 543 18.8 Uso del polimorfismo 544 18.9 Ligadura dinámica frente a ligadura estática 544 18.10 Ventajas del polimorfismo 545 Resumen 545 Ejercicios 546 CAPÍTULO 19 Genericidad: plantillas (templates) 548 Introducción 548 19.1 Genericidad 548 19.2 Conceptos fundamentales de plantillas en C++ 549 19.3 Plantillas de funciones 551 Fundamentos teóricos 551 Definición de plantilla de funciones 553 Un ejemplo de función plantilla 557 Plantillas de función ordenar y buscar 557 Una aplicación práctica 558 Problemas en las funciones plantilla 559 19.4 Plantillas de clases 559 Definición de una plantilla de clase 560 Instanciación de una plantilla de clases 562 Utilización de una plantilla de clase 562 Argumentos de plantillas 564 19.5 Una plantilla para manejo de pilas de datos 564 Definición de las funciones miembro 565 Utilización de una clase plantilla 565 Instanciación de una clase plantilla con clases 568 Uso de las plantillas de funciones con clases 569 19.6 Modelos de compilación de plantillas 569 Modelo de compilación separada 570 19.7 Plantillas frente a polimorfismo 571 Resumen 572 Ejercicios 573 CAPÍTULO 20 Excepciones 574 Introducción 574 20.1 Condiciones de error en programas 574 ¿Por qué considerar las condiciones de error? 575 20.2 El tratamiento de los códigos de error 575 20.3 Manejo de excepciones en C++ 576 20.4 El mecanismo de manejo de excepciones 577 Clases de excepciones 578 Partes de la manipulación de excepciones 578 20.5 El modelo de manejo de excepciones 578 El modelo de manejo de excepciones 579 Diseño de excepciones 580 Bloques try 581 Lanzamiento de excepciones 582 Captura de una excepción: catch 583 20.6 Especificación de excepciones 586 20.7 Excepciones imprevistas 588 20.8 Aplicaciones prácticas de manejo de excepciones 589 Calcular las raíces de una ecuación de segundo grado 589 Control de excepciones en una estructura tipo pila 590 Resumen 591 Ejercicios 592 PARTE V Programar en Java 595 CAPÍTULO 21 De C/C++ a JAVA 6/7/8 596 Introducción 596 21.1 Historia del lenguaje Java: de Java 1.0 a Java 8 596 21.2 El lenguaje de programación Java 598 Tipos de programas Java 599 21.3 Un programa sencillo en Java 599 21.4 Tipos de datos 601 21.5 Variables, constantes y asignaciones 601 Inicialización de variables 602 Inicialización de una variable en una declaración 602 Asignación múltiple; combinación de asignación con operadores aritméticos 603 Constantes 603 Definición de constantes en un método o en una clase 603 21.6 Operadores y expresiones 604 Operadores aritméticos 604 Operadores relacionales y lógicos 605 Operadores de manipulación de bits 605 Precedencia de operadores 606 21.7 Funciones matemáticas 606 21.8 Cadenas 607 Concatenación de cadenas 607 Las cadenas son inmutables 607 Subcadenas de la clase String 608 Longitud y comparación de cadenas 608 Métodos de la clase String 609 21.9 Códigos de caracteres ASCII y Unicode 611 21.10 Entrada y salida 612 Salida a la consola 612 Salida formateada con printf 612 Entrada 613 21.11 Flujo de control 615 Bloques de sentencias 615 Bucles (Lazos) 618 21.12 Arreglos (arrays) 621 Acceso a los elementos de un arreglo 622 Arreglos y objetos 622 Inicialización de arreglos y arreglos anónimos 623 Arreglos multidimensionales 623 Arreglos irregulares o triangulares 624 21.13 Applets 626 21.14 Creación de un applet 627 Documento HTML para applet 629 21.15 Ciclo de vida de un applet 629 Dibujar imágenes en un applet 631 Clase Graphics 633 Paramétros en un applet 633 Seguridad 634 Resumen 635 Ejercicios 635 Problemas 636 CAPÍTULO 22 Programación orientada a objetos en Java. Clases y objetos 637 Introducción 637 22.1 Clases y objetos 637 ¿Qué son objetos? 638 ¿Qué son clases? 638 22.2 Declaración de una clase 638 Objetos 640 Visibilidad de los miembros de la clase 640 Métodos de una clase 642 Implementación de las clases 644 Clases publicas 645 22.3 Paquetes 645 Sentencia package 645 import 646 22.4 Constructores 647 Constructor por defecto 648 Constructores sobrecargados 648 22.5 Recoleccion de objetos 649 Método finalize ( ) 650 22.6 Objeto que envía el mensaje: this 651 22.7 Miembros static de una clase 652 Variables static 652 Métodos static 654 22.8 Clase Ob j ect 655 Operador instanceof 656 22.9 Tipos abstractos de datos en Java 656 Implementación del TAD Conjunto 656 Aplicación del tipo abstracto de dato conjunto 658 Resumen 660 Ejercicios 661 Problemas 662 CAPÍTULO 23 Programación orientada a objetos en Java. Herencia y polimorfismo 663 Introducción 663 23.1 Clases derivadas 663 Declaración de una clase derivada 666 Diseño de clases derivadas 667 Sobrecarga de métodos en la clase derivada 668 23.2 Herencia publica 669 23.3 Constructores en herencia 6
72 Sintaxis 673 Referencia a la clase base: super 674 23.4 Métodos y clases no derivables: atributo final 675 23.5 Conversiones entre objetos de clase base y clase derivada 675 23.6 Métodos abstractos 677 Clases abstractas 678 Ligadura dinámica mediante métodos abstractos 679 23.7 Polimorfismo 681 Uso del polimorfismo 681 Ventajas del polimorfismo 681 23.8Interfaces 682 Implementación de una interface (interfaz) 683 Jerarquía de interface (interfaz) 685 Herencia de clases e implementación de interface 685 Variables interface 685 Resumen 686 Ejercicios 687 Problemas 687 CAPÍTULO 24 Colecciones 689 Introducción 689 24.1 Colecciones en Java 689 Tipos de colecciones 690 24.2 Clases de utilidades: Arrays y Collections 692 Clase Arrays 692 Ordenacion de arrays 692 Clase Collections 695 24.3 Comparación de objetos: Comparable y Comparator 697 Comparable 697 Comparator 697 24.4 Vector y Stack 698 Vector 698 Stack 699 24.5 Iteradores de una colección 700 Enumeration 700 Iterator 701 24.6 Listas 703 ArrayList 703 24.7 Colecciones parametrizadas 705 Declaración de un tipo parametrizado 705 Resumen 706 Ejercicios 706 Problemas 707 CAPÍTULO 25 Multitarea y excepciones 708 Introducción 708 25.1 Manejo de excepciones en Java 708 25.2 Mecanismo del manejo de excepciones 709 El modelo de manejo de excepciones 710 Diseño de excepciones 711 Bloques try 712 Lanzamiento de excepciones 714 Captura de una excepción: catch 715 Clausula finally 717 25.3 Clases de excepciones definidas en Java 719 Excepciones comprobadas 720 Métodos que informan de la excepción 721 25.4 Nuevas clases de excepc
Desde la 1ª edición de Programación en C, C++, Java y UML, se han desplegado numerosas innovaciones tecnológicas: la web 2.0 se ha consolidado y la pro0gramación web se ha constituido como una materiade estudio y de desarrollo profesional. En el caso de la programación, han surgido las nuevas e innovadoras versiones de C++11 y Java 7, unidas a la actualización de la versión C, C11.