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:

  1. Insertar el encabezamiento y la terminación HTML (pueden ver esto haciendo "view source" de este archivo).
  2. Reemplazar cada línea en blanco por un <p>.
  3. 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.
  4. Sustituir los siguientes caracteres <, >, ", & por las secuencias &lt;, &gt;, &quot; y &amp; respectivamente, (esto se hace para que el browser no se confunda al interpretar los comandos html).
  5. 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
  6. Para escapar el significado de un caracter o secuencia especial se utiliza el caracter $, para escapar un $ utilice $$.

  7. 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>
    <
    &lt;
    >
    &gt;
    "
    &quot;
    &
    &amp;
    #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: