UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO Sistema de Universidad Abierta PROGRAMA DE TRABAJO (DETALLE) Materia Prof. Grupo Semestre Horario Cubículo Modelo Pagina Web e-mail : INFORMATICA II (Estructuras de Datos Estáticas y Dinámicas en Memoria Principal) : Ramón Castro Liceaga : 9282 : 2011-2 : Miércoles de 20:00 a 22:00 hrs y Sábados de 11:00 a 13:00. : F- 214 : 4-3 : http://aprender.fca.unam.mx/~rcastro/ [email protected] [email protected] Objetivo general del curso Conocer, programar, manipular e implementar las estructuras de datos estáticas y dinámicas en las memorias de los equipos de computo para la solución de los problemas informáticos. Practicas en laboratorio: Sábados de 9:00 a 11:00 hrs. En el edificio de CIFCA (edificio rojo atrás de la Biblioteca). Laboratorio 2 Plática de iniciación donde se te dará la estrategia de programación de estructuras de datos Fecha: Martes 8 de febrero Materiales de apoyo: - Pocket guia.- Guia rapida de comandos de lenguaje C. - Metodología para la programación de estructuras de datos en lenguaje C - Manual de Programación en C (se recomienda hacer los programas del manual) - Cualquier libro de Programación en C, C++ y C# que contenga los siguientes temas: Variables, condicionales, funciones, ciclos, arreglos, apuntadores y archivos. (verificar que tenga muchos ejemplos y códigos). - Apuntes de Estructura de Datos. Compilador: Con la idea de que empieces en cuanto antes a programar, el compilador lo puedes bajar de Internet en la siguiente ruta e instálalo en tu equipo de cómputo. (En las prácticas se darán a conocer más detalles sobre los compiladores para C,C++ y C#) Dev-C++: http://sourceforge.net/projects/dev-cpp/ a) Tarea: Hacer de acuerdo a los siete pasos, el algoritmo para convertir expresiones infijas en postfijas Fecha de entrega: En cuanto antes VALOR.- 5% Enviar esta actividad Temario 1.- INTRODUCCION A LAS ESTRUCTURAS DE DATOS 1.1.- Definición de estructura de datos. 1.2.- Tipos de datos. 1.3.- Datos simples 1.4.- Datos estructurados 1.5.- Clasificaciones en los tipos de datos 1.6.- Notación Infija, Postfija y Prefija 1.7.- Notación científica, 1.8.- Estructuras de datos estáticas 1.9.- Estructuras de datos dinámicas 1.10.- Nodos o registros, 1.11.- Representación de números enteros, 1.12.- Números Reales 1.13.- Doble precisión 1.14.- Números complejos, 1.15.- Representación de caracteres, 1.16.- Manejo de arreglos y vectores, 1.17.- Almacenamiento y recuperación 1.18.- Manejo de Arreglos 1.18.1.- Programación de arreglos en lenguaje C. 1.18.2.- Arreglos Unidimensionales. 1.18.3.- Arreglos Multidimensionales. 1.18.4.- Operaciones sobre arreglos. 1.18.5.- Matriz poco densa regular Actividades : 1a .- El alumno entregara un resumen de esta unidad VALOR.- 1% Enviar esta actividad 1b .- Resolver el siguiente problema y entregar el programa en C/C++ Problema: hacer un programa de una Matriz de 4 x 4 tridiagonal. 1c .- El alumno realizará examen VALOR.- 5% VALOR.- 10% Enviar esta actividad Fecha aproximada: 23 de febrero 2.- MANEJO DE MEMORIA 2.1.- Programación de la memoria 2.2.- Algoritmo y optimización de memoria 2.3.- Complejidad de Algoritmo 2.4.- Notación Aritmética 2.5.- Tiempo de Ejecución de un Algoritmo 2.6.- Complejidad en Espacio 2.7.- Memoria global 2.8.- Memoria Local 2.9.- Manejo de memoria Estática 2.10.- Manejo de memoria Dinámica 2.11.- Liberación de memoria 2.11.- Programación de memoria estática en C 2.12.- Funciones de manejo de memoria dinámica en C Actividades : 2a .- El alumno entregara resumen para esta unidad Enviar esta actividad 2b .- El alumno entregara un documento sobre el Manejo de memoria usando vectores. Este documento será basado en un programa en C++ que muestre como menú principal las siguientes operaciones sobre vectores. VALOR.- 5% Enviar esta actividad ESTRUCTURA DE DATOS (Vectores) ============================== 1) Crear un vector nuevo. 2) Borrar un elemento. 3) Agregar un elemento. 4) Mostrar el vector. 5) Buscar un elemento en el vector. 6) Modifica un elemento en el vector. 7) Salir de la aplicacion. 2c .- El alumno realizará examen para esta unidad Fecha aproximada: 16 de marzo VALOR.- 10% Enviar esta actividad 3.- ESTRUCTURAS ESTATICAS EN MEMORIA PRINCIPAL 3.1.- Memoria principal 3.1.1.- Definición de Memoria Principal. 3.1.2.- Organización física de la Memoria Principal. 3.1.3.- Palabra de computadora 3.1.4.- Dirección de memoria 3.1.5.- Registro de dirección 3.1.6.- Registro de datos 3.1.7.- Unidad de Control 3.1.8.- Organización Lógica de la Memoria Principal. 3.1.9.- Estructura física de la Memoria Principal. 3.1.9.- Representación de la información, 3.1.10.-Palabras contiguas, 3.1.11.- Palabras Ligadas. 3.1.12.-Control de localidades 3.2.- Manejo de cadenas 3.2.1.- Programación de cadenas en lenguaje C 3.2.2.- Funciones básicas para el manejo de cadenas 3.2.3.- Búsqueda en cadenas 3.2.4.- Conversión de caracteres 3.2.5.- Operaciones de caracteres con la memoria 3.3.- Manejo de estructuras o registros 3.3.1.- Programación de registros en lenguaje C. 3.3.1.- Concepto de estructura . 3.3.1.- Definición de nuevos tipos de datos (typedef) 3.3.1.- Implantación de una estructura Actividades : 3a .- Hacer un resumen del tema VALOR.- 1% Enviar esta actividad 3b .- El alumno entregara un documento sobre el Manejo de registros. Este documento será basado en un programa en C++ que muestre como menú principal las siguientes operaciones de registros de un almacen (código del articulo, descripción, ubicación en almacen, costo unitario y unidades). VALOR.- 5% Enviar esta actividad Menu de opciones ================ 1) Crear un registro nuevo. 2) Borrar un elemento del registro. 3) Agregar un elemento al registro. 4) Mostrar el registro. 5) Buscar un elemento en el registro. 6) Modificar un elemento en el registro. 7) Salir de la aplicacion. 3c .- El alumno realizará examen VALOR.- 10% Fecha aproximada: 6 de abril 4.- ESTUCTURAS DINAMICAS EN MEMORIA PRINCIPAL 4.- Tipos de datos abstractos 4.1.-Pilas 4.1.1.-Definición del tipo de dato abstracto pila. 4.1.2.-Definición de las operaciones sobre pilas. 4.1.3.-Implantación de una pila. 4.2.-Colas 4.2.1.-Definición del tipo de dato abstracto cola. 4.2.2.-Definición de las operaciones sobre colas. 4.2.3.-Bicolas. 4.2.4.-Implantación de una cola. 4.3.-Listas 4.3.1.-Definición del tipo de dato abstracto lista. 4.3.2.-Definición de las operaciones sobre listas. 4.3.3.-Implantación de una lista. 4.3.4.-Tablas de dispersión y funciones hash. 4.4.-Listas simplemente enlazadas. 4.4.1.-Definición del tipo de dato abstracto lista. 4.4.2.-Definición de las operaciones sobre listas. 4.4.3.-Implantación de una lista. 4.5.-Listas doblemente enlazadas. 4.5.1.-Definición del tipo de dato abstracto lista doble. 4.5.2.-Definición de las operaciones sobre lista doble. 4.5.3.-Implantación de una lista doble. 4.5.4.- Evaluación de expresiones y lista circular 4.6.- Listas no lineales. 4.6.1.- Gráficas 4.6.1.1.- Definición de las operaciones sobre gráficas 4.6.1.2.- Implantación de una gráfica 4.6.2.- Árboles. 4.6.2.1.- Concepto Árbol 4.6.2.2.- Nomenclatura Arboles 4.6.2.3.- Algoritmos Arboles 4.6.2.4.- Arboles y arco dirigido. 4.6.2.5.- Definición del tipo de dato abstracto árbol binario 4.6.2.6.- Definición de las operaciones sobre árboles binarios 4.6.2.7.- Implantación de un árbol binario 4.6.3.- Grafos. 4.6.3.1.-Definición del tipo de dato abstracto grafo. 4.6.3.2.-Operaciones sobre un grafo. 4.6.3.4.-Implantación de un grafo. 4.7.-Ordenacion Interna 4.7.1.- Algoritmos de Ordenación 4.7.2.- Shell Sort Ordenación 4.7.3.- Burbuja Ordenación 4.7.4.- Algoritmos de Ordenación por Distribución 4.7.5.- Ordenación Radix 4.8.- Ordenación externa 4.8.1.- Algoritmos Ordenación externa 4.8.2.- Mezcla Natural 4.9.- Métodos de búsqueda 4.9.1.- Búsqueda Binaria Interna 4.9.2.- Búsqueda Secuencial Interna 4.9.3.- Búsqueda Hash 4.10.- Búsqueda Externa 4.10.1.- Búsqueda Secuencial Externa 4.10.2.- Búsqueda Binaria Externa 4.11.- Recursividad 4.11.1.- Definición de Recursividad 4.11.2.- Procedimientos Recursivos 4.11.3.- Mecánica de recursión 4.11.4.- Transformación de Algoritmos Recursivos a Iterativos 4.11.5.- Recursividad en Diseño 4.11.6.- Complejidad de algoritmos recursivos Actividades : 4a .- El alumno entregara el siguiente programa de “Colas” en Visual C# ejemplificado sus estructuras básicas 4b .- El alumno entregara resumen 4c .- El alumno realizará examen VALOR.- 5% VALOR.- 1% VALOR.- 10% Enviar esta actividad Enviar esta actividad Fecha aproximada: 27 de abril NOTA: SI HASTA AQUÍ EL ALUMNO NO CUMPLIO CON MAS DEL 60 % DEL TEMARIO NO PODRA CONTINUAR Y TENDRA QUE PRESENTAR EXAMEN GLOBAL 5.- ESTUCTURAS EN MEMORIA SECUNDARIA 5.1.- Definición de Memoria Secundaria. 5.2.- Buffer 5.3.- Interfás en memoria secundaria 5.4.- Manejo de Archivos 5.4.1.- Lectura y escritura de registros de archivos 5.4.2.- Archivos lógicos y físicos 5.4.3.- Organización física de los archivos 5.4.4.- Accesos a los archivos 5.4.5.- Archivos Secuenciales 5.4.6.- Archivos Random 5.4.7.- Lógicos y físicos, 5.4.8.- Sistema de archivos 5.4.9.- Operaciones básicas con archivos 5.5.- Bases de Datos 5.5.1.- Manejador de Bases de Datos (DBMS) 5.5.2.- Conexion a Bases de Datos 5.5.3.- Lenguaje de Bases de Datos (SQL) 5.5.4.- Operaciones básicas con Bases de Datos 5.5.5.- Aplicaciones con Bases de Datos Actividades : 5a .- El alumno entregara un resumen de este Tema VALOR.- 1% Enviar esta actividad 5b .- El alumno entregará un programa en un documento que sea un directorio telefónico manejando archivos con lista doblemente encadenada para la siguiente estructura de datos: struct dir{ char nombre[30]; char calleNum[40]; char ciudadPob[20]; char CP[6]; char telefono[20]; struct dir *siguiente; /* puntero a la siguiente entrada */ struct dir *anterior; /* puntero al registro anterior */ } lista_entrada; VALOR.- 5% Enviar esta actividad VALOR.- 10% 5c .- El alumno presentara examen parcial para este tema. Fecha aproximada: 11 de mayo 6.- PROGRAMACION ORIENTADA A OBJETOS Y LAS ESTRUCTURAS DE DATOS 6.1.- Paradigma de programación 6.2.- Concepto de Programación orientada a objetos. 6.3.- Abstracción de datos y programación orientada a objetos. 6.4.- Objeto 6.5.- Clase 6.6.- Asignación de memoria en programación orientada a objetos 6.7.- Visibilidad 6.8.- Constructores y destructores 6.9.- Valor null 6.10.- Pseudovariable (this) 6.11.- Elementos static 6.12.- Jerarquía de clases Actividades : 6a .- El alumno entregará un resumen de este tema VALOR.- 1% Enviar esta actividad 6b.- El alumno entregara un documento basado en la programación de la clase almacen. Este documento será un programa en C++ que muestre como menú principal las siguientes opciones y manejando la siguiente estructura: (código del articulo, descripción, ubicación en almacen, costo unitario y unidades). MENU DE OPCIONES ==== == ======== 1. Ingresar datos 2. Actualizar datos; 3. Consulta de datos 4. Salir de la aplicacion 6c .- El alumno realizará examen VALOR.- 5% VALOR.- 10% Enviar esta actividad Fecha aproximada: 25 de mayo EVALUACION 6 EXAMENES PARCIALES TAREAS, PROBLEMAS, TRABAJOS, EJERCICIOS, PROGRAMAS Y RESUMEN DEL TEMARIO TOTAL 60 % 40% 100 % BIBLIOGRAFÍA JAYANES, Luis. Problemas de metodología de la programación. España, MacGrawHill, 1990, 500 pp. TENENBAUM, Aaron M : Estructuras de datos en C. México, Prentice Hall, 1993 ANA PONT, SAN JUAN: Estructura de computadores vol.II. Universidad Politecnica de Valencia. Col Libro Docente. 1996, 327pp SCHILDT, H.: "C: Manual de referencia".Osborne-Mc Graw-Hill, 1990 RAMIREZ FELIPE: Introducción a la programación: Algoritmos y su Implementación VB.Net, C#, java y C++. México AlfaOmega 2007, 520 p. SEDGEWICK, R.: "Algoritmos en C++". Addison-Wesley Iberoameriacana / Díaz de Santos. WIRTH, N.: "Algoritmos + Estructuras de Datos = Programas". Ediciones del Castillo, 1980 KERNIGHAN, B. Y RITCHIE, D.: "El lenguaje de programación C". Prentice Hall. KERNIGHAN, B. Y PIKE, R.: "La práctica de la programación". Prentice Hall. CORMEN, Thomas H.: "Introduction to Algorithms". MIT Press / Mc Graw-Hill, 2001. 2ª Edición BRASSARD, G.: "Fundamentos de algoritmia". Prentice Hall. SKIENA, Steven S.: "The Algorithm Design Manual" KNUTH, D. E.: "Algoritmos fundamentales". Serie: "El arte de programar ordenadores", 1 Reverté, 1980 KNUTH, D. E.: "Seminumerical algorithms". Serie: "The art of computer programming", 2 Addison-Wesley, 1981 KNUTH, D. E.: "Clasificación y búsqueda". Serie: "El arte de programar ordenadores", 3 Reverté, 1987 HOFSTADTER, Douglas R.: "GÖDEL, ESCHER, BACH: un Eterno y Grácil Bucle". Tusquets Editores, 1989 LIGAS DE INTERNET http://sistemas.itlp.edu.mx/tutoriales/estru1/33.htm