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
Valoraciones
No hay valoraciones aún.