PROGRAMA DE ESTUDIOS Programación III Área a la que pertenece: Área Sustantiva Profesional Horas teóricas: 3 Horas prácticas: 2 Créditos: 8 Clave: F0084 Asignaturas antecedentes y subsecuentes Programación II, Programación IV PRESENTACIÓN En materias anteriores se han considerado diversas estructuras de datos y su implementación utilizando arreglos y estructuras, sin embargo estos tipos de datos tienen la desventaja de que al ser declarados ocupan la pila, que es un área de memoria de trabajo que el programa reserva al arrancar, y limita la cantidad de datos que pueden existir en memoria. Existen otras estructuras de datos que se necesitan conocer, pues son útiles cuando se desarrollan lenguajes de programación, compiladores, bases de datos, es decir software de sistemas y software de aplicaciones y que por lo general utilizan memoria dinámica; la ventaja de esto es que pueden ocupar toda la memoria virtual de la computadora (heap). En esta conocerás el funcionamiento de estructuras de datos tales como pilas, colas, listas, árboles y grafos y las implementarás utilizando memoria dinámica. OBJETIVO GENERAL Al finalizar el curso el alumno será capaz de elegir y manipular estructuras de datos, y habilidad para identificar, diseñar e implementar los tipos abstractos de datos a una aplicación concreta. F0084_Programación III 1 / 6
CONTENIDO 1 PILAS Y COLAS Definir las estructuras de datos abstractas pilas y colas, así como conocer e implementar las operaciones básicas de cada una de ellas, utilizando un lenguaje estructurado. 1.1. Pilas 1.2. Definición 1.3. Operaciones sobre Pilas 1.4. Implementación de las Pilas 1.5. Utilizando Arreglos 1.6. Utilizando Registros 1.7. Generalizando las Pilas 1.8. Análisis comparativo entre las diferentes implementaciones 1.9. Creación de la librería pila. 1.10. Aplicaciones utilizando la librería pila.h Colas. 1.11. Definición. 1.13. Operaciones sobre Colas 1.14. Implementación de las Colas 1.15. Utilizando Arreglos 1.16. Utilizando Registros 1.17. Generalizando las Colas 1.18. Análisis comparativo entre las diferentes implementaciones 1.19. Creación de la librería Cola.h 1.20. Aplicaciones utilizando la librería Cola.h El alumno conocerá como funciona una pila y una cola y cuáles son sus operaciones básicas, así como saber como utilizarlas para resolver un problema computacional. 2 LISTAS Conocer la representación de listas enlazadas y doblemente enlazadas, sus operaciones básicas para implementarlas y programar aplicaciones utilizando cada una de ellas. F0084_Programación III 2 / 6
2.1. Definición y estructura de una lista 2.2. Operaciones sobre una lista enlazada 2.3. Implementación de las listas enlazadas 2.4. Utilizando Registros 2.5. Generalizando las Pilas 2.6. Análisis comparativo entre las diferentes implementaciones. 2.7. Creación de las librería lista.h 2.8. Aplicaciones utilizando la librería lista.h 2.9. Estructura de una lista doblemente enlazada 2.10. Operaciones sobre una lista doblemente enlazada 2.11. Implementación de listas generalizadas doblemente enlazadas. El alumno podrá crear listas de cualquier tipo de dato, recuperar información, modificarla ó eliminarla. 3 ARBOLES Conocer la representación de árboles y sus operaciones básicas con el fin de programar cada una de ellas y utilizarlas en aplicaciones específicas 3.1. Definición y estructura de Arboles 3.1.1. Definición de un nodo 3.1.2. Definición de nodo raíz 3.1.3. Definición de subarbol izquierdo y subarbol derecho 3.1.4. Definición de nivel de un arbol 3.1.5. Definición de Altura y profundidad de un nodo 3.1.6. Definición de nodo hoja, nodo padre, nodo hijo, nodos ancestros, nodos descendientes 3.2. Recorridos Preorden, EntreOrden y PostOrden 3.2.1. Arboles Binarios 3.2.2. Operaciones en árboles binarios Habilidad para construir, recorrer, eliminar y modificar nodos de un árbol. F0084_Programación III 3 / 6
3.2.3. Implementación de árboles binarios 3.2.4. Creación de las librería arbol.h 3.2.5. Aplicaciones utilizando la librería arbol.h 4. Arboles AVL 5. Expresiones generales como árboles 4 GRAFOS Conocer la representación de los grafos y la importancia de su uso en software especializado, así como programar las operaciones básicas que se realizan con grafos. 4.1. Definición y estructura de un grafo 4.2. Aplicaciones de los gráficos 4.3. Grafos dirigidos y no dirigidos 4.4. Representación de los gráficos 4.5. Matriz de Adyacencia 4.6. Lista de Adyacencia 4.7. Recorridos de un grafo 4.8. Recorrido por profundidad 4.9. Recorrido de primera amplitud 4.9.1. Bosque 4.9.2. Arbol 4.9.3. Bordes de un árbol. Habilidad para construir, recorrer, eliminar y modificar nodos de un grafo. Sugerencias didácticas UNIDAD 1 Es importante recalcar las ventajas y desventajas de implementar las estructuras de datos pila y cola, con arreglos, registros y memoria dinámica. Deben programar cada operación de las pilas y las colas, utilizando memoria dinámica, y una librería que las contenga. Procure proporcionar ejercicios donde el alumno aplique las operaciones de cada estructura, inclusive un ejercicio donde aplique ambas. UNIDAD 2 Realice una dinámica donde los alumnos participen y observen como funciona una lista y los apuntadores a la lista. Cada alumno será el info de la lista y su brazo derecho será el campo siguiente del nodo. En el caso de listas doblemente enlazadas ambos brazos tienen ya una función definida. Implemente la librería utilizando memoria dinámica y procurando realizar funciones generalizadas, es decir que sirvan para diferentes tipos de datos. UNIDAD 3 Proporcionar ejemplos donde el alumno utilice árboles para la solución de problema. F0084_Programación III 4 / 6
Se recomienda que primero construya todas las funciones de árboles para un solo tipo de dato y luego entienda como generalizar dichas funciones. UNIDAD 4 Proporcionar ejemplos donde el alumno utilice grafos para la solución de problemas. Estrategias de evaluación del aprendizaje Por cada librería elaborada asigne puntos para su calificación. Si elabora los ejercicios donde aplique cada librería asigne puntos por cada ejercicio. Para evaluar su nivel de competencia realice un examen para verificar su habilidad que equivalga al 50% de su calificación final y el otro 50% obténgalo de los ejercicios y librerías elaboradas. El alumno elaborará ejercicios donde utilice la estructura lista y debe asignarle una poderación, misma que será sumada con el resultado obtenido en el examen teórico que aplique, para obtener así su nivel de competencia. Bibliografía Básica 1. Langsam Y, Augenstein M; Estructura de datos con C y C++. Segunda Edición; Prentice Hall México 1997. ISBN 968-880-798-2 2. * JOYANES Aguilar, Luis; Programación en C++, algoritmos, estructuras de datos y objetos; Universidad Pontificia de Salamanca; Editorial McGraw-Hill Interamericana. 2000 F0084_Programación III 5 / 6
Bibliografía Complementaria 3. Aho, A.V.; Hopcroft, J.E.; Ullman, J.D. Estructuras de datos y algoritmos. Addison-Wesley, 1988. 4. Arnold, K; Gosling, J; Holmes, D. El Lenguaje de Programación Java. Addison-Wesley, 2001. 5. Arnow, D.; Weiss, G. Introducción a la Programación con Java. Un enfoque Orientado a Objetos. Addison-Wesley, 2000. 6. B. Eckel. Piensa en Java. 2ª Edición. Prentice Hall, 2002. 7. Horowitz, E.; Sahni, S., Fundamentals of Data Structures in Pascal. Computer Science, 1994. 8. Joyanes, L.; Zahonero, I. Estructuras de Datos. Algoritmos, abstracción y objetos. McGraw-Hill, 1998. 9. Peña, Ricardo. Diseño de programas. Formalismo y abstracción. Prentice-Hall, 1.998 * Weiss, M.A., Estructuras de datos y algoritmos. Addison-Wesley, 1995. 10. Wirth, N., Algoritmos y Estructuras de Datos. Prentice- Hall Iberoamericana, 1987. 11. Liberty, Jesse.;C++ para principiantes;prentice Hall. 2000. 12. Walnum, Clayton / Stevens, Al; Programación con C++ (Colección: Programación);Editorial Anaya Multimedia. 1a. edición. 19 Octubre 2000. ISBN: 84-415-1083-0. 13. JOYANES Aguilar, Luis; C++ iniciación y referencia; Editorial McGraw-Hill Interamericana. 1999. 14. Deitel, Harvey M. / Deitel, Paul J.; C++ Cómo programar (2ª edición); PRENTICE HALL. 1999. 1184 págs. 19x23.5 cm. 15. BRONSON GARY J.; C++ para ingeniería y ciencias;editorial INTERNAL. THOMSON EDRS. SA CV. 1999. 16. CEBALLOS, Francisco Javier; Programación orientada a objetos con C++ (2ª Edición);Coedición: Computec- Rama, 1998. 17. JOYANES Aguilar, Luis; Programación Orientada a Objetos; Editorial McGraw-Hill Interamericana. 1998 18. JAMSA, Kris; Aprenda C++ paso a paso (2ª Edición);Alfaomega Grupo Editor (Computec) 1997. 19. SCHILDT HERBERT;C++ para programadores; Editorial MCGRAW HILL DE MÉXICO. 1996. 20. Stroustrup, Bjarne; El lenguaje de programación C++ (2ª edición);prentice Hall. 1993. F0084_Programación III 6 / 6