Listas Ligadas

Anuncio
Facultad de Ingeniería Eléctrica
Materia: Sistemas Computacionales
Proyecto de Programación II
Listas: Aritmética de Alta Precisión.
Fecha de publicación: 13 de Febrero de 2003
Fecha de entrega: 28 de Febrero de 2003
Objetivo: Poner en práctica los conceptos aprendidos acerca de listas ligadas. El alumno debe comprender bien
los conceptos de clases (ADT, por las siglas del Inglés “Abstract Data Type”) y tipo abstracto de datos,
así como su aplicación en el desarrollo de estructuras de datos. En particular, para el desarrollo de este
proyecto, se requiere de un buen entendimiento de los diferentes tipos de listas, sus características y su
implementación en Java.
Descripción: Desarrollar un ADT que implemente números de precisión infinita (ok, limitada por la memoria de
la máquina), con las operaciones aritméticas más comúnmente usadas. El proyecto consta de dos
partes: Enteros de Alta Precisión (EAP) y Flotantes de Alta precisión (FAP).
Para representar enteros de alta precisión, podemos utilizar listas (en cualquiera de sus formas: arreglos,
listas ligadas, simples o dobles, etc.), donde cada dígito ocupa una celda de la lista. Nota para el lector
intrépido: Claro, los EAPs pueden ser representados por listas de enteros o shorts; de esa manera, cada
elemento de la lista almacena un grupo de dígitos, no uno solo (challenging, huh?!?). La figura
siguiente ilustra como representar el número 582849 en una lista simplemente ligada:
5
8
2
4
6
9
Algunas notas para desarrollar la clase EAP:




Las operaciones aritméticas se efectúan de derecha a izquierda. Es decir, los números tienen
que estar alineados por la derecha. ¿Qué tipo de acceso (recorrido) de la lista requiere esta
característica?
Los enteros deben imprimirse de izquierda a derecha. ¿Qué tipo de acceso (recorrido) de la
lista requiere esta característica?
¿Qué tipo de estructura de datos es la mas adecuada para satisfacer los dos requisitos
mencionados arriba?
Las operaciones aritméticas requeridas son: suma, resta, multiplicación, división y factorial.
Opcional: Raíz cuadrada.
Algunas notas para desarrollar la clase FAP:



¿Cómo representaremos el punto decimal?
Las sumas y restas se efectúan de derecha a izquierda, con los sumandos alineados por el punto
decimal.
¿Cuántos decimales tiene el resultado de un producto o cociente? ¿Qué papel juega el punto
decimal aquí? Nos da ésto algun hint para desarrollar los algoritmos de multiplicación y
división?
Requerimientos mínimos:

Desarrollar una clase que implemente EAP y su funcionalidad.

Desarrollar una clase que implemente FAP y su funcionalidad.

Desarrollar un Applet que pruebe la funcionalidad de la clase EAP y otro para la clase FAP. Nota:
hagan los campos de entrada/salida de datos suficientemente grandes como para probar con números
que no quepan en un entero normal. De preferencia, desplegar las operaciones como se hacen en
papel.

Desarrollar una página de web que presente los Applets.

La página de web debe ser localizada en SCFIE, de modo que quede accesible a cualquier persona, vía
Internet.

En la página web, incluir un link a un archivo de texto, donde se encuentre el código fuente de la
solución. Sin embargo, NO HACERLO DISPONIBLE SINO HASTA DESPUÉS DE LA FECHA
DE ENTREGA, de manera que sus compañeros no puedan copiarlo (ver Honestidad y Copias abajo).
No olvidar hacerlo disponible después de la fecha de entrega, de manera que el profesor pueda revisar
su trabajo.

En la página web incluir un link a un archivo doc (Microsoft Word) que contenga un reporte del
trabajo, el cual será presentado en formato de reporte técnico.
Nota: En el desarrollo de su trabajo, no olviden los conceptos fundamentales siguientes:

Divide y vencerás (modularidad)

Desarrollo incremental

Reusabilidad de código
Estructura de un Reporte Técnico: Un reporte técnico debe contener los siguientes elementos:

Portada

Contenido

Introducción (es el primer capítulo o sección del reporte)

Desarrollo del trabajo (uno o más capítulos)

Conclusiones (el último capítulo del reporte)

Referencias bibliográficas
Honestidad y Copias: El trabajo es estrictamente personal. Si descubro copias, tanto el autor original, como los
copiones tendrán un 0 (cero) en este trabajo. No regales tu trabajo, no beneficiará a tu amigo y si te perjudicará a ti.
Muy probablemente, encontrarás la solución a este trabajo como un Applet en Internet. No es aceptable bajar un
Applet de Internet y presentarlo como trabajo personal. Esta acción también le hará acreedor al alumno de una
calificación de 0 (cero).
Modificaciones: Cualquier modificación al presente trabajo tendrá que ser comentada con el profesor antes de la
entrega. Innovaciones, ideas, sugerencias, comentarios, etc. son siempre bienvenidos.
Entrega: El trabajo deberá ser entregado por correo electrónico desde su propia cuenta, a la cuenta del profesor
([email protected] ) a más tardar a las 24:00 hrs. de la fecha señalada para entrega. Enviar sólo la dirección
de la página de web donde está la solución del problema.
Página web: La página de web del curso se encuentra en http://scfie.fie.umich.mx/~juan/Materias/FIE/SC, a partir
de ahí encontrará el presente documento y demás información relacionada al curso.
Descargar