CC30A Algoritmos y Estructuras de Datos
Tarea 1
Fecha de entrega: viernes 01 de septiembre
Objetivos
El objetivo de esta tarea es familiarizar al alumno con algún
lenguaje de programación de tipo imperativo (C, C++, Java, etc.,
NO usar Perl).
Se le pide que escribir un programa que transforme un archivo
de texto plano dado en un archivo HTML, el cual pueda ser visualizado usando
Nescape u otro browser.
Descripción de la tarea
El programa puede ser escrito utilizando cualquier lenguaje imperativo
que se disponga en anakena (salvo Perl). Se recomienda llamarlo txt2html,
y debe operar como un filtro, leyendo desde su entrada estándar,
y escribiendo en su salida estándar.
Las transformaciones que el programa debe realizar al archivo de entrada
son:
-
Insertar el encabezamiento y la terminación HTML (pueden ver esto
haciendo "view source" de este archivo).
-
Reemplazar cada línea en blanco por un <p>.
-
Reemplazar las URL definidas por los string del tipo http://...,
ftp://...
y mailto:... por el enlace respectivo, de modo de que se pueda
hacer click sobre el texto e ir a la pagina respectiva. Suponga que la
URL incluye todos los caracteres no blancos adyacentes.
-
Sustituir los siguientes caracteres <, >, ",
&
por las secuencias <, >,
"
y & respectivamente, (esto se hace para que el browser
no se confunda al interpretar los comandos html).
-
Las palabras que comienzan con un # deben quedar en negritas,
las que comienzan con un ! en cursiva y las que comienzan
con % deben aumentar su font, tantas veces como %'s tengan
-
Para escapar el significado de un caracter o secuencia especial se utiliza
el caracter
$, para escapar un $ utilice $$.
El resumen de las transformaciones se ve en la siguiente tabla:
Texto
|
Transformación
|
línea en blanco
|
<p>
|
http://...
|
<a href="http://...">...</a>
|
ftp://...
|
<a href="ftp://...">...</a>
|
mailto:...
|
<a href="mailto:...">...</a>
|
<
|
<
|
>
|
>
|
"
|
"
|
&
|
&
|
#negrita
|
<b>negrita</b>
|
!cursiva
|
<i>cursiva</i>
|
%grande
|
<font size=+1>grande</font>
|
Note que el caracter $ cancela la acción para cualquier transformación,
por ejemplo:
http://www.dcc.uchile.cl/~cc30a, se tansforma como
<a href="http://www.dcc.uchile.cl/~cc30a">http://www.dcc.uchile.cl/~cc30a</a>
en cambio,
$http://www.dcc.uchile.cl/~cc30a, queda como
http://www.dcc.uchile.cl/~cc30a
Entrega de la tarea
La entrega de la tarea debe incluir un informe escrito donde se describa
y documente el programa realizado, y se incluyan ejemplos de entradas y
salidas. El contenido del informe debe segir la siguiente pauta:
Universidad de Chile
Facultad de Ciencias Físicas y Matemáticas
Departamento de Ciencias de la Computación
Informe Tarea X
Nombre de la tarea X
|
Fecha: |
fecha entrega |
|
Autor: |
nombre alumno |
|
E-mail: |
correo del alumno |
-
Introducción: Breve descripción del problema y de su solución
-
Análisis del Problema: Se expone en detalle el problema, los supuestos
que se van a ocupar, las situaciones de borde, y la metodología
para abordar el problema.
-
Solución del problema:
-
Algoritmo de solución: Se detallan los pasos a seguir para solucionar
el problema. De ser necesario, se recomienda incluir figuras, tablas, etc.,
que permitan mejorar la comprensión del problema.
-
Diagrama de Estados: Muestra en forma global el programa
-
Implementación: Se debe mostrar el código del programa que
soluciona el problema (omita los detalles que no tengan relevancia para
el problema), explicando lo que hace el código. Se recomienda usar
nombres representativos a las variables
-
Modo de uso: Se debe explicar el modo de uso del programa y el modo de
compilación. Nota la tarea debe ser compilable en anakena.
-
Pruebas: Se debe señalar claramente cual es la llamada al programa
y su salida. El número de pruebas puede variar dependiendo del problema.
En general tres pruebas es suficiente.
-
Listados: Se debe incluir un listado con el programa completo que se compiló
realmente.
-
Anexos: De ser necesario, cualquier información adicional se debe
agregar en los anexos y debe ser ferenciada en alguna sección del
informe de la tarea.