Laboratorio A.E.D. Viernes 13:00-15:00 y 15:00-17:00

10  Descargar (0)

Texto completo

(1)

Laboratorio A.E.D. Viernes 13:00 - 15:00 y 15:00 - 17:00

Guillermo Vigueras

guillermo.vigueras@imdea.org

Julio Garc´ıa

juliomanuel.garcia@upm.es

Lars-Åke Fredlund

lfredlund@fi.upm.es

Manuel Carro Li ˜nares

mcarro@fi.upm.es

Marina ´Alvarez

marina.alvarez@upm.es

Pablo Nogueira

pnogueira@fi.upm.es

Tonghong Li

tonghong@fi.upm.es

(2)

Normas.

¡Solo debe entregar una persona por grupo! ◮ Fechas de entrega y nota m ´axima alcanzable:

Hasta el martes 10 de noviembre, 13:00 (15:00) horas 10 Hasta el mi ´ercoles 11 de noviembre, 13:00 (15:00) horas 8 Hasta el jueves 12 de noviembre, 13:00 (15:00) horas 6 Hasta el viernes 13 de noviembre, 13:00 (15:00) horas 4 Despu ´es la m ´axima puntuaci ´on ser ´a 0.

◮ Explicamos la soluci ´on despu ´es del jueves 22 de octubre. ◮ Se comprobar ´a plagio y se actuar ´a sobre los detectados. ◮ Usad las horas de tutor´ıa para preguntar sobre programaci ´on

(3)

Sistema de Entrega

◮ Todas los ejercicios de laboratorio se deben entregar a trav ´es

de la webhttp://lml.ls.fi.upm.es/˜entrega.

(4)

Configuraci ´on previa al desarrollo del ejercicio.

◮ Arrancad Eclipse. Deb ´eis tener un acceso directo. ◮ Si trabaj ´ais en port ´atil, pod ´eis utilizar cualquier versi ´on

relativamente reciente de Eclipse. Deber´ıa valer cualquier versi ´on entre la versi ´on 3.7 (Indigo) o 4.3 (Kepler). Es suficiente con que instal ´eis laEclipse IDE for Java Developers.

◮ Cambiad a “Java Perspective”. ◮ Cread un proyecto Java llamadoaed:

◮ Seleccionad separaci ´on de directorios de fuentes y binarios.

◮ Cread unpackage cartasen el proyectoaed, dentro desrc. ◮ Aula VirtualAEDSesiones de laboratorioLaboratorio

5→ Laboratorio5.zip; descomprimidlo.

◮ Contenido de Laboratorio5.zip:

◮ OurFIFOImplementation.java, Carta.java, Tester.java

y Solitario.java

◮ positionList.jar

◮ lifoaed.jar

(5)

Configuraci ´on previa al desarrollo del ejercicio.

◮ Importad al paquetecartaslas fuentes que hab ´eis

descargado (OurFIFOImplementation.java,Carta.java, Tester.javaySolitario.java).

◮ A ˜nadid al proyectoaedlas librer´ıasjarque hab ´eis

descargado. Para ello:

◮ ProjectProperties. Se abrir ´a una ventana como esta:

◮ Java Build PathLibrariesAdd external JARs

Seleccionad los ficherofifoaed.jarylifoaed.jar, . . . que os hab ´eis descargado

(6)

Tarea para hoy

◮ Realizar una implementaci ´on del m ´etodo: void play(FIFO<Carta> mazo,

LIFO<Carta> [] montones) dentro la claseSolitario.

◮ El m ´etodo recibe una cola (mazo) y un array de pilas

(montones). El m ´etodo debe jugar una variante del juego de cartas “solitario” descrito en detalle en las siguientes p ´aginas.

◮ Se usan las pilas (la interfazLIFO<E>) y las colas (la interfaz FIFO<E>) extensivamente durante el laboratorio. Deber´ıais repasar ambos “APIs”.

(7)

A ♠ ♠ A

2 ♠ ♠ 2

3 ♠ ♠ 3

A r r A

r

A q q A

q

2 q q 2

q

q

A ♣ ♣ A

2 ♣ ♣ 2

3 ♣ ♣ 3

4 ♣ ♣ 4

5 q q 5

q

q

q

q

q

8 r r 8

r

r

r

r

r

r

r

r

q

r

q

r

q

r

q

r

montones de cartas m a z o (b a ra ja ) m a z o (d e s c a rt e )

(8)

Las Reglas

1. Saca la primera carta de la baraja (una cola), si la baraja no est ´a vac´ıa. Intenta ponerla en el mont ´on correspondiente, respetando el palo, y en ordenconsecutivo 1 (As), 2, 3,. . . ,10.

2. Si no se puede colocar la carta en un mont ´on, mu ´evela al descarte (una cola).

3. Saca la siguiente carta de la baraja (si existe). Mu ´evela al descarte.

4. Repite los pasos (1)-(3) hasta que la baraja este vac´ıa.

5. Intercambia la baraja (ahora vac´ıa) y el descarte.

6. Repite los pasos (1)-(6), o termina.

El juego continua hasta que todas las cartas han sido colocadas en un mont ´on, o, cuando no ha sido posible colocar ning ´una carta de la baraja en un mont ´on.

(9)

La Implementaci ´on

◮ Una carta est ´a representado como un objeto de la clase Carta, y tiene un palo (unintentre 0 y 3), y un valor (unint entre 1 (As) y 10). Se considera que 0 representapicas, 1 representacorazones, 2 representa diamantes y 3 representa tr ´eboles.

◮ Los m ´etodosgetPalo()ygetValor()de unaCarta

devuelven el palo y el valor de la carta.

◮ El arraymontones, un par ´ametro al m ´etodoplay, esta

indexado con los palos (0-3). Para tener acceso al mont ´on que corresponde a unacartase escribe:

montones[carta.getPalo()].

◮ La baraja inicial esta disponible en el par ´ametromazodel

m ´etodoplay.Se recomienda crear otro mazo para

representar el descarte. Cr ´ealo con:FIFO<Carta> descarte = new OurFIFOImplementation<Carta>();

(10)

Tareas para hoy (3)

◮ El proyecto debe compilar sin errores y debe cumplirse la

especificaci ´on de los m ´etodos a completar.

◮ Debe ejecutar elTestersin mensajes de error.

◮ Nota: una ejecuci ´on sin mensajes de error no significa que el

m ´etodo sea correcto (es decir, que funcione bien para cada posible entrada).

◮ El Tester de hoy comprueba el estado de los montones

(picas, corazones, diamantes y tr ´eboles) cuando una llamada al m ´etodoplayha terminado. Si una implementaci ´on es demasiado ineficaz (calculado como el numero de llamadas a los m ´etodosenqueueodequeuede los mazos de entrada y descarte), o sospechosamente eficaz, el Tester imprime un mensaje de advertencia, pero admite la entrega.

◮ Todos los ejercicios se comprueban manualmente antes de

Figure

Actualización...

Referencias

Related subjects :