EBOOK VS PROGRAMACION EN C C++ JAVA Y UML

2nd Edición
1456225456 · 9781456225452
¿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 m… Leer Más
COP 117,000.00

PRODUCTO DIGITAL EBOOK. NO ES UN PRODUCTO FÍSICO.

Gracias este es un libro electrónico o EBOOK, para poder utilizarlo debes de crear una cuenta en VitalSource Bookshelf esta es una Aplicación Gratis. Una vez que has creado tu cuenta, dentro de la plataforma debes de redimir los distintos códigos que hayas adquirido para poder leer tus libros.
  • Ingresa a tu libro desde cualquier lugar o dispositivo, con acceso a internet o sin acceso.
  • Crear notas, y apuntes en tus lecturas.
  • Puedes realizar búsquedas a los conceptos que necesites de manera rápida y fácil.
  • Ingresa a tu libro desde cualquier lugar o dispositivo, con acceso a internet o sin acceso.
  • Crear notas, y apuntes en tus lecturas.
  • Puedes realizar búsquedas a los conceptos que necesites de manera rápida y fácil.

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 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 excepciones 723

¿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.

http:/www.mhhe.com/uni/joyanespcju2e