Академический Документы
Профессиональный Документы
Культура Документы
Programacio
Programaci
on II
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.
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.
n II.
Programacio
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.
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