Está en la página 1de 3

n II.

Programacio

ctica Secuencia Iterable (Mayo-Junio 2010)


Pra

Programaci
on II

ctica Secuencia Iterable


Pra
n
Dpto. LSIIS. Unidad de Programacio

Normas y Objetivos
Objetivo: El objetivo de este ejercicio es la implementacion de un TAD que proporcione el acceso
secuencial a los elementos de una secuencia por medio de un cursor, y la posibilidad de
modificar esta secuencia mediante operaciones de insercion basadas en la posicion de dicho
cursor.
Autoevaluaci
on: El alumno debe comprobar que su ejercicio no contiene alguno de los errores
explicados en el apartado 6 de este enunciado. Si el ejercicio contiene alguno de estos
errores, se calificar
a como suspenso.
Entrega: La entrega se realizara a traves del sistema web de entrega de practicas de la asignatura.
En el momento de realizar la entrega, el ejercicio sera sometida a una serie de pruebas
que debera superar para que la entrega sea admitida. El alumno dispondra de un n
umero
maximo de diez entregas. Si alumno realiza mas de cinco entregas, se le restara un punto en
la nota final de el ejercicio. Asimismo, por el hecho de que el ejercicio sea admitido, eso no
implicara que el ejercicio este aprobado.
Fecha lmite: Es el da 7 de Junio de 2010 a las 10:00 AM.
C
odigo Auxiliar: La realizacion de esta practica requiere la utilizacion de los ficheros auxiliares
que se pueden encontrar dentro del fichero alumnos.zip que acompa
na a este enunciado.
Las implementaciones de los TADs vistos en clase se encuentran en el fichero TADS.jar que
podran encontrar en moodle en materiales de la asignatura/lib/TADs. Concretamente, para
realizar esta practica se tendra que utilizar el paquete listas incluido en TADS.jar.
Publicaci
on de Notas: La publicacion de las notas del ejercicio se anunciara a traves del foro
de practicas.
Detecci
on Autom
atica de Copias: Cada practica entregada se comparara con el resto de
practicas entregadas en todos los grupos de la asignatura. Esto se realizara utilizando un
sofisticado programa de deteccion de copias.
Consecuencias de haber copiado: Todos los alumnos involucrados en una copia, bien por copiar o por ser copiados, quedan inhabilitados para presentarse a todas las convocatorias de
examen del presente curso, ademas de la posible apertura de expediente academico.

1.

Secuencia Iterable

Un TAD Secuencia Iterable es un TAD que permite crear, recorrer y modificar secuencias de
elementos. Las operaciones que facilitan el recorrido y la modificacion de la secuencia se realizan
de distinta manera dependiendo de la posicion de un cursor que forma parte del TAD.
Las operaciones para recorrer la secuencia tienen como objetivo proporcionar los servicios
necesarios para mover el cursor a lo largo de la secuencia. De esta manera, el elemento al que se
puede acceder directamente en un cierto momento es aquel sobre el que se encuentra el cursor.
El cursor se puede desplazar una posicion a la izquierda o a la derecha siempre que no se haya
alcanzado todava el principio o el final de la secuencia respectivamente.
En cuanto a las operaciones de modificacion, se puede insertar un elemento justo despues del
elemento sobre el que se encuentra el cursor. Asimismo, existe una segunda modalidad de insercion
que permite la insercion de una lista de elementos en lugar de un solo elemento.

2.

ctica Secuencia Iterable (Mayo-Junio 2010)


Pra

n II.
Programacio

Implementaci
on de Secuencias Iterables

El alumno deber
a implementar en java el tipo abstracto de datos Secuencia Iterable.
La especificacion completa del tipo abstracto de datos SecuenciaIterable puede encontrarse en la
documentacion javadoc de la clase SecuenciaIterable que se adjunta con este enunciado.
El alumno deber
a comprender y seguir la especificaci
on para poder realizar la implementacion (SecuenciaIterable.java).
La estructura de datos que se debe implementar es una cadena doblemente enlazada acompa
nada de tres punteros: uno al primer elemento o nodo de la secuencia, otro al u
ltimo y otro
representando el cursor. En la siguiente figura se puede ver un ejemplo de secuencia iterable con
el cursor en el cuarto elemento:

x1

3.

x2

x3

x4

x5

x6

C
odigo proporcionado y fichero a entregar

Se deber
a entregar el fichero SecuenciaIterable.java. Este fichero debe incluir la definicion de la clase SecuenciaIterable. Como punto de partida, se proporciona junto con este enunciado el esqueleto de esta clase. El esqueleto de esta clase ya contiene la definicion de los atributos,
que deberan ser utilizados para implementar la cadena doblemente enlazada, mas concretamente,
los tres punteros que se mencionaron en el apartado anterior.
Junto al esqueleto de la clase SecuenciaIterable, se proporciona el codigo de una clase auxiliar
llamada NodoDoble, cuyo cometido es el de definir la estructura nodo de la cadena doblemente
enlazada, y los metodos necesarios para trabajar con ella. Ademas, se proporcionan las clases que
definen las excepciones que pueden lanzar los metodos de la clase SecuenciaIterable.

4.

Pruebas del alumno

Con el fin de probar el ejercicio, se proporciona un programa de prueba en el fichero Corrector.


java. Este fichero incluye un main() que invoca los metodos implementados por el alumno, y
comprueba una serie de aserciones relativas a los datos de salida generados por estos metodos. Al
mismo tiempo, este main() genera una salida en un fichero salidaCorrector.out.
El funcionamiento de este main() es el siguiente: se abre un fichero de texto (se adjunta el
fichero de entrada entrada.txt a modo de muestra del formato, y su fichero de salida asociado
salida.out), cuyo nombre se pasa como argumento al main(), que contiene varias secuencias
de n
umeros separados por espacios, con una secuencia en cada lnea. A continuacion, para cada secuencia del fichero, el main() construye varias secuencias iterables con los n
umeros de la
secuencia, y les aplica una serie de operaciones (las que ha implementado el alumno en la clase
SecuenciaIterable). Los datos de salida generados por estas operaciones son evaluados mediante aserciones, y mostrados en pantalla para que el alumno pueda comprobar si estos datos son
correctos. Esta inspeccion visual de la salida es imprescindible, ya que el cumplimiento de todas
las aserciones no garantiza la correccion del ejercicio.

n II.
Programacio

ctica Secuencia Iterable (Mayo-Junio 2010)


Pra

Para lanzar el programa de prueba Corrector.java desde eclipse, hay que configurar la ejecucion para que se pase como argumento al main() el nombre del fichero de entrada, y se ejecute
el programa con las aserciones activadas (parametro -ea). Para ello, hay que pinchar el fichero
Corrector.java, abrir el men
u pop-up con el boton derecho del raton y seleccionar la opcion Run
configurations... en el menu asociado a la opcion Run As. Una vez hecho esto, hay que crear una
configuracion de lanzamiento para el fichero Corrector.java. Si ya se ha ejecutado este programa,
ya existira una configuracion por defecto. En caso contrario, se debera crear dicha configuracion
usando el primer boton de la barra de botones que aparece en el cuadro de dialogo Run Configurations. Tras crear esta configuracion de lanzamiento, se debera seleccionar la pesta
na Arguments,
y especificar para el campo Program arguments el nombre del fichero de entrada y para el campo
VM arguments el valor -ea. De esta manera, cada vez que se lance el programa Corrector.java,
se utilizara esta configuracion.

5.

Pruebas de aptitud

Durante el proceso de entrega del ejercicio se generaran varias secuencias iterables y se realizaran diversas operaciones con ellas. Para que un ejercicio sea aceptado no podra haber ninguna
diferencia entre la ejecucion de la misma y la ejecucion de un programa correcto. Los datos de
entrada y las operaciones que ejecutara el corrector no se haran p
ublicos en ning
un momento.
La eficiencia del codigo es un factor a tener en cuenta puesto que los programas de prueba se
ejecutaran bajo condiciones de lmite de tiempo y de uso de memoria.
La aceptacion de un ejercicio por parte del programa de entrega no implicara que dicho ejercicio
ya este aprobado, sino que el ejercicio ha superado el primer filtro.

6.

Errores graves a evitar

En esta seccion se enumeran algunos errores que el alumno debe evitar. Esta lista no es exhaustiva en el sentido de que no recoge todos los posibles errores que el alumno debe evitar cometer.
1. Cuando se necesita recorrer una lista, se realiza una copia de la lista y se recorre la copia.
2. Replica el codigo de insertar un elemento al insertar los elementos de una lista en la secuencia
iterable.

7.

Se valorar
a positivamente

1. La utilizacion de nombres significativos para los identificadores, as como la utilizacion de


los convenios de Sun.
2. La utilizacion de metodos auxiliares que implementen tareas comunes a varios metodos, y
que de esa forma eviten la duplicidad de codigo.
3. La correcta indentacion del codigo. Se recomienda la utilizacion en eclipse del atajo de teclado
CTRL + i.
4. La implementacion de un codigo eficiente que no realice operaciones innecesarias.