Fundamentos de programación : algoritmos y estructuras de datos /
Luis Joyanes Aguilar.
- 2da.
- Madrid : McGraw-Hill, 1996
- 714 p.
Incluye guías de sintaxis: pascal, turbo / Borland pascal, Cy C++
CONTENIDO Prólogo de la segunda edición Capítulo 1. Algoritmos y programas 1.1. Los sistemas de procesamiento de la información 1.2. Concepto de algoritmo 1.2.1. Características de los algoritmos 1.3. Los lenguajes de programación 1.3.1. Instrucciones a la computadora 1.3.2. Lenguajes máquina 1.3.3. Lenguajes de bajo nivel 1.3.4. Lenguajes de alto nivel 1.3.5. Traductores de lenguaje 1.3.5.1. Intérpretes 1.3.5.2. Compiladores 1.3.6. La compilación y sus fases 1.4. Datos, tipos de datos y operaciones primitivas 1.4.1. Datos numéricos 1.4.2. Datos lógicos (booleanos) 1.4.3. Datos tipo carácter y tipo cadena 1.5. Constantes y variables 1.6. Expresiones 1.6.1. Expresiones aritméticas 1.6.1.1. Reglas de prioridad 1.6.2. Expresiones lógicas (booleanas) 1.6.2.1. Operadores de relación 1.6.2.2. Operadores lógicos 1.6.2.3. Prioridad de los operadores en las expresiones lógicas 1.7. Funciones internas 1.8. La operación de asignación 1.8.1. Asignación aritmética 1.8.2. Asignación lógica 1.8.3. Asignación de cadenas de caracteres 1.8.4. Conversión de tipo 1.9. Entrada y salida de información Actividades de programación resueltas Ejercicios Capítulo 2. La resolución de problemas con computadoras y las herramientas de programación 2.1. La resolución de problemas 2.2. Análisis del problema 2.3. Diseño del algoritmo 2.3.1. Escritura inicial del algoritmo 2.4. Resolución del problema mediante computadora 2.5. Representación gráfica de los algoritmos 2.5.1. Diagramas de flujo 2.6. Diagramas de Nassi-Schneiderman (N-S) 2.7. Pseudocódigo Actividades de programación resueltas Ejercicios Capítulo 3. Estructura general de un programa 3.1. Concepto de programa 3.2. Partes constitutivas de un programa 3.3. Instrucciones y tipos de instrucciones 3.4. Tipos de instrucciones 3.4.1. Instrucciones de asignación 3.4.2. Instrucciones de lectura de datos (entrada) 3.4.3. Instrucciones de escritura de resultados (salida) 3.4.4. Instrucciones de bifurcación 3.5. Elementos básicos de un programa 3.5.1. Bucles 3.5.2. Contadores 3.5.3. Acumulador 3.5.4. Decisión o selección 3.5.5. Interruptores 3.6. Escritura de algoritmos/programas 3.6.1. Cabecera del programa o algoritmo 3.6.2. Declaración de variables 3.6.3. Declaración de constantes numéricas 3.6.4. Declaración de constantes y variables carácter 3.6.5. Comentarios 3.6.6. Estilo de escritura de algoritmos/programas Actividades de programación resueltas Ejercicios Capítulo 4. Introducción a la programación estructurada 4.1. Técnicas de programación 4.2. Programación modular 4.2.1. Tamaño de los módulos 4.2.2. Implementación de los módulos 4.3. Programación estructurada 4.3.1. Recursos abstractos 4.3.2. Diseño descendente (top-down) 4.3.3. Teorema de la programación estructurada: estructuras básicas 4.4. Estructura secuencial 4.5. Estructuras selectivas 4.5.1. Alternativa simple (si-entonces / if-then) 4.5.2. Alternativa doble (si-entonces-si_no / if-then-else) 4.5.3. Alternativa múltiple (segun_sea, caso_de / case) 4.6. Estructuras repetitivas 4.6.1. Estructura mientras (while) 4.6.2. Estructura repetir (repeat) 4.6.3. Estructura desde/para (for) 4.6.4. Salidas internas de los bucles 4.7. Estructuras de decisión anidadas 4.8. Estructuras repetitivas anidadas 4.9. La instrucción ir_a (goto) Actividades de programación resueltas Ejercicios Capítulo 5. Subprogramas (subalgoritmos): procedimientos y funciones 5.1. Introducción a los subalgoritmos o subprogramas 5.2. Funciones 5.2.1. Declaración de funciones 5.2.2. Invocación a las funciones 5.3. Procedimientos (subrutinas) 5.3.1. Sustitución de argumentos/parámetros 5.4. Ambito: variables locales y globales 5.5. Comunicación con subprogramas: paso de parámetros 5.5.1. Paso de parámetros 5.5.2. Paso por valor 5.5.3. Paso por referencia 5.5.4. Comparaciones de los métodos de paso de parámetros 5.5.5. Síntesis de la transmisión de parámetros 5.6. Funciones y procedimientos como parámetros 5.7. Los efectos laterales 5.7.1. En procedimientos 5.7.2. En funciones 5.8. Recursión (recursividad) Actividades de programación resueltas Ejercicios Capítulo 6. Estructuras de datos (arrays) 6.1. Introducción a las estructuras de datos 6.2. Arrays unidimensionales: los vectores 6.3. Operaciones con vectores 6.3.1. Asignación 6.3.2. Lectura/escritura de datos 6.3.3. Acceso secuencial al vector (recorrido) 6.3.4. Actualización de un vector 6.4. Arrays de varias dimensiones 6.4.1. Arrays bidimensionales (tablas/matrices) 6.5. Arrays multidimensionales 6.6. Almacenamiento de arrays en memoria 6.6.1. Almacenamiento de un vector 6.6.2. Almacenamiento de arrays multidimensionales Actividades de programación resueltas Ejercicios Capítulo 7. Las cadenas de caracteres 7.1. Introducción 7.2. El juego de caracteres 7.2.1. Código ASCII 7.2.2. Código EBCDIC 7.3. Cadena de caracteres 7.4. Datos tipo carácter 7.4.1. Constantes 7.4.2. Variables 7.4.3. Instrucciones básicas con cadenas 7.5. Operaciones con cadenas 7.5.1. Cálculo de la longitud de una cadena 7.5.2. Comparación 7.5.3. Concatenación 7.5.4. Subcadenas 7.5.5. Búsqueda 7.6. Otras funciones de cadenas 7.6.1. Insertar 7.6.2. Borrar 7.6.3. Cambiar 7.6.4. Conversión cadenas/números Actividades de programación resueltas Ejercicios Capítulo 8. Archivos (ficheros) 8.1. Noción de archivo: estructura jerárquica 8.1.1. Campos 8.1.2. Registros 8.1.3. Archivos (ficheros) 8.1.4. Bases de datos 8.1.5. Estructura jerárquica 8.2. Conceptos y definiciones: terminología 8.2.1. Clave (indicativo) 8.2.2. Registro físico o bloque 8.2.3. Factor de bloqueo 8.3. Soportes secuenciales y direccionables 8.4. Organización de archivos 8.4.1. Organización secuencial 8.4.2. Organización directa 8.4.3. Organización secuencial indexada 8.5. Operaciones sobre archivos 8.5.1. Creación de un archivo 8.5.2. Consulta de un archivo 8.5.3. Actualización de un archivo 8.5.4. Clasificación de un archivo 8.5.5. Reorganización de un archivo 8.5.6. Destrucción de un archivo 8.5.7. Reunión, fusión de un archivo 8.5.8. Rotura/estallido de un archivo 8.6. Gestión de archivos 8.6.1. Crear un archivo 8.6.2. Abrir un archivo 8.6.3. Cerrar archivos 8.6.4. Borrar archivos 8.7. Mantenimiento de archivos 8.7.1. Operaciones sobre registros 8.8. Procesamiento de archivos secuenciales (algoritmos) 8.8.1. Creación 8.8.2. Consulta 8.8.3. Actualización 8.9. Archivos de texto 8.10. Procesamiento de archivos directos (algoritmos) 8.10.1. Operaciones con archivos de acceso directo 8.10.1.1. Creación 8.10.1.2. Altas 8.10.1.3. Consulta 8.10.1.4. Bajas 8.10.1.5. Modificaciones 8.10.2. Clave-dirección 8.10.3. Tratamiento de las colisiones 8.10.4. Acceso a los archivos directos mediante indexación 8.10.4.1. Consulta 8.11. Procesamiento de archivos secuenciales indexados Actividades de programación resueltas Ejercicios Capítulo 9. Ordenación, búsqueda e intercalación 9.1. Introducción 9.2. Ordenación 9.2.1. Método de intercambio o de burbuja 9.2.2. Ordenación por inserción 9.2.3. Ordenación por selección 9.2.4. Método de Shell 9.2.5. Método de ordenación rápida (quicksort) 9.3. Búsqueda 9.3.1. Búsqueda secuencial 9.3.2. Búsqueda binaria 9.3.3. Búsqueda mediante transformación de claves (hashing) 9.3.3.1. Métodos de transformación de claves 9.3.3.2. Colisiones 9.4. Intercalación Actividades de programación resueltas Ejercicios Capítulo 10. Ordenación, búsqueda y fusión externa (archivos) 10.1. Introducción 10.2. Archivos ordenados 10.3. Fusión de archivos 10.4. Partición de archivos 10.4.1. Clasificación interna 10.4.2. Partición por contenido 10.4.3. Selección por sustitución 10.4.4. Partición por secuencias 10.5. Clasificación de archivos 10.5.1. Clasificación por mezcla directa 10.5.2. Clasificación por mezcla natural 10.5.3. Clasificación por mezcla de secuencias equilibradas Actividades de programación resueltas Ejercicios Capítulo 11. Estructuras dinámicas lineales de datos (pilas, colas y listas enlazadas) 11.1. Introducción a las estructuras lineales de datos 11.1.1. Estructuras dinámicas de datos 11.2. Listas 11.3. Listas enlazadas 11.4. Procesamiento de listas enlazadas 11.4.1. Implementación de listas enlazadas con punteros 11.4.1.1. Creación de la lista 11.4.1.2. Inserción de un elemento 11.4.1.3. Eliminación de un elemento de una lista enlazada 11.4.1.4. Recorrido de una lista enlazada 11.4.1.5. Acceso a un elemento de una lista enlazada 11.4.2. Implementación de listas enlazadas con arrays 11.4.2.1. Creación de la lista 11.4.2.2. Inserción de un elemento 11.4.2.3. Eliminación de un elemento 11.4.2.4. Recorrido de una lista 11.4.2.5. Búsqueda de un determinado elemento en una lista 11.4.2.6. Funciones 11.5. Listas circulares 11.6. Listas doblemente enlazadas 11.6.1. Inserción 11.6.2. Eliminación 11.7. Pilas 11.7.1. Aplicaciones de las pilas 11.8. Colas 11.8.1. Representación de las colas 11.8.2. Aprovechamiento de la memoria 11.9. Doble cola Actividades de programación resueltas Ejercicios Capítulo 12. Estructura de datos no lineales (árboles y grafos) 12.1. Introducción 12.2. Árboles 12.2.1. Terminología y representación de un árbol general 12.3. Árbol binario 12.3.1. Terminología de los árboles binarios 12.3.2. Árboles binarios completos 12.3.3. Conversión de un árbol general en árbol binario 12.3.4. Representación de los árboles binarios 12.3.4.1. Representación por punteros 12.3.4.2. Representación por listas enlazadas 12.3.4.3. Representación por arrays 12.3.5. Recorrido de un árbol binario 12.4. Arbol binario de búsqueda 12.4.1. Búsqueda de un elemento 12.4.2. Insertar un elemento 12.4.3. Eliminación de un elemento 12.4.4. Árbol binario mediante arrays 12.5. Grafos 12.5.1. Terminología de grafos 12.5.2. Representación de grafos 12.5.2.1. Matriz de adyacencia 12.5.2.2. Lista de adyacencia Actividades de programación resueltas Ejercicios Capítulo 13. Diseño efectivo de programas y aplicaciones algorítmicas 13.1. Estilo de programación 13.1.1. Nombres de variables 13.1.2. Comentarios 13.2. Estructura del programa 13.3. Estructura modular y diseño descendente 13.3.1. Programación modular 13.4. Diseño de programas 13.4.1. Codificación 13.4.2. Ejecución de programas 13.4.3. Puesta a punto de programas 13.4.4. Manipulación de entrada/salida 13.4.5. Escritura de programas: la documentación 13.4.6. Documentación interna 13.4.7. Documentación externa 13.5. Aplicaciones de gestión (análisis) 13.5.1. Análisis de oportunidad 13.5.2. Análisis funcional 13.5.3. Análisis orgánico 13.5.4. Explotación Ejercicios Capítulo 14. Tablas de decisión 14.1. Introducción a las tablas de decisión 14.2. Definición de una Tabla de Decisión (TD) 14.2.1. Reglas de decisión 14.2.2. Modos de representación de las tablas de decisión 14.3. Tipos de tablas de decisión 14.3.1. Tablas de decisión limitadas 14.3.2. Tablas de decisión de entradas ampliadas o extendidas 14.3.3. Tablas de decisión mixtas 14.3.4. Comparación y transformación de los tipos de tablas 14.4. Tipos de reglas de decisión 14.4.1. Conversión de reglas O y SI_NO 14.5. Construcción de tablas de decisión 14.5.1. Estudio de condiciones, acciones y relaciones 14.5.2. Análisis y requisitos de una TD 14.5.3. Simplificación de una tabla de decisión 14.6. Encadenamiento de tablas de decisión 14.6.1. Tablas abiertas 14.6.2. Tablas cerradas 14.7. Conversión de tablas de decisión en programas 14.7.1. Programación directa en lenguajes de alto nivel 14.7.2. Transformación de la tabla en diagrama de flujo Actividades de programación resueltas Ejercicios Apéndice A. Especificaciones del lenguaje algorítmico UPSAM Apéndice B. Guía del usuario ISO/ANSI Pascal estándar Apéndice C. Guía de sintaxis Turbo/Borland Pascal 7.0 Apéndice D. Guía de referencia lenguaje C ANSI Apéndice E. Guía de sintaxis del lenguaje C++ (estándar C++ ANSI) Apéndice F. Codificación de algoritmos en lenguajes de programación Apéndice G. Glosario de programación Apéndice H. Códigos ASCII Bibliografía Indice