Programaci´ on 2 Curso 2014/2015 Convocatoria de julio de 2015 (C4)

Anuncio
Programación 2
Curso 2014/2015
Convocatoria de julio de 2015 (C4)
Ampliaciones de las prácticas 2 y 3
En la convocatoria de julio (C4), para aprobar la parte práctica de la asignatura es necesario presentar las prácticas 2 y 3 de la convocatoria de junio, con
las ampliaciones que se detallan a continuación.
IMPORTANTE: aquellos alumnos/as que hayan obtenido al menos un 4
en la nota media de prácticas de la convocatoria de junio no es necesario que
entreguen nada, se guardará dicha nota para la convocatoria de julio, pero si
desean subir nota pueden entregar las ampliaciones (en cuyo caso se perderá la
nota de la convocatoria de junio).
En la convocatoria de julio, la nota de prácticas se calculará de la siguiente
manera:
notaPracticas = 0.5 * notaP2julio + 0.5 * notaP3julio
El último dı́a para entregar estas ampliaciones de las práctica es el viernes
3 de julio, hasta las 23:59. No se admitirán entregas fuera de plazo.
Detección de plagios/copias
En el Grado en Ingenierı́a Informática, la Programación es una materia fundamental, que se aprende programando y haciendo las prácticas de las diferentes
asignaturas (y otros programas, por supuesto). Si alguien pretende aprobar las
asignaturas de programación sin programar (copiando), obviamente tendrá serios problemas en otras asignaturas o cuando intente trabajar. Concretamente,
en Programación 2 es muy difı́cil que alguien que no ha hecho las prácticas supere el examen de teorı́a, por lo que copiar una práctica es una de las peores
decisiones que se puede tomar.
La práctica debe ser un trabajo original de la persona que la entrega; en
caso de detectarse indicios de copia de una o más prácticas se suspenderá la
asignatura a todos los alumnos implicados (tanto al que copia como al que
se deja copiar), y se enviará un informe a la dirección de la EPS, para
que se tomen las medidas disciplinarias oportunas.
Normas generales comunes a todas las prácticas
1. La práctica se debe entregar exclusivamente a través del servidor de prácticas
del departamento de Lenguajes y Sistemas Informáticos, al que se puede acceder desde la página principal del departamento ( www.dlsi.ua.es, “Entrega de
prácticas”) o directamente en la url http://pracdlsi.dlsi.ua.es.
No se admitirán entregas por otros medios (correo electrónico, Campus
Virtual, etc.).
El usuario y contraseña para entregar prácticas es el mismo que se utiliza
en el Campus Virtual.
Programación 2, 2014/2015
2
La práctica se puede entregar varias veces, pero sólo se corregirá la última
entrega.
2. El programa debe poder ser compilado sin errores con el compilador de C++
existente en la distribución de Linux de los laboratorios de prácticas; si la práctica no se puede compilar su calificación será 0. Se recomienda compilar y probar
la práctica con el autocorrector inmediatamente antes de entregarla.
3. Los ficheros fuente deben estar adecuadamente documentados, con comentarios
donde se considere necesario. Además, no se pueden utilizar variables globales
de ninguna clase, los únicos sı́mbolos globales permitidos son las funciones, los
tipos y las constantes.
4. La corrección de la práctica se hará de forma automática, por lo que es imprescindible respetar estrictamente los formatos de salida que se indican en este
enunciado. Además, al principio de todos los ficheros fuente entregados se debe
incluir un comentario con el DNI de la persona que entrega la práctica, con el
siguiente formato:
// DNI
tuDNI Nombre
donde tuDNI es el DNI del alumno correspondiente (sin letras), tal y como
aparece en el Campus Virtual, y Nombre es el nombre completo; por ejemplo, el comentario podrı́a ser:
// DNI
12345678 GARCIA GARCIA, JUAN MANUEL
Ampliaciones de la práctica 2 para la convocatoria de julio
Las ampliaciones que se debe implementar sobre la práctica 2 de la convocatoria de junio son:
1. Gracias a los créditos conseguidos en sus últimos viajes, el capitán Han
Solo ha decidido ampliar el número de bodegas de 3 a 5, para lo que ha
tenido que reducir el número de asientos para pasajeros a solamente 7.
2. El algoritmo de balanceado de carga que inventó Chewie es muy ineficiente, y Han Solo ha decidido cambiar a otro algoritmo parecido: una vez se
sepa qué bodega tiene menor peso y qué bodega tiene mayor peso, en vez
de intercambiar los últimos contenedores de ambas bodegas, se intercambiarán el contenedor con menos peso de la bodega con menor peso, con el
contenedor de mayor peso de la bodega con más peso, estén en la posición
que estén dentro de las bodegas.
3. Para equilibrar mejor la nave, Han Solo ha decidido que cuando un pasajero baje de la nave, el pasajero que ocupa el último asiento se moverá al
asiento que se ha liberado, de manera que nunca queden huecos en los
asientos
Como en la convocatoria de junio, todo el código de la práctica debe estar
en un único fichero fuente llamado “millenniumFalcon.cc”.
Programación 2, 2014/2015
3
Ampliaciones de la práctica 3 para la convocatoria de julio
Las ampliaciones que se debe implementar sobre la práctica 3 de la convocatoria de junio son:
1. Como en la ampliación de la práctica 2 para julio, se debe ampliar el
número de bodegas de 3 a 5, y hay que reducir el número de asientos para
pasajeros a 7.
2. Como en la práctica 2, se debe implementar también en esta práctica el
nuevo algoritmo de balanceado de carga. Para poder implementarlo es
necesario añadir los siguientes métodos públicos a la clase Hold:
int moreWeightContainer() const;
int lessWeightContainer() const;
Container getContainer(int p) const;
Los dos primeros métodos devuelven la posición del contenedor con mayor
y menor peso, respectivamente, o bien -1 si no hay contenedores en la
bodega. Finalmente, el método getContainer devuelve el contenedor que
ocupa la posición p (que será un valor entre 0 y el número de contenedores
menos 1), o bien devuelve un contenedor vacı́o (como se queda al crearlo)
si no existe esa posición en la bodega.
3. Como en la práctica 2, también se debe evitar que queden huecos en los
asientos de los pasajeros.
4. La creación de una nueva clase, Trip, que tendrá los datos de un viaje
(véase diagrama adjunto). Los métodos más importantes son:
Trip(int km, double weight): crea un viaje y calcula todos los datos
a partir del número de kilómetros y el peso que se le pasan como
parámetro. No debe comprobar que el número de kilómetros es correcto, se hará en otro lugar (en ShipManager).
Trip(string line): crea un viaje a partir de los datos contenidos en la
lı́nea (que se supone se leerá de un fichero), con el mismo formato de
las lı́neas del log de viajes de la práctica 2. No se debe calcular ningún
dato, porque los datos de la lı́nea podrı́an ser diferentes (porque p.ej.
son viajes antiguos con un consumo mayor, o una velocidad menor).
operator <<: muestra los datos del viaje, con el mismo formato en que
aparecen en el log de viajes de la práctica 2.
5. En la clase Spaceship se debe implementar un nuevo método público
double totalWeight() const, que devuelva el peso total las bodegas de
la nave (es decir, la suma de los pesos de las bodegas).
6. Finalmente, se debe eliminar el método travel de la clase Spaceship y
sustituir la invocación a dicho método desde la clase ShipManager por la
creación de un nuevo viaje (objeto de la clase Trip), y por una llamada
al operador de salida para el ese viaje (que se mostrará con el formato del
log, al contrario que en la práctica 2).
Programación 2, 2014/2015
4
La práctica debe tener varios ficheros llamados “Constants.h”, “Container.cc”
y “Container.h”, “Hold.cc” y “Hold.h”, “Passenger.cc” y “Passenger.h”,
“Spaceship.cc” y “Spaceship.h”, “ShipManager.cc” y “ShipManager.h”,
“Trip.cc” y “Trip.h”. Para intentar evitar confusiones, se debe entregar todo
el código (incluyendo el Makefile correspondiente) en un archivo comprimido
prog2p3jul.tgz, que se debe crear con la orden:
tar cvfz prog2p3jul.tgz *.cc *.h Makefile
Para poder generar un ejecutable y realizar pruebas, se puede utilizar el
mismo fichero “millenniumFalcon.cc” de la práctica 3 de la convocatoria de
junio, que no deberı́a ser modificado y que no es necesario entregar. Para corregir
la práctica se utilizará ese fichero, esté o no presente en el prog2p3jul.tgz.
Descargar