Página principal   Lista alfabética   Lista de componentes   Lista de archivos   Miembros de las clases   Archivos de los miembros   Páginas relacionadas  

introduccion.ii

00001 
00408 @section EDsesion6 Sesión 6: Tipos de datos abstractos en C++ (II).
00409 
00410 Matrices en base a una especificación dada. Se modifica un programa de
00411 imágenes.
00412 
00413 día 21 de mayo
00414 
00415 @section EDsesion7 Sesión 7: Abstracción, plantillas e iteradores.
00416 
00417 -# Transformar el tipo @e Polinomio que se ha obtenido, en una plantilla
00418     que parametrice el tipo de dato del coeficiente de cada monomio. De
00419     esta forma, se pueden declarar Polinomios con precisión @e float o
00420     con precisión @e double. Note que esto implica también una modificación
00421     en los programas de ejemplo.
00422 
00423 día 6 de junio
00424 
00425 */
00426 
00427 
00428 
00429 
00430 
00431 
00432 
00433 
00434 
00435 
00436 
00437 
00438 
00439 @section EDsesion4 Sesión 4: Abstracción, plantillas e iteradores.
00440 
00441 Después de esta práctica el alumno debe estar familiarizado con:
00442 
00443 - El uso de tipos de datos abstractos clásicos, como son el tipo @e Vector,
00444   @e Conjunto y  @e Diccionario, así como el uso de plantillas e
00445   iteradores.
00446 - La estructuras de datos  de secuencia de celdas doblemente enlazadas y la
00447 representación de árboles binarios de búsqueda mediante celdas enlazadas.
00448 
00449 Los ficheros fuente se deberán descargar desde
00450 
00451 http://decsai.ugr.es/~agarrido/ed_2001_2002/codigos/generalizacion.tgz
00452 
00453 tras lo cual, el comando
00454 
00455 tar zxvf generalizacion.tgz
00456 
00457 extrae todos los contenidos del fichero en el directorio actual.
00458 
00459 
00460 Los objetivos de la práctica son
00461 
00462 - Desarrollar un programa completo que use TDAs que se han desarrollado
00463   en clase de teoría, más concretamente, el tipo @e Vector, @e Conjunto y
00464   @e Diccionario
00465 - Que el alumno maneje los tipos iteradores sobre contenedores.
00466 - Que el alumno se familiarice con el uso de plantillas, así como con
00467    errores relacionados con funciones y tipos de datos genéricos.
00468 - Insistir en la asimilación del concepto de tipo de dato abstracto, y la
00469   ventaja de la abstracción.
00470 - Practicar en el uso de las estructuras de datos relacionadas con secuencias y
00471   árboles binarios.
00472 
00473 Se desea desarrollar un programa para el análisis y clasificación automática de
00474 textos. Para ello, se considera el problema de analizar la relación entre  un
00475 subconjunto de palabras relevantes y un texto. El proceso es el
00476 siguiente,
00477 
00478 -# Se crean dos ficheros de texto
00479   -# Palabras relevantes. Contiene todas las palabras que se
00480      consideran relevantes.
00481   -# Texto. El texto a analizar.
00482 -# El programa a desarrollar se llamará @e analizar, y leerá los dos ficheros
00483 anteriores para obtener la salida. La forma de lanzarlo será "analizar
00484 <relevantes> <texto>" donde
00485   -# <relevantes> es el nombre del fichero donde están las palabras relevantes.
00486   -# <texto> es el nombre del fichero con el texto a analizar.
00487 -# El programa obtiene en la salida estandar (@e cout):
00488     -# Número de palabras relevantes
00489     -# Número de palabras en el texto
00490     -# Porcentaje de palabras relevantes que aparecen en el texto
00491     -# Porcentaje de palabras en el texto que son relevantes.
00492     -# Las palabras relevantes que aparecen en el texto y su frecuencia,
00493        ordenadas desde mayor frecuencia a menor
00494     -# Las palabras del texto y su frecuencia, ordenadas desde mayor
00495        frecuencia a menor.
00496 
00497 Para simplificar el problema, y que el alumno no dedique un tiempo excesivo a
00498 detalles de menor importancia para la práctica, se dispone de una clase
00499 @c Lector_Palabras que resuelve el problema de leer un conjunto de palabras
00500 desde un flujo de entrada.
00501 
00502 Nótese que el fichero de palabras relevantes podría ser un texto cualquiera, con
00503 palabras repetidas, caracteres especiales, etc, que podría leerse con el tipo @c
00504 Lector_Palabras de la misma forma que el texto a analizar. El número de palabras
00505 relevantes no tiene en cuenta repetidos (palabras repetidas contabilizan una
00506 vez), mientras que el número de palabras en el texto si debe contabilizarlas.
00507 
00508 El alumno debe:
00509 
00510 -# Crear un programa @e analizar que resuelva el problema descrito. Para ello,
00511   puede usar los tipos de dato abstractos desarrollados para gestionar
00512     -# Un lector de palabras (tipo @c Lector_Palabras)
00513     -# Un vector dinámico (tipo @c Vector)
00514     -# Un conjunto (tipo @c Conjunto)
00515     -# Un diccionario (tipo @c Diccionario y @c Par)
00516 -# Modificar la estructura de datos interna del tipo de dato abstracto
00517   @c Diccionario, de forma que sea un árbol binario de búsqueda el que almacene
00518   las parejas de valores.
00519 -# De forma @e voluntaria, podrá entregar igualmente también una implementación
00520   del tipo de dato @c Conjunto con una estructura de datos de celdas doblemente
00521   enlazadas circulares con cabecera para almacenar los datos.
00522 -# Probar el programa original con las modificaciones internas realizadas y
00523 comprobar que los resultados son idénticos.
00524 
00525 Finalmente, y para facilitar la modificación del tipo de dato @c Diccionario
00526 se incluye el tipo de dato @e Conjunto de ejemplo (ficheros de extensión ejemplo
00527 en el directorio @e ejemplos). Se ofrece el TDA @c Conjunto, al que se ha
00528 modificado la estructura de datos interna para usar un árbol binario de
00529 búsqueda en lugar de un vector. Nótese que esta es la transformación que se
00530 pide en la práctica, aunque para el tipo de dato @c Diccionario.
00531 
00532 La práctica se deberá entregar como:
00533 
00534   -# Un documento en papel que contiene tanto el listado como
00535      la documentación del programa realizado.
00536   -# Un disquette con la práctica. Éste debe estar contenido en un
00537      sobre o similar que permita pegarlo al documento entregado. En este
00538      disquette deben aparecer
00539       -# Los fuentes necesarios para compilar el programa. Nótese que estos
00540       incluyen tanto los del alumno como los del profesor.
00541       -# Un fichero @e makefile (que se llamará @e makefile) para generar
00542       el ejecutable escribiendo simplemente @e make, y para borrar los ficheros
00543       objeto escribiendo @e make @e clean
00544       -# Un fichero @e LEEME donde se describe el contenido del disco y
00545       cualquier comentario adicional sobre el programa que el alumno considere
00546       oportuno.
00547 
00548 La fecha de @b ENTREGA será el Lunes, 10 de Junio de 13 a 13:30 en el
00549 despacho del profesor.
00550 
00551 
00552 
00553 

Programación en C++. Desarrollado por Antonio Garrido, © 2003