Академический Документы
Профессиональный Документы
Культура Документы
funciones
funcion1(tipo1 param1, tipo2 param2){
}
nuevo_archivo
instruccin1
instruccin2
<<<funciones>>>
instruccin3
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>>>.
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
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
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