ebook img

Fundamentos-de-programación-4ta-Edición-Luis-Joyanes-Aguilar-2 PDF

802 Pages·2012·20.88 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 Fundamentos-de-programación-4ta-Edición-Luis-Joyanes-Aguilar-2

FUNDAMENTOS DE PROGRAMACIÓN Algoritmos, estructura de datos y objetos Cuarta edición FUNDAMENTOS DE PROGRAMACIÓN Algoritmos, estructura de datos y objetos Cuarta edición Luis Joyanes Aguilar Catedrático de Lenguajes y Sistemas Informáticos Facultad de Informática, Escuela Universitaria de Informática Universidad Pontificia de Salamanca campus de Madrid MADRID • BOGOTÁ • BUENOS AIRES • CARACAS • GUATEMALA • LISBOA • MÉXICO NUEVA YORK • PANAMÁ • SAN JUAN • SANTIAGO • SÃO PAULO AUCKLAND • HAMBURGO • LONDRES • MILÁN • MONTREAL • NUEVA DELHI • PARÍS SAN FRANCISCO • SIDNEY • SINGAPUR • ST LOUIS • TOKIO • TORONTO FUNDAMENTOS DE PROGRAMACIÓN. Algoritmos, estructura de datos y objetos. Cuarta edición. No está permitida la reproducción total o parcial de este libro, ni su tratamiento informático, ni la transmisión de ninguna forma o por cualquier medio, ya sea elec- trónico, mecánico, por fotocopia, por registro u otros métodos, sin el permiso previo y por escrito de los titulares del Copyright. DERECHOS RESERVADOS © 2008, respecto a la cuarta edición en español, por McGRAW-HILL/INTERAMERICANA DE ESPAÑA, S. A. U. Edifi cio Valrealty, 1.ª planta Basauri, 17 28023 Aravaca (Madrid) ISBN: 978-84-481-6111-8 Depósito legal: M. Editores: José Luis García y Cristina Sánchez Técnicos editoriales: Blanca Pecharromán y María León Preimpresión: Nuria Fernández Sánchez Cubierta: Escriña Diseño Gráfi co Compuesto en: Gráfi cas Blanco, S. L. Impreso en: IMPRESO EN ESPAÑA - PRINTED IN SPAIN Contenido Prefacio a la cuarta edición ................................................................................................................................................... xvii PARTE I. ALGORITMOS Y HERRAMIENTAS DE PROGRAMACIÓN ................................................ 1 Capítulo 1. Introducción a las computadoras y los lenguajes de programación ................................................................ 3 INTRODUCCIÓN ......................................................................................................................................................... 3 1.1. ¿Qué es una computadora? .................................................................................................................................. 4 1.1.1. Origen de las computadoras .................................................................................................................... 5 1.1.2. Clasificación de las computadoras ........................................................................................................... 6 1.2. Organización física de una computadora ............................................................................................................. 7 1.2.1. Dispositivos de Entrada/Salida (E/S): periféricos ................................................................................... 8 1.2.2. La memoria principal ............................................................................................................................... 9 1.2.3. Unidades de medida de memoria ............................................................................................................ 10 1.2.4. El procesador ........................................................................................................................................... 12 1.2.5. Propuestas para selección de la computadora ideal para aprender programación o para actividades profesionales ............................................................................................................................................ 14 1.3. Representación de la información en las computadoras ..................................................................................... 15 1.3.1. Representación de textos ......................................................................................................................... 15 1.3.2. Representación de valores numéricos ...................................................................................................... 16 1.3.3. Representación de imágenes .................................................................................................................... 17 1.3.4. Representación de sonidos ....................................................................................................................... 18 1.4. Codificación de la información ........................................................................................................................... 19 1.4.1. Sistemas de numeración .......................................................................................................................... 19 1.5. Dispositivos de almacenamiento secundario (almacenamento masivo) .............................................................. 21 1.5.1. Discos magnéticos ................................................................................................................................... 21 1.5.2. Discos ópticos: CD-ROM y DVD ........................................................................................................... 21 1.5.3. Discos y memorias Flash USB ................................................................................................................ 24 1.5.4. Otros dispositivos de Entrada y Salida (E/S) .......................................................................................... 24 1.6. Conectores de dispositivos de E/S ....................................................................................................................... 26 1.6.1. Puertos serie y paralelo ............................................................................................................................ 26 1.6.2. USB .......................................................................................................................................................... 27 1.6.3. Bus IEEE Firewire – 1394 ....................................................................................................................... 27 1.7. Redes, Web y Web 2.0 ......................................................................................................................................... 28 1.7.1. Redes P2P, igual-a-igual (peer-to-peer, P2P) .......................................................................................... 29 1.7.2. Aplicaciones de las redes de comunicaciones ......................................................................................... 29 1.7.3. Módem ..................................................................................................................................................... 30 1.7.4. Internet y la World Wide Web ................................................................................................................. 30 1.8. El software (los programas) ................................................................................................................................. 32 1.8.1. Software del sistema ................................................................................................................................ 32 1.8.2. Software de aplicación ............................................................................................................................. 33 1.8.3. Sistema operativo ..................................................................................................................................... 34 1.8.3.1. Multiprogramación/Multitarea .................................................................................................. 35 1.8.3.2. Tiempo compartido (múltiples usuarios, time sharing) ........................................................... 35 1.8.3.3. Multiproceso ............................................................................................................................. 35 vi Contenido 1.9. Lenguajes de programación ............................................................................................................................... 36 1.9.1. Traductores de lenguaje: el proceso de traducción de un programa ..................................................... 37 1.9.2. La compilación y sus fases .................................................................................................................... 38 1.9.3. Evolución de los lenguajes de programación ........................................................................................ 39 1.9.4. Paradigmas de programación................................................................................................................. 40 1.10. Breve historia de los lenguajes de programación .............................................................................................. 42 RESUMEN .................................................................................................................................................................... 43 Capítulo 2. Metodología de la programación y desarrollo de software ............................................................................. 45 INTRODUCCIÓN ......................................................................................................................................................... 45 2.1. Fases en la resolución de problemas ................................................................................................................... 46 2.1.1. Análisis del problema .............................................................................................................................. 47 2.1.2. Diseño del algoritmo ................................................................................................................................ 48 2.1.3. Herramientas de programación ................................................................................................................ 48 2.1.4. Codificación de un programa ................................................................................................................... 51 2.1.5. Compilación y ejecución de un programa ............................................................................................... 52 2.1.6. Verificación y depuración de un programa .............................................................................................. 52 2.1.7. Documentación y mantenimiento ............................................................................................................ 53 2.2. Programación modular ......................................................................................................................................... 54 2.3. Programación estructurada .................................................................................................................................. 54 2.3.1. Datos locales y datos globales ................................................................................................................. 55 2.3.2. Modelado del mundo real ........................................................................................................................ 56 2.4. Programación orientada a objetos ........................................................................................................................ 56 2.4.1. Propiedades fundamentales de la orientación a objetos .......................................................................... 57 2.4.2. Abstracción .............................................................................................................................................. 57 2.4.3. Encapsulación y ocultación de datos ....................................................................................................... 58 2.4.4. Objetos ..................................................................................................................................................... 59 2.4.5. Clases ....................................................................................................................................................... 61 2.4.6. Generalización y especialización: herencia ............................................................................................. 61 2.4.7 Reusabilidad ............................................................................................................................................. 63 2.4.8. Polimorfismo ............................................................................................................................................ 63 2.5. Concepto y características de algoritmos ............................................................................................................ 64 2.5.1. Características de los algoritmos ............................................................................................................. 65 2.5.2. Diseño del algoritmo ................................................................................................................................ 66 2.6. Escritura de algoritmos ........................................................................................................................................ 68 2.7. Representación gráfica de los algoritmos ............................................................................................................ 69 2.7.1. Pseudocódigo ........................................................................................................................................... 70 2.7.2. Diagramas de flujo ................................................................................................................................... 71 2.7.3. Diagramas de Nassi-Schneiderman (N-S) ............................................................................................... 80 RESUMEN .................................................................................................................................................................... 81 EJERCICIOS ................................................................................................................................................................. 81 Capítulo 3. Estructura general de un programa .................................................................................................................. 83 INTRODUCCIÓN ......................................................................................................................................................... 83 3.1. Concepto de programa ......................................................................................................................................... 84 3.2. Partes constitutivas de un programa .................................................................................................................... 84 3.3. Instrucciones y tipos de instrucciones ................................................................................................................. 85 3.3.1. Tipos de instrucciones ............................................................................................................................. 85 3.3.2. Instrucciones de asignación ..................................................................................................................... 86 3.3.3. Instrucciones de lectura de datos (entrada) ............................................................................................. 87 3.3.4. Instrucciones de escritura de resultados (salida) ..................................................................................... 87 3.3.5. Instrucciones de bifurcación .................................................................................................................... 87 3.4. Elementos básicos de un programa ..................................................................................................................... 89 3.5. Datos, tipos de datos y operaciones primitivas ................................................................................................... 89 3.5.1. Datos numéricos ...................................................................................................................................... 90 3.5.2. Datos lógicos (booleanos) ....................................................................................................................... 92 3.5.3. Datos tipo carácter y tipo cadena............................................................................................................. 92 Contenido vii 3.6. Constantes y variables ....................................................................................................................................... 92 3.6.1. Declaración de constants y variables ..................................................................................................... 94 3.7. Expresiones ........................................................................................................................................................ 94 3.7.1. Expresiones aritméticas ......................................................................................................................... 95 3.7.2. Reglas de prioridad ................................................................................................................................ 97 3.7.3. Expresiones lógicas (booleanas) ........................................................................................................... 99 3.8. Funciones internas ............................................................................................................................................. 102 3.9. La operación de asignación ............................................................................................................................... 104 3.9.1. Asignación aritmética ............................................................................................................................ 105 3.9.2. Asignación lógica .................................................................................................................................. 105 3.9.3. Asignación de cadenas de caracteres..................................................................................................... 105 3.9.4. Asignación múltiple ............................................................................................................................... 105 3.9.5. Conversión de tipo ................................................................................................................................. 106 3.10. Entrada y salida de información ........................................................................................................................ 107 3.11. Escritura de algoritmos/programas .................................................................................................................... 108 3.11.1. Cabecera del programa o algoritmo .................................................................................................... 108 3.11.2. Declaración de variables ..................................................................................................................... 108 3.11.3. Declaración de constantes numéricas .................................................................................................. 109 3.11.4. Declaración de constantes y variables carácter ................................................................................... 109 3.11.5. Comentarios ......................................................................................................................................... 110 3.11.6. Estilo de escritura de algoritmos/programas ....................................................................................... 111 ACTIVIDADES DE PROGRAMACIÓN RESUELTAS .............................................................................................. 113 CONCEPTOS CLAVE .................................................................................................................................................. 124 RESUMEN .................................................................................................................................................................... 124 EJERCICIOS ................................................................................................................................................................. 125 Capítulo 4. Flujo de control I: Estructuras selectivas ......................................................................................................... 127 INTRODUCCIÓN ......................................................................................................................................................... 127 4.1. El flujo de control de un programa ...................................................................................................................... 128 4.2. Estructura secuencial ........................................................................................................................................... 128 4.3. Estructuras selectivas ........................................................................................................................................... 130 4.4. Alternativa simple (si-entonces/if-then) .................................................................................................... 131 4.4.1. Alternativa doble (si-entonces-sino/if-then-else) .................................................................... 132 4.5. Alternativa múltiple (según_sea, caso de/case) ........................................................................................ 137 4.6. Estructuras de decisión anidadas (en escalera) .................................................................................................... 144 4.7. La sentencia ir-a (goto) ................................................................................................................................... 148 ACTIVIDADES DE PROGRAMACIÓN RESUELTAS .............................................................................................. 151 CONCEPTOS CLAVE .................................................................................................................................................. 154 RESUMEN .................................................................................................................................................................... 154 EJERCICIOS ................................................................................................................................................................. 155 Capítulo 5. Flujo de control II: Estructuras repetitivas ...................................................................................................... 157 INTRODUCCIÓN ......................................................................................................................................................... 157 5.1. Estructuras repetitivas .......................................................................................................................................... 158 5.2. Estructura mientras ("while") ..................................................................................................................... 160 5.2.1. Ejecución de un bucle cero veces ............................................................................................................ 162 5.2.2. Bucles infinitos ........................................................................................................................................ 163 5.2.3. Terminación de bucles con datos de entrada ........................................................................................... 163 5.3. Estructura hacer-mientras ("do-while") ................................................................................................. 165 5.4. Diferencias entre mientras (while) y hacer-mientras (do-while): una aplicación en C++ .................... 167 5.5. Estructura repetir ("repeat") ........................................................................................................................ 168 5.6. Estructura desde/para ("for") ........................................................................................................................ 171 5.6.1. Otras representaciones de estructuras repetitivas desde/para (for) .................................................... 171 5.6.2. Realización de una estructura desde con estructura mientras ............................................................ 174 5.7. Salidas internas de los bucles .............................................................................................................................. 175 5.8. Sentencias de salto interrumpir (break) y continuar (continue) ............................................................ 176 5.8.1. Sentencia interrumpir (break) ........................................................................................................... 176 5.8.2. Sentencia continuar (continue) ......................................................................................................... 177 viii Contenido 5.9. Comparación de bucles while, for y do-while: una aplicación en C++ ..................................................... 178 5.10. Diseño de bucles (lazos) .................................................................................................................................... 179 5.10.1. Bucles para diseño de sumas y productos ........................................................................................... 179 5.10.2. Fin de un bucle .................................................................................................................................... 179 5.11. Estructuras repetitivas anidadas ......................................................................................................................... 181 5.11.1. Bucles (lazos) anidados: una aplicación en C++ ................................................................................ 183 ACTIVIDADES DE PROGRAMACIÓN RESUELTAS .............................................................................................. 186 CONCEPTOS CLAVE .................................................................................................................................................. 197 RESUMEN .................................................................................................................................................................... 197 EJERCICIOS ................................................................................................................................................................. 198 REFERENCIAS BIBLIOGRÁFICAS .......................................................................................................................... 199 Capítulo 6. Subprogramas (subalgoritmos): Funciones ..................................................................................................... 201 INTRODUCCIÓN ......................................................................................................................................................... 201 6.1. Introducción a los subalgoritmos o subprogramas ............................................................................................ 202 6.2. Funciones ........................................................................................................................................................... 203 6.2.1. Declaración de funciones ......................................................................................................................... 204 6.2.2. Invocación a las funciones ....................................................................................................................... 205 6.3. Procedimientos (subrutinas) ................................................................................................................................ 210 6.3.1. Sustitución de argumentos/parámetros .................................................................................................... 211 6.4. Ámbito: variables locales y globales ................................................................................................................... 215 6.5. Comunicación con subprogramas: paso de parámetros....................................................................................... 218 6.5.1. Paso de parámetros .................................................................................................................................. 219 6.5.2. Paso por valor .......................................................................................................................................... 219 6.5.3. Paso por referencia................................................................................................................................... 220 6.5.4. Comparaciones de los métodos de paso de parámetros .......................................................................... 221 6.5.5. Síntesis de la transmisión de parámetros ................................................................................................. 223 6.6. Funciones y procedimientos como parámetros ................................................................................................... 225 6.7. Los efectos laterales ............................................................................................................................................. 227 6.7.1. En procedimientos ................................................................................................................................... 227 6.7.2. En funciones ............................................................................................................................................ 228 6.8. Recursión (recursividad) ...................................................................................................................................... 229 6.9. Funciones en C/C++ , Java y C# ......................................................................................................................... 231 6.10. Ámbito (alcance) y almacenamiento en C/C++ y Java ....................................................................................... 233 6.11. Sobrecarga de funciones en C++ y Java .............................................................................................................. 235 ACTIVIDADES DE PROGRAMACIÓN RESUELTAS .............................................................................................. 238 CONCEPTOS CLAVE .................................................................................................................................................. 242 RESUMEN .................................................................................................................................................................... 242 EJERCICIOS ................................................................................................................................................................. 243 PARTE II. ESTRUCTURA DE DATOS ......................................................................................................... 245 Capítulo 7. Estructuras de datos I (arrays y estructuras) .................................................................................................... 247 INTRODUCCIÓN ......................................................................................................................................................... 247 7.1. Introducción a las estructuras de datos ................................................................................................................ 248 7.2. Arrays (arreglos) unidimensionales: los vectores ................................................................................................ 248 7.3. Operaciones con vectores .................................................................................................................................... 251 7.3.1. Asignación ............................................................................................................................................... 252 7.3.2. Lectura/escritura de datos ........................................................................................................................ 253 7.3.3. Acceso secuencial al vector (recorrido) ................................................................................................... 253 7.3.4. Actualización de un vector ...................................................................................................................... 255 7.4. Arrays de varias dimensiones .............................................................................................................................. 258 7.4.1. Arrays bidimensionales (tablas/matrices) ................................................................................................ 258 7.5. Arrays multidimensionales .................................................................................................................................. 260 7.6. Almacenamiento de arrays en memoria .............................................................................................................. 262 7.6.1. Almacenamiento de un vector ................................................................................................................. 262 7.6.2. Almacenamiento de arrays multidimensionales ...................................................................................... 263

Description:
Fundamentos-de-programación-4ta-Edición-Luis-Joyanes-Aguilar-2.pdf Fundamentos de programación: Algoritmos, estructura de datos y objetos, 4ta Edición Luis Joyanes Aguilar
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.