2 Funcionamiento basico de lectura de los polinomios desde el archivo de texto.
\r
5 Se le agragan los procedimientos pensados en la clase para operar entre polinomios
\r
6 ("suma", "resta", "producto" y "division").
\r
7 Se le agrega un procedimiento para inicializar los vectores.
\r
8 Se unifica el tipo de vectores, desapareciendo "VectorResultado" y pasando el tipo
\r
9 "Vector" a tener el tamaño maximo (TAM_MAX).
\r
10 Se borran las lineas para DEBUG (refinar) y el tipo de dato "Termino".
\r
11 Por ahora no compila ...
\r
14 Compila pero no fueron probadas las operaciones (solo se arreglo el codigo erroneo
\r
15 que no permitia compilar).
\r
18 Se testeo la suma y funciona correctamente. Tambien se agrega un procedimiento para mostrar
\r
19 los polinomios por pantalla ("muestraVector").
\r
22 Se mejora notablemente el procedimiento , agregandole una funcion "exponente"
\r
23 para mejorar la presentacion de los polinomios por pantalla. Ahora la salida es mas limpia
\r
27 Se testea la resta y se arregla la dicho procedimiento porque tenia un operador mal, lo que hacia
\r
28 que se sume en vez de que se reste.
\r
30 vr[i] := v1[i] + v2[i]; { resta los coeficientes de los terminos con igual exponente }
\r
33 vr[i] := v1[i] - v2[i]; { resta los coeficientes de los terminos con igual exponente }
\r
37 Se testea el producto y se arregla la dicho procedimiento porque tenia una nombre de variable mal,
\r
38 lo que hacia que la variable j no se incremente y que i pierda su valor, dando un resultado erroneo.
\r
40 for i := 0 to TAM - 1 do { recorre el 2do vector (de tamaño maximo TAM) }
\r
43 for j := 0 to TAM - 1 do { recorre el 2do vector (de tamaño maximo TAM) }
\r
47 Se corrije nuevamente el procedimiento "muestraVector" para que si el polinomio es nulo,
\r
48 se presente en pantalla un cero en vez de no presentar nada como se hacia antes.
\r
49 Se testea la division y se encuentra que si el segundo polinomio es nulo, da un error de
\r
50 ejecucion (runtime error). Para evitarlo, se transforma el procedimiento en funcion, haciendo
\r
51 que devuelva true si se efectuo con exito (el segundo polinomio no es nulo) o false si no
\r
52 se pudo efectuar (el segundo polinomio es nulo). De esta manera el bloque que llame a esta
\r
53 funcion puede decidir que hacer en caso de que el segundo polinomio sea nulo.
\r
54 Tambien se agregan los comentarios a esta funcion.
\r
57 Se agrega una descripcion del programa indicando el formato que debe tener el archivo con los datos.
\r
58 Tambien se agrega a esta y todas las versiones anteriores una constante llamada VERSION, que
\r
59 almacena un String con la version del programa para ser mostrada cuando se mejore la salida.
\r
60 Tambien se modifica el nombre del programa como PolinomiosEnVector para diferenciarlo de la nueva
\r
61 implementacion con un record (TERM o PolinomiosEnTermino).
\r
64 Se corrije el case en la seccion FIN de la funcion cargarVectores:
\r
65 Se reescribe por casi completo porque tenía varias lineas que no aportaban nada y un par
\r
66 de errores por los cuales la funcion devolvia verdadero sin que se hayan leido ambos polinomios.
\r
67 Ahora es mas concisa, legible y eficiente.
\r
70 Se mejora la interfaz para el usuario. Ahora se basa en menues a color con diferentes opciones.
\r
71 Tambien se agrega un procedimiento para presentar un mensaje en la salida pero aún no está
\r
75 Se implementa el mensaje de salida y se corrigen algunas pequeñas lineas del bloque principal del
\r
76 programa. Tambien se corrijen algunos mensajes para que la salida sea mas prolija. Entre las
\r
77 correcciones se encuentra la funcion obtenerNombreArchivo que en ciertas circunstancias se
\r
78 superponian los mensajes.
\r
81 Se corrijen algunos otros mensajes de pantalla y se cambia el titulo del programa por el nombre
\r
84 ==========================================================================================================
\r
85 ==========================================================================================================
\r
88 Se empiezan a hacer los cambios para transformar el programa POLI en TERM, programa similar pero
\r
89 que guarda los datos en un record llamado Termino:
\r
95 El nombre del programa es: PolinomiosEnTermino.
\r
96 Hasta ahora se modifico hasta la linea 330 aproximadamente y dudo que compile (de hacerlo seria una
\r
100 Se agregan 2 variables en la funcion cargarVectores:
\r
101 n: integer -> indica el termino actual del polinomio para hacer las asignaciones.
\r
102 asignado: boolean -> indica si ya se hizo la asignacion.
\r
103 Se agrega una condicion mas para el formato del archivo con los datos (el orden de los terminos
\r
104 segun el exponente).
\r
105 Se hace una cantidad de cambios considerables al case en sus secciones:
\r
106 COEF_FIN: se inicializan las nuevas variables.
\r
107 EXP_FIN: se corrije el metodo de asignacion para funcionar con la nueva estructura Termino.
\r
108 POLI_FIN: se cambian y agregan algunas asignaciones para funcionar con la nueva implementacion.
\r
109 FIN: se efectuan cambios considerables para adaptarlo al nuevo sistema.
\r
110 Finalmente se sacan las antiguas funciones suma, resta, producto y division. Tambien se pone en
\r
111 comentarios sus llamadas desde el bloque principal para lograr que el codigo compile.
\r
112 El programa compila y supuestamente deberia funcionar la lectura de datos. No se hizo ninguna
\r
113 prueba de ejecucion del programa a esta altura...
\r
116 Se agregan un par de lineas de DEBUG y con esto se ve que la funcion muestraVector funciona
\r
117 correctamente. Se arreglan un par de lineas en el case de cargarVectores, en la seccion EXP_FIN:
\r
118 En las lineas 346/7 decia:
\r
119 v1[n].coef := rCoef;
\r
120 v1[n].exp := iExp;
\r
121 y fue reemplazado por
\r
122 v2[n].coef := rCoef;
\r
124 Gracias a esto antes se reemplazaba los valores de v1 y nunca se le asignaba nada a v2 (con una
\r
126 Aparentemente, con estas correcciones ya funciona la parte de lectura.
\r
129 Se cambia toda la forma de encarar el problema. Practicamente se anulan todas las modificaciones
\r
130 hechas en las versiones TERM_1 y TERM_2. Ahora la implementacion de este programa es mucho mas
\r
131 similar a la de POLI, ya que se estaba haciendo cada vez mas compleja sin necesidad y sin proporcionar
\r
132 beneficios (ni de espacio, ni de velocidad, ni de memoria).
\r
133 Los cambios con respecto a POLI son minimos, solo se modifican las funciones mostrarVector (sigue
\r
134 igual que en TERM_0), la funcion cargarVectores (en las secciones EXP_FIN y FIN, de manera
\r
135 practicamente identica), en la funcion inicializaVector y en las funciones de operaciones (suma,
\r
136 resta, producto y division).
\r
137 Los cambios se centran en su mayoria (casi en su totalidad) en el reemplazo de instrucciones como
\r
139 vr[i-j] := v1[i] / v2[j];
\r
141 por instrucciones de este estilo:
\r
143 vr[i-j].coef := v1[i].coef / v2[j].coef;
\r
144 vr[i-j].exp := v1[i].exp - v2[j].exp;
\r
146 Todavia no se probó el funcionamiento del programa pero se espera que no haya grandes problemas.
\r
149 Se implementa la misma interfaz grafica que se utilizo en POLI. Ademas se prueba la funcionalidad
\r
153 Se corrijen algunos otros mensajes de pantalla y se cambia el titulo del programa por el nombre
\r