-/* vim: set et ts=4 sw=4 fdm=indent fdl=1 fdn=1 fo+=t:
+/* vim: set et ts=4 sw=4 fdm=indent tw=80 fdl=1 fdn=1 fo+=t:
*
* Taller de Programación (75.42).
*
/** \mainpage Taller de Programación I (75.42)
+\htmlonly
+También puede ver <a href="../latex/refman.pdf">este documento en formato
+PDF</a>.
+\endhtmlonly
+
+\latexonly
+También puede ver este documento en formato HTML en html/index.html.
+\endlatexonly
+
\section objetivo Objetivo.
Desarrollar un \ref main "programa" que resuelva, utilizando un
\ref metodo "método iterativo", una \ref funcion "función diferencial"
\f]
\subsubsection variables Variables.
- - \f$t_i\f$: \ref T0 "Tiempo inicial de la iteración" = 0.
+ - \f$t_i\f$: Tiempo inicial de la iteración = 0.
Solicitar al usuario el ingreso de las restantes variables por
línea de comandos:
\endverbatim
\section resolucion Resolución.
- El \ref main "programa principal" se divide en FIXME N tareas principales,
+ El \ref main "programa principal" se divide en 3 tareas principales,
cada una realizada por una función particular.
\subsection obtencion Obtención y validación de parámetros del usuario.
Antes de comenzar a hacer cálculos es necesario obtener los valores de
las \ref variables "variables" de la entrada del usuario (en este caso
- a través de parámetros de línea de comandos). Esto es realizado
- por la función cargar_datos().
+ a través de parámetros de línea de comandos). Esta tarea es realizada
+ por la función cargar_datos(). En el archivo carga.c y carga.h puede
+ encontrarse esta función y otras funciones relacionadas a esta tarea.
\subsection integracion Integración de la ecuación diferencial.
Reemplazando la \ref funcion "ecuación diferencial" \f$ df_{(t)} \f$
Todo lo que resta es iterar, paso a paso, calculando los valores de la
función y almacenándolos en el \ref Resultados "vector de resultados",
- tarea realizada por la función calcular().
+ tarea realizada por la función resultados_calcular(). En el archivo
+ calculo.c y calculo.h puede encontrarse esta función y otras funciones
+ relacionadas a esta tarea.
+
+ \subsection impresion Impresión del gráfico por pantalla.
+ Finalmente todo lo que queda es graficar por pantalla el resultado de la
+ función. Para esto se va imprimiendo línea por línea, chequeando qué
+ punto de la función cae en cada rango de valores representados por una
+ línea. Esta tarea es realizada por la función resultados_graficar().
+ En el archivo grafico.c y grafico.h puede encontrarse esta función y
+ otras funciones relacionadas a esta tarea.
+
+ \subsection plataforma Plataforma y compilador.
+ Este trabajo práctico fue realizado y probado bajo la plataforma Debian
+ GNU/Linux sid. El compilador utilizado fue GNU GCC versión 3.3.1.
+
+ De todas formas, al estar programado sólo utilizando funciones ANSI C,
+ debería poder compilarse bajo cualquier plataforma y compilador que
+ soporte este estándar.
+
+\section conclusiones Conclusiones.
+ Realmente no se me presentaron muchos problemas para resolver el TP. El
+ único problema que tuve fue realizando el \ref impresion "gráfico", en
+ ciertas circunstancias (por problemas de redondeo) el valor máximo de la
+ función no era graficado. Esto se solucionó incluyendo una línea más al
+ gráfico, con el rango que va desde el máximo de la función (en realidad
+ desde el mínimo más 20 pasos verticales) hasta el máximo más un paso
+ vertical. Es por esto que en realidad se grafican 21 pasos. Podría haber
+ graficado 20 pasos pero el código quedaría menos claro (o tendría que
+ poner la constante \ref ALTO en 19 en vez de 20).
+
+ El programa también fue pensado para aceptar como parámetros el caracter
+ utilizado para dibujar un \ref DEFAULT_PUNTO "punto" de la función y un
+ espacio en \ref DEFAULT_BLANCO "blanco", así como el
+ \ref DEFAULT_T0 "tiempo inicial". Por problemas de tiempo, no pude
+ terminar de implementar estas características extra.
+
+ Otro detalle que cabe ser mencionado es que para valores altos del
+ \ref variables "step" (mayores a 30), la solución se vuelve inestable.
*/