3
Programaci´ on II. Pr´ actica Secuencia Iterable (Mayo-Junio 2010) 1 Programaci´onII Pr ´ actica Secuencia Iterable Dpto. LSIIS. Unidad de Programaci´ on Normas y Objetivos Objetivo: El objetivo de este ejercicio es la implementaci´ on 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 inserci´on basadas en la posici´on 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 entregase realizar´aa trav´ esdel sistema web de entrega de pr´acticasde la asignatura. En el momento de realizar la entrega, el ejercicio ser´a sometida a una serie de pruebas que deber´a superar para que la entrega sea admitida. El alumno dispondr´a de un n´ umero m´aximo de diez entregas. Si alumno realiza m´as de cinco entregas, se le restar´a un punto en la nota final de el ejercicio. Asimismo, por el hecho de que el ejercicio sea admitido, eso no implicar´a que el ejercicio est´ e aprobado. Fecha l´ ımite: Es el d´ ıa 7 de Junio de 2010 a las 10:00 AM. C´odigoAuxiliar: La realizaci´on de esta pr´actica requiere la utilizaci´on 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 podr´an encontrar en moodle en materiales de la asignatura/lib/TADs. Concretamente, para realizar esta pr´actica se tendr´a que utilizar el paquete listas incluido en TADS.jar. Publicaci´on de Notas: La publicaci´on de las notas del ejercicio se anunciar´ a a trav´ es del foro depr´acticas. Detecci´onAutom´ atica de Copias: Cada pr´actica entregada se comparar´a con el resto de pr´acticas entregadas en todos los grupos de la asignatura. Esto se realizar´a utilizando un sofisticado programa de detecci´on de copias. Consecuencias de haber copiado: Todos los alumnos involucrados en una copia, bien por copi- ar o por ser copiados, quedan inhabilitados para presentarse a todas las convocatorias de examen del presente curso, adem´as de la posible apertura de expediente acad´ emico. 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 modificaci´on de la secuencia se realizan de distinta manera dependiendo de la posici´on 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 aqu´ el sobre el que se encuentra el cursor. El cursor se puede desplazar una posici´on a la izquierda o a la derecha siempre que no se haya alcanzado todav´ ıa el principio o el final de la secuencia respectivamente. En cuanto a las operaciones de modificaci´on, se puede insertar un elemento justo despu´ es del elemento sobre el que se encuentra el cursor. Asimismo, existe una segunda modalidad de inserci´on que permite la inserci´on de una lista de elementos en lugar de un solo elemento.

Practica Prog II Secuencias

Embed Size (px)

DESCRIPTION

mmmm

Citation preview

Page 1: Practica Prog II Secuencias

Programacion II. Practica Secuencia Iterable (Mayo-Junio 2010) 1

Programacion IIPractica Secuencia IterableDpto. LSIIS. Unidad de Programacion

Normas y Objetivos

Objetivo: El objetivo de este ejercicio es la implementacion de un TAD que proporcione el accesosecuencial a los elementos de una secuencia por medio de un cursor, y la posibilidad demodificar esta secuencia mediante operaciones de insercion basadas en la posicion de dichocursor.

Autoevaluacion: El alumno debe comprobar que su ejercicio no contiene alguno de los erroresexplicados en el apartado 6 de este enunciado. Si el ejercicio contiene alguno de estoserrores, se calificara 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 pruebasque debera superar para que la entrega sea admitida. El alumno dispondra de un numeromaximo de diez entregas. Si alumno realiza mas de cinco entregas, se le restara un punto enla nota final de el ejercicio. Asimismo, por el hecho de que el ejercicio sea admitido, eso noimplicara que el ejercicio este aprobado.

Fecha lımite: Es el dıa 7 de Junio de 2010 a las 10:00 AM.

Codigo Auxiliar: La realizacion de esta practica requiere la utilizacion de los ficheros auxiliaresque se pueden encontrar dentro del fichero alumnos.zip que acompana a este enunciado.Las implementaciones de los TADs vistos en clase se encuentran en el fichero TADS.jar quepodran encontrar en moodle en materiales de la asignatura/lib/TADs. Concretamente, pararealizar esta practica se tendra que utilizar el paquete listas incluido en TADS.jar.

Publicacion de Notas: La publicacion de las notas del ejercicio se anunciara a traves del forode practicas.

Deteccion Automatica de Copias: Cada practica entregada se comparara con el resto depracticas entregadas en todos los grupos de la asignatura. Esto se realizara utilizando unsofisticado programa de deteccion de copias.

Consecuencias de haber copiado: Todos los alumnos involucrados en una copia, bien por copi-ar o por ser copiados, quedan inhabilitados para presentarse a todas las convocatorias deexamen 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 deelementos. Las operaciones que facilitan el recorrido y la modificacion de la secuencia se realizande 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 serviciosnecesarios para mover el cursor a lo largo de la secuencia. De esta manera, el elemento al que sepuede 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 hayaalcanzado todavıa el principio o el final de la secuencia respectivamente.

En cuanto a las operaciones de modificacion, se puede insertar un elemento justo despues delelemento sobre el que se encuentra el cursor. Asimismo, existe una segunda modalidad de insercionque permite la insercion de una lista de elementos en lugar de un solo elemento.

Page 2: Practica Prog II Secuencias

2 Practica Secuencia Iterable (Mayo-Junio 2010) Programacion II.

2. Implementacion de Secuencias Iterables

El alumno debera implementar en java el tipo abstracto de datos Secuencia Iterable .La especificacion completa del tipo abstracto de datos SecuenciaIterable puede encontrarse en ladocumentacion javadoc de la clase SecuenciaIterable que se adjunta con este enunciado.

El alumno debera comprender y seguir la especificacion para poder realizar la imple-mentacion (SecuenciaIterable.java).

La estructura de datos que se debe implementar es una cadena doblemente enlazada acom-panada de tres punteros: uno al primer elemento o nodo de la secuencia, otro al ultimo y otrorepresentando el cursor. En la siguiente figura se puede ver un ejemplo de secuencia iterable conel cursor en el cuarto elemento:

x1 x2 x3 x4 x5 x6

3. Codigo proporcionado y fichero a entregar

Se debera entregar el fichero SecuenciaIterable.java. Este fichero debe incluir la defini-cion de la clase SecuenciaIterable. Como punto de partida, se proporciona junto con este enun-ciado 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 auxiliarllamada NodoDoble, cuyo cometido es el de definir la estructura nodo de la cadena doblementeenlazada, y los metodos necesarios para trabajar con ella. Ademas, se proporcionan las clases quedefinen 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, ycomprueba una serie de aserciones relativas a los datos de salida generados por estos metodos. Almismo 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 elfichero de entrada entrada.txt a modo de muestra del formato, y su fichero de salida asociadosalida.out), cuyo nombre se pasa como argumento al main(), que contiene varias secuenciasde numeros separados por espacios, con una secuencia en cada lınea. A continuacion, para ca-da secuencia del fichero, el main() construye varias secuencias iterables con los numeros de lasecuencia, y les aplica una serie de operaciones (las que ha implementado el alumno en la claseSecuenciaIterable). Los datos de salida generados por estas operaciones son evaluados medi-ante aserciones, y mostrados en pantalla para que el alumno pueda comprobar si estos datos soncorrectos. Esta inspeccion visual de la salida es imprescindible, ya que el cumplimiento de todaslas aserciones no garantiza la correccion del ejercicio.

Page 3: Practica Prog II Secuencias

Programacion II. Practica Secuencia Iterable (Mayo-Junio 2010) 3

Para lanzar el programa de prueba Corrector.java desde eclipse, hay que configurar la eje-cucion para que se pase como argumento al main() el nombre del fichero de entrada, y se ejecuteel programa con las aserciones activadas (parametro -ea). Para ello, hay que pinchar el ficheroCorrector.java, abrir el menu pop-up con el boton derecho del raton y seleccionar la opcion Runconfigurations... en el menu asociado a la opcion Run As. Una vez hecho esto, hay que crear unaconfiguracion 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 configuracionusando el primer boton de la barra de botones que aparece en el cuadro de dialogo Run Configu-rations. Tras crear esta configuracion de lanzamiento, se debera seleccionar la pestana Arguments,y especificar para el campo Program arguments el nombre del fichero de entrada y para el campoVM 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 re-alizaran diversas operaciones con ellas. Para que un ejercicio sea aceptado no podra haber ningunadiferencia entre la ejecucion de la misma y la ejecucion de un programa correcto. Los datos deentrada y las operaciones que ejecutara el corrector no se haran publicos en ningun momento.

La eficiencia del codigo es un factor a tener en cuenta puesto que los programas de prueba seejecutaran bajo condiciones de lımite de tiempo y de uso de memoria.

La aceptacion de un ejercicio por parte del programa de entrega no implicara que dicho ejercicioya 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 exhaus-tiva 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 secuenciaiterable.

7. Se valorara positivamente

1. La utilizacion de nombres significativos para los identificadores, ası como la utilizacion delos convenios de Sun.

2. La utilizacion de metodos auxiliares que implementen tareas comunes a varios metodos, yque de esa forma eviten la duplicidad de codigo.

3. La correcta indentacion del codigo. Se recomienda la utilizacion en eclipse del atajo de tecladoCTRL + i.

4. La implementacion de un codigo eficiente que no realice operaciones innecesarias.