ebook img

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

801 Pages·2014·6.488 MB·Spanish
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

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

Programación en C, C++, Java y UML Programación en C, C++, Java y UML Segunda edición Luis Joyanes Aguilar Catedrático de Lenguajes y Sistemas Informáticos Universidad Pontificia de Salamanca Ignacio Zahonero Martínez Profesor Asociado de Programación y Estructura de Datos Universidad Pontificia de Salamanca (cid:46)(cid:173)(cid:57)(cid:42)(cid:36)(cid:48)(cid:1)(cid:114)(cid:1)(cid:35)(cid:48)(cid:40)(cid:48)(cid:53)Á(cid:1)(cid:114)(cid:1)(cid:35)(cid:54)(cid:38)(cid:47)(cid:48)(cid:52)(cid:1)(cid:34)(cid:42)(cid:51)(cid:38)(cid:52)(cid:1)(cid:114)(cid:1)(cid:36)(cid:34)(cid:51)(cid:34)(cid:36)(cid:34)(cid:52)(cid:1)(cid:114)(cid:1)(cid:40)(cid:54)(cid:34)(cid:53)(cid:38)(cid:46)(cid:34)(cid:45)(cid:34)(cid:1)(cid:114)(cid:1)(cid:46)(cid:34)(cid:37)(cid:51)(cid:42)(cid:37)(cid:1)(cid:114)(cid:1)(cid:47)(cid:54)(cid:38)(cid:55)(cid:34)(cid:1)(cid:58)(cid:48)(cid:51)(cid:44) (cid:1)(cid:52)(cid:34)(cid:47)(cid:1)(cid:43)(cid:54)(cid:34)(cid:47)(cid:1)(cid:114)(cid:1)(cid:52)(cid:34)(cid:47)(cid:53)(cid:42)(cid:34)(cid:40)(cid:48)(cid:1)(cid:114)(cid:1)(cid:52)(cid:34)(cid:48)(cid:1)(cid:49)(cid:34)(cid:54)(cid:45)(cid:48)(cid:1)(cid:114)(cid:1)(cid:34)(cid:54)(cid:36)(cid:44)(cid:45)(cid:34)(cid:47)(cid:37)(cid:1)(cid:114)(cid:1)(cid:45)(cid:48)(cid:47)(cid:37)(cid:51)(cid:38)(cid:52)(cid:1)(cid:114)(cid:1)(cid:46)(cid:42)(cid:45)(cid:166)(cid:47)(cid:1)(cid:114)(cid:1)(cid:46)(cid:48)(cid:47)(cid:53)(cid:51)(cid:38)(cid:34)(cid:45) (cid:47)(cid:54)(cid:38)(cid:55)(cid:34)(cid:1)(cid:37)(cid:38)(cid:45)(cid:41)(cid:42)(cid:1)(cid:114)(cid:1)(cid:52)(cid:34)(cid:47)(cid:1)(cid:39)(cid:51)(cid:34)(cid:47)(cid:36)(cid:42)(cid:52)(cid:36)(cid:48)(cid:1)(cid:114)(cid:1)(cid:52)(cid:42)(cid:47)(cid:40)(cid:34)(cid:49)(cid:54)(cid:51)(cid:1)(cid:114)(cid:1)(cid:52)(cid:53)(cid:15)(cid:1)(cid:45)(cid:48)(cid:54)(cid:42)(cid:52)(cid:1)(cid:114)(cid:1)(cid:52)(cid:42)(cid:37)(cid:47)(cid:38)(cid:58)(cid:1)(cid:114)(cid:1)(cid:53)(cid:48)(cid:51)(cid:48)(cid:47)(cid:53)(cid:48) Director general: Miguel Ángel Toledo Castellanos Coordinador sponsor: Jesús Mares Chacón Coordinadora editorial: Marcela I. Rocha Martínez Editora de desarrollo: Ana Laura Delgado Rodríguez Supervisor de producción: Zeferino García García PROGRAMACIÓN EN C, C++, JAVA Y UML Segunda edición Prohibida la reproducción total o parcial de esta obra, por cualquier medio, sin la autorización escrita del editor. DERECHOS RESERVADOS © 2014, 2009 respecto a la segunda edición por McGRAW-HILL/INTERAMERICANA EDITORES, S.A. DE C.V. Edificio Punta Santa Fe Prolongación Paseo de la Reforma 1015, Torre A Piso 17, Colonia Desarrollo Santa Fe, Delegación Álvaro Obregón C.P. 01376, México, D. F. Miembro de la Cámara Nacional de la Industria Editorial Mexicana, Reg. Núm. 736 ISBN: 978-607-15-1212-3 ISBN(de la edición anterior): 978-970-10-6949-3 ARR 05/14 1234567890 2356789014 Impreso en México Printed in Mexico Contenido PRÓLOGO xv 1.16 Paradigmas de programación 32 Lenguajes imperativos (procedimentales) 32 Lenguajes declarativos 32 PARTE I Lenguajes orientados a objetos 33 Resolución de problemas con software 1 Resumen 33 CAPÍTULO 1 CAPÍTULO 2 Fundamentos de computadoras Algoritmos, programas y de lenguajes de programación 2 y metodología de la programación 34 Introducción 2 Introducción 34 1.1 Las computadoras en perspectiva 3 2.1 Resolución de problemas con computadoras: Generaciones de computadoras 3 fases 34 1.2 Las computadoras modernas: Análisis del problema 35 una breve taxonomía 5 Diseño del problema 36 1.3 Estructura de una computadora 6 Herramientas gráficas y alfanuméricas 37 1.4 Hardware 7 Codificación de un programa 39 Unidad central de proceso (CPU) 8 Compilación y ejecución de un programa 40 Memoria de la computadora 9 Verificación y depuración de un programa 40 Dispositivos de entrada y salida 12 Mantenimiento y documentación 42 Dispositivos de almacenamiento secundario 12 2.2 Algoritmo: concepto y propiedades 42 Dispositivos de comunicación 13 Características de los algoritmos 43 1.5 Software: conceptos básicos y clasificación 13 2.3 Diseño de algoritmos 44 Software de sistema 14 2.4 Escritura de algoritmos 45 Software de aplicaciones 14 2.5 Representación gráfica de los algoritmos 47 1.6 Sistema operativo 15 Pseudocódigo 47 1.7 El lenguaje de la computadora 17 Diagramas de flujo 48 Representación de la información en Diagramas de Nassi-Schneiderman (N-S) 57 las computadoras (códigos de caracteres) 18 2.6 Metodología de la programación 58 Los lenguajes de programación Programación modular 58 ensambladores y de alto nivel 18 Programación estructurada 58 El proceso de programación 20 Programación orientada a objetos 60 1.8 Internet y la Web 21 2.7 Herramientas de programación 61 La revolución Web 2.0 22 Editores de texto 61 Social Media 22 Programa ejecutable 62 Desarrollo de programas web 23 Proceso de compilación/ejecución La Web Semántica y la Web 3.0 23 de un programa 62 1.9 Cloud computing (computación en la nube) 23 Resumen 64 Software como servicio (SaaS) 24 Ejercicios 64 1.10 Movilidad: tecnologías, redes e internet móvil 24 Actividades de aprendizaje 65 Redes inalámbricas 24 Actividades complementarias 66 Redes móviles 25 Sistemas operativos móviles 25 Aplicaciones móviles 25 PARTE II 1.11 Geolocalización y realidad aumentada 26 Programación en C 67 ¿Qué es la realidad aumentada? 26 1.12 Internet de las cosas 26 CAPÍTULO 3 1.13 Big data. Los grandes volúmenes de datos 27 1.14 Lenguajes de programación 27 El lenguaje C: elementos básicos 68 Traductores de lenguaje: el proceso Introducción 68 de traducción de un programa 29 3.1 Estructura general de un programa en C 68 La compilación y sus fases 29 Directivas del preprocesador 70 1.15 Evolución de los lenguajes de programación 31 Declaraciones globales 71 vi Contenido Función main() 72 4.8 Operador coma 116 Funciones definidas por el usuario 72 4.9 Operadores especiales: ( ), [ ] 116 Comentarios 74 El operador ( ) 116 3.2 Creación de un programa 75 El operador [ ] 116 3.3 El proceso de ejecución de un programa en C 76 4.10 Operador sizeof 117 3.4 Depuración de un programa en C 79 4.11 Conversiones de tipos 118 Errores de sintaxis 79 Conversión implícita 118 Errores lógicos 79 Reglas 118 Errores de regresión 80 Conversión explícita 118 Mensajes de error 80 4.12 Prioridad y asociatividad 119 Errores en tiempo de ejecución 80 Resumen 120 3.5 Pruebas 81 Ejercicios 120 3.6 Los elementos de un programa en C 81 Problemas 121 Tokens (elementos léxicos de los programas) 82 Identificadores 82 CAPÍTULO 5 Palabras reservadas 82 Estructuras de selección: Comentarios 83 sentencias if y switch 123 Signos de puntuación y separadores 83 Archivos de cabecera 83 Introducción 123 3.7 Tipos de datos en C 83 5.1 Estructuras de control 123 Enteros (int) 84 5.2 La sentencia if 124 Tipos de coma flotante (float/double) 85 5.3 Sentencia if de dos opciones: if-else 126 Caracteres (char) 86 5.4 Sentencias if-else anidadas 129 3.8 El tipo de dato logico 87 Sangría en las sentencias if anidadas 130 Escritura de valores lógicos 88 Comparación de sentencias if anidadas 3.9 Constantes 88 y secuencias de sentencias if 131 Constantes literales 88 5.5 Sentencia de control switch 132 Constantes definidas (simbólicas) 91 Caso particular de case 136 Constantes enumeradas 91 Uso de sentencias switch en menús 137 Constantes declaradas const y volatile 91 5.6 Expresiones condicionales: el operador ?: 137 3.10 Variables 92 5.7 Evaluación en cortocircuito de Declaración 93 expresiones lógicas 138 Inicialización de variables 94 5.8 Puesta a punto de programas 139 Declaración o definición 95 Estilo y diseño 139 3.11 Duración de una variable 95 5.9 Errores frecuentes de programación 140 Variables locales 95 Resumen 142 Variables globales 96 Ejercicios 142 3.12 Entradas y salidas 97 Problemas 144 Salida 97 Entrada 99 CAPÍTULO 6 Salida de cadenas de caracteres 100 Estructuras de control: bucles 145 Entrada de cadenas de caracteres 100 Introducción 145 Resumen 101 6.1 Sentencia while 145 Ejercicios 102 Operadores de incremento y decremento (++,−−) 148 CAPÍTULO 4 Terminaciones anormales de un bucle Operadores y expresiones 103 (ciclo o llave) 149 Introducción 103 Diseño eficiente de bucles 149 4.1 Operadores y expresiones 103 Bucles while con cero iteraciones 150 4.2 Operador de asignación 104 Bucles controlados por centinelas 150 4.3 Operadores aritméticos 105 Bucles controlados por indicadores (banderas) 151 Asociatividad 107 La sentencia break en los bucles 152 Uso de paréntesis 107 Bucles while (true) 153 4.4 Operadores de incrementación 6.2 Repetición: el bucle for 154 y decrementación 108 Diferentes usos de bucles for 158 4.5 Operadores relacionales 111 6.3 Precauciones en el uso de for 159 4.6 Operadores lógicos 112 Bucles infinitos 160 Asignaciones booleanas (lógicas) 114 Los bucles for vacíos 161 4.7 Operador condicional ?: 115 Sentencias nulas en bucles for 161 Contenido vii Sentencias break y continue 162 7.14 Funciones recursivas 210 6.4 Repetición: el bucle do-while 163 Recursividad indirecta: funciones Diferencias entre while y do-while 164 mutuamente recursivas 211 6.5 Comparación de bucles Condición de terminación de la recursión 213 while, for y do-while 165 7.15 Recursión versus iteración 213 6.6 Diseño de bucles 165 Directrices en la toma de decisión Final de un bucle 166 iteración/recursión 214 Bucles for vacíos 167 7.16 Recursión infinita 215 6.7 Bucles anidados 168 Resumen 216 6.8 Enumeraciones 170 Ejercicios 217 Resumen 172 Problemas 219 Ejercicios 172 Problemas 174 CAPÍTULO 8 Arreglos (arrays), listas y tablas. Cadenas 221 CAPÍTULO 7 Introducción 221 Funciones y recursividad 176 8.1 Arreglos (arrays) 222 Introducción 176 Declaración de un arreglo o array 222 7.1 Concepto de función 177 Subíndices de un arreglo 223 7.2 Estructura de una función 178 Almacenamiento en memoria de los arreglos Nombre de una función 179 (arrays) 224 Tipo de dato de retorno 180 El tamaño de los arreglos 225 Resultados de una función 180 Verificación del rango del índice de un arreglo 225 Llamada a una función 181 8.2 Inicialización de un arreglo (array) 225 7.3 Prototipos de las funciones 184 8.3 Arreglos multidimensionales 228 Prototipos con un número no especificado Inicialización de arreglos multidimensionales 229 de parámetros 186 Acceso a los elementos de los arreglos 7.4 Parámetros de la función 187 bidimensionales 230 Paso de parámetros por valor 188 Lectura y escritura de elementos de arreglos Paso de parámetros por referencia 189 bidimensionales 230 Diferencias entre paso de variables Acceso a elementos mediante bucles 231 por valor y por referencia 189 Arreglo de más de dos dimensiones 232 Parámetros const de una función 191 Proceso de un arreglo de tres dimensiones 233 7.5 Funciones en línea, macros con argumentos 191 8.4 Utilización de arreglos como parámetros 234 Creación de macros con argumentos 193 Precauciones 237 7.6 Ámbito (alcance) de una variable 194 Paso de cadenas como parámetros 238 Ámbito del programa 194 8.5 Concepto de cadena 238 Ámbito del archivo fuente 195 Declaración de variables de cadena 239 Ámbito de una función 195 Inicialización de variables de cadena 240 Ámbito de bloque 195 8.6 Lectura de cadenas 241 Variables locales 196 Función gets( ) 241 7.7 Clases de almacenamiento 196 Función getchar( ) 243 Variables automáticas 196 Función putchar( ) 243 Variables externas 196 Función puts( ) 244 Variables registro 197 8.7 La biblioteca string.h 245 Variables estáticas 197 Utilización del modificador const 7.8 Concepto y uso de funciones de biblioteca 198 con cadenas 245 7.9 Funciones de carácter 199 8.8 Arreglos y cadenas como parámetros Comprobación alfabética y de dígitos 199 de funciones 245 Funciones de prueba de 8.9 Asignación de cadenas 247 caracteres especiales 201 Función strncpy( ) 248 Funciones de conversión de caracteres 201 8.10 Longitud y concatenación de cadenas 249 7.10 Funciones numéricas 202 Función strlen( ) 249 Funciones matemáticas de carácter general 202 Funciones strcat( ) y strncat( ) 249 Funciones trigonométricas 204 8.11 Comparación de cadenas 250 Funciones logarítmicas y exponenciales 204 Función strcmp( ) 250 Funciones aleatorias 205 Función strncmp( ) 251 7.11 Funciones de utilidad 206 8.12 Conversión de cadenas a números 251 7.12 Visibilidad de una función 208 Función atoi( ) 251 7.13 Compilación separada 208 Función atof( ) 252 viii Contenido Función atol( ) 252 10.9 Tamaño de estructuras y uniones 295 Función strtol( ) y strtoul( ) 253 Resumen 296 Función strtod( ) 254 Ejercicios 296 Entrada de números y cadenas 255 Problemas 297 Resumen 256 Ejercicios 256 CAPÍTULO 11 Problemas 258 Apuntadores (punteros) 299 Introducción 299 CAPÍTULO 9 11.1 Direcciones en memoria 300 Algoritmos de ordenación y búsqueda 260 11.2 Concepto de apuntador (puntero) 301 Declaración de apuntadores 302 Introducción 260 Inicialización (iniciación) de apuntadores 303 9.1 Ordenación 260 Indirección de apuntadores 304 9.2 Ordenación por burbuja 261 Apuntadores y verificación de tipos 305 Algoritmo de la burbuja 262 11.3 Apuntadores NULL y void 306 Codificación del algoritmo de la burbuja 263 11.4 Apuntadores a apuntadores 307 Análisis del algoritmo de la burbuja 264 11.5 Apuntadores y arreglos 308 9.3 Ordenación por selección 265 Nombres de arreglos como apuntadores 308 Algoritmo de selección 266 Ventajas de los apuntadores 308 Codificación del algoritmo de selección 266 11.6 Arreglos (arrays) de apuntadores 309 9.4 Ordenación por inserción 266 Inicialización de un arreglo de apuntadores Algoritmo de ordenación por inserción 266 a cadenas 310 Codificación del algoritmo de inserción 267 11.7 Apuntadores a cadenas 310 9.5 Ordenación rápida (quicksort) 267 Apuntadores versus arreglos 310 Algoritmo quicksort 269 11.8 Aritmética de apuntadores 311 Codificación del algoritmo quicksort 270 Una aplicación de apuntadores: Análisis del algoritmo quicksort 272 conversión de caracteres 312 9.6 Búsqueda en listas: búsqueda secuencial 11.9 Apuntadores constantes frente y binaria 273 a apuntadores a constantes 313 Búsqueda binaria 273 Apuntadores constantes 313 Algoritmo y codificación de la búsqueda Apuntadores a constantes 314 binaria 273 Apuntadores constantes a constantes 315 Análisis de los algoritmos de búsqueda 275 11.10 Apuntadores como argumentos Resumen 277 de funciones 316 Ejercicios 277 11.11 Apuntadores a funciones 317 Problemas 278 Inicialización de un apuntador a una función 318 11.12 Apuntadores a estructuras 321 CAPÍTULO 10 11.13 Asignación dinámica de la memoria 322 Estructuras y uniones 280 Almacén libre (free store) 322 11.14 Función de asignación de memoria Introducción 280 malloc( ) 322 10.1 Estructuras 280 Asignación de memoria de un tamaño Declaración de una estructura 281 desconocido 326 Definición de variables de estructuras 282 Uso de malloc( ) para arreglos Uso de estructuras en asignaciones 283 multidimensionales 326 Inicialización de una declaración de estructuras 283 11.15 La función free( ) 327 El tamaño de una estructura 284 11.16 Funciones de asignación de memoria 10.2 Acceso a estructuras 285 calloc( ) y realloc( ) 328 Almacenamiento de información en Función calloc( ) 328 estructuras 285 Función realloc( ) 330 Lectura de información de una estructura 286 11.17 Reglas de funcionamiento de la asignación Recuperación de información de una dinámica 332 estructura 287 Resumen 333 10.3 Sinónimo de un tipo de datos: typedef 287 Ejercicios 334 10.4 Estructuras anidadas 288 Problemas 335 Ejemplo de estructuras anidadas 290 10.5 Arreglos de estructuras 291 CAPÍTULO 12 10.6 Arreglos como miembros 292 Entradas y salidas por archivos 337 10.7 Utilización de estructuras como parámetros 293 10.8 Uniones 294 Introducción 337 Contenido ix 12.1 Flujos 337 Elementos de comportamiento 378 12.2 Apuntador (puntero) FILE 338 Elementos de agrupación 379 12.3 Apertura de un archivo 339 13.8 Especificaciones de UML 379 Modos de apertura de un archivo 340 13.9 Historia de UML 379 NULL y EOF 341 Resumen 381 Cierre de archivos 341 Ejercicios 381 Volcado del buffer: fflush( ) 341 12.4 Funciones de entrada/salida para archivos 342 CAPÍTULO 14 Funciones putc( ) y fputc( ) 342 Diseño de clases y objetos: Funciones getc( ) y fgetc( ) 343 Representaciones gráficas en UML 383 Funciones fputs( ) y fgets( ) 344 Funciones fprintf( ) y fscanf( ) 345 Introducción 383 Función feof( ) 347 14.1 Diseño y representación gráfica Función rewind( ) 347 de objetos en UML 384 12.5 Archivos binarios en C 348 Representación gráfica en UML 385 Función de salida fwrite( ) 348 Características de los objetos 386 Función de lectura fread( ) 350 Estado 387 12.6 Funciones para acceso aleatorio 351 Múltiples instancias de un objeto 388 Función fseek( ) 352 Evolución de un objeto 389 Función ftell( ) 353 Comportamiento 389 Cambio de posición: fgetpos( ) y Identidad 391 fsetpos( ) 353 Los mensajes 392 12.7 Datos externos al programa con Responsabilidad y restricciones 393 argumentos de main( ) 355 14.2 Diseño y representación gráfica de Resumen 358 clases en UML 394 Ejercicios 358 Representación gráfica de una clase 395 Problemas 359 Declaración de una clase 397 Reglas de visibilidad 398 14.3 Declaración de objetos de clases 400 PARTE III Acceso a miembros de la clase: Lenguaje unificado de encapsulamiento 401 modelado UML 2.5 361 Declaración de métodos 403 Tipos de métodos 405 CAPÍTULO 13 Resumen 405 Ejercicios 406 Programación orientada a objetos y UML 2.5 362 CAPÍTULO 15 Introducción 362 Relaciones entre clases: delegaciones, 13.1 Programación orientada a objetos 363 asociaciones, agregaciones, herencia 409 Objetos 364 Tipos abstractos de datos: Clases 365 Introducción 409 13.2 Modelado e identificación de objetos 367 15.1 Relaciones entre clases 409 Estado 367 15.2 Dependencia 410 Comportamiento 367 15.3 Asociación 411 Identidad 367 Multiplicidad 413 13.3 Propiedades fundamentales de la Restricciones en asociaciones 414 orientación a objetos 368 Asociación cualificada 415 Abstracción 368 Asociaciones reflexivas 415 La abstracción en software 368 Diagrama de objetos 415 Encapsulamiento y ocultación de datos 369 Clases de asociación 416 Herencia 369 Asociaciones ternarias 417 Reutilización o reusabilidad 370 Asociaciones cualificadas 418 Polimorfismo 371 Asociaciones reflexivas 419 13.4 Modelado de aplicaciones: UML 372 Restricciones en asociaciones 419 Lenguaje de modelado 372 15.4 Agregación 421 13.5 Modelado y modelos 373 Composición 422 13.6 Diagramas de UML 2.5 374 15.5 Jerarquía de clases: generalización 13.7 Bloques de construcción (componentes) y especialización 423 de UML 2.5 377 Jerarquías de generalización/ Elementos estructurales 377 especialización 425

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.