05.03.2015 Views

Proyecto 1 - Universidad de Carabobo, FACYT - computacion

Proyecto 1 - Universidad de Carabobo, FACYT - computacion

Proyecto 1 - Universidad de Carabobo, FACYT - computacion

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Universidad</strong> <strong>de</strong> <strong>Carabobo</strong><br />

Facultad Experimental <strong>de</strong> Ciencias y Tecnología<br />

Departamento <strong>de</strong> Computación<br />

CS218: Algoritmos y Programación II<br />

1. OBJETIVO<br />

<strong>Proyecto</strong> 1: Estructuras Dinámicas Lineales. (Lista, Pila, Cola)<br />

Nombre <strong>de</strong> los archivos<br />

Entrada: artistas.in<br />

albumes.in<br />

canciones.in<br />

rockola.in<br />

Salida:<br />

log.out<br />

reporte.out<br />

Se espera que, al finalizar esta actividad, el estudiante fácilmente pueda <strong>de</strong>sarrollar<br />

estructuras dinámicas mediante la utilización <strong>de</strong> apuntadores y bajo el paradigma orientado a<br />

objetos, para la posterior resolución <strong>de</strong> problemas <strong>de</strong> manera eficiente, que requieran el<br />

manejo <strong>de</strong> dichas estructuras.<br />

2. ACTIVIDADES<br />

Planteamiento <strong>de</strong>l problema<br />

La empresa “Aparatos Musicales C.A.” <strong>de</strong>sea <strong>de</strong>sarrollar un prototipo <strong>de</strong> Rockola para<br />

distribuirla entre sus clientes. La Rockola es un aparato <strong>de</strong>l tipo Vending Machine que tiene la<br />

finalidad <strong>de</strong> ejecutar canciones sobre pedido; es <strong>de</strong>cir, cuando una persona acce<strong>de</strong> a la<br />

Rockola, le indica mediante algún mecanismo <strong>de</strong> interacción cuales canciones quiere oír y en<br />

que or<strong>de</strong>n. Para activar el mecanismo <strong>de</strong> selección <strong>de</strong> canciones la persona <strong>de</strong>be primero<br />

<strong>de</strong>positar en una ranura la cantidad total <strong>de</strong> dinero (o fichas) que sea requerido según las<br />

especificaciones que generalmente se encuentran adosadas al aparato.<br />

El funcionamiento <strong>de</strong> la misma es el siguiente:<br />

1) el usuario se dirige a la máquina, introduce monedas o fichas en una ranura que se<br />

encuentra en el frente <strong>de</strong> la maquina por un total igual o mayor que el costo <strong>de</strong>l<br />

servicio requerido y espera una señal (visual y/o auditiva) <strong>de</strong> conformidad <strong>de</strong> la<br />

máquina. Ver tabla <strong>de</strong> costos anexa.<br />

2) El usuario selecciona una canción por vez en un panel frontal don<strong>de</strong> aparecen los<br />

nombres <strong>de</strong> las canciones con un código y marca el número <strong>de</strong>l código en un teclado <strong>de</strong><br />

diez dígitos que se encuentra en la parte <strong>de</strong>lantera <strong>de</strong> la máquina culminando con la<br />

tecla ACEPTAR al introducir el último código.<br />

3) Una vez introducidos los códigos, el usuario pulsa el botón SECUENCIAL o ALEATORIO<br />

<strong>de</strong>pendiendo <strong>de</strong> si <strong>de</strong>sea que las canciones seleccionadas se ejecuten en uno u otro<br />

modo.<br />

4) El usuario pue<strong>de</strong> pulsar en este momento el botón PRIORIDAD lo cual lo coloca en una<br />

cola <strong>de</strong> usuarios con prioridad<br />

5) Una vez que el usuario este conforme con su selección y modo <strong>de</strong> ejecución pulsa el<br />

botón FINALIZAR y <strong>de</strong>be esperar que llegue su turno para oír las canciones<br />

seleccionadas.<br />

Las restricciones <strong>de</strong> uso <strong>de</strong>l aparato son las siguientes:<br />

1) Un usuario pue<strong>de</strong> solicitar hasta cinco canciones por vez; es <strong>de</strong>cir, pue<strong>de</strong> utilizar el<br />

aparato tantas veces como <strong>de</strong>see pero con un máximo <strong>de</strong> cinco canciones por vez<br />

2) La ejecución <strong>de</strong> las canciones se realiza en estricto or<strong>de</strong>n <strong>de</strong> usuario; es <strong>de</strong>cir, se<br />

ejecutaran primero las canciones <strong>de</strong>s usuario n, luego el n+1, n+2, etc. Esto es válido<br />

tanto para los usuarios sin prioridad como para aquellos con prioridad.


3) El dispositivo cuenta con un mecanismo <strong>de</strong> almacenamiento <strong>de</strong> discos compactos <strong>de</strong><br />

hasta 100 unida<strong>de</strong>s, cada una con un total <strong>de</strong> hasta 25 canciones. Cada CD<br />

correspon<strong>de</strong> al álbum <strong>de</strong> un artista y no existe repetición ni <strong>de</strong> canciones ni <strong>de</strong><br />

álbumes.<br />

4) Cada vez que el dispositivo <strong>de</strong>be ejecutar una canción, levanta uno a uno los CDs que<br />

están sobre el CD que tiene la canción <strong>de</strong>seada y los <strong>de</strong>posita en un mecanismo <strong>de</strong><br />

almacenamiento auxiliar, luego levanta el CD que tiene la canción <strong>de</strong>seada y lo coloca<br />

en el mecanismo <strong>de</strong> ejecución, mueve el cabezal lector y comienza su ejecución. En<br />

caso que el CD que tiene la canción solicitada ya se encuentre el mecanismo <strong>de</strong><br />

almacenamiento auxiliar entonces levanta uno a uno los CDs <strong>de</strong> este último mecanismo<br />

y los <strong>de</strong>posita en el mecanismo <strong>de</strong> almacenamiento principal hasta alcanzar el CD<br />

<strong>de</strong>seado. Luego toma este último y lo <strong>de</strong>posita en el mecanismo <strong>de</strong> ejecución<br />

procediendo a ejecutarlo.<br />

5) Una vez culminada la ejecución <strong>de</strong>vuelve el CD ejecutado a su posición en el<br />

mecanismo <strong>de</strong> almacenamiento.<br />

6) Cada canción tiene un código asignado que indica: a) el código <strong>de</strong>l artista, b) el número<br />

que le correspon<strong>de</strong> al CD en el mecanismo <strong>de</strong> almacenamiento principal cuando se<br />

encuentran en él todos los CDs, contado <strong>de</strong> arriba hacia abajo, c) el número <strong>de</strong> la<br />

canción <strong>de</strong>ntro <strong>de</strong>l CD contada <strong>de</strong>s<strong>de</strong> la primera hasta la última. Consi<strong>de</strong>re que un<br />

artista pue<strong>de</strong> tener varios álbumes.<br />

Tabla Costos en Bs. según Nro. <strong>de</strong> Canciones/Modo<br />

Numero <strong>de</strong> 1 2 3 4 5<br />

Canciones<br />

Sin Prioridad 1000 2000 3000 3500 4000<br />

Con Prioridad<br />

50% adicional al costo sin prioridad<br />

Se <strong>de</strong>sea que Ud. implemente la Clases Lista, Pila y Cola, a<strong>de</strong>más <strong>de</strong> las clases que Ud.<br />

consi<strong>de</strong>re necesarias para mo<strong>de</strong>lar el problema. Asimismo, <strong>de</strong>berá <strong>de</strong>sarrollar un programa<br />

que simule el comportamiento <strong>de</strong> la rockola basado en las funciones y restricciones <strong>de</strong>scritas<br />

previamente.<br />

Especificación <strong>de</strong> la entrada<br />

La entrada consistirá <strong>de</strong> cuatro (4) archivos:<br />

artistas.in<br />

En este archivo se encuentra la información relacionada con los artistas. El archivo contendrá<br />

N (no se conoce) líneas. Cada línea contiene un número entero X <strong>de</strong> tres (3) dígitos, el cual<br />

representa el código <strong>de</strong>l artista, seguido <strong>de</strong>l nombre <strong>de</strong> dicho artista.<br />

101 Black Eyed Peas<br />

102 Eminem<br />

103 50 Cent<br />

albumes.in<br />

En este archivo se encuentra la información relacionada con los álbumes. El archivo contendrá<br />

N (no se conoce) líneas. Cada línea contiene un número entero Y <strong>de</strong> seis (6) dígitos, el cual<br />

representa el código <strong>de</strong>l CD, seguido <strong>de</strong>l título <strong>de</strong> dicho CD. Los tres (3) primeros dígitos <strong>de</strong>l<br />

código, tomados <strong>de</strong> izquierda a <strong>de</strong>recha, representan el código <strong>de</strong>l artista al cual pertenece el<br />

CD, los siguientes tres (3) dígitos representan el código <strong>de</strong>l CD en función a su lugar en la<br />

rockola. Las líneas estarán or<strong>de</strong>nadas <strong>de</strong> la misma forma como están or<strong>de</strong>nados los CD’s en la<br />

rockola.<br />

101201 Elephunk<br />

102202 Curtain Call<br />

103203 The Massacre<br />

101204 Monkey Business


canciones.in<br />

En este archivo se encuentra la información relacionada con las canciones. El archivo<br />

contendrá N (no se conoce) líneas. Cada línea contiene un número entero Z <strong>de</strong> ocho (8)<br />

dígitos, el cual representa el código <strong>de</strong> la canción, seguido <strong>de</strong>l título <strong>de</strong> la canción. Los tres (3)<br />

primeros dígitos <strong>de</strong>l código, tomados <strong>de</strong> izquierda a <strong>de</strong>recha, representan el código <strong>de</strong>l artista<br />

al cual pertenece la canción, los siguientes tres (3) dígitos representan el código <strong>de</strong>l CD en el<br />

cual se encuentra, y los dos (2) últimos dígitos se correspon<strong>de</strong>n con el número <strong>de</strong> la canción<br />

<strong>de</strong>ntro <strong>de</strong>l CD. Las líneas estarán or<strong>de</strong>nadas alfabéticamente por título <strong>de</strong> la canción.<br />

10320311 A Baltimore Love Thing<br />

10120112 Anxiety<br />

10120414 Audio Delite At Low Fi<strong>de</strong>lity<br />

10120413 Ba Bump<br />

10120412 Bebot<br />

10320318 Build You Up<br />

10320307 Candy Shop<br />

10220214 Cleanin' Out My Closet<br />

10120411 Disco Club<br />

10320313 Disco Inferno<br />

10120404 Don't Lie<br />

10120402 Don't Phunk With My Heart<br />

10120407 Dum Diddly<br />

10220202 Fack<br />

10120408 Feel It<br />

10120109 Fly Away<br />

10320306 Gatman And Robin<br />

10320309 Get In My Car<br />

10320319 God Gave Me Style<br />

10120409 Gone Going<br />

10220213 Guilty Conscience<br />

10320315 Gunz Come Out<br />

10120101 Hands Up<br />

10120104 Hey Mama<br />

10320304 I'm Supposed To Die Tonight<br />

10320302 In My Hood<br />

10220201 Intro<br />

10320301 Intro (EXPLICIT)<br />

10320314 Just A Lil Bit<br />

10220215 Just Lose It<br />

10120102 Labor Day (It's A Holiday)<br />

10120107 Latin Girls<br />

10120114 Let's Get It Started<br />

10120103 Let's Get Retar<strong>de</strong>d<br />

10120406 Like That<br />

10220210 Like Toy Soldiers<br />

10220206 Lose Yourself<br />

10220212 Mockingbird<br />

10120405 My Humps<br />

10220204 My Name Is<br />

10120403 My Style<br />

10320316 My Toy Soldier<br />

10320308 Outta Control<br />

10320305 Piggy Bank<br />

10320317 Position Of Power<br />

10120401 Pump It<br />

10320312 Ry<strong>de</strong>r Music<br />

10120108 Sexy<br />

10220207 Shake That<br />

10120105 Shut Up<br />

10220208 Sing For The Moment<br />

10320310 Ski Mask Way<br />

10120106 Smells Like Funk<br />

10320320 So Amazing<br />

10220205 Stan<br />

10220217 Stan (Live)<br />

10120111 The apl Song<br />

10120110 The Boogie That Be<br />

10220211 The Real Slim Shady


10220203 The Way I Am<br />

10120410 They Don't Want Music<br />

10320303 This Is 50<br />

10120415 Union<br />

10220216 When I'm Gone<br />

10120113 Where Is The Love?<br />

10220209 Without Me<br />

rockola.in<br />

En este archivo se encuentra la información relacionada con los usuarios. El archivo constará<br />

<strong>de</strong> N (no se conoce) líneas. Cada línea contiene un número entero W, que representará la<br />

cantidad <strong>de</strong> bolívares introducidos por el usuario, luego siguen M (no se conoce) códigos <strong>de</strong><br />

canciones, posteriormente la palabra ACEPTAR indicando el final <strong>de</strong> la lista <strong>de</strong> canciones<br />

introducidas por el usuario, luego viene el modo <strong>de</strong> reproducción (SECUENCIAL o ALEATORIO),<br />

luego la PRIORIDAD (opcional) y por último FINALIZAR indicando el fin <strong>de</strong> la línea.<br />

2000 10120411 10320301 ACEPTAR SECUENCIAL FINALIZAR<br />

5000 10320304 10120114 10320307 ACEPTAR ALEATORIO FINALIZAR<br />

6000 10220213 10120103 10120412 10220206 10320311 ACEPTAR ALEATORIO PRIORIDAD FINALIZAR<br />

4000 10220214 10220215 10120413 ACEPTAR SECUENCIAL PRIORIDAD FINALIZAR<br />

1000 10120409 ACEPTAR SECUENCIAL FINALIZAR<br />

3000 10120413 10320315 ACEPTAR SECUENCIAL PRIORIDAD FINALIZAR<br />

4000 10320314 10220214 10320301 10320318 10120409 10320314 ACEPTAR SECUENCIAL FINALIZAR<br />

Especificación <strong>de</strong> la salida<br />

La entrada consistirá <strong>de</strong> dos (2) archivos:<br />

log.out<br />

En este archivo se llevará un historial <strong>de</strong> las transacciones hechas por la rockola. Cada línea<br />

contendrá la siguiente información:<br />

Estatus: Indica si la transacción fue exitosa o no.<br />

Vuelto: Si la transacción fue exitosa, indica el vuelto para el usuario.<br />

Motivo: Si la transacción no fue exitosa, indica el motivo por el cual no se pudo realizar<br />

la transacción (Pago Insuficiente o Límite <strong>de</strong> canciones excedido).<br />

Transacción exitosa, vuelto: 0 Bs.<br />

Transacción exitosa, vuelto: 2000 Bs.<br />

Transacción exitosa, vuelto: 0 Bs.<br />

Transacción cancelda, Motivo: Pago Insuficiente.<br />

Transacción exitosa, vuelto: 0 Bs.<br />

Transacción exitosa, vuelto: 0 Bs.<br />

Transacción cancelda, Motivo: Límite <strong>de</strong> canciones excedido.<br />

reporte.out<br />

En este archivo se almacenará el listado <strong>de</strong> todas las canciones que se tocaron en la rockola,<br />

en el mismo or<strong>de</strong>n como fueron reproducidas. Cada línea tendrá el código <strong>de</strong> la canción,<br />

nombre <strong>de</strong>l artista, título <strong>de</strong>l álbum, y título <strong>de</strong> la canción. Finalmente la cantidad <strong>de</strong> canciones<br />

sin prioridad y con prioridad, total <strong>de</strong> canciones y el total <strong>de</strong> la ganancia en bolívares.<br />

Código: 10120412, Artista: Black Eyed Peas, Album: Monkey Business, Canción: Bebot<br />

Código: 10220213, Artista: Eminem, Album: Curtain Call, Canción: Guilty Conscience<br />

Código: 10320311, Artista: 50 Cent, Album: The Massacre, Canción: A Baltimore Love Thing<br />

Código: 10120103, Artista: Black Eyed Peas, Album: Elephunk, Canción: Let's Get Retar<strong>de</strong>d<br />

Código: 10220206, Artista: Eminem, Album: Curtain Call, Canción: Lose Yourself<br />

Código: 10120413, Artista: Black Eyed Peas, Album: Monkey Business, Canción: Ba Bump<br />

Código: 10320315, Artista: 50 Cent, Album: The Massacre, Canción: Gunz Come Out<br />

Código: 10120411, Artista: Black Eyed Peas, Album: Monkey Business, Canción: Disco Club<br />

Código: 10320301, Artista: 50 Cent, Album: The Massacre, Canción: Intro (EXPLICIT)


Código: 10320307, Artista: 50 Cent, Album: The Massacre, Canción: Candy Shop<br />

Código: 10120114, Artista: Black Eyed Peas, Album: Elephunk, Canción: Let's Get It Started<br />

Código: 10320304, Artista: 50 Cent, Album: The Massacre, Canción: I'm Supposed To Die Tonight<br />

Código: 10120409, Artista: Black Eyed Peas, Album: Monkey Business, Canción: Gone Going<br />

Número <strong>de</strong> Canciones Sin Prioridad: 7<br />

Número <strong>de</strong> Canciones Con Prioridad: 6<br />

Número <strong>de</strong> Canciones: 13<br />

Total: 15000 Bs.<br />

La entrega <strong>de</strong>l proyecto se realizará en un sobre manila tamaño carta <strong>de</strong>bidamente i<strong>de</strong>ntificado<br />

con el nombre, apellido, cédula y sección <strong>de</strong> cada uno <strong>de</strong> los integrantes <strong>de</strong>l equipo, y <strong>de</strong>be<br />

contener lo siguiente:<br />

• Un diskette 3½ <strong>de</strong> alta <strong>de</strong>nsidad, con formato para DOS, que contenga en el directorio raíz<br />

únicamente los archivos fuente <strong>de</strong> su solución. Nota: Deberá utilizar para el <strong>de</strong>sarrollo <strong>de</strong>l<br />

programa solamente lenguaje C++.<br />

• Un informe en el que <strong>de</strong>be exponer todos los <strong>de</strong>talles <strong>de</strong> su solución.<br />

o Análisis <strong>de</strong> la solución <strong>de</strong>l problema (no más <strong>de</strong> dos páginas)<br />

o Diagrama <strong>de</strong> Clases. Empleando para ello UML<br />

o<br />

o<br />

Representación Gráfica y Formal <strong>de</strong> las Estructuras <strong>de</strong> Datos utilizadas.<br />

Seudo_código <strong>de</strong>l algoritmo que simula el funcionamiento <strong>de</strong> la rockola (es<br />

indispensable que esto se realice en lenguaje seudo formal). Este algoritmo <strong>de</strong>be<br />

incluir todas las <strong>de</strong>claraciones y <strong>de</strong>finiciones necesarias y <strong>de</strong>be estar <strong>de</strong>bidamente<br />

intra documentado e i<strong>de</strong>ntado. Abstenerse <strong>de</strong> colocar traducciones <strong>de</strong> C++ ó el<br />

mismo código <strong>de</strong> C++. Solo son necesarios los algoritmos referentes a la resolución<br />

<strong>de</strong>l problema planteado.<br />

El informe <strong>de</strong>be estar impreso en papel bond blanco base 20 tamaño carta, escrito por una<br />

sola cara, con un margen izquierdo <strong>de</strong> 3 cm. y los restantes <strong>de</strong> 2 cm. Para el texto en prosa<br />

<strong>de</strong>be utilizar caracteres <strong>de</strong> tamaño 12 puntos estilo Arial o Verdana. Para el pseudo-código<br />

<strong>de</strong>be utilizar caracteres <strong>de</strong> tamaño 10 puntos estilo Courier New.<br />

Evaluación:<br />

Se evaluará positivamente:<br />

• Estructuración <strong>de</strong>l código según el paradigma orientado a objetos.<br />

• A<strong>de</strong>cuación <strong>de</strong> las estructuras <strong>de</strong> datos.<br />

• Localidad <strong>de</strong> variables, funciones y procedimientos.<br />

• Paso <strong>de</strong> parámetros.<br />

• Comentarios apropiados.<br />

• Calidad <strong>de</strong> la documentación, memoria y análisis <strong>de</strong>l problema.<br />

• Nomenclatura <strong>de</strong> variables, procedimientos y <strong>de</strong>más elementos.<br />

• Cada método <strong>de</strong>be llevar un comentario con:<br />

o Acción que realiza.<br />

o Parámetros <strong>de</strong> entrada y sus roles.<br />

o Valor <strong>de</strong>vuelto.<br />

o Precondiciones <strong>de</strong> los valores <strong>de</strong> los parámetros.<br />

o Condiciones <strong>de</strong> error tratados <strong>de</strong>ntro <strong>de</strong> cada acción.<br />

8. Observaciones<br />

• El proyecto <strong>de</strong>be ser realizado en equipos <strong>de</strong> máximo dos (2) estudiantes, sin excepción.<br />

• Los archivos <strong>de</strong>ben entregarse en un disquete y también ser enviados por correo<br />

electrónico a la siguiente dirección: algoritmos2facyt@gmail.com. Para el caso <strong>de</strong>l envío<br />

por correo electrónico, los archivos <strong>de</strong>ben ser colocados en un directorio y posteriormente<br />

comprimido en formato ZIP o TAR.GZ.<br />

• El diskette <strong>de</strong>be estar i<strong>de</strong>ntificado con una etiqueta indicando el nombre, apellido, cédula y<br />

sección <strong>de</strong> cada uno <strong>de</strong> los integrantes <strong>de</strong>l equipo.


• Verifique bien que el diskette no esté <strong>de</strong>fectuoso y que contiene todos los archivos.<br />

• Los programas que entreguen <strong>de</strong>ben estar <strong>de</strong>bidamente presentados y documentados.<br />

• Se evaluará estrictamente lo que está en el informe y en el diskette. Si por alguna<br />

razón (virus, diskette vacío, archivos faltantes, diskette <strong>de</strong>fectuoso, etc.) no es<br />

posible corregir su programa, éste se consi<strong>de</strong>rará no entregado.<br />

• Verifique con <strong>de</strong>tenimiento la redacción y la ortografía, ya que ambos aspectos serán<br />

evaluados.<br />

• Los equipos que no sigan las normas y lineamientos establecidos por la unidad académica<br />

para la elaboración <strong>de</strong>l proyecto, tendrán un porcentaje <strong>de</strong> <strong>de</strong>scalificación sobre la nota<br />

total obtenida.<br />

• Los equipos que entreguen el proyecto <strong>de</strong>spués <strong>de</strong> la fecha tope establecidas por la unidad<br />

académica, tendrán tres puntos <strong>de</strong> <strong>de</strong>scalificación (sobre la nota total obtenida) por cada<br />

día <strong>de</strong> retraso.<br />

• El formato <strong>de</strong> los archivos <strong>de</strong> entrada y salida <strong>de</strong>ben ser respetados fielmente.<br />

• Deben respetarse los nombres <strong>de</strong> los archivos, estructuras <strong>de</strong> datos, funciones y/o<br />

procedimientos <strong>de</strong>scritos en este enunciado.<br />

• Los programas que entreguen <strong>de</strong>ben estar <strong>de</strong>bidamente presentados y documentados con<br />

el nombre <strong>de</strong>l autor, cédula <strong>de</strong> i<strong>de</strong>ntidad y sección a la que pertenece.<br />

• El lenguaje <strong>de</strong> programación a utilizar es C++, y el entorno <strong>de</strong> programación con el cual<br />

será evaluado el proyecto es Anjuta bajo ambiente Linux.<br />

• El archivo o archivos fuentes <strong>de</strong>ben seguir el siguiente estándar <strong>de</strong> nomenclatura.<br />

Archivos Fuentes<br />

Ejemplo:<br />

_nombre_libreria.h<br />

Fuentes <strong>de</strong> las operaciones<br />

_nombre_libreria.cpp<br />

Programa Principal<br />

_PROYECTO_1.cpp<br />

Pedro_Perez_lista.h<br />

Pedro_Perez_lista.cpp<br />

Pedro_Perez_PROYECTO_2.cpp<br />

NOTA: EL NO CUMPLIMIENTO DE LAS OBSERVACIONES DESCRITAS<br />

ANTERIORMENTE, GENERARÁ PUNTOS MENOS SOBRE LA<br />

CALIFICACIÓN TOTAL DEL TALLER.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!