FUNDAMENTOS DE PROGRAMACION

$722.00

Autor: Luis Joyanes Aguilar
Editorial: McGraw-Hill Interamericana
Edición: 4°
ISBN: 9788448161118
Formato: Libro digital
Año de publicación: 2024

$722.00
Limpiar
SKU: 9781615022564 Categoría:

Descripción

Libro digital para leer en línea o en app móvil

Descripción:
Fundamentos de Programación, 4ª. Edición es la última revisión de un título clásico de programación que ha introducido a millares de lectores de España y Latinoamérica en el mundo de la programación de computadoras. Esta nueva edición se ha reescrito teniendo presentes las críticas y propuestas de alumnos, autodidactas y profesores que han estudiado o utilizado esta obra. Las primeras ediciones se apoyaban en la programación estructurada y lenguajes de programación clásicos, como Pascal y C. En la 3ª. Edición se extendió el contenido al lenguaje C++ y a los entonces emergentes Java, C#, Visual Basic, VB.NET. En el siglo XXI, se sigue utilizando la programación estructurada tanto en la enseñanza como en el campo profesional, pero es ya el maduro paradigma orientado a objetos el que convive con la programación clásica, por lo que convive con la programación clásica, por lo que convive con la programación clásica, por lo que se han actualizado las características del lenguaje algorítmico UPSAM adaptado a los más utilizados C/C++, Java y C#, así como extensiones de Visual Basic y VB.NET.

Tabla de contenidos:

Front Matter
   Prefacio a la cuarta edición
   OBJETIVOS DEL LIBRO
   EL LIBRO COMO HERRAMIENTA DOCENTE
   EL LENGUAJE ALGORÍTMICO DE PROGRAMACIÓN UPSAM 2.0
   CARACTERÍSTICAS IMPORTANTES DEL LIBRO
   ORGANIZACIÓN DEL LIBRO
   PARTE I. ALGORITMOS Y HERRAMIENTAS DE PROGRAMACIÓN
   Capítulo 1. Introducción a las computadoras y los lenguajes de programación.
   Capítulo 2. Metodología de la programación y desarrollo de software.
   Capítulo 3. Estructura general de un programa.
   Capítulo 4. Flujo de control I: Estructuras selectivas.
   Capítulo 5. Flujo de control II: Estructuras repetitivas.
   Capítulo 6. Subprogramas (subalgoritmos): Funciones.
   PARTE II. ESTRUCTURA DE DATOS
   Capítulo 7. Estructuras de datos I (arrays y estructuras).
   Capítulo 8. Las cadenas de caracteres.
   Capítulo 9. Archivos (ficheros).
   Capítulo 10. Ordenación, búsqueda e intercalación.
   Capítulo 11. Ordenación, búsqueda y fusión externa (archivos).
   Capítulo 12. Estructuras dinámicas lineales de datos (pilas, colas y listas enlazadas).
   Capítulo 13. Estructuras de datos no lineales (árboles y grafos).
   Capítulo 14. Recursividad.
   PARTE III. PROGRAMACIÓN ORIENTADA A OBJETOS Y UML 2.1.
   Capítulo 15. Tipos abstractos de datos, objetos y modelado con UML 2.1.
   Capítulo 16. Diseño de clases y objetos: representaciones gráficas en UML.
   Capítulo 17. Relaciones entre clases: Delegaciones, asociaciones, agregaciones, herencia.
   PARTE IV. METODOLOGÍA DE LA PROGRAMACIÓN Y DESARROLLO DE SOFTWARE
   Capítulo 18. Resolución de problemas y desarrollo de software: Metodología de la programación.
   APÉNDICES
   Apéndice A. Especificaciones del lenguaje algorítmico UPSAM 2.0.
   Apéndice B. Prioridad de operadores.
   Apéndice C. Código ASCII y Unicode.
   Apéndice D. Guía de sintaxis del lenguaje C.
   Bibliografía y recursos de programación: Libros, Revistas, Web, Compiladores.
   APÉNDICES EN EL SITIO WEB (www.mhe.es/joyanes)
   Apéndice I. Guía de sintaxis de Pascal y Turbo Pascal.
   Apéndice II. Guía de sintaxis del lenguaje ANSI C.
   Apéndice III. Guía de sintaxis del lenguaje ANSI/ISO C++ estándar.
   Apéndice IV. Guía de sintaxis del lenguaje Java 2.
   Apéndice V. Guía de sintaxis del lenguaje C#.
   Apéndice VI. Palabras reservadas: C++, Java y C#.
   Apéndice VII. Glosario de palabras reservadas de C/C++.
   Apéndice VIII. Glosario de palabras reservadas de C#.
   AGRADECIMIENTOS
parte I: Algoritmos y herramientas de programación
   CapÍtulo 1: Introducción a las computadoras y los lenguajes de programación
   INTRODUCCIÓN
   1.1. ¿QUÉ ES UNA COMPUTADORA?
   Figura 1.1.
   1.1.1. Origen de las computadoras
   1.1.2. Clasificación de las computadoras
   1.2. ORGANIZACIÓN FÍSICA DE UNA COMPUTADORA
   Figura 1.2.
   Figura 1.3.
   1.2.1. Dispositivos de Entrada/Salida (E/S): periféricos
   1.2.2. La memoria principal
   1.2.3. Unidades de medida de memoria
   Figura 1.4.
   Tabla 1.1. Unidades de medida de almacenamiento
   Celda de memoria
   Byte
   Bytes, direcciones, memoria
   Espacio de direccionamiento
   Figura 1.5.
   1.2.4. El procesador
   Generaciones de microprocesadores
   Proceso de ejecución de un programa
   Comparación de la memoria central y la memoria auxiliar
   1.2.5. Propuestas para selección de la computadora ideal para aprender programación o para actividades profesionales
   Tabla 1.2. Características técnicas recomendadas para computadoras de escritorio (profesionales y uso doméstico)
   1.3. REPRESENTACIÓN DE LA INFORMACIÓN EN LAS COMPUTADORAS
   1.3.1. Representación de textos
   1.3.2. Representación de valores númericos
   Representación de enteros
   Tabla 1.3. Tipos enteros reales, en C++
   Representación de reales
   Ejemplos
   Notación exponencial
   Ejemplos
   Representación de caracteres
   1.3.3. Representación de imágenes
   Tabla 1.4. Mapas de bits
   Tabla 1.5. Mapas de vectores
   1.3.4. Representación de sonidos
   1.4. CODIFICACIÓN DE LA INFORMACIÓN
   1.4.1. Sistemas de numeración
   Tabla 1.6. Representación de números decimales y binarios
   Tabla 1.7. Equivalencias de códigos decimal, binario, octal y hexadecimal
   1.5. DISPOSITIVOS DE ALMACENAMIENTO SECUNDARIO (ALMACENAMENTO MASIVO)
   1.5.1. Discos magnéticos
   1.5.2. Discos ópticos: CD-ROM y DVD
   El CD-ROM (el cederrón)13 (Compact Disk-Read Only Memory, Disco compacto – Memoria de solo lectura)
   DVD (Digital Versatile Disc): Videodisco digital (DVD-+RW, DVD de alta capacidad de almacenamiento: HD DVD y Blu-ray)
   Figura 1.6.
   Discos duros virtuales
   Tabla 1.8. Algunas direcciones de sitios Web para almacenamiento virtual de datos
   1.5.3. Discos y memorias Flash USB
   Figura 1.7.
   1.5.4. Otros dispositivos de Entrada y Salida (E/S)
   Nuevos dispositivos de E/S móviles
   Figura 1.8.
   1.6. CONECTORES DE DISPOSITIVOS DE E/S
   1.6.1. Puertos serie y paralelo
   1.6.2. USB
   1.6.3. Bus IEEE Firewire – 1394
   Figura 1.9.
   1.7. REDES, WEB Y WEB 2.0
   Compartición de recursos
   Figura 1.10.
   1.7.1. Redes P2P, igual-a-igual (peer-to-peer, P2P)
   1.7.2. Aplicaciones de las redes de comunicaciones
   1.7.3. Módem
   1.7.4. Internet y la World Wide Web
   Web 2.0
   Figura 1.11.
   1.8. EL SOFTWARE (LOS PROGRAMAS)
   Figura 1.12.
   1.8.1. Software del sistema
   1.8.2. Software de aplicación
   Figura 1.13.
   1.8.3. Sistema operativo
   Tabla 1.9. Sistemas operativos más utilizados en educación y en la empresa
   Windows Vista
   Tipos de sistemas operativos
   1.8.3.1. Multiprogramación/Multitarea
   Multiprogramación
   1.8.3.2. Tiempo compartido (múltiples usuarios, time sharing)
   1.8.3.3. Multiproceso
   1.9. LENGUAJES DE PROGRAMACIÓN
   Figura 1.14.
   Figura 1.15.
   1.9.1. Traductores de lenguaje: el proceso de traducción de un programa
   Intérpretes
   Figura 1.16.
   Compiladores
   Figura 1.17.
   1.9.2. La compilación y sus fases
   Figura 1.18.
   Figura 1.19.
   Figura 1.20.
   1.9.3. Evolución de los lenguajes de programación
   1.9.4. Paradigmas de programación
   Figura 1.21.
   Lenguajes imperativos (procedimentales)
   Lenguajes declarativos
   Lenguajes orientados a objetos
   1.10. BREVE HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN
   Programación de la Web
   RESUMEN
   CapÍtulo 2: Metodología de la programación y desarrollo de software
   INTRODUCCIÓN
   2.1. FASES EN LA RESOLUCIÓN DE PROBLEMAS
   Características de un algoritmo
   2.1.1. Análisis del problema
   Figura 2.1.
   Problema 2.1
   2.1.2. Diseño del algoritmo
   2.1.3. Herramientas de programación
   Figura 2.2.
   Figura 2.3.
   Figura 2.4.
   Ejemplo 2.1
   Ejemplo 2.2
   2.1.4. Codificación de un programa
   Documentación interna
   2.1.5. Compilación y ejecución de un programa
   2.1.6. Verificación y depuración de un programa
   Figura 2.5.
   2.1.7. Documentación y mantenimiento
   2.2. PROGRAMACIÓN MODULAR
   Figura 2.6.
   2.3. PROGRAMACIÓN ESTRUCTURADA
   2.3.1. Datos locales y datos globales
   Figura 2.7.
   Figura 2.8.
   2.3.2. Modelado del mundo real
   2.4. PROGRAMACIÓN ORIENTADA A OBJETOS
   Figura 2.9.
   2.4.1. Propiedades fundamentales de la orientación a objetos
   2.4.2. Abstracción
   Ejemplo 2.3
   2.4.3. Encapsulación y ocultación de datos
   2.4.4. Objetos
   Figura 2.10.
   2.4.5. Clases
   Figura 2.11.
   Figura 2.12.
   2.4.6. Generalización y especialización: herencia
   Figura 2.13.
   2.4.7. Reusabilidad
   2.4.8. Polimorfismo
   2.5. CONCEPTO Y CARACTERÍSTICAS DE ALGORITMOS
   Figura 2.14.
   2.5.1. Características de los algoritmos
   Ejemplo 2.4
   Ejemplo 2.5
   Ejemplo 2.6
   2.5.2. Diseño del algoritmo
   Figura 2.15.
   Figura 2.16.
   2.6. ESCRITURA DE ALGORITMOS
   2.7. REPRESENTACIÓN GRÁFICA DE LOS ALGORITMOS
   2.7.1. Pseudocódigo
   2.7.2. Diagramas de flujo
   Tabla 2.1. Símbolos de diagrama de flujo
   Figura 2.17.
   Figura 2.18.
   Ejemplo 2.7
   Ejemplo 2.8
   Ejemplo 2.9
   Ejemplo 2.10
   Ejemplo 2.11
   Figura 2.19.
   2.7.3. Diagramas de Nassi-Schneiderman (N-S)
   Ejemplo
   Figura 2.20.
   Figura 2.21.
   Ejemplo 2.12
   RESUMEN
   EJERCICIOS
   CapÍtulo 3: Estructura general de un programa
   INTRODUCCIÓN
   3.1. CONCEPTO DE PROGRAMA
   Figura 3.1.
   3.2. PARTES CONSTITUTIVAS DE UN PROGRAMA
   Figura 3.2.
   3.3. INSTRUCCIONES Y TIPOS DE INSTRUCCIONES
   3.3.1. Tipos de instrucciones
   Tabla 3.1. Instrucciones/acciones básicas
   3.3.2. Instrucciones de asignación
   Nota
   3.3.3. Instrucciones de lectura de datos (entrada)
   3.3.4. Instrucciones de escritura de resultados (salida)
   3.3.5. Instrucciones de bifurcación
   Figura 3.3.
   Figura 3.4.
   3.4. ELEMENTOS BÁSICOS DE UN PROGRAMA
   3.5. DATOS, TIPOS DE DATOS Y OPERACIONES PRIMITIVAS
   Tipo de datos
   3.5.1. Datos numéricos
   Tabla 3.2. Tipos de datos reales (coma flotante) en el lenguaje C/C++
   3.5.2. Datos lógicos (booleanos)
   3.5.3. Datos tipo carácter y tipo cadena
   3.6. CONSTANTES Y VARIABLES
   3.6.1. Declaración de constants y variables
   Ejemplo
   Ejemplo
   3.7. EXPRESIONES
   3.7.1. Expresiones aritméticas
   Tabla 3.3. Operadores aritméticos
   Ejemplo
   Operadores DIV (/) y MOD (%)
   Ejemplo 3.1
   Operadores de incremento y decremento
   Ejemplo:
   3.7.2. Reglas de prioridad
   Ejemplo 3.2
   Ejemplo 3.3
   Ejemplo 3.4
   Ejemplo 3.5
   Ejemplo 3.6
   3.7.3. Expresiones lógicas (booleanas)
   Operadores de relación
   Tabla 3.4. Operadores de relación
   Operadores lógicos
   Tabla 3.5. Operadores lógicos
   Ejemplo 3.7
   Tabla 3.6. Aplicaciones de expresiones lógicas
   Prioridad de los operadores lógicos
   Tabla 3.7. Prioridad de operadores (lenguaje Pascal)
   Tabla 3.8. Prioridad de operadores (lenguajes C, C++, C# y Java)
   Ejemplo 3.8
   3.8. FUNCIONES INTERNAS
   Tabla 3.9. Funciones internas
   Ejemplo 3.9
   Ejemplo 3.10
   3.9. LA OPERACIÓN DE ASIGNACIÓN
   3.9.1. Asignación aritmética
   3.9.2. Asignación lógica
   3.9.3. Asignación de cadenas de caracteres
   3.9.4. Asignación múltiple
   Ejemplo
   Caso especial
   Tabla 3.10. Operadores aritméticos de asignación múltiple
   3.9.5. Conversión de tipo
   Ejemplo 3.11
   Ejemplo 3.12
   3.10. ENTRADA Y SALIDA DE INFORMACIÓN
   Nota 1
   Nota 2
   3.11. ESCRITURA DE ALGORITMOS/PROGRAMAS
   3.11.1. Cabecera del programa o algoritmo
   3.11.2. Declaración de variables
   3.11.3. Declaración de constantes numéricas
   3.11.4. Declaración de constantes y variables carácter
   3.11.5. Comentarios
   Visual Basic 6 / VB .NET
   C/C++ y C#
   Java
   Pascal
   Modula-2
   Nota
   3.11.6. Estilo de escritura de algoritmos/programas
   Notas
   Modelo propuesto de algoritmo
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 4: Flujo de control I: Estructuras selectivas
   INTRODUCCIÓN
   4.1. EL FLUJO DE CONTROL DE UN PROGRAMA
   4.2. ESTRUCTURA SECUENCIAL
   Figura 4.1.
   Figura 4.2.
   Figura 4.3.
   Ejemplo 4.1
   Ejemplo 4.2
   4.3. ESTRUCTURAS SELECTIVAS
   4.4. ALTERNATIVA SIMPLE (SI-ENTONCES/IF-THEN)
   Figura 4.4.
   Diagrama de sintaxis
   Sintaxis en lenguajes de programación
   4.4.1. Alternativa doble (si-entonces-sino/if-then-else)
   Figura 4.5.
   Ejemplo 4.3
   Ejemplo 4.4
   Ejemplo 4.5
   Ejemplos 4.6
   Ejemplos 4.7
   Ejemplos 4.8
   4.5. ALTERNATIVA MÚLTIPLE (según_sea, caso de/case)
   Figura 4.6.
   Figura 4.7.
   Diagrama de flujo
   Diagrama N-S
   Pseudocódigo
   Notas
   Ejemplo 4.9
   Ejemplo 4.10
   Ejemplo 4.11
   Ejemplo 4.12
   Ejemplo 4.13
   Ejemplo 4.14
   4.6. ESTRUCTURAS DE DECISIÓN ANIDADAS (EN ESCALERA)
   Ejemplo 4.15
   Ejemplo 4.16
   Ejemplo 4.17
   Ejemplo 4.18
   4.7. LA SENTENCIA ir-a (goto)
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 5: Flujo de control II: Estructuras repetitivas
   INTRODUCCIÓN
   5.1. ESTRUCTURAS REPETITIVAS
   5.2. ESTRUCTURA mientras («while»)
   Figura 5.1.
   Ejemplo 5.1
   Ejemplo 5.2
   5.2.1. Ejecución de un bucle cero veces
   Ejemplo 5.3
   5.2.2. Bucles infinitos
   Regla práctica
   5.2.3. Terminación de bucles con datos de entrada
   Ejemplo 5.4
   Ejemplo 5.5
   5.3. ESTRUCTURA hacer-mientras («do-while»)
   Regla
   Figura 5.2.
   Figura 5.3.
   Ejemplo 5.6
   Análisis del ejemplo anterior
   5.4. DIFERENCIAS ENTRE mientras (while) Y hacer-mientras (do-while): UNA APLICACIÓN EN C++
   Sintaxis
   Ejemplo 1
   Ejemplo 2
   Ejemplo 5.7
   5.5. ESTRUCTURA repetir («repeat»)
   Figura 5.4.
   Ejemplo 5.8
   Diferencias de las estructuras mientras y repetir
   Ejemplo 5.9
   Ejemplo 5.10
   Ejemplo 5.11
   5.6. ESTRUCTURA desde/para («for»)
   Figura 5.5.
   5.6.1. Otras representaciones de estructuras repetitivas desde/para (for)
   5.6.2. Realización de una estructura desde con estructura mientras
   5.7. SALIDAS INTERNAS DE LOS BUCLES
   Ejemplo 5.12
   5.8. SENTENCIAS DE SALTO interrumpir (break) y continuar (continue)
   5.8.1. Sentencia interrumpir (break)
   Sintaxis
   Ejemplo 5.13
   Ejemplo 5.14
   Regla
   5.8.2. Sentencia continuar (continue)
   Sintaxis
   Ejemplo 5.15
   5.9. COMPARACIÓN DE BUCLES while, for Y do-while: UNA APLICACIÓN EN C++
   Tabla 5.1. Formatos de los bucles en C++
   Comparación de tres bucles
   5.10. DISEÑO DE BUCLES (LAZOS)
   5.10.1. Bucles para diseño de sumas y productos
   5.10.2. Fin de un bucle
   Lista encabezada por el tamaño
   Preguntar antes de la iteración
   Valor centinela
   Agotamiento de la entrada
   5.11. ESTRUCTURAS REPETITIVAS ANIDADAS
   Figura 5.6.
   Ejemplo 5.16
   Ejemplo 5.17
   Ejemplo 5.18
   5.11.1. Bucles (lazos) anidados: una aplicación en C++
   Ejemplo 5.19
   Ejemplo 5.20
   Ejercicio 5.1
   Ejercicio 5.2
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   REFERENCIAS BIBLIOGRÁFICAS
   CapÍtulo 6: Subprogramas (subalgoritmos): Funciones
   INTRODUCCIÓN
   6.1. INTRODUCCIÓN A LOS SUBALGORITMOS O SUBPROGRAMAS
   Figura 6.1.
   Figura 6.2.
   Figura 6.3.
   6.2. FUNCIONES
   6.2.1. Declaración de funciones
   Regla
   6.2.2. Invocación a las funciones
   Ejemplo 6.1
   Invocación de la función
   Transferencia de información
   Ejemplo 6.2
   Ejemplo 6.3
   Ejemplo 6.4
   Ejemplo 6.5
   Ejemplo 6.6
   Ejemplo 6.7
   6.3. PROCEDIMIENTOS (SUBRUTINAS)
   Procedimiento versus función
   Variables enteras:
   Procedimiento
   Algoritmo principal
   6.3.1. Sustitución de argumentos/parámetros
   Ejemplo 6.8 (de procedimiento)
   Sin utilizar programación modular
   Mediante programación modular
   6.4. ÁMBITO: VARIABLES LOCALES Y GLOBALES
   Figura 6.4.
   Figura 6.5.
   Ejemplo 6.9
   Ejemplo 6.10
   6.5. COMUNICACIÓN CON SUBPROGRAMAS: PASO DE PARÁMETROS
   6.5.1. Paso de parámetros
   6.5.2. Paso por valor
   Figura 6.6.
   6.5.3. Paso por referencia
   Notas
   6.5.4. Comparaciones de los métodos de paso de parámetros
   Modo por valor
   Modo por referencia
   Utilizando variables globales
   6.5.5. Síntesis de la transmisión de parámetros
   Figura 6.7.
   Figura 6.8.
   Ejemplo 6.11
   Ejemplo 6.12
   6.6. FUNCIONES Y PROCEDIMIENTOS COMO PARÁMETROS
   Ejemplos
   Procedimientos función
   Figura 6.9.
   6.7. LOS EFECTOS LATERALES
   6.7.1. En procedimientos
   Figura 6.10.
   6.7.2. En funciones
   Figura 6.11.
   6.8. RECURSIÓN (RECURSIVIDAD)
   Ejemplo 6.13
   Figura 6.12.
   Ejemplo 6.14
   6.9. FUNCIONES EN C/C++ , JAVA Y C#
   Paso de parámetros
   Ejemplo 6.15. FunciÓn en C++
   Ejemplo 6.16. FunciÓn en Java
   6.10. ÁMBITO (ALCANCE) Y ALMACENAMIENTO EN C/C++ Y JAVA
   Definición y declaración de variables
   Regla
   Ejemplo 6.17. Variables locales y globales en C++
   6.11. SOBRECARGA DE FUNCIONES EN C++ Y JAVA
   Ejercicio
   Ejemplo
   Sobrecarga en C++
   Sobrecarga en Java
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
parte II: ESTRUCTURA DE DATOS
   CapÍtulo 7: Estructuras de datos I (arrays y estructuras)1
   INTRODUCCIÓN
   7.1. INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS
   7.2. ARRAYS (ARREGLOS) UNIDIMENSIONALES: LOS VECTORES
   Figura 7.1.
   Tabla 7.1. Operaciones básicas con vectores
   7.3. OPERACIONES CON VECTORES
   7.3.1. Asignación
   7.3.2. Lectura/escritura de datos
   7.3.3. Acceso secuencial al vector (recorrido)
   Ejemplo 7.1
   Ejemplo 7.2
   Ejemplo 7.3
   Figura 7.2.
   7.3.4. Actualización de un vector
   Ejemplo 7.4
   Ejemplo 7.5
   7.4. ARRAYS DE VARIAS DIMENSIONES
   7.4.1. Arrays bidimensionales (tablas/matrices)
   Figura 7.3.
   Figura 7.4.
   Ejemplo 7.6
   Ejemplo 7.7
   Figura 7.5.
   Ejemplo 7.8
   Nota
   7.5. ARRAYS MULTIDIMENSIONALES
   Ejemplo 7.9
   Figura 7.6.
   Ejemplo 7.10
   7.6. ALMACENAMIENTO DE ARRAYS EN MEMORIA
   Figura 7.7.
   7.6.1. Almacenamiento de un vector
   Nota
   7.6.2. Almacenamiento de arrays multidimensionales
   Figura 7.8.
   Figura 7.9.
   Figura 7.10.
   Figura 7.11.
   Almacenamiento por columna mayor
   Almacenamiento por fila mayor
   7.7. ESTRUCTURAS VERSUS REGISTROS
   7.7.1. Registros
   Sintaxis
   Ejemplo
   Declaración de tipos estructura
   Estructuras de datos homogéneas y heterogéneas
   7.8. ARRAYS DE ESTRUCTURAS
   Figura 7.12.
   Figura 7.13.
   7.9. UNIONES
   Sintaxis
   Ejemplo
   7.9.1. Unión versus estructura
   Figura 7.14.
   Ejercicio 7.1.
   7.10. ENUMERACIONES
   Ejemplo
   Ejemplo
   Sintaxis
   Creación de variables
   Asignación
   Sentencias de selección caso_de (switch), si-entonces (if-then)
   Sentencias repetitivas
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 8: Las cadenas de caracteres
   INTRODUCCIÓN
   8.1. INTRODUCCIÓN
   8.2. EL JUEGO DE CARACTERES
   8.2.1. Código ASCII
   Figura 8.1.
   Figura 8.2.
   8.2.2. Código EBCDIC
   8.2.3. Código universal Unicode para Internet
   Figura 8.3.
   8.2.4. Secuencias de escape
   Tabla 8.1. Secuencias de escape en Java
   8.3. CADENA DE CARACTERES
   Notaciones de cadenas
   Ejemplo 8.1
   Reglas de sintaxis en lenguajes de programación
   Ejemplo 8.2
   8.4. DATOS TIPO CARÁCTER
   8.4.1. Constantes
   8.4.2. Variables
   Cadenas de longitud fija
   Cadenas de longitud variable con un máximo
   Cadenas de longitud indefinida
   8.4.3. Instrucciones básicas con cadenas
   Asignación
   Entrada/Salida
   8.5. OPERACIONES CON CADENAS
   8.5.1. Cálculo de la longitud de una cadena
   8.5.2. Comparación
   Igualdad
   Desigualdad
   Ejemplo 8.3
   8.5.3. Concatenación
   Ejemplo 8.4
   Ejemplo 8.5
   Concatenación en Java:
   8.5.4. Subcadenas
   Ejemplos
   8.5.5. Búsqueda
   8.6. OTRAS FUNCIONES DE CADENAS
   8.6.1. Insertar
   Algoritmo de inserción
   8.6.2. Borrar
   Algoritmo borrar
   8.6.3. Cambiar
   Algoritmo cambio
   8.6.4. Conversión de cadenas/números
   Ejemplos
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 9: Archivos (ficheros)
   INTRODUCCIÓN
   9.1. ARCHIVOS Y FLUJOS (STREAM): LA JERARQUÍA DE DATOS
   9.1.1. Campos
   Figura 9.1.
   9.1.2. Registros
   Figura 9.2.
   Nota
   9.1.3. Archivos (ficheros)
   Figura 9.3.
   9.1.4. Bases de datos
   9.1.5. Estructura jerárquica
   9.1.6. Jerarquía de datos
   Figura 9.4.
   9.2. CONCEPTOS Y DEFINICIONES = TERMINOLOGÍA
   9.2.1. Clave (indicativo)
   9.2.2. Registro físico o bloque
   9.2.3. Factor de bloqueo
   Figura 9.5.
   Tabla 9.1. Unidades de datos lógicos y físicos
   Resumen de archivos
   9.3. SOPORTES SECUENCIALES Y DIRECCIONABLES
   9.4. ORGANIZACIÓN DE ARCHIVOS
   9.4.1. Organización secuencial
   Figura 9.6.
   9.4.2. Organización directa
   Ejemplo 9.1
   9.4.3. Organización secuencial indexada
   Figura 9.7.
   9.5. OPERACIONES SOBRE ARCHIVOS
   9.5.1. Creación de un archivo
   Figura 9.8.
   9.5.2. Consulta de un archivo
   Figura 9.9.
   9.5.3. Actualización de un archivo
   Figura 9.10.
   Figura 9.11.
   9.5.4. Clasificación de un archivo
   Figura 9.12.
   9.5.5. Reorganización de un archivo
   9.5.6. Destrucción de un archivo
   Figura 9.13.
   9.5.7. Reunión, fusión de un archivo
   Figura 9.14.
   9.5.8. Rotura/estallido de un archivo
   Figura 9.15.
   9.6. GESTIÓN DE ARCHIVOS
   9.6.1. Crear un archivo
   9.6.2. Abrir un archivo
   Figura 9.16.
   9.6.3. Cerrar archivos
   9.6.4. Borrar archivos
   9.7. FLUJOS
   9.7.1. Tipos de flujos
   9.7.2. Flujos en C++
   9.7.3. Flujos en Java
   9.7.4. Consideraciones prácticas en Java y C#
   9.8. MANTENIMIENTO DE ARCHIVOS
   Altas
   Bajas
   Modificaciones
   Consulta
   9.8.1. Operaciones sobre registros
   9.9. PROCESAMIENTO DE ARCHIVOS SECUENCIALES (ALGORITMOS)
   9.9.1. Creación
   9.9.2. Consulta
   Consulta de un registro
   9.9.3. Actualización
   Altas
   Bajas
   Método 1
   Método 2
   Modificaciones
   9.10. PROCESAMIENTO DE ARCHIVOS DIRECTOS (ALGORITMOS)
   9.10.1. Operaciones con archivos directos
   Creación
   Altas
   Tratamiento por transformación de clave
   Consulta
   Consulta. Por transformación de clave
   Bajas
   Modificaciones
   9.10.2. Clave-dirección
   9.10.3. Tratamiento de las colisiones
   9.10.4. Acceso a los archivos directos mediante indexación
   Consulta
   Altas
   9.11. PROCESAMIENTO DE ARCHIVOS SECUENCIALES INDEXADOS
   9.12. TIPOS DE ARCHIVOS: CONSIDERACIONES PRÁCTICAS EN C/C++ Y JAVA
   Dirección del flujo de datos
   Tipos de acceso
   Estructura de la información
   9.12.1. Archivos de texto
   9.12.2. Archivos binarios
   9.12.3. Lectura y escritura de archivos
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 10: Ordenación, búsqueda e intercalación
   INTRODUCCIÓN
   10.1. INTRODUCCIÓN
   10.2. ORDENACIÓN
   Ejemplo
   10.2.1. Método de intercambio o de burbuja
   Figura 10.1.
   Figura 10.2.
   Ejemplo 10.1
   Tabla 10.1. Pasos necesarios de la ordenación por burbuja
   Método 1
   Método 2
   Método 3 (uso de una bandera/indicador)
   10.2.2. Ordenación por inserción
   Pseudocódigo
   Algoritmo inserción mejorado
   Número de comparaciones
   Vector ordenado en origen
   Vector inicialmente en orden inverso
   10.2.3. Ordenación por selección
   Ejemplo 10.2
   Nivel 1
   Nivel 2
   Nivel 3
   Nivel 4a
   Nivel 4b
   Nivel 4c
   10.2.4. Método de Shell
   Ejemplo 10.3
   Solución
   10.2.5. Método de ordenación rápida (quicksort)
   Ejemplo 10.4
   Algoritmos
   10.3. BÚSQUEDA
   10.3.1. Búsqueda secuencial
   Ejemplo 10.5
   Método 1
   Método 2
   Método 3
   Método 4
   Búsqueda secuencial con centinela
   Método 5
   Método 6
   Nota
   Método 7
   Método 8
   Método 9
   Consideraciones sobre la búsqueda lineal
   10.3.2. Búsqueda binaria
   Figura 10.3.
   Ejemplo 10.6
   Ejemplo 10.7
   Análisis de la búsqueda binaria
   Tabla 10.2. Eficiencia de las búsquedas lineal y binaria
   10.3.3. Búsqueda mediante transformación de claves (hashing)
   10.3.3.1. Métodos de transformación de claves
   Truncamiento
   Plegamiento
   Ejemplo 10.8
   Ejemplo 10.9
   Solución
   Aritmética modular
   Ejemplo 10.10
   Ejemplo 10.11
   Mitad del cuadrado
   Ejemplo 10.12
   Solución
   10.3.3.2. Colisiones
   Resolución de colisiones
   Figura 10.4.
   Figura 10.5.
   10.4. INTERCALACIÓN
   Figura 10.6.
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 11: Ordenación, búsqueda y fusión externa (archivos)
   INTRODUCCIÓN
   11.1. INTRODUCCIÓN
   11.2. ARCHIVOS ORDENADOS
   11.3. FUSIÓN DE ARCHIVOS
   Ejemplo 11.1
   11.4. PARTICIÓN DE ARCHIVOS
   11.4.1. Clasificación interna
   11.4.2. Partición por contenido
   11.4.3. Selección por sustitución
   11.4.4. Partición por secuencias
   11.5. CLASIFICACIÓN DE ARCHIVOS
   11.5.1. Clasificación por mezcla directa
   Ejemplo 11.2
   11.5.2. Clasificación por mezcla natural
   Ejemplo 11.3
   Clasificar el vector
   Etapa 1, fase 1:
   Etapa 1, fase 2:
   Etapa 2, fase 1:
   Etapa 2, fase 2:
   Etapa 3, fase 1:
   Etapa 3, fase 2:
   Algoritmo
   11.5.3. Clasificación por mezcla de secuencias equilibradas
   Fichero de entrada
   Fusión por bloques
   La mezcla o fusión final es
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 12: Estructuras dinámicas lineales de datos (pilas, colas y listas enlazadas)
   INTRODUCCIÓN
   12.1. INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS
   12.1.1. Estructuras dinámicas de datos
   12.2. LISTAS
   Ejemplo 12.1
   Ejemplo 12.2
   12.3. LISTAS ENLAZADAS1
   Figura 12.1.
   Figura 12.2.
   Figura 12.3.
   Figura 12.4.
   Figura 12.5.
   Ejemplo 12.3
   Figura 12.6.
   12.4. PROCESAMIENTO DE LISTAS ENLAZADAS
   12.4.1. Implementación de listas enlazadas con punteros
   Variables dinámicas
   Nodo
   Creación de la lista
   Inserción de un elemento
   Eliminación de un elemento de una lista enlazada
   Recorrido de una lista enlazada
   Ejemplo 12.4
   Acceso a un elemento de una lista enlazada
   Ejemplo 12.5
   12.4.2. Implementación de listas enlazadas con arrays (arreglos)
   Creación de la lista
   Inserción de un elemento
   Eliminación de un elemento
   Recorrido de una lista
   Búsqueda de un determinado elemento en una lista
   Funciones
   12.5. LISTAS CIRCULARES
   Figura 12.7.
   Figura 12.8.
   12.6. LISTAS DOBLEMENTE ENLAZADAS
   Figura 12.9.
   Figura 12.10.
   Figura 12.11.
   12.6.1. Inserción
   Figura 12.12.
   Figura 12.13.
   12.6.2. Eliminación
   Figura 12.14.
   12.7. PILAS
   Figura 12.15.
   Figura 12.16.
   Implementación con punteros
   Implementación con arrays
   12.7.1. Aplicaciones de las pilas
   Llamadas a subprogramas
   Ejemplo 12.6
   12.8. COLAS
   12.8.1. Representación de las colas
   Figura 12.17.
   Implementación con estructuras dinámicas
   Implementación utilizando estructuras de tipo array
   12.8.2. Aprovechamiento de la memoria
   12.9. DOBLE COLA
   Figura 12.18.
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   Análisis del problema
   Diseño del algoritmo
   Análisis del problema
   Diseño del algoritmo
   Análisis del problema
   Diseño del algoritmo
   Análisis del problema
   Diseño del algoritmo
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 13: Estructura de datos no lineales (árboles y grafos)
   INTRODUCCIÓN
   13.1. INTRODUCCIÓN
   13.2. ÁRBOLES
   Figura 13.1.
   13.2.1. Terminología y representación de un árbol general
   Figura 13.2.
   Figura 13.3
   13.3. ÁRBOL BINARIO
   Figura 13.4.
   13.3.1. Terminología de los árboles binarios
   Figura. 13.5.
   Figura 13.6.
   Figura 13.7.
   13.3.2. Árboles binarios completos
   Figura 13.8.
   Figura 13.9.
   13.3.3. Conversión de un árbol general en árbol binario
   Figura 13.10.
   Ejemplo 13.1
   Ejemplo 13.2
   Ejemplo 13.3
   13.3.4. Representación de los árboles binarios
   13.3.4.1. Representación por punteros
   Figura 13.11.
   13.3.4.2. Representación por listas enlazadas
   Figura 13.12.
   Figura 13.13.
   13.3.4.3. Representación por arrays
   Figura 13.14.
   13.3.5. Recorrido de un árbol binario
   Recorrido pre-orden
   Recorrido in-orden
   Figura 13.15.
   Ejemplo 13.4
   Ejemplo 13.5
   13.4. ÁRBOL BINARIO DE BÚSQUEDA
   Figura 13.16.
   Ejemplo 13.6
   Ejemplo 13.7
   Figura 13.17.
   13.4.1. Búsqueda de un elemento
   13.4.2. Insertar un elemento
   Figura 13.18.
   13.4.3. Eliminación de un elemento
   Figura 13.19.
   Figura 13.20.
   Figura 13.21.
   Ejemplo 13.8
   Ejemplo 13.9
   13.5. GRAFOS
   13.5.1. Terminología de grafos
   Figura 13.22.
   Figura 13.23.
   Figura 13.24.
   Figura 13.25.
   Figura 13.26.
   Figura 13.27.
   13.5.2. Representación de grafos
   13.5.2.1. Matriz de adyacencia
   Figura 13.28.
   Ejemplo 13.10
   Ejemplo 13.11
   Nota
   13.5.2.2 Lista de adyacencia
   Figura 13.29.
   Figura 13.30.
   Ejemplo 13.12
   ACTIVIDADES DE PROGRAMACIÓN RESUELTAS
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 14: Recursividad
   INTRODUCCIÓN
   14.1. LA NATURALEZA DE LA RECURSIVIDAD1
   Ejemplo 14.1
   Nota
   Ejemplo 14.2
   Ejemplo 14.3
   14.2. RECURSIVIDAD DIRECTA E INDIRECTA
   Problema 14.1
   Problema 14.2
   Nota
   14.2.1. Recursividad indirecta
   Nota
   14.2.2. Condición de terminación de la recursión
   14.3. RECURSIÓN VERSUS ITERACIÓN
   Consejo de programación
   Consejo de carácter general
   Ejemplo 14.4
   Directrices en la toma de decisión iteración/recursión
   14.4. RECURSIÓN INFINITA
   Ejemplo 14.5
   Figura 14.1.
   Figura 14.2.
   Problema 14.2
   14.5. RESOLUCIÓN DE PROBLEMAS COMPLEJOS CON RECURSIVIDAD
   14.5.1. Torres de Hanoi
   Figura 14.3.
   Figura 14.4.
   Figura 14.5.
   Figura 14.6.
   Diseño del algoritmo
   Figura 14.7.
   Figura 14.8.
   Figura 14.9.
   Implementación de las Torres de Hanoi en C++
   Consideraciones de eficiencia en las Torres de Hanoi
   14.5.2. Búsqueda binaria recursiva
   14.5.3. Ordenación rápida (QuickSort)
   Ejemplo 14.6
   Ejemplo 14.7 (Pivote: primer elemento de la lista)
   Ejemplo 14.8
   14.5.3.1. Algoritmo quicksort
   14.5.4. Ordenación MERGESORT
   Ejemplo 14.9
   14.5.4.1. Algoritmo mergesort en JAVA
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   PROBLEMAS
parte III: Programación orientada a objetos y UML 2.1
   CapÍtulo 15: Tipos abstractos de datos, objetos y modelado con UML 2.1
   INTRODUCCIÓN
   15.1. PROGRAMACIÓN ESTRUCTURADA (PROCEDIMENTAL)
   15.1.1. Limitaciones de la programación estructurada
   Figura 15.1.
   Figura 15.2.
   15.1.2. Modelado de objetos del mundo real
   15.2. PROGRAMACIÓN ORIENTADA A OBJETOS
   Figura 15.3.
   Objeto
   Envío de un mensaje a un objeto
   15.2.1. Objetos
   15.2.2. Tipos abstractos de datos: CLASES
   Instancias
   Métodos
   Ejemplos
   Figura 15.4.
   Un anticipo de reglas de notación en UML 2.0
   15.3. MODELADO E IDENTIFICACIÓN DE OBJETOS
   Estado
   Comportamiento
   Identidad
   Figura 15.5.
   15.4. PROPIEDADES FUNDAMENTALES DE ORIENTACIÓN A OBJETOS
   15.4.1. Abstracción
   15.4.2. La abstracción en el software
   15.4.3. Encapsulamiento y ocultación de datos
   15.4.4. Herencia
   Figura 15.6.
   Figura 15.7.
   15.4.5. Reutilización o reusabilidad
   Reutilización de código
   Reescritura de código reusable
   15.4.6. Polimorfismo
   15.5. MODELADO DE APLICACIONES: UML
   15.5.1. Lenguaje de modelado
   15.5.2. ¿Qué es un lenguaje de modelado?
   15.6. DISEÑO DE SOFTWARE CON UML
   15.6.1. Desarrollo de software orientado a objetos con UML
   15.6.2. Especificaciones de UML
   15.7. HISTORIA DE UML
   15.7.1. El futuro de UML 2.1
   15.8. TERMINOLOGÍA DE ORIENTACIÓN A OBJETOS
   Tabla 15.1. Terminología de orientación a objetos en diferentes lenguajes de programación
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   CapÍtulo 16: Diseño de clases y objetos: Representaciones gráficas en UML
   INTRODUCCIÓN
   16.1. DISEÑO Y REPRESENTACIÓN GRÁFICA DE OBJETOS EN UML
   Figura 16.1.
   Nota
   Ejemplo de objetos
   16.1.1. Representación gráfica en UML
   Figura 16.2.
   Figura 16.3.
   Figura 16.4.
   16.1.2. Características de los objetos
   16.1.3. Estado
   Figura 16.5.
   Nombre de Objetos
   Figura 16.6.
   Ejemplos de objetos
   Figura 16.7.
   16.1.4. Múltiples instancias de un objeto
   Figura 16.8.
   Nota
   16.1.5. Evolución de un objeto
   Figura 16.9.
   16.1.6. Comportamiento
   Figura 16.10.
   Figura 16.11.
   Figura 16.12.
   Figura 16.13.
   Definición
   Regla
   Figura 16.14.
   16.1.7. Identidad
   16.1.8. Los mensajes
   Figura 16.15.
   Figura 16.16.
   Figura 16.17.
   Figura 16.18.
   Ejemplo
   16.1.9. Responsabilidad y restricciones
   16.2. DISEÑO Y REPRESENTACIÓN GRÁFICA DE CLASES EN UML
   Regla
   16.2.1. Representación gráfica de una clase
   Figura 16.19.
   Ejemplos
   Figura 16.20.
   Figura 16.21.
   Figura 16.22.
   Figura 16.23.
   Figura 16.24.
   Figura 16.25.
   16.2.2. Declaración de una clase
   Especificación de una clase
   Formato
   Ejemplo 16.1
   Ejemplo 16.2
   16.2.3. Reglas de visibilidad
   Figura 16.26.
   Ejemplo
   Ejemplo
   16.2.4. Sintaxis
   Ejemplo
   Nota
   16.3. DECLARACIÓN DE OBJETOS DE CLASES
   Formato
   Ejemplo
   16.3.1. Acceso a miembros de la clase: encapsulamiento
   Figura 16.27.
   Formato
   Tabla 16.1. Visibilidad
   Nota
   16.3.2. Declaración de métodos
   Ejemplo
   Ejemplo 16.3
   16.3.3. Tipos de métodos
   16.4. CONSTRUCTORES
   Reglas
   Ejemplo 16.4
   16.4.1. Constructor por defecto
   Ejemplo 16.5
   Regla
   Precaución
   Formato
   Nota
   16.5. DESTRUCTORES
   Ejemplo
   Regla
   Ejemplo 16.5
   Regla
   Regla en C++
   Ejemplo 16.6
   16.6. IMPLEMENTACIÓN DE CLASES EN C++
   16.6.1. Archivos de cabecera y de clases
   Figura 16.28.
   Opciones de compilación
   16.6.2. Clases compuestas
   16.7. RECOLECCIÓN DE BASURA
   16.7.1. El método finalize ()
   Formato
   Importante
   Nota C++/Java
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
   LECTURAS RECOMENDADAS
   CapÍtulo 17: Relaciones entre clases: Delegaciones, asociaciones, agregaciones, herencia
   INTRODUCCIÓN
   17.1. RELACIONES ENTRE CLASES
   Figura 17.1.
   17.2. DEPENDENCIA
   Figura 17.2.
   17.3. ASOCIACIÓN
   Figura 17.3.
   Figura 17.4.
   Figura 17.5.
   Figura 17.6.
   Regla
   Figura 17.7.
   Figura 17.8.
   Figura 17.9.
   Figura 17. 10.
   17.3.1. Multiplicidad
   Figura 17.11.
   Tabla 17.1. Multiplicidad en asociaciones
   Ejemplo 17.1
   17.3.2. Restricciones en asociaciones
   Ejemplo 17.2
   Figura 17.12.
   17.3.3. Asociación cualificada
   Figura 17.13.
   17.3.4. Asociaciones reflexivas
   Figura 17.14.
   17.3.5. Diagrama de objetos
   Figura 17.15.
   Enlaces
   Figura 17.16.
   17.3.6. Clases de asociación
   Figura 17.17.
   Ejemplo 17.3
   Figura 17.18.
   Criterios de diseño
   Ejercicio 17.1
   Figura 17.19.
   Asociaciones ternarias
   Ejercicio 17.2
   Figura 17.20.
   Asociaciones cualificadas
   Ejemplo 17.4
   Figura 17.21.
   Figura 17.22.
   Asociaciones reflexivas
   Ejemplo 17.5
   Figura 17.23.
   Figura 17.24.
   17.3.7. Restricciones en asociaciones
   Figura 17.25.
   Figura 17.26.
   Ejemplo 17.6
   Figura 17.27.
   Ejemplo 17.7
   Figura 17.28.
   Ejemplo 17.8
   Enlaces
   Figura 17.29.
   17.4. AGREGACIÓN
   Figura 17.30.
   Figura 17.31.
   Ejemplo 17.9
   Figura 17.32.
   Restricciones en las agregaciones
   Figura 17.33.
   17.4.1 Composición
   Figura 17.34.
   Ejemplo 17.10
   Figura 17.35.
   Ejemplo 17.11
   17.5. JERARQUÍA DE CLASES: GENERALIZACIÓN Y ESPECIALIZACIÓN
   Figura 17.36.
   Figura 17.37.
   Figura 17.38.
   Figura 17.39.
   Regla
   17.5.1. Jerarquías de generalización/especialización
   Figura 17.40.
   Figura 17.41.
   Figura 17.42.
   Figura 17.43.
   17.6. HERENCIA: CLASES DERIVADAS
   Figura 17.44.
   17.6.1. Herencia simple
   Figura 17.45.
   17.6.2. Herencia múltiple
   Figura 17.46.
   Regla
   17.6.3. Niveles de herencia
   Figura 17.47.
   Ejemplo 17.12
   Figura 17.48.
   Figura 17.49.
   Regla
   Ejemplo 17.13
   Ejemplo 17.14
   17.6.4. Declaración de una clase derivada
   17.6.5. Consideraciones de diseño
   17.7. ACCESIBILIDAD Y VISIBILIDAD EN HERENCIA
   Tabla 17.2. Acceso a variables y funciones según tipo de herencia
   Norma
   17.7.1. Herencia pública
   17.7.2. Herencia privada
   17.7.3. Herencia protegida
   Tabla 17.3. Tipos de herencia y accesos que permiten
   Ejercicio 17.3
   17.8. UN CASO DE ESTUDIO ESPECIAL: HERENCIA MÚLTIPLE
   Figura 17.50.
   Regla
   Regla
   Ejemplo 17.15
   17.8.1. Características de la herencia múltiple
   Ambigüedades
   Ejemplo 17.16
   Precaución
   Regla
   Ejemplo 17.17
   Nota
   17.9. CLASES ABSTRACTAS
   Ejercicio 17.4
   Figura 17.51.
   Ejercicio 17.5
   Figura 17.52.
   17.9.1. Operaciones abstractas
   Figura 17.53.
   CONCEPTOS CLAVE
   RESUMEN
   EJERCICIOS
parte IV: Metodología de la programación y desarrollo de software
   CapÍtulo 18: Resolución de problemas y desarrollo de software: Metodología de la programación
   INTRODUCCIÓN
   18.1. ABSTRACCIÓN Y RESOLUCIÓN DE PROBLEMAS
   18.1.1. Descomposición procedimental
   Figura 18.1.
   18.1.2. Diseño descendente
   Figura 18.2.
   18.1.3. Abstracción procedimental
   18.1.4. Abstracción de datos
   18.1.5. Ocultación de la información
   18.1.6. Programación orientada a objetos
   18.1.7. Diseño orientado a objetos
   18.2. EL CICLO DE VIDA DEL SOFTWARE
   18.2.1. El ciclo de vida del software tradicional (modelo en cascada)
   Figura 18.3.
   18.2.2. El proceso unificado
   Figura 18.4.
   18.2.3. Cliente, desarrollador y usuario
   18.3. FASE DE ANÁLISIS: REQUISITOS Y ESPECIFICACIONES
   Ejemplo 18.1
   Ejemplo 18.2
   18.4. DISEÑO
   Ejemplo 18.3
   Diseño descendente
   Diseño orientado a objetos
   18.5. IMPLEMENTACIÓN (CODIFICACIÓN)
   18.6. PRUEBAS E INTEGRACIÓN
   18.6.1. Verificación
   18.6.2. Técnicas de pruebas
   Facilidad de las pruebas de software
   Niveles de las pruebas
   18.7. MANTENIMIENTO
   18.7.1. La obsolescencia: programas obsoletos
   18.7.2. Iteración y evolución del software
   Figura 18.5.
   18.8. PRINCIPIOS DE DISEÑO DE SISTEMAS DE SOFTWARE
   18.8.1. Modularidad mediante diseño descendente
   18.8.2. Abstracción y encapsulamiento
   18.8.3. Modificabilidad
   Ejemplo 18.4
   18.8.4. Comprensibilidad y fiabilidad
   18.8.5. Interfaces de usuario
   18.8.6. Programación segura contra fallos
   18.8.7. Facilidad de uso
   18.8.8. Eficiencia
   18.8.9. Estilo de programación, documentación y depuración
   18.9. ESTILO DE PROGRAMACIÓN
   18.9.1. Modularizar un programa en subprogramas
   18.9.2. Evitar variables globales en subprogramas
   18.9.3. Usar nombres significativos para identificadores
   18.9.4. Definir constantes con nombres
   18.9.5. Evitar el uso de ir (goto)
   18.9.6. Uso adecuado de parámetros valor/variable
   18.9.7. Uso adecuado de funciones
   18.9.8. Tratamiento de errores
   18.9.9. Legibilidad
   18.10. LA DOCUMENTACIÓN
   18.10.1. Manual del usuario
   18.10.2. Manual de mantenimiento (documentación para programadores)
   Documentación interna
   Ejemplos
   Documentación externa
   18.10.3. Reglas de documentación
   Regla
   18.11. DEPURACIÓN
   18.11.1. Localización y reparación de errores
   Uso de sentencias escribir
   18.11.2. Depuración de sentencias si-entonces-sino
   Depuración de bucles
   Depuración de subprogramas
   Lecturas de estructuras de datos completos
   18.11.3. Los equipos de programación
   18.12. DISEÑO DE ALGORITMOS
   Tabla 18.1. Pautas a seguir en el diseño de algoritmos.
   18.13. PRUEBAS (TESTING)
   Selección de datos de prueba
   Propiedades de buenos datos de prueba
   Valores de prueba extremos
   18.13.1. Errores de sintaxis (de compilación)
   18.13.2. Errores en tiempo de ejecución
   18.13.3. Errores lógicos
   Calcular la media de todos los números leídos del teclado
   18.13.4. El depurador
   18.14. EFICIENCIA
   Buscar en un array o lista de enteros una clave dada (un entero)
   Ejecución
   18.14.1. Eficiencia versus legibilidad (claridad)
   18.15. TRANSPORTABILIDAD
   CONCEPTOS CLAVE
   RESUMEN
Back Matter
   ApÉndices
   ApÉndice A: Especificaciones del lenguaje algorítmico UPSAM 2.0
   A.1. ELEMENTOS DEL LENGUAJE
   A.1.1. Identificadores
   A.1.2. Comentarios
   A.1.3. Tipos de datos estándar
   Datos numéricos
   Datos lógicos
   Datos de tipo carácter
   Datos de tipo cadena
   A.1.4. Constantes de tipos de datos estándar
   Numéricas enteras
   Numéricas reales
   Lógicas
   De carácter
   De cadena
   A.2. OPERADORES
   Operadores aritméticos
   Operadores de relación
   Operadores lógicos
   Operadores de cadena
   Prioridad básica de operadores
   Prioridad avanzada de operadores1
   A.3. ESTRUCTURA DE UN PROGRAMA
   A.3.1. Declaración de tipos de datos estructurados
   Arrays
   Registros
   Archivos secuenciales
   Archivos directos
   A.3.2. Declaración de constantes
   A.3.3. Declaración de variables
   A.3.4. Biblioteca de funciones
   Funciones aritméticas
   Funciones de cadena
   Funciones de conversión de número a cadena
   Funciones de información
   A.3.5. Procedimientos de entrada/salida
   A.3.6. Instrucción de asignación
   A.4. ESTRUCTURAS DE CONTROL
   A.4.1. Estructuras selectivas
   Estructura selectiva simple y doble
   Estructura selectiva múltiple
   A.4.2. Estructuras repetitivas
   Estructura mientras
   Estructura repetir
   Estructura desde
   A.5. PROGRAMACIÓN MODULAR
   A.5.1. Cuestiones generales
   A.5.2. Procedimientos
   Declaración
   Llamada a procedimientos
   A.5.3. Funciones
   Declaración
   Llamada a funciones
   A.6. ARCHIVOS
   A.6.1. Archivos secuenciales
   Apertura del archivo
   Cierre del archivo
   Entrada/salida
   A.6.2. Archivos de texto
   A.6.3. Archivos directos
   Apertura del archivo
   Cierre del archivo
   Acceso secuencial
   Acceso directo
   A.6.4. Consideraciones adicionales
   Detección del final del archivo
   Determinar el tamaño del archivo
   Otros procedimientos
   A.7. VARIABLES DINÁMICAS
   Declaración de tipos de datos dinámicos
   Referencia al contenido de una variable dinámica
   Asignación y liberación de memoria con variables dinámicas
   A.8. PROGRAMACIÓN ORIENTADA A OBJETOS
   A.8.1. Clases y objetos
   Declaración de una clase
   Declaración de tipos de referencias
   Instanciación2 de clases
   Referencias a miembros de una clase
   Constructores
   Destructores
   Visibilidad de las clases
   Referencia a la instancia desde dentro de la declaración de una clase
   A.8.2. Atributos
   Declaración de atributos
   Visibilidad de los atributos
   Atributos de clase (estáticos)
   Atributos constantes
   A.8.3. Métodos
   Declaración de métodos
   Visibilidad de los métodos
   Métodos estáticos
   Sobrecarga de métodos
   Ligadura de métodos
   A.8.4. Herencia
   Clases y métodos abstractos
   Herencia múltiple
   A.9. CONJUNTO DE PALABRAS RESERVADAS Y SÍMBOLOS RESERVADOS
   ApÉndice B: Prioridad de operadores
   PRIORIDAD DE OPERADORES (C/C++, JAVA)
   ApÉndice C: Códigos ASCII y Unicode
   C.1. CÓDIGO ASCII
   C.1.1. Códigos ampliados de teclas
   Tabla C.1. Código ASCII de la computadora personal PC
   Tabla C.2. Códigos ampliados de teclas
   C.1.2. Códigos de exploración de teclado
   Tabla C.3. Códigos de exploración del teclado
   C.2. CÓDIGO UNICODE
   Referencias Web
   Bibliografía
   ApÉndice D: Guía de sintaxis del lenguaje C
   D.1. ELEMENTOS BÁSICOS DE UN PROGRAMA
   D.2. ESTRUCTURA DE UN PROGRAMA C
   Figura D.1.
   D.3. EL PRIMER PROGRAMA C ANSI
   D.4. PALABRAS RESERVADAS ANSI C
   D.5. DIRECTIVAS DEL PREPROCESADOR
   D.6. ARCHIVOS DE CABECERA
   D.7. DEFINICIÓN DE MACROS
   D.8. COMENTARIOS
   D.9. TIPOS DE DATOS
   Tabla D.1. Tipos de datos enteros
   Tabla D.2. Secuencias de escape
   Tabla D.3. Tipos de datos de coma flotante
   D.10. VARIABLES
   D.10.1. Nombres de variables en C
   D.10.2. Variables tipo char
   D.10.3. Constantes de cadena
   D.10.4. Tipos enumerados
   D.10.5. typedef
   D.10.6. Cualificadores de tipos const y volatile
   D.11. EXPRESIONES Y OPERADORES
   Tabla D.4. Operadores aritméticos
   Tabla D.5. Operadores relacionales
   Tabla D.6. Operadores de incremento y decremento
   Ejemplos
   Tabla D.7. Operadores de manipulación de bits (bitwise)
   D.11.1. Operadores de asignación
   Tabla D.8. Operadores de asignación
   D.11.2. Operador serie
   D.11.3. Operador condicional
   D.11.4. Operador de conversión de tipos
   Ejemplo
   D.11.5. Operador sizeof
   D.11.6. Prioridad (precedencia) de operadores
   Tabla D.9. Orden de evaluación y prioridad de operadores (asociatividad)
   D.12. FUNCIONES DE ENTRADA Y SALIDA
   D.12.1. printf
   Tabla D.10. Códigos de identificadores
   Ejemplo D.1
   D.12.2. scanf
   Tabla D.11. Identificadores de formato de scanf
   D.13. SENTENCIAS DE CONTROL
   D.13.1. Sentencia if
   Nota
   D.13.2. Sentencia if-else
   D.13.2.1. Sentencias if anidadas
   D.13.3. Expresión condicional (?:)
   Ejemplo D.2
   D.13.4. Sentencia switch
   Ejemplo D.3
   D.13.5. Sentencia while
   D.13.6. Sentencia do-while
   D.13.7. Sentencia for
   Ejemplo D.4
   D.13.8. Sentencia nula
   D.13.9. Sentencia break
   D.13.10. Sentencia continue
   D.13.11. Sentencia goto
   D.14. FUNCIONES
   Formato
   Llamada a funciones
   Declaración de prototipos
   Ejemplo
   D.14.1. Sentencia return
   D.14.2. Prototipos de funciones
   D.14.3. El tipo void
   Errores típicos de funciones
   D.14.4. Detener un programa con exit
   D.15. ESTRUCTURAS DE DATOS
   D.15.1. Arrays
   Arrays unidimensionales
   Ejemplos
   Arrays multidimensionales
   Ejemplo
   Declaración de un array de dos dimensiones de cuatro filas y tres columnas
   D.16. CADENAS
   Concatenación de cadenas
   D.17. ESTRUCTURAS
   Formato general
   Ejemplos
   D.18. UNIONES
   D.19. CAMPOS DE BITS
   D.20. PUNTEROS (Apuntadores)
   Figura D.2.
   D.20.1. Declaración e indirección de punteros
   D.20.2. Punteros nulos y void
   D.20.3. Punteros a valores
   D.20.4. Punteros y arrays
   D.20.5. Punteros a punteros
   D.20.6. Punteros a funciones
   D.21. PREPROCESADOR DE C
   D.21.1. Directiva #define
   Ejemplos
   Otros ejemplos
   Nota
   D.21.2. Directiva #error
   D.21.2. Compilación condicional
   D.21.2.1. Directiva #if, #elif, #endif
   Ejemplo
   D.21.2.2. Directiva #ifdef
   D.21.2.3. Directiva #ifndef
   Ejemplo
   D.21.3. Directiva #include
   D.21.4. Directiva #line
   D.21.5. Directiva #pragma
   D.21.6. Directiva #undef
   D.21.7. Directiva #
   D.21.8. Identificadores predefinidos
   Bibliografía y recursos de programación
   1. BIBLIOGRAFÍA
   FUNDAMENTOS Y METODOLOGÍA DE LA PROGRAMACIÓN
   ALGORTIMOS Y ESTRUCTURAS DE DATOS
   PROGRAMACIÓN ORIENTADA A OBJETOS
   INGENIERÍA DE SOFTWARE TRADICIONAL Y ORIENTADA A OBJETOS
   UML
   C
   C++
   Java
   C#
   PASCAL y MODULA-2
   2. RECURSOS DE PROGRAMACIÓN EN INTERNET
   Revistas de informática/computación de propósito general y/o con secciones especializadas de programación y en lenguajes de programación C/C++/Java
   Editoriales especializadas en programación (técnicas y lenguajes)
   Enlaces de utilidad
   Recursos importantes de C/C++
   Estandares de C
   Sitios web de C++
   Sitios web de Java
   Recursos Java
   Recursos y productos software
   Productos
   Tutoriales
   FAQs
   Applets Java
   Sitios web de interés
   Libros sobre Java
   Organizaciones Internacionales de Computación
   3. COMPILADORES
   Compiladores y lenguajes de programación gratuitos de diferentes lenguajes
   Free Byte
   Compilers.net
   TheFreeCountry
   Bloodshed
   DJGPP/G77
   C y C++
   DEVCPP. Compilador de C++
   GCC
   Relo
   Insight sources.redhat.com
   Visual C++ (Visual C++ Developer Center)
   Borland C++ Builder 6
   Borland C++ Compiler 5.5
   Borland Turbo C++ www.turboexplorer.com
   Cobol
   Delphi
   Kylix Open Edition
   Handel
   Eiffel
   Visual Eiffel
   Ensamblador (ASM) NASM
   FORTRAN
   DJGPP/G77
   Java
   Java Sun
   BlueJ
   Jikes
   Excelsior JET Evaluation Package n
   Pizza Comp
   Bluette
   The Java Boutique
   Pascal
   Borland Community Codegear
   Free Pascal
   Prolog
   SWI-Prolog
   Visual Basic
   XBasic
   4. RECOMENDACIONES DE LA 3.ª Y ANTERIORES EDICIONES DE FUNDAMENTOS DE PROGRAMACIÓN

Información adicional

Alquilar o comprar libro de texto electrónico

perpetual

Valoraciones

No hay valoraciones aún.

Solo los usuarios registrados que hayan comprado este producto pueden hacer una valoración.

Características del libro digital


Acceso instantáneo

Compra y lee tu libro inmediatamente


Leer sin conexión

Acceda a su libro de texto electrónico en cualquier momento y en cualquier lugar


Herramientas de estudio

Herramientas de estudio integradas como el subrayado y más


Leer en voz alta

Escuche y siga la lectura