Вы находитесь на странице: 1из 4

CC3001 Tarea 2 (01-02)

Plazo de entrega: martes 24 de Septiembre de 2013

Al escribir un programa en cualquier lenguaje de programacin, la mayora de las veces se


necesita hacer referencia a cdigos escritos en otros archivos para que puedan ser usados en
nuestro programa. Como no resultara conveniente tener que duplicar ese cdigo en nuestro
archivo, muchos lenguajes de programacin permiten incluir esos cdigos con
instrucciones especiales que hacen referencia a otros archivos. Entonces, al compilar o
ejecutar nuestro programa, se expande el cdigo correspondiente a los archivos
referenciados en nuestro programa. Por ejemplo, si tenemos un archivo con funciones y
estamos escribiendo un programa que quiera utilizar esas funciones, podemos incluir el
archivo de funciones en nuestro archivo sin tener que escribirlo de nuevo. En el ejemplo, la
instruccin para incluir archivos es <<<nombre_archivo>>>.

funciones
funcion1(tipo1 param1, tipo2 param2){



}

nuevo_archivo
instruccin1
instruccin2
<<<funciones>>>
instruccin3

Luego de procesar las inclusiones, el archivo quedara:

salida standard:
instruccin1
instruccin2
funcion1(tipo1 param1, tipo2 param2){



}

instruccin3

El objetivo de esta tarea es construir un programa Expand.java que reciba como argumentos
una lista de archivos y escriba en la salida estndar el contenido de esos archivos,
expandiendo las referencias a otros archivos que puedan haber en cada uno de ellos. Las
referencias a otros archivos se denotan con <<<nombre_archivo>>>. Cada vez que
aparezca esa expresin en un archivo, el contenido de nombre_archivo debe ser escrito en
el lugar de <<<nombre_archivo>>>.

Por ejemplo, si se tienen los siguientes archivos:

archivo1
El archivo 2 dice:\n
<<<archivo2>>>, y el archivo 3\n
dice: <<<archivo3>>>\n
aqui termina el archivo 1\n

archivo2
contenido del archivo 2\n

archivo3
El archivo 3 contiene al\n
archivo 4 aqu:<<<archivo4>>>\n

archivo4
contenido del archivo 4\n

( \n representa al carcter newline, no quiere decir que vaya literalmente un \ y una n en el


archivo!) Al ejecutar el programa con los argumentos archivo1 archivo2, la salida debe ser:

El archivo 2 dice:\n
contenido del archivo 2\n
, y el archivo 3\n
dice: El archivo 3 contiene al\n
archivo 4 aqu:contenido del archivo 4\n
\n
\n
aqui termina el archivo 1\n
contenido del archivo 2\n

Los archivos se escriben en la salida estndar, expandiendo sus referencias, en el orden en que
fueron recibidos. Los nicos casos que debe considerar en forma especial son las inclusiones del
estilo <<<archivo>>>. Cualquier otro carcter (newline, espacios, etc) debe ser transcrito
literalmente a la salida standard.

Ntese que si se expande un archivo que a su vez incluye a otro, este ltimo tambin es expandido.
En el ejemplo, el archivo 3 contiene al archivo 4, entonces cuando se expande el archivo 3 en el
archivo 1, tambin se expande el archivo 4 en el lugar correspondiente del archivo 3. Su programa
debe manejar estos casos y debe ser implementado recursivamente.

Evidentemente, si existe una referencia circular (por ejemplo, si archivo1 referencia a archivo2,
archivo2 a archivo3, y archivo3 a archivo1), se produce un ciclo infinito de llamadas recursivas.
Esta situacin debe ser detectada por su programa y debe detenerse cuando se encuentra algo as. Si
no existen referencias circulares, su programa debera terminar normalmente.

Informe

La entrega de la tarea debe incluir un informe donde se describa y documente el programa


realizado. El informe (en formato PDF) y el cdigo fuente (junto a un archivo README que
explique cmo compilar) deben ser entregados a travs del sistema U-Cursos hasta las 23:59 de la
fecha de entrega. No se aceptarn cdigos sin informe ni informes sin cdigo.

El informe debe tener una extensin mxima de 10 pginas (sin incluir la portada y anexos). El
contenido del informe debe seguir la siguiente pauta, comn para todas las tareas restantes del
semestre:

- Portada.
- Introduccin: Describir brevemente el problema y su solucin.
- Diseo de la solucin: Indicar metodologa utilizada para resolver el problema, casos de
borde y supuestos utilizados. Detallar la solucin propuesta, describiendo el algoritmo y
todas sus partes relevantes (por ejemplo invariantes, uso de recursin, etc.). Incluya figuras
si es necesario.
- Implementacin: Se debe mostrar la parte relevante del cdigo del programa que soluciona
el problema (omita los detalles que no tengan relevancia), explicando lo que hace el cdigo.
Se recomienda usar nombres representativos a las variables. NOTA: El cdigo generado
para resolver la tarea debe corresponder al diseo descrito, preocpese de realizar los
comentarios que sean necesarios.
- Resultados y conclusiones: Incluya resultados experimentales solicitados y conclusiones
obtenidas.
- Anexo: Incluya un listado con el programa completo que se compil realmente (utilice una
fuente pequea (8 pt) en este listado) y el modo de uso de su programa. De ser necesario,
cualquier informacin adicional se debe agregar en los anexos y debe ser referenciada en
alguna seccin del informe de la tarea.

Ponderacin

El informe equivale a un 50% de la nota de tarea. El cdigo equivale a un 50% de la nota de tarea.

Restricciones

- El programa debe ser implementado en Java.


- No se acepta ningn otro lenguaje de programacin.
- NO SE ACEPTARAN TAREAS ATRASADAS.
- La tarea es individual y se revisara que no haya copias.
- Dudas sobre el enunciado pueden postearlas en el foro del curso.
- La tarea debe entregarse a travs de la pgina de U-Cursos, Seccin Tareas. NO SE
ACEPTARA NINGUNA TAREA ENVIADA POR E-MAIL NI SUBIDA A LA SECCION
MATERIAL ALUMNOS. Preocpese de enviar su tarea con tiempo. POR FAVOR
REVISEN DESPUES DE SUBIR SU TAREA QUE SUBIERON LOS ARCHIVOS
CORRECTOS, QUE LOS SUBIERON A LA TAREA CORRECTA Y QUE ESTOS
SUBIERON BIEN AL SERVIDOR. Es responsabilidad de Ud. asegurarse que su tarea fue
entregada en forma correcta.

Вам также может понравиться