Programación en C, C++, Java y UML.

Joyanes Aguilar, Luis

Programación en C, C++, Java y UML. - Segunda Edición - México McGraw-Hill 2014 - xxix, 767 páginas; fig, tablas;

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 (arrays) 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
Entrada 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 672
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.
CAPÍTULO 26
Organización de datos dentro de un archivo en C.
CAPÍTULO 27
Listas, pilas y colas en C
CAPÍTULO 28
Flujos y archivos en C++
CAPÍTULO 29
Listas, pilas y colas en C++
CAPÍTULO 30
Archivos y flujos en Java
CAPÍTULO 31
Listas, pilas y colas en Java.

Qué ha sucedido en el campo de la informática desde la primera 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 programación web se ha constituido como una materia de estudio y desarrollo profesional. En el caso de la programación, han surgido las nuevas e innovadoras versiones del C++11 y Java 7, unidas a la actualización de la versión de C, C11.
Los desarrolladores actuales requieren nuevas técnicas de programación y , sobre todo, el conocimiento y aprendizaje profundo de las tecnologías de programación basadas en los lenguajes de programación clásicos, estructurados y orientados a objetos: C, C++ y Java.
Características de esta obra:
Se ha reducido el número de capítulos de la primera edición manteniendo los contenidos, pero adaptándolos a los nuevos planes de estudios y procesos de aprendizaje.
Se incluyen las versiones actuales de los tres lenguajes de programación: C11,C++ y Java 7, junto con la última versión de UML: UML 2.5.
Se abordan los tres lenguajes de programación, primero independientes, después interrelacionados y luego en paralelo, con el fin de que el profesor decida la secuencia y los lenguajes en forma que mejor se adapten a sus clases.
Se cuenta con un Centro de recursos en línea donde tendrá acceso a material complementario que apoya el aprendizaje de los lenguajes de programación.

9786071512123


Programación
C++
Java
UML
Hardware
Software

005.133 / J88