CENTPC l 't IN V E SÌ ¡ Ü » ''I0 N Y Bt E ST U D IO S A V A N Z A D O S CEL i. P. N. b i b l i o t e c a IN G E N IE R IA E L E C T R IC A CENTRO DE I N V E S TIGACION Y DE ESTUDIOS AVANZADOS DEL INSTITUTO P O L ITECNICO NACIONAL DEPARTAMENTO DE INGENIERIA ELECTRICA SEC C I O N DE COMPUTACION C EN T R O DE I N V E S T I G A C I O N Y Dt E ST U DIO S A V A N Z A D O S DEL i. P. N. BIBLIOTECA IN G E N IE R IA E L E C T R IC A UN S I STEMA DE M A N IPULACION SIMBOLICA INTERACTIVO T e s i s que presenta la Ing. Zan d r a Navarro Villicaña p ara obtener el g r ado de MAESTRO E N CIENCIAS e n la especialidad de I NGENIERIA E L E C T R I C A con opción e n Computación. Tra b a j o dirigido por el Dr. Josef Kol a r Sabor Bec a r i o de CONACYT México D.F. a 10 de Julio de 1989 AGRADECIMIENTOS Agradezco al Dr. d esarrollo de este Josef Kolar por s u d i r ección y p a c i encia e n el trabajo, así como a s u fami l i a por s u agradable c o mpañía e n México. A todos e specialmente mis al profesores Dr Manuel por sus Guzmán, al c o nsejos Dr y Guillermo su ejemplo, Morales y al Ing. Javier Longoria. A la D r a S hirley Bromberg y al M. e n C. Oscar Olme d o agradezco enormemente su tiempo y las valiosas o bservaciones que me h i cieron al revisar este trabajo. A mis compañeros y amigos en México por el b rindado siempre. Por su especial colabo r a c i ó n a liento que me han d urante la e dición a Marco Antonio Rocha, y por su apoyo gracias a: R uth Delgado, Fernando Vázquez, Jorge Buenabad, R u bén Rusiles y San d r a Navarrete. Al CINVESTAV, en particular a la Sec c i ó n de Comput a c i ó n con cuyos recursos se terminó este trabajo. Al CON A C Y T por haber facilitado los recursos p a r a f i n anciar mis estudios de maestría. C E N T PO CE I N V E S T I G A C I O N EST U DIO S A V A N Z A D O S !. P. N. Y BE BEL BIBLIOTECA IN G E N IE R IA EL E C T R IC A A mis padres Ofelia y Héctor A mis h e rmanos Joel y Néstor CE NT R O DE I N V E S T ! G ACION Y BE EST U DIO S ¿ VA :v 7 a D O S B E L ¡. P. N. b i b l i o t e c a IN G E N IE R IA E L EC T R IC A INDICE INTRODUCCION ................................................................ 1 1. DESCRIPCION DEL S I S T E M A ............................................. 1.1 Objetivos del S istema ........................................... 1.2 Sesión de T rabajo ............................................... 1.3 Variables Implícitas ............................................ 1.4 Ventanas .......................................................... 1.5 Terminadores ..................................................... 3 3 5 7 10 11 2. LA INTERACCION DEL USUARIO CON E L S I S T E M A ........................ 2.1 Posibilidades de Nivel S u perior e n el Sis t e m a ................ 2.1.1 Ciclo de Lec t u r a y E v a l u a c i ó n ................................. 2.1.2 Sesiones ......................................................... 2.1.3 I m p r e s i ó n ....................................................... 2.1.4 Esquemas ......................................................... 2.1.5 M i s c e l á n e a ...................................................... 2.1.6 Ventanas ......................................................... 2.1.7 A y u d a ............................................................ 2.1.8 F i n ............................................................... 16 16 18 18 21 21 22 24 26 27 3 FACILIDADES P R O V ISTAS EN E L SIS T E M A ................................ 3.1 Convenciones ..................................................... 3.2 Operadores Aritméticos ......................................... 3.3 Funciones T rascendentes ........................................ 3.4 Funciones Selectoras ........................................... 3.5 Funciones Algebráicas .......................................... 3.6 Funciones de Cálculo ........................................... 3.7 Funciones de S u b s t i t u c i ó n ..................................... 3.8 Funciones Ejecutables .......................................... 28 30 32 32 33 36 38 39 41 4. ESTRUCTURAS USADAS EN LA R E P RESENTACION D E LAS EN T I D A D E S DEL S I S T E M A ................................................................. 4. 1 Formas de una e x p r esión 4.1.1 Forma de Usuario (FU) 4.1.2 Forma Interna P refija 4.1.3 Forma Interna P refija 42 e n el s i s t e m a ....................... ........................................ (FIP) ................................. N o rmalizada (FIPN) ................. 42 42 43 45 4.2 Forma Interna de Ventanas .................................... 4.2.1 Conceptos ...................................................... 4.2.2 Información General e Información Específica de Ventanas ....................................... 4.2.3 E structura Interna ............................................ 46 47 5. DESCRIPCION GLO B A L INTERNA D E L S ISTEMA ........................... 5. 1 Los módulos del s i s t e m a ........................................ 5.2 Interrelación de las partes del s i s t e m a ..................... 5.2.1 El intérprete de L I S P ........................................ 5.2.2 Diagrama de llamado ent r e los módulos ..................... 51 51 54 56 56 CENTRO DE r;-::3 T lü A C I0 N Y BE E ST U D IO S ' '.I Z A D O S BEL !. P. N. BIBLIOTECA 48 50 6. DESCRIPCION DETALLADA ACERCA DEL FUNCIONAMIENTO DE LOS MODULOS DEL S I S T E M A .......................................................... 60 6.1 Funcionamiento del Manejador de Ventanas ................... 60 6.2 Funcionamiento del Transformador FU-FIP y función que lo invoca, LE E - P R O C E S A ........................ 69 6.2.1 La función L E E - P R O C E S A ...................................... 70 6.2.2 Funcionamiento del Trasformador FU-FIP ................... 72 6.3 Funcionamiento del Transformador FIP-FIPN .................. 74 6.4 Funcionamiento del Manejador de Terminadores .............. 74 6.5 Manipulador Simbólico .......................................... 78 6.5.1 Módulo aritmético ........................................... 78 6.5.2 Módulo algebráico ........................................... 85 6.5.3 Módulo diferenciación e integración ......................... 88 6.5.4 Módulo de codificación de tablas ........................... 92 6.6 Funcionamiento del Transformador F I PN-FU ................... 95 CONSLUSIONES ............................................................... BIBLIOGRAFIA APENDICE A Gramática del Lenguaje de Entrada APENDICE B Módulo de Manejo de Ventanas APENDICE C Módulo de Transformación de Forma de Usuario F U a Forma Interna Prefija FIP APENDICE D Transformador FIP-FIPN Módulo aritmético APENDICE E Módulo de Manejo de Terminadores APENDICE F Módulo de manipulación algebraica APENDICE G Módulo de diferenciación e integración APENDICE H Módulo de codificación de tablas APENDICE I Módulo de Transformación de Forma Interna APENDICE J Forma rápida de funcionamiento del sistema APENDICE K Relación de mensajes de error. P refija 98 INTRODUCCION El presente d o c umento m anipulación de símbolos. apoyo a un describe un s istema interactivo de Se espera que este s istema p u e d a ser v i r de estudiante que intenta resolver p r o b lemas de transformación, deriva c i ó n e integración de expresiones algebraicas. Se describe el s i s t e m a al usuario y después s u implementación. El trabajo contiene 6 capítulos, en los primeros 3 se usuario cual es la f o r m a de trabajo con el sistema. le deta l l a al En los ú l timos 3 se describe la implementación, de tal modo que quien se interese pueda realizar modificaciones al s istema ó usar algu n a de sus partes según le convenga. En el capítulo 1 se define cuales s o n los alcances del sistema, y se explican los conceptos de sesión de trabajo, ventanas y terminadores, que son conceptos variables implícitas, en los que se basa el sistema. En el capítulo 2 principales del sistema, En el capítulo se tiene la descri p c i ó n de las opciones p ara que sirven y como se usan. 3 se explican las funciones de que d ispone el usuario p ar a incluir e n una expresión. Acerca de presentan la cuales implementación fuer o n las del sistema, estructuras en el internas cap í t u l o utiliz a d a s 4 se para almacenar los datos dentro del sistema. En el capítulo 5 se encuentra una descri p c i ó n de la c o n f iguración global del sistema, los módulos en que se d ividió y su for m a de f uncionamiento general. En el capítulo 6 se presenta con mayor detalle c a d a uno de los módulos descritos en el capítulo 5. Los Apéndices del B al I tienen el código del sistema, y se hace r eferencia a ellos princi p a l m e n t e en el capítulo 6. E n el Apéndice A se tiene la g r a m ática que define f o r malmente el lenguaje de entrada del usuario. 1 En el Apéndice J se presenta un manual de referencia rápido, sin d efiniciones formales para empezar a usar el sistema. En el Apéndice K hay una relación de mensajes que ocurren durante la ejecución del sistema. 2 C A P 1. DESCRI P C I O N D E L SISTEMA. En este capítulo sistema c o n idea dentro del mismo. presentando conceptos la de implícitas, se presenta f u ncionamiento general del de trabajo En primer lugar se defi n e n los objetivos del s i stema idea general sesión de de éste, trabajo, después creación se y des c r i b e n uso de los variables iniciación de ventanas y s u u t ilidad como parte de una sesión de trabajo, y por último la el de introducir al u suario a la fil o s o f í a repercusión introducidas, que en tiene el f u ncionamiento de un terminador y en la eva l u a c i ó n de las los resultados que se g eneran y en expresiones la c r eación de variables implícitas. 1. 1 Ob.iet ivos del sistema. El objetivo sistema que utilizar constituye este trabajo la c o mputador a como enseñanza-aprendizaje. de tesis tiene herram i e n t a e n el como proceso de Se aprove cha e n el trabajo el potencial de la computadora para automatizar procesos mecánicos y r e petitivos p a r a el ser humano. El sistema se diseñó e implementó consid e r a n d o al usuario final como el estudiante de cálculo diferencial e integral que va a resolver problemas planteados como ejercicios en s u libro de texto. El sistema entonces le da la posibilidad de utilizar la com p u t a d o r a como la hoja de trabajo de s u cuaderno en el proceso de re s o l u c i ó n del problema. Tamb i é n puede ser útil para aquellas otras labores como docencia, su actividad diaria de la derivación e integración, personas que dedicadas a investigación o i ngeniería r e q u ieran en obtención de s oluciones a problemas de que necesiten tratar c o n ellos p a r a o btener resultados rápidos , compararlos, verificar respuestas, ó simplemente utilizarlos como apoyo e n aplicaciones. En el sistema se provee un medio de t rabajo que le da facilidades de uso de ventanas y c r e ación de sesiones, e s t a bleciéndose así parte de extiende implícitas la interactividad del sistema. dando al generadas u suario por el la p o sibilidad sistema, 3 Dicha de funciones i n t eractividad se man e j a r que variables p e r miten la manipulación local de expresiones y terminadores de expresiones que incrementan la libertad del usuario para expresarse. L a facilidad de interacción se comple m e n t a con una variedad de funciones de las que el usuario dispone p ara formular sus expresiones. P ara el caso de uso didáctico del sistema, cabe aclarar que no se diseñó para enseñar cálculo, ni sustituye a un profesor e n el área. Sólo brinda apoyo principalmente e n el trabajo fuera del aula. Tampoco se desea resolver al alumno las tareas, sino facilitarle la realización de las mismas ayudándole con el trabajo mecánico que se supone el estudiante es capaz de realizar por sí mismo, pero que, sin embargo, no constituye parte del objetivo principal de su curso e n ese momento. Dentro del a ula también puede ser útil e n ocasiones e n las que algún resultado des e a encontrarse rápidamente par a proseguir una presentación. Se trata de que el usuario presente el problema que va a tratar de solucionar, al sistema. El sistema proporciona los medios p ara la edición del problema, la consulta de tablas, tales como expansión, factorización, la e j e c ución de comandos transformación de expresiones en general y aplicación de "fórmulas" de derivación e integración. El sistema tutorial, ya objeto que, en de este trabajo primer lugar, no éste es no tampoco propone un sistema problemas al usuario, sino es el usuario el que presenta los problemas al sistema. En segundo lugar, porque no contiene ningún módulo de evaluación del aprendiz. Con las herramientas que facilita el sistema, el usuario tiene la posibilidad de resolver el problema usando su propia iniciativa en el desarrollo de la solución. De este modo a un estudiante le es posible resolver un número más grande de problemas en un tiempo menor y concentrarse e n la esencia del material para llegar a conclusiones más rápidas y confiables basadas en los ejemplos. En el caso de didáctico se tiene que el uso también con del sistema no se enfoque al aspecto la posibilidad lo cual podría de ejemplos tareas. El investigador podría realizar mayor número de experimentos representativos 4 de problemas elegir y profesor resolver inmediata, expresivos un de manera par a manera rápida exposiciones o al utilizar el tiempo ahorrado en la resolu c i ó n manual, lo que le a y u d a también a c onjeturar más rápido y con mayor certeza. Con lo anterior es posible apreciar que las ventajas que presenta el s istema son suficientes como para motivar s u construcción. 1.2 Sesión de Trabajo. Una sesión d e trabajo es la s e c u encia de durante la interacción del usuario e n c uentra esquematizado en la Fig. con 1.1. el los pasos efectuados sistema, lo cual se A c a d a paso c o rresponde una e n t r a d a , que es la e x p r esión que provee el usuario al sistema, y una sal ida, que es el resultado que proporciona el sist e m a al usuario. Fig. 1.1 Concepto de Sesión de Trabajo Podemos e s t a blecer una a n alogía entre el trabajo de un usuario sobre s u cuaderno de la manera tradicional y la sesión de t rabajo que puede construir, ese mismo usuario, mediante el s istema que se e stá presentando. Si consideramos al usuario tradicional, podemos ver que e n la h o j a de trabajo él v a e s c ribiendo una secuencia de formas equivalentes de un p r oblema inicial mediante la aplicación de o p eraciones válidas. E n el caso del u suario usando el sistema, p r i m eramente introduce la e x p resión que rep r e s e n t a el problema 5 inicial, después, en c ada e n trada consecutiva proporciona una expresión indicando la operación que ha de realizarse sobre el problema inicial y el sistema responde c o n una salida e n la que e f ectúa la operación indicada si es que ésta es válida. De este modo las transformaciones que sufre una expresión paso a paso se van reflejando en las entradas y salidas consecutivas de una sesión. Continuando con la analogía vemos que e n el caso tradicional el trabajo de la persona ha quedado impreso en su cuaderno y por tanto deseamos que algo semejante sea posible mediante el sistema automático. Por tanto el usuario dispone del medio para guardar una sesión trabajo de en el disco magnético. Asimismo, es posible r ecuperar una sesión previamente guardada y continuar trabajando sobre ella. Además una sesión es desplegable en pantalla o por impresora en c ualquier momento. Durante la generación de una sesión se pueden realizar sobre ella modificaciones, como borrar algunos de los pasos de la sesión o bien b orrarla toda e iniciar una sesión nueva. Podemos observar que una parte de sesión puede ser en sí misma una unidad como sesión, haciendo que la primer e ntrada constituya un problema inicial. En la memoria de la computadora pueden permanecer almacenadas varias sesiones e n u n mismo tiempo pero sólo una de ellas se considera a ctiva y todas Esto las operaciones último e stá muy ligado mencionadas se realizan sobre al concepto de v entana activa ella. que se revisará en la sección 1.4. El área sobre la que se desarrolla una sesión es una ventana. Nos enfocaremos ahora a la forma visual e n que una sesión se va desarrollando dentro de una ventana. En el á rea que le toca aparece el prompt del sistema, e ntrada del usuario. dos partes. indicando que el renglón e stá disponible para una El prompt de entrada del usuario se compone de La primera es el número de entrada correspondiente y la s egunda es la cadena ’ ?j_’, así como aparece e n la Fig. En ese momento e stá posicionado el cursor, u suario puede comenzar a esc ribir una estructura se describen e n la sección 2.1.1. 6 1.2. parpadeando, exprésión, cuya donde el forma y ( 1?: _ Fig. Además del 1.2 Prompt de Entrada prompt de ent r a d a del salida o respuesta del sistema, tiene en primer consecutivo de lugar el entrada, prompt de también construido e n dos partes, se signo ’ luego usuario existe y en segundo ’ ¡ J . Si el el lugar usuario ha el número introducido algunas expresiones de ent r a d a el desarrollo de la sesión com i e n z a a verse como en la Fig 1.3. 1? @1 2? 02 : : : : expresión-de-entrada-1 expresión-de-salida-1 expresión-de-entrada-2 expresión-de-salida-2 Fig. 1.3 Desarrollo de una Sesión 1.3 Variables Implicitas. Por medio de las variables implícitas se enriquece la interacción entre el usuario y el sistema. Las variables implícitas son las variables que v a n adquiriendo como valor la r e p r e s entación de las expresiones de entr a d a y de salida durante el desarrollo de una sesión de trabajo. Ad q u ieren s u valor a través de una a signación implícita, generada por el sistema, convencional. de Est a la expresión a s ignación es usuario la r e a l izará explícitamente, de una variable la Fig. correspondiente como la que es decir, se a un ob t e n d r í a si t e cleara el nombre si el nombre asignándole una expresión de la man e r a e x p resada en 1.4 a ) . Así vari t e ndría como valor "a+b" y podría ser ut i l i z a d a por medio del nombre vari en cualquier expresión subsecuente como se ve en la parte b) de la misma figura. 7 ? :varl = a + b; 1 :a+b ? a) Asignación a vari 12? :variL + vari; + 2 b ©2 :2 a ■ 3? I b) Uso de la variable vari Fig. Después 1.4 Asignación y uso de una variable de la generación de una variable implícita, é sta se puede referenciar por medio del nombre para formar o t r a expresión. Los nombres que se van generando están formados de dos partes. es un caracter corresponde al especial ? ó ©, la segunda número de entrada o salida. expresión que se v a a asignar es de Se entrada y es usa un L a primera número, *?xx* que cuando la ’© x x ’ cuando es de salida. El efecto que se produce al utilizar en una e x p r esión uno estos nombres es la sustitución de la expresión correspondiente, tomar en cuenta el terminador. Pongamos el ejemplo de la Fig. 1? SI 2? ©2 : : : : de sin 1.5. A+B; A+B ?1*(T1+T2); ( A + B ) (Tl + T2) Fig. 1.5 Uso de la variable implícita ?1. Puede observarse que en la entrada 2 se utilizó la variable implícita ?1, generada e n la entrada 1 y la sustitución ocurrida fue básicamente textual con la omisión del terminador 1 1 . Un ejemplo más elaborado podría ser el de la Fig 1.6. ejemplo se utilizaron las variables implícitas ?1, ©2, ?2. 8 En este 1 = — _ — =— _ — 1?: 2 A B + 4 A C ; SI : 2 A B + 4 A C 2? : FACT 0RI ZA( ?1); 02 : 2 A *(B ♦ 2 C) 3? : E X P A N D E (@2); 03: 4 A C + 2 A B 4? : ?2; 04 : 2 A M B + 2 C ) Fig. En el primer factorización entrada 1. 1.6 Uso de varias variables implícitas caso la se utilizó expresión La expresión como que fue argumento de p r eviamente tecleada en la entr a d a la fun c i ó n introducida 2 es en equiva l e n t e de la a haber tecleado lo siguiente: 2? : FACTORIZA (2 A B + 4 A C); De manera similar la ent r a d a 3 es equivalente a haber tecleado: 3? : E XPANDE (2 A *(B + 2 C)); y la ent r a d a 4 a: 4? : FACTORIZA (2 A B + 4 A C); El sis t e m a pues, va realizando automáticamente las a s i g naciones a 1 as v a r i ables implícitas, de c ada una de forman los pasos de una sesión. las entradas y s alidas que El usuario podrá d i sponer entonces de c ualquier expresión que h aya introducido previamente, que haya sido algún resultado anterior, o de cualqu i e r a e v itándole tener que volver a teclearla completcimente, c o n sólo usar la variable implícita e n donde dicha e x p resión está almacenada. Tamb i é n existe otro tipo de variables, llamadas variables e speci a l e s que tienen un funcionamiento semejante al de las variables implícitas. Son propias del s i stema y tien e n usuario teclear una exp r e s i ó n larga o compleja, 9 como fin a horrar al a cambio de utilizar las variables especiales que la representan. Las variables especial de utilizadas especiales expresiones sólo por que algunas representan, son precisamente, propiamente funciones del un equivalencias sistema. Su uso tipo y son es muy específico y se explicará como se forman en la sección que se refiere a las tablas [2.1.4]. de Las fórmulas variables de identidades, especiales derivación representan e integración precisamente las fórmulas que ahí se tratan. 1.4 Ventanas. Una ventana es un elemento del sistema cuy a utilidad se aprovecha durante la interacción con el usuario. Cuando un tradicional, usuario resuelve en su cuaderno problemas operaciones en espacios separados. para construir un resultado. integración y derivación algún modo También es costumbre resolver los problemas dividiéndolos en partes y después reuniendo parciales de es frecuente que r ecurra a realizar a l gunos cálculos u formulario las separado tablas del En de el caso "fórmulas" lugar donde se las respuestas de problemas suel e n está estar resolviendo de en el problema. Una ventana en el sistema es el á rea de la pan t a l l a donde d esarrolla una sesión y se presentan tablas al usuario. utiliza para desplegar las instrucciones de ayu d a se T a mbién se p ara uso del sistema. Las ventéalas están numeradas por el sistema de mane r a secuencial en la esquina superior izquierda. En un momento dado solo mantener La v e ntana una ventana activa. visualmente por que el número que activa es posible se distingue le corresponde e s t á desplegado en modo inverso. Las operaciones principales que se pueden realizar con ventanas son: iniciarla, cerrarla y enviar información entre ventanas. es posible cambiar la ventana activa a la siguiente o a la Además previa, respecto de la que está actualmente activa. Cuando existe más de una ventana e n el sistema c o n una sesión de trabajo se tiene que todas las sesiones son independientes entre sí y 10 que todas re f e r i r á n las a operaciones la que está que se c o n t enida realicen en la sobre v entana una ses i ó n activa. Con se las f a c ilidades mencionadas vemos que el usuario puede producir u n a ses i ó n e n el s istema de manera más c e rcana a la forma tradicional. 1.5 Termlnadores. Los terminadores son elementos que tienen como fin primario dar al usuario un medio de indicar que la expresión que introduce ha terminado. Además un terminador permite indicar al sis t e m a la for m a en que se llevará a cabo el procesamiento de la e x p resión que se e stá introduciendo. E n el s istema se planearon 4 formas diferentes de procesar una expresión, en la figura 1.7 se m uestra un diagrama e n el que se puede ver el proceso que se sigue en c a d a caso. A continuación se describe c a d a u n a de las formas de procesar una expresión. F o r m a Automática. El terminador asociado pro c e s a r una expresión es el a la f o r m a automática de Cuando una exp r e s i ó n es terminada c o n e ste caracter se r e a lizan las operaciones siguientes: a) Se eva l ú a la e x p r esión de acuerdo a la prioridad de los operadores y funciones que est é n involucrados. Se asigna la e x p r esión a una variable implícita. b) El resultado c o r respondiente obtenido se . Tam b i é n p r e senta al asigna el se u suario en result a d o a la la salida variable implícita apropiada. c) El sist e m a d e s pliega el prompt de la e ntrada siguiente y posiciona el cursor. Consid e r a n d o que %E9 es la regla de e q u i valencia siguiente: SEN (A+B) ^ SEN A COS B + COS A SEN B se tie n e n a c o n t inuación algunos ejemplos del f u n cionamiento de este terminador. 11 1? 61 2? 02 3? 63 : N UMERADORÍ(A+B)~2/SEN(A+B)); : (A + B K 2 : EXPANDE(NUMERADORÍ(A+B)~2/SEN(A+B))); : 2 A B + A ‘2 + B ‘2 : APLICAC/.E9, D E N OMINADOR((A+B) ~2/SEN( A + B ) )); : SEN A COS B + COS A SEN B Lo que se está sucediendo en cada lugar es lo siguiente: E ntrada 1? :Se pide extraer el numerador de la expresión dada. S alida 61 : El sistema escribe que el numerador es (A+B)~2 Entrada 2? : Se pide expander el numerador de la expresión dada. S alida 62 : El sistema escribe la expansión del numerador de la e xpresión dada. Entrada 3? : Se pide al sistema aplicar la regla de equivalencia %E9, sobre la expresión que resulte ser el denominador de la e xpresión dada. S alida 63 : El sistema escribe el resultado de r e alizar la aplicación de la regla sobre la expresión. Forma Muda. El terminador asociado a e xpresión es el a cabo internamente automático. la forma muda de procesar una El procesamiento con el terminador mudo se lleva igual que el procesamiento La diferencia entre ambos está e n con el la parte terminador visible del proceso, pues en el caso del terminador mudo el resultado obtenido NO se presenta al usuario, sin embargo la variable implícita que le toca a la salida se asigna debidamente. Finalmente se despliega el prompt de la siguiente entrada y se posiciona el cursor. Ejemplificando lo anterior se tendría de modo similar al terminador automático lo siguiente: 1? 2? 3? 4? 64 : : : : : N UMERADORÍ(A + B K 2 / S E N Í A + B ) )$ EXP A N D E (N U M ERADOR((A + B K 2 / S E N Í A + B ) ))$ APLICAC/.E9, D E NOMINADOR((A+B)~2/SEN(A+B)) )$ @2; 2 A B + A'2 + B^2; E n este ejemplo el usuario presenta las mismas tres primeras entradas al sistema que en los ejemplos dados para el terminador automático. El sistema hace lo mismo, menos escribir las salidas. tiene que: Entrada 4? : Se hace uso de la variable implícita @2. S alida 64 : El sistema presenta la expresión @2. 12 En el paso 4 se For m a Expresiva. El termlnador asociado procesamiento de expresiones es el a una forma e xpresiva expresiones tiene más bie n un fin Informativo p ara el usuario. verse como el procesamiento que Inverso se realiza termlnador automático; ninguna respuesta al del pero termlnador mudo. Internamente es a diferencia del usuario, de Est a f o r m a de p rocesamiento de éste presenta el En mismo mudo, que Podría r e alidad que no con el el p r esenta i n formación rel a t i v a al camino seguido por el s istema p ara obtener el r e s u ltado que presenta. Las asignaciones implícitas que se realizan son las mismas que con el termlnador mudo. Un ejemplo del uso de este termlnador sería: 5? : INTEGRA(X SEN(X), X)! Se llego a la función para integrar, c o n los siguientes argumentos: X SEN(X) , X Se tiene para derivar la expresión: SEN X Realizando la(s) asocia c i o n ( e s ) : con U la expresión X Se utiliza la siguiente fórmula de derivación: d(sen U)/dx eos U dU/dx Se tiene p ara integrar la expresión: Realizando la(s) asocia c i o n ( e s ) : U con la expresión X SEN X X D V con la expresión SEN X Se u tiliza la siguiente fórmula p ara integrar: J- U dv . U V - J v du Se tiene p ara derivar la expresión: COS X Realizando la(s) as o c i a c i o n ( e s ) : U c o n la expresión X Se utiliza la siguiente fórmula p ara integrar J eos U du -> s e n U La integral o b t enida fue : -X C O S X + SEN X 65: -X C O S X + SEN X Forma Dirigida. El termlnador que indica una for m a d i r igida de manejar una expresi ón es Est a f o rma de procesamiento es muy importante en este sistema pues es el que hace a éste diferente de otros s i s temas de manipulación simbólica. No r e aliza 13 ningún p r ocedimiento de transformación sobre la expresión. Lo que sucede es que se requiere que un sistema de este tipo brinde al usuario u n a herramienta para describir de que indicar las expresiones expresiones terminador, manera llegarla él transformaciones que se introduce invocan siempre que y usando funciones son al d e sea resultado. realizar, este De usuario medio terminador. especiales, ejecutadas. El por otr a que a mane r a el debe de En las tales pesar sistema del se limita e n su respuesta presentando como salida la mis m a expresión de entrada. El uso de este terminador requiere de la creatividad del usuario para resolver el problema de entrada. Las funciones que siempre son ejecutadas se llaman funciones ejecutables. Se presenta un ejemplo del uso del terminador 8«, suponiendo que la regla de integración %I10: J sen U d u — » eos U ?1 : INTEGRA (SEN(4 X),X)& @1 : J (SEN (4 X)) dx 2? : INTEGRA(4 SUB E X P ( ? 1 , INTEGRAtA,X),A ) ,X)& @2 : J (4 SEN (4 X)) dx 3? : 1/4 028. B3 : 1/4 4? @4 5? @5 Donde e stá : : : : J (4 SEN (4 X)) dx 1/4 APLICAC/.I10, 4 SEN (4 X), 4, U, 4 X)& 1/4 (-COS (4 X)) EQEXP (01, §4); Son expresiones equivalentes sucediendo lo siguiente: E ntrada Salida E ntrada ?1 :Se presenta al sistema el problema a resolver. SI : El sistema no transforma la expresión con el &. ?2 : El usuario escribe el problema, presentado el integrando multiplicado por 4, para tratar de completarlo y poder usar una fórmula. Salida ©2 : El sistema presenta la expresión reescrita por el usuario. Entrada ?3 : El usuario escribe el problema, presentándolo de tal manera que sea equivalente al original. M u l t iplica por 1/4, para equilibrar con el paso que hizo e n ?2. Salida ©3 : El sistema presenta la expresión r e e s crita por el usuario. Entrada ©4 : Se pide aplicar la regla de integración VAO, sobre la expresión 4 sen (4 X), indicando que la diferencial de U es 4 y que se ha eligido U como 4 X. El resultado se multiplica por 1/4, p ara no alterar la expresión. 14 Salida ?4 : El s istema presenta el resultado de la aplicación. Entrada 65 : El usuario intenta confirmar si el resultado obtenido en 64 es equivalente al que o btiene el s i s t e m a resolviendo el p r oblema original p resentado en 61. Sal i d a ?5 : El s i s t e m a indica que las e x presiones dadas son equivalentes. Por lo tanto el usuario pue d e darse cuenta de que hiz o las t ransformaciones a d e cuadas sobre el integrando y que aplicó la r e g l a apropiada.. 15 CAP. 2 L A INTERACCION DEL USUARIO C O N EL SISTEMA. En este capítulo se describe detalladamente el funcionamiento del sistema. Se dan a conocer las pantallas que se despliegan, organización y el orden en que son presentadas las opciones, también, su así como la forma de accesarlas . Al término se esp e r a que el usuario pue d a interactuar con el sistema y conozca la man e r a de utilizar todos los recursos que en él se ofrecen. 2.1 Posibilidades de Nivel Superior en el Sistema. Durante la ejecución del sistema se presentan diversas pantallas. En todas las pantallas desplegadas siempre existe un áre a de ventanas, enseguida dos renglones de opciones, después un renglón para mensajes y al último un renglón de estado del sistema, como se esquematiza en la Fig. 2.1. Fig. 2.1 Areas de una Pantalla. El área para ventanas es el lugar donde usualmente desarrollará el usuario sus sesiones, prácticamente es su espacio para trabajar. En esa á rea se desplegará el prompt de entradas y salidas. En el área de opciones disponibles e n el menú. se despliega En todas la secuencia de opciones las pantallas h a y una for m a común p ara elegir cualquiera de las opciones que son presentadas e n el área correspondiente. en modo de De todas las opciones, video inverso, de tal 16 una de ellas e stá desplegada manera que parece que estuviera iluminada. Mediante la barra e s p a d a d o r a se puede lograr cambiar Iluminación a alguna o tra de las opciones de la pantalla. u na opción d e t erminada se debe primero la P ara elegir iluminar la o p c i ó n deseada y entonces o primir la tecla de retorno de carro. Haciendo uso de la primer letra de elegir cualqu i e r a de ellas, la opción t a m b i é n se puede solo se oprime la tecla de s u inicial y enseguida el sistema accesa la opci ó n indicada. En el área para mensajes a p a r ecerán mensajes ace r c a del manejo de opciones y de la e ntrada de datos e n las diferentes opciones del menú, s e gún la relación que se e n umera en el Apendice K. La línea de estado del s i stema tiene datos ace r c a de la sesión activa, como el nombre de la sesión y el número de e n t r a d a e n que se encuentra dicha sesión. La primer pantalla que se pre s e n t a tiene la forma que se describe e n la Fig. 2.2. A. Ventanas A. O p ciones • A. M e nsajes L. de Estado { { E li j a una opcion Sesión: SESION.SSN Numero de e n t r a d a : 0 Fig. 2.2 Opciones de nivel s u perior del s i stema E n los renglones correspondientes a las opciones, se puede ver cuales son las que se llaman O p c iones de Nivel Superior. Cuando se ha elegido c ualquiera de las opciones inicialmente presentadas, é sta es ejecutada. En lo que r e sta de e sta s ección se descri b i r á cual objetivo de c ada una de las Opciones de Nivel Superior y s u uso. 17 es el 2.1.1 Ciclo de Lectura y Evaluación. El Ciclo de Lectura y Evaluación se refiere al medio ambiente que comienza cuando se posiciona adelante del elige la prompt opción de LECTURA. El cursor de e n trada que aparece e n se la ventana como se muestra e n la Fig 2.3 referente al Inicio de u n a Sesión. En este punto el usuario puede teclear una expresión, la cual estará escrita en el lenguaje del usuario. En adelante diremos que una expresión en este lenguaje e sta escrita en Forma de Usuario (FU). Es sencillo generar una expresión correcta en FU. En el Apendlce J se dan ejemplos sencillos de ello y de como e mpezar a usar el sistema por primera vez. La manera formal en que se define el lenguaje de entrada es por medio de una gramática libre de contexto, la cual se presenta en el Apendlce A. OPCIONES: Lectura Sesiones Esquemas Impresión Miscelánea Ventanas Ayuda Fin Elija una opcion Sesión: SESION.SSN Numero de entrada:0 Fig. 2.3 Inicio de una sesión. El ciclo de Lectura y Evaluación consiste de los siguientes dos pasos: a) se despliega el prompt de entrada del sistema, delante del cual el usuario escribe una expresión . b) según el terminador de la expresión, ésta es evaluada. Con la evaluación se obtienen los efectos laterales correspondientes tanto de asignación a variables implícitas, como de impresión. Esto se repite una y o tra vez hasta que se presiona <ESC> en una entrada para volver a la pantalla inicial. 2.1.2 Sesiones. En sesión. esta En sección se presentan las opciones la figura 2.4 aparece un e squema de 18 para manejar una la pantalla que es d e splegada al elegir la opc i ó n de SESIONES e n el men ú Inicial de OPCIONES. Pueden existir en m emoria tantas s e siones como ventanas haya abi e r t a s , y cualquiera de las facilidades de la p a ntalla de S E SIONES a la cual no le sea especificado un nombre de sesión, presupone que se hace r eferencia a la sesión que reside en la ven t a n a activa. cuando par a llevar a cabo la tarea e legida es necesario Además, desplegar resultados, éstos se reflejan e n la ventana activa. SESIONES: Despliega-Seslon Guarda-Sesión M odifica-Sesion Elija una opcion Sesión: SESION.SSN Numero de entrada:0 Carga-Sesión Fig. 2.4 Menú de Sesiones. Despliega-Sesión Esta facilidad permite desplegar la s e s i ó n que se encuentra en la ventana activa. Se puede utilizar cuando el tamaño de u n a sesión ya no permite que é sta espacio disponible de la ventana. se pue d a visualizar dentro del Al y a no caber en este espacio, la sesión come nzó a desplazarse por la parte superior de la ven t a n a y las primeras entradas sólo s o n accesibles nuevamente a través de la opción que nos ocupa. Guarda-Sesión Esta opción permite almacenar e n m emoria secund a r i a la sesión residente e n la v e ntana activa. Es necesario dar un nombre a la sesión y éste es requerido por el s istema al invocar la opción Guarda-Sesión. El nombre debe ser un nombre válido p ara archivos e n el s istema MS-DOS. La extensión por omisión que añade el sist e m a es "SSN*. Carga-Sesión Por medio de Carga-Sesión puede ser llevada u n a sesión de memoria secund a r i a a m emoria principal. Específicamente se coloca c omo activa. la ses i ó n residente en la ventana El usuario debe d eterminar entonces si des e a deshacerse de la sesi ó n que se e n c u entra 19 en ese momento en la ventana activa. El sistema solicita el nombre en disco de la sesión que desea cargarse. La extensión por o misión es "SSN”. Modifica-Sesión Esta opción permite al usuario eliminar las partes de la sesión activa que ya no requiere. corresponde una salida a cada una E n todas de las las sesiones entradas y siempre todas identificadas de manera única como h a sido explicado e n están la sección 1.1. L a eliminación de un rango de entradas elimina automáticamente las salidas correspondientes, por lo tanto, para dar el rango a eliminar solo es necesario dar el número de la e ntrada inicial y el número de la entrada final sin la identificación "?" que significa una entrada. El sistema presenta los prompts necesarios para introducir el rango deseado, Fig 2.5. Los efectos laterales de asignación que hayan sido realizados por alguna de las entradas eliminadas permanecen. De manera similar, no importa si en alguna de las expresiones del rango eliminado se usaron variables implícitas, pues desde el momento e n que fueron usadas representan, el al sistema igual las substituye por que con las asignaciones. la e x p r esión Por ejemplo, que si se ha tecleado la siguiente sesión: 1? : A+B; 01 : A+B 2? : ?1*@1; 62 : (A+B)"2 y después referencia (ambas VI son substituidas inmediatamente por A+B se borra a ?2, expresión asociada de que la sesión usaba (A+B)^2. la variables Pero entrada 1, implícitas se puede y tendrá Entrada Inicial: í Ent rada F in a 1: í Numero de entrada INICIAL. Use <TAB> para dar entrada FINAL Sesión: C:SESION.SSN Numero de entradas: 4 Fig. 2.5 Datos para la opción 20 como la numeración ser á recorrida y se convierte en la entrada 1. RANGO-A-ELIMINAR: hacer Mod i f ica-Sesion B o r r a-Sesión Se permitiendo enca r g a que una de borrar ses i ó n nue v a de mem o r i a pueda la sesión c omenzarse en activa esa área. Inicial iza el medio ambiente p ara una sesión. 2.1.3 Impresión. La opci ó n de f acilidad de impresora. IMPRESION e n el menú principal de o p ciones d a la mandar la ses i ó n residente e speciales que se ven e n la pantalla, símbolo de algún en la v entana E n la impresión que se obtiene no f iguran la integral p r o blema y de físico con la como los signos usados p ara el la diferencial. la activa a los caracteres impresora, E n caso de éste es que exista reportado por el sistema. 2.1.4 Esquemas. E n e sta s e cción se d e s criben las opciones que p e rmiten desplegar en la v entana acti v a las tablas de equivalencias, de deriva c i ó n e integración disponibles e n el sistema. Al invocar la opci ó n de ESQUEMAS se pre s e n t a un s u b m e n ú como el que figura e n el área par a opciones de la Fig. 2.6. s ubmenú puede el teclas de PgUp, usuario elegir PgDw, Por medio de este la tabla que necesite y usando las Flec h a izquierda y Fle c h a dere c h a puede buscar a l gún esq u e m a específico e n la tabla desplegada. S e a cual fuere la la ésta es vent a n a activa. En caso de que en la v entana act i v a hay a u n a sesión, é s t a es d esplegada e n el áre a c o r r espondiente a tabla escogida, b orrada únicamente presentar ventanas. la tabla. En la En de la Fig v entana 1 se la pantalla, 2.6 se están refieren no de abrieron, la memoria, como desplegadas las principalmente a para ejemplo, dos tablas de equivalencias, que identidades trigonométricas. La ven t a n a 2 de esa m i sma figu r a contiene las tablas de Deriva c i ó n del sistema. Cada u n a de las fórmulas que son d e splegadas en estas tablas r epres e n t a u n a equivalencia. El lado izquierdo puede c o nvertirse en el lado derecho e n c ada caso. Todas las identidades est á n identificadas p or medio de una letra y un número. 21 La "E" se refiere a las identidades trigonométricas y logarítmicas. La "D" se refiere a las tablas de derivación y la "I" a las tablas de integración. La identificación se variables que son usadas por usa par a se explica en el siguiente capítulo. es una variable especial formar un tipo especial de la función APLICA cuyo uso y significado Uno de los parámetros de APLICA que e mpieza con el signo y a continuación la identificación de un esquema de alguna de las tablas. AtíLAb_ut: equivalencia Derivación integración Usar PgUp, PgDw, Flecha hacia arriba o Flecha hacia abajo Sesión: SESION.SSN Numero de entrada:0 Fig. 2.6 Uso de la opción de ESQUEMAS. Dichas variables son llamadas v ariables especiales y tienen la forma XExx, XDxx o XIxx. Donde xx es el número que le corresponde a la fórmula en su tabla respectiva. 2.1.5 Miscelánea. La opción de MISCELANEA permite realizar las siguientes operaciones: a) configurar los colores a usar pantalla 22 en las distintas áreas de la b) c o nfigurar la pan t a l l a de acuerdo al tipo de monitor c) encender o apagar la c ampana de error d) ejecutar comandos de MS-DOS. Al elegir la o p c i ó n de MISCELANEA el s istema pre s e n t a el s ubmenú de la Fig. 2.7. Al a ccesar la opc i ó n C o l o r e s , se d e splegarán los prompts necesarios p a r a introducir el código del color que el u suario desea u sar p ara el texto dentro de las ventanas, las opciones del menú, la línea borde la de pantalla. prompt, la Los códigos línea de estado, el fondo y el de de color válidos son los números enteros del 0 al 15 y p r o p orcionan los siguientes colores: 0 1 2 3 Negro Azul Verde Azul Cielo Si 4 5 6 7 Rojo Magenta Cafe Gris Claro 8 9 10 11 Gris Oscuro Azul Claro Verde Claro Azul Cielo Claro la opción de Monitor se selecciona, prompts necesarios par a dar 12 13 14 15 Rojo Claro Mag e n t a Claro Amar ilio Blanco el s i stema p r e senta la información acerca de los las siguientes variantes de configuración: a) Modo de pantalla (Texto o Gráfico) b) R esolución de pan t a l l a c) Cuando el m onitor es MISCELANEA: adaptador (Media o Alta) es tipo EGA se debe e s pecificar si el a Color, Enhanced o Monocromático. Colores Elija una opcion Sesión: SESION.SSN Monitor AvisaError Sistema_Dos Numero de e n t rada:0 Fig. 2.7 S ubmenú de MISCELANEA La opc i ó n de A visaError permite activar o d esactivar que, cuando e stá activa, la campana s u ena si el usuario teclea en a l g ú n menú una o pci ó n que no existe. 23 La opción Sistema_Dos permite mantener el s istema e n memoria e ir a ejecutar comandos de MS-DOS, cuando el archivo COMMAND.COM está accesible. Se puede ejecutar un solo comando o varios. Para ejecutar solamente un comando, éste debe invocarse cuando se presenta el prompt de MS-DOS. Para ejecutar varios presentado el prompt controlado totalmente de comandos MS-DOS. por se A MS-DOS a y teclea partir para de <RETURN> ahí regresar el al cuando es sistema es sistema de manipulación simbólica se teclea el comando EXIT. 2.1.6 Ventanas. La opción del menú conceptual de ventanas. principal VENTANAS permite el manejo El submenú que se despliega al escoger esta opción es presentado en la Fig 2.8. Ya han sido mencionadas las operaciones que se realizan sobre una ventana, a continuación se describen y se presenta la manera en que se llevan a cabo en el sistema utilizando el submenú de la Fig 2.8. a) Iniciar una ventana. Lo que significa que el usuario tiene la posibilidad de crear ventanas con un medio ambiente limpio para comenzar una sesión. Al principio existe una ventana inicial izada que tiene el número de identificación 1. C ada vez que se crea una ventana, el sistema asigna a ésta el siguiente número consecutivo disponible para una ventana. VENTANAS: DividlrVentana CerrarVentana PreviaVentana EnviaVentana Elija una opcion Sesión: SESION.SSN Numero d entrada:0 SiguienteVentana Fig. 2.8 Submenú correspondiente a la opción de VENTANAS. Para iniciar una ventana se usa la opción DividirVentana, para crear alguna de una nueva ventana es necesario hacer más las que y a existen y por tanto se v a a dividir. 24 pues pequeña La v e ntana candidata p ara d ividir es siempre la v entana activa. El s is t e m a deja que el usuario d e c i d a de que manera se r e a l izará la división, de si de modo VERTICAL u H O RIZONTAL y s o licita un número columna o r e nglón r e s pectivamente par a determinar el lugar donde se realizará la d i visión de la v entana activa. b) Cerrar una Ventana. Ventana. Es la ope r a c i ó n inversa a Iniciar una Se usa cuando el usuario d e s e a eliminar algu n a de ventanas en que se e stá d esarrollando algúna sesión o que las fue utilizada p ara desplegar tablas o pedir ayuda. L a opc i ó n indicada para realizar e sta o p e r ac ión es CerrarVentana. desaparece la v entana que el usuario le indique, el usuario, si existe sesión residente, que El sis t e m a verificando con ésta haya sido guardada en m emoria s ecundaria o que p u eda ser eliminada. c) Enviar información entre ventanas. E s t a o p e ración d a la facilidad al usuario para que tome resultados parciales que se desarr o l l a n en algu na sesión y los s iga d e s a rrollando en un e spacio separado, es decir en alguna o tra ventana. información de una v e ntana a P a r a ello n e c e s i t a transferir otra. La información que puede transferirse es una e ntrada o u n a sali d a que hay a sido o b t enida e n el desarrollo de alguna s esión residente en cua l q u i e r a de las ventanas abiertas. T R ANSFI ERE-INFORMACION : Enviar: Ent r a d a Sal i d a Numero: 3 Ventana Fuente: 1 Ven t a n a Destino: 2 <Espacio> p ara elegir Entrada o Salida. <TAB> p a r a ir a num Sesión: SESSION.SSN Numero de entradas: 3 Fig. 2.9 Datos para el envió de información. La opci ó n u s ada p a r a e stá o p e r ación es EnviaVentana. elige, 2.9, el para s istema p r e senta que el usuario 25 los p r ompts introduzca desple g a d o s la Cuando en de s c r i p c i ó n se la Fig. de la información a enviar, asi como la fuente y el destino de ésta. En la descripción de la información que se d e sea enviar se debe especificar si se elige enviar una entrada o una salida y el número correspondiente de ésta. P ara especificar la fuente se d a el número de identificación de la ventana que contiene la información que se d e s e a enviar. El sistema verifica que tal exista. De manera similar se requiere el número de la v e ntana que recibirá la información. La entrada o salida s e l e ccionada por el usuario pasará a ser la siguiente entrada disponible en la ventana elegida como destino. En la Fig. 2.9 hay dos ventaras. La p rimera contiene varias entradas. Se podría elegir mandar la entrada 3 de la v e ntana 1 a la ventara 2. d) Cambiar de Ventana. Esta operación simplemente permite al usuario cambiar el número de la ventana activa, h a cia la que sigue en número de identificación respecto a la v entara actual o a la que la antecede. Esto SiguienteVentana y lo realiza por PreviaVentana medio de las respectivamente. opciones La tecla de de función <F1> realiza también la operación. 2.1.7 Ayuda La opción de AYUDA es útil en diversas ocasiones, cuando el usuario, que e stá familiarizado con los conceptos de terminadores, sesiones, requiere consultar la sintáxis, a lguna función, o bien requiere ventanas y el uso o el significado de encontrar en donde e stá alguna facilidad en el árbol de opciones del menú y saber p ara que sirve. La información que provee está totalmente capítulo 2 y 3 de este trabajo escrito. opción, se información: disponibles le presenta la posibilidad generalidades, para las entradas de información válidas Al e solicitar acerca de información opciones del menú, según se presenta e n la Fig 2.10. 26 contenida elegir el en el usuario esta tres las tipos de funciones acerca de las AYUDA: GeneralIdades Funciones Elija u n a opclon Sesión: SESION.SSN Opciones-del-Menu Numero de entrada:0 AYUDA Fig. 2.10 Subm e n ú disponible para solicitar AYUDA. El acceso a c ualquiera de los submenues que se presentan en está opción tiene como efecto lateral la presen t a c i ó n en la ventana activa de las explicaciones correspondientes a la opc i ó n elegida. En la línea de estado aparece un indicador que permite distinguir que se e stá en la opción de ayuda y no e n las opciones de nivel s u perior del sistema. 2.1.8 Fin Est a opción del m enú permite terminar la e j e c ución del sistema. No sin que éste verifique antes que el usuario guarde en memoria secundaria las sesiones y medios ambientes que podría requerir e n otra o c asión que use el sistema. 27 CAP 3. FACILIDADES PROVISTAS E N EL SISTEMA. Antes de presentar medio de funciones, las facilidades que brinda el s istema por se establecen algunas convenciones e n cuanto nombres de constantes predefinidas, a terminología y orden de variables en una expresión. Después se presentan parte de una expresión. las funciones que Todas ellas se pueden pueden prefijos que actúan sobre varios argumentos, llegar a ver como por tanto, formar operadores junto con las funciones se agregó una descripción de los operadores aritméticos que se pueden incluir en una expresión. escriben después del separados por en donde se Los argumentos de una función se nombre de ésta, comas. describe Esto último encerrados se la gramática puede entre ver para el paréntesis con más lenguaje de y precisión e ntrada del sistema, el Apendice A. Las acuerdo funciones a su provistas área independiente los de por el aplicación, operadores sistema primero aritméticos, son se clasificadas tratan enseguida de las de manera funciones trascendentes, después se describen aquellas funciones que se utilizan para obtener una parte de una expresión y son llamadas funciones selectoras pues sirven para seleccionar alguna parte de una expresión que luego puede expresión. Otro ser tratada de tipo de manera funciones independiente son las que igual que realizan una manejo algebraico con una expresión, y son llamadas funciones algebraicas. Además se tienen las funciones que sirven p ara derivar e integrar expresiones, con otras dos funciones que complementan cálculo y son llamadas funciones de cálculo. f unción que acuerdo a una tablas de sirve para realizar "fórmula" esquemas que substituciones o "esquema", se el cual detallaron el el módulo de Por último existe otra la de se expresiones provee s e cción según 2.1.4 y de las su clasificación es de función de substitución. Todas las facilidades del pueden colocar sistema, dentro que de estas como categorías, que fueron determinadas de acuerdo al áre a de aplicación 28 algu n a provistas se de la función. de est á n funciones, seis Además de este criterio se consideró uno basado e n un principio distinto que el clasificar del á rea de a plicación de las funciones dirigido sobre ellas. ejecutables incluidas y en según el efecto la función. que Se rea l i z a el trata de terminador Bajo dicho criterio exi s t e n e n tonces f unciones son aquellas una e x p resión que que se eva l u a r á n ha s ido cuan d o se t e r m inada e ncuentren con el terminador dirigido. Los criterios de clasificación de funciones que han sido establecidos pueden esquematizarse como se mue s t r a en la fig u r a 3.1. Operadores Aritméticos Funciones Trascendentes Funciones Extraetoras Funciones Algebraicas Funciones de Cálculo Funciones de Substitución a) De a cuerdo al área de aplicación. Funciones Ejecutables Funciones NO Ejecutables b) De acuerdo al efecto de Fig. 3.1 Clasificaciones de Funciones A c o n t inuación se a g rupan primeramente las funciones del s istema de acuerdo a la clasi f i c a c i ó n de áre a de aplicación. En todos los casos en los que se hace referencia a una ex p r e s i ó n <expl> se supone que se e s t á hablando de una expresión c orrectamente e s c r i t a de acuerdo a la g r a m ática del a p é ndice A. En aspectos, la descri p c i ó n de c a d a f unción se e n primer lugar s u USO, incluyen básica m e n t e tres poniendo la for m a e n que puede ser usada la f unción que se e s t á describiendo. Después se explica el SIGNIFICADO 29 del uso de la función, es decir, se describe lo que hace la función sobre sus argumentos, así como la forma y tipo que se requiere para éstos. Finalmente se dan algunos EJEMPLOS específicos para usarla. En la última sección de este capítulo se ve con detalle el segundo criterio de clasificación mencionado y se determina cuales son las funciones ejecutables. 3.1 Convenciones. Antes de clasificadas proceder es a la conveniente presentación de establecer las algunas funciones ya convenciones utilidad en cuanto a nombres de constantes predefinidas, de terminología y orden de los términos y factores dentro de una expresión. En primer lugar tenemos dos nombres especiales que representan dos constantes matemáticas muy usuales. Estas son, %PI y en el el número n que se conocerá dentro del s istema como número e, base de los logaritmos naturales, que se conocerá dentro del sistema como %E. Dentro de la descripción de funciones se mencionaran e n algunos casos varios términos de los que a continuación se describen: Expansión Completa. El producto de dos sumas y la potencia entera de una suma se ( X y una pueden expander usando la siguiente transformación: + Y ) ( Z + W) expresión se considera -»XZ + Y Z + X W completamente + Y W expandida si todos los p roductos y potencias como las que se mencionan han sido expandidas. Expresión Semif actor izada: Una expresión e stá semi-factor izada cuando extrajeron expresión. los factores que son el máximo común divisor obtenido de los No son el resultado de dividiera exactamente a la expresión. 30 haber encontrado un se términos de la factor que Estructura de una Expresión: Se llama estruc t u r a de una e x p resión al árbol los operadores que e n e l l a se involucran. de asocia c i ó n de Para hacer ésto más claro vamos a poner algún ejemplo: A la expresión a~2 + 2*a*b + b~2 corresponde el para asociar sus operadores, de acuerdo a p ara estos operadores y como resultado de correponde. Los operadores anterior árbol la jerarquía convencional la asocia t i v i d a d que + y * se a socian por la les izquierda y el operador ~ por la derecha. Se dice que la estructura de la expresión tiene cuatro niveles. Se puede describir la estructura de la expresión desde c u a lquier nivel dando nombres a las ramas que deseen abreviarse. e s t r uctura de la expresión de nuestro ejemplo De tal man e r a que la puede d e scribirse de varias maneras: 2 X + Y haciendo que X sea la r ama a + 2 a b 2 y Y sea la rama b . o bien X^ + 2 Y + Z haciendo que X sea a que Y sea a b y ^Z sea vb 2 . Dentro de una expresión que es una suma los términos se ord e n a n de la siguiente manera: números, variables, productos, potencias y funciones. Se ignoran los coeficientes numéricos de u n término. Cuando una e x p resión es un producto sus factores s o n ordenados de la siguiente manera: números, variables, sumas, potencias y funciones. 31 3.2 Operadores Aritméticos. El sistema tiene implementado manejo aritmético racional exacto, que permite realizar sumas, restas, p otenciación de números racionales. productos, cocientes ^ Los símbolos par a denotar esta' operaciones son respectivamente +, -, *. / y El tamaño de los números racionales se limita sólo por el espacio de memoria disponible en la computadora. El símbolo puede omitir, paréntesis, correspondiente a la multiplicación usualmente salvo cuando se utiliza antes de con el fin de se una expresión entrt distinguir el producto del uso de una. función. Con el símbolo de "/" se expresan fracciones, éstas siempre so:, simplificadas a su mínima expresión. La jerarquía definida para los operadores es convencionalmente. potenciaciones unario, Las primeras (asociando por operaciones la derecha), en la que se utiliza realizarse a continuación son el las menos, después las multiplicaciones y las divisiones la izquierda) y finalmente las sumas y las diferencias (asociando por (asociando por la izquierda). 3.3 Funciones Trascendentes. Las funciones trascendentes que maneja el s istema son de cuatro t ip o s : a) Funciones trigonométricas directas: SEN, COS, TAN, COT, SEC, CSC. b) Funciones trigonométricas inversas: ASEN, ACOS, ATAN, ACOT, ASEC . TANH, COTH ACSC. c) Funciones trigonométricas hiperbólicas: SENH, COSH, SECH, CSCH. d) Funciones logarítmicas: LOG, LN, exponenciación la exponenciación se usa el presentó en la sección anterior. 32 operador ej. aritmético e f (x) . Par¿ ~, como sí- Las funciones del tipo a), b) y c) f u n cionan s imi 1ármente. Si NomFun es el nombre de c ualquiera de ellas, se tiene lo s i g u iente en todos los casos: USO: NomFun (e x p l ) SIGNIFICADO: Obtiene Nom F u n de la expresión expl. Expl es una expresión que el s i stema esp e r a recibir en radianes. En los resultados nunca se intenta a p r oximar funciones trigonométricas que sean irracionales. Los senos y cosenos de ángulos que son múltiplos numéricos de rc son reducidos a senos y cosenos en el rango [0,n/4]. EJEMPLO: SEN ( 7.PI ) = 0 AC0S(2-X~2)=II/2-ASEN(2-X~2) COS ( %PI/6 ) = 3 " ( l/2)/2 P a r a el caso de LOG y LN se tiene lo siguiente: LOG USO: LOG ( exp, base ) SIGNIFICADO: Obtiene la expresión que representa el logaritmo de exp e n base base. USO: LN ( exp ) SIGNIFICADO: Significa lo mismo que LOGÍexp, %E). 3.4 Funciones Selectoras. El objetivo subexpresiones. independientes, principal Estas sobre de las pueden las funciones ser cuales se operaciones propias p ara u n a expresión. 33 selectoras utilizadas pueden como realizar es obtener expresiones todas las NUMERADOR USO: NUMERADOR ( exp ) SIGNIFICADO: resultado el Si la exp tiene numerador, numerador de exp. entonces De cualquier otro la f u nción d a como modo el resultado será la misma exp. EJEMPLO: NUMERADOR(X~2/(X + Y ) )=X~2 NUMERADOR(X~2+X~3+X~4)=X~2+X~3+X~4 DENOMINADOR USO; DENOMINADOR ( exp ) SIGNIFICADO; Si la exp tiene denominador, resultado el denominador de exp. entonces la fun c i ó n da como De cualquier otro modo el resultado será 1. EJEMPLO: DEN0MINAD0R(X~2/(X+Y)) = X+Y DEN0MINAD0R(X~2+X~3+X~4)= 1 Es importante comentar que NUMERADOR y DENOMINADOR son funciones complementarias y que la relación que se escribe a continuación siempre se mantiene: _ NUMERADOR ( exp ) eXp “ DENOMINADOR ( exp ) COEFICIENTE USO: COEFICIENTE ( exp ) SIGNIFICADO: Si exp es numérica, entonces la función siempre regresa exp . Si exp no es un producto, entonces la función siempre regresa 1. Cuando la función sí representa un producto, una expresión que es el coeficiente de exp, entonces el resultado es es decir, los factores numéricos de exp. EJEMPLO: COEFICIENTE(3 SENÍA+B)) = 3 CO E F I C I E N T E (A + B ) = 1 BASE USO: BASE ( exp ) SIGNIFICADO: Cuando exp tiene la forma base^exponente, la función regresa una expresión que es base. Cuando la exp no tiene e s a forma la función regresa exp. 34 EJEMPLO: B A S E (C O S (X )~ S E N (X ))= C O S (X ) EXPONENTE USO: EXPONENTE ( e xp ) SIGNIFICADO: Cuando exp tiene la forma regresa una e x p resión que es exponente. base~exponente, Cuando la la exp no f u nción tiene esa f or m a la función r egresa 1. EJEMPLO: EXPONENTE( COS( X ) ~SEN( X ) ) =SEN( X ) Igual que N U M E RADOR Y DENOMINADOR, las funciones B ASE Y E X P O NENTE s o n complementarias y respecto a ellas, la r e lación s i g uiente siempre se mantiene. e xp = B ASE (exp) ~ EXPONENTE (exp) SUBEXP Esta función es muy poderosa y u s ándola sola puede e xtraer cualquiera de las partes que se obtienen con las funciones anteriores, NUMERADOR, DENOMINADOR, COEFICIENTE, BASE y EXPONENTE, sin embargo, áquellas se p roveen para abreviar trabajo al usuario y se rec o m i e n d a utilizarlas en casos muy particulares. USO: SUBEXP ( e x p - 1, exp-2, exp-3) SIGNIFICADO: estructura La fun c i ó n obtiene como resultado una e x p r e s i ó n c o n de e xp-3 y en la cual se substituye obtenido al realizar una comparación entre exp-1 exp-1 y exp-2 t u v ieron la misma estructura. el la empat a miento y exp-2, si es que El caso en que exp-1 y exp-2 no tengan la misma e structura sin importar el nivel de detalle, entonces la llamada a SUB E X P no es válida y se recibe el m ensaje "Argl y Arg2 no tienen la m i sma estructura". La o p e ración no se e f e c t ú a y la entrada y s alida correspondiente son anuladas regresando la s e s i ó n al estado anterior. 35 EJEMPLO: SUBEXP(X~2 + TAN(X+Y)/2 , A+B/2, A) = X*2 SUBEXP(X~2 + TAN(X+Y)/2 , A+B/2, A~2 + B~2)=(X~2)~2 SUBEXP(X"2 + TAN(X+Y)/2 , A+TAN(C)/2, C ) = X+Y + TAN(X+YK2 3.5 Funciones Algebraicas. Este tipo de funciones realizan transformaciones algebraicas sobre su argumento. CUADRADO USO: CUA D R A D O ( expl ) SIGNIFICADO: Esta función eleva su argumento a la segunda potencia. Lo mismo sucedería si se elevara la expresión exp al cuadrado. C U ADRADO iexp) = exp * 2 EJEMPLO: CUADRADO(CSC(X))= CSC(X)~2 EXPANDE USO: EXPANDE ( exp ) SIGNIFICADO: La función regresa como resultado una expresión que es equivalente a exp con un denominador completamente expandido y distribuido sobre los términos de un numerador también completamente expandido. EJEMPLO: EXP A N D E ( ( A + B K 2 ) ; 2 A B + A'2 + B~2 EXPD USO: EXPD ( exp ) SIGNIFICADO: expresión El que completamente llamado es a la equivalente expandido sobre función a un regresa exp, común donde el denominador expandido. EJEMPLO: E X P D (2 + X/(l+X)) = (2 + 3 X) / (1 + X) 36 como resultado numerador una está completamente FACTORIZA USO: FACTORIZA ( exp ) SIGNIFICADO: El llamado a la f unción expresión que es e q uivalente a sobre un denominador semi-factorizado. común divisor de los regresa c omo r e s u ltado una exp con un numerador semi-fac t o r i z a d o términos A esta ext r a c c i ó n del del denominador se máximo le llama factorización contenida. EJEMPLO: FACT0RIZA(X~2 - 2 X Y + Y~2)= X (X - 2 Y) + Y~2 FACTORIZA(X^3+X Y*2 + 3 X A2 Y + 2 X Y~2 + Y~3) = X * (3 Y*(X+Y) + X~2) + Y"3 RACIONALIZA USO: RACIONALIZA ( exp ) SIGNIFICADO: El llamado a esta función da como resultado u n a e x p resión equivalente a expt fraccionarios del numerador y en la denominador, denominador por cual se mediante una han e l i minado la operación expresión que exponentes de elimie m u l tiplicar a éstos del denominador. EJEMPLO: R A C I O N A L I Z A D / 2" (1/2) ) = 2" (1/2) X/2 EQEXP USO: EQEXP ( expl, expZ ) SIGNIFICADO: Esta fun c i ó n sirve para que el sistema d e t e rmine si expl y exp2 son dos expresiones equivalentes. R egresa como frase que indica si éstas fueron o no equivalentes. EJEMPLO: EQEXP ( SEN( X ) /C O S ( X ) , T A N (X )) S on expresiones equivalentes EQEXP (l/CSCÍX), T A N ( X ) ) N O son expresiones equivalentes 37 valor la una 3.6. Funciones de Cálculo. Son funciones que sirven para encontrar derivadas parciales de una expresión y para calcular la integral de una expresión. Tam b i é n son necesarias las funciones par a definir la dependencia entre variables. DEPENDE USO: DEPENDE ( VAR-DEP VAR-IND1 VAR-IND2 . . . VAR-INDn) SIGNIFICADO: DEPENDE, sirve para establecer que VAR-DEP es una variable que depende de las variables VAR-IND1, VAR-IND2 ... VAR-INDn. EJEMPLO: DEP E N D E ( U, X, Y ,Z ) establece que u = f(x,y,z) NODEPENDE USO: NODEPENDE (VAR-DEP VAR-IND ) SIGNIFICADO: Sirve para eliminar las dependencias que h a yan sido establecidas por DEPENDE. EJEMPLO: Suponiendo que se había establecido que DEPENDE(U,X, Y,Z) NODEPENDE(U, Y) indica que ahora u = f(x,z) solamente. DERIVA USO: DERIVA ( exp-1, VarAndOrder, VarAndOrder, Donde VarAndOrder es una variable o una ... ) variable y un entero positivo separados por una coma. SIGNIFICADO: • DERIVA ( exp, var ) Regresa la derivada parcial de primer o r den de exp con respecto a var. DERIVA ( exp, var, n ) Regresa la e nésima derivada parcial de exp respecto a var. DERIVA ( exp, vari, var2 ) Regresa la segunda der i v a d a parcial mezclada de exp con respecto a vari y var2. DERIVA ( exp, vari, ni, var2, n2, ...) deriva la exp , ni veces con respecto a vari, n2 veces con respecto a var2, etc EJEMPLO: 38 DERIVAf 1/X, X) = -1/X~2 DERIVA(SEN(3 X),X)= 3 C O S (3 X) DERIVA(3 X"2 Y, X, 2) = 6 Y DERIVAILN(A), X) = 0 DER I V A (3 X"2 Y'3 , X , Y) = 18 X Y"2 DER I V A (4 X~2 Y “3 + 5 X ‘3 Y*5, X,2, Y,3)=48 + 1800 X Y~2 INTEGRA USO: INTEGRAt e xpl, varint ) SIGNIFICADO: Esta función e n c uentra la integral de expl c o n r e s pecto a varint, si es que el s istema es capaz de encontrarla. En caso de que no sea calculable por el sistema, éste regresa como resultado la misma expresión de entrada. EJEMPLO: INTEGRA(1/X, X) = LOG (ABS(X), %E) INTEGRA(X~2, X) = X~3 / 3 3.7 Función de Substitución. El propósito principal de la función de substitución APL I C A es que el usuario elija de las tablas provistas por el sistema la "fórmula" adecuada para una expresión y la substitución mecánica s e a realizada por el sistema. APLICA USO 1: APLICA( Var-Especial , Expl ) SIGNIFICADO 1: Var-Especial % Ixx donde xx es una variable del tipo %Exx, X Dxx o es el número de esquema de las tablas de equivalencia, derivación o integración respectivamente. C ada uno de los esquemas tiene dos partes, un antece d e n t e y un concecuente. e xp-antecedente -> e xp-concecuente La expresión Expl, debe tener la misma estructura que la expresión exp-antecedente. El s i stema r ealiza la asociación adecuada de variables, SUBEXP, entre las expresiones Expl y exp-antecedente. de la asociación, el s istema e jecuta 39 el esqu e m a como en C o n el resultado su b s t i t u y e n d o la asociación encontrada e n la expresión exp-concediente. EJEMPLO: Se tienen los siguientes esquemas de las tablas: 5ÍE12: cosíA-B) -» eos A eos B + sen A sen B XD5 : d(UV)/dx ÜI3 : J U dV/dx + V dU/dx (U + V) dx -> J U dx + J V dx APLICA(%E12, cos(x~2 - 4 y~3)) = eos x~2 eos 4 y~3 + sen x~2 sen 4 y~3 APLICAC/.D5, DERIVA(X~2 s e n(X + Y),X)) = X~2 d(sen(X+Y) )/dx + sen(X+Y) d(X~2)/dx APLICAC/.I3, INTEGRA(X~2 + 2 X~3,X)) = S X~2 dx + S 2 X^3 dx USO 2: APLICAÍ Var-Especial , Expl, DifU, U, V a l U . SIGNIFICADO fórmulas de 2: Este uso es integración, válido cuando en para los VarN, ValV a r N ) realizar aplicaciones esquemas se es p e c i f i c a diferencial de U, donde U se supone una función de x. de una E n est e caso es necesario que el usuario especifique cual es la s u b s titución que desea realizar según la expresión que tiene y la fórmula que d e s e a aplicar. Var-Especial es según se explicó exclusivamente la expresión que es el que se pueden aplicar en el integrando. uso 1. Expl es Todas las fórmulas tienen especificada una parte del integrando como la diferencial de U. D ifU debe ser la parte de Expl que se elige como la diferencial de U. U es la función de x, de la cual se tiene la diferencial contenida expresión Expl en el integrando. que desea elegirse como variables contenidas en es la parte la f unción V alU U. V arx son la fórmula y que también se asignar una parte de la expresión Expl como s u valor, ser Indicado en Varx. EJEMPLO: Dado el esquema XI10 : S sen U du - eos U 40 les de tiene la las que el cual deberá APLICAC/.I10, 2 X S E N ( X ~ 2 + 3 ) , 2 X, U, X ~2+3)= -C0S(X~2+3) 3.8 Funciones Ejecutables. Las funciones ejecutables son aquellas que se efe c t ú a n s iempre sin c onsiderar el terminador de la e x p r esión en que funciones ejecutables funcionan como se describió en intervienen. Las la s e c c i ó n 3.7. Son SUBE X P y APLICA. Suponien do que se tablas, tiene la siguiente r e gla de d e r i v a c i ó n e n y la sesión que se describe en seguida, ejemplo: %D9: d(sen(x))/dx = eos (x) ?1: ©1: ?3: 63: ?4: @4: S E N (X ) + X~2; SEN(X) + X~2 S U B E X P ( ? 1 ,A+B,A)& S E N (X ) APLICAC/.D9, DERIVA(SU B E X P ( ? 1 ,A+B, A ) ,X) )& COS(X) 41 las puede a p r e ciarse un CAP. 4 . ESTRUCTURAS USADAS EN LA REPRESENTACION DE L A S SISTEMA. _____________________ ENTIDADES DEL Las entidades principales con que se trabaja e n este s i stema son las expresiones matemáticas, que se representan internamente por medio de listas en LISP. La representación de las expresiones v a ría de forma a lo largo del sistema de acuerdo al módulo e n que se e ncuentran y, más que nada, a qué tan cerca está el módulo del usuario o bien de la manipulación de la expresión. Además, como elemento esencial de la interactividad se tienen las pantallas que se usan en el sistema. En el presente capítulo se describe la estruc t u r a de datos usada para estos elementos. 4.1 Formas de una expresión en el sistema. Las tres formas que adquiere una expresión e n el s istema s o n la Forma de Usuario (FU, para abreviar), la Forma Interna P refija (FIP) y la Forma Interna Prefija Normalizada (FIPN). Esta sección tiene como objetivo definir c ada u n a de las formas mencionadas, diseñados que juegan un papel muy importante en cómo están los algoritmos en los módulos de m a n i pulación de símbolos del sistema. 4.1.1 Forma de Usuario (FU). Se le ha denominado así porque es la forma de la e x p r esión que es más comprensible par a el usuario. Su forma se a semeja a la manera convencional en que una persona escribiría una e x p r esión e n notación matemática, con la salvedad de que en la pantalla la for m a g ráfica que tiene un cociente lineal. El y una exponenciación solo cociente numerador— denominador numerador/denominador y la exponenciación A se r efleja en forma debe e xpresarse como r como A~B. Por otra parte, p ara el caso particular del operador de integración tenemos que se usa un símbolo especial, el cual no se encuentra disponible e n el momento en que el usuario escribe una expresión. 42 En su lugar se utilizó la abreviación INT, de tal manera que la o p e r ación | f(x) dx se describa como INT ( f (x ) , x ). Lo anterior es válido durante la fase en la que el usuario introduce información al sistema. Cuando ocurre el p roceso inverso, de que el sistema p r esenta información al usuario, la expresión de una manera más natural p ara se trató de escribir las personas; pero sin dejar de ser lineal. Esto último se logró regres a n d o la abrevi a c i ó n de INT a su forma usual, y a que se dispone del car a c t e r especial e n la pantal la. En el capítulo 6 se profundizará en los d e t alles de la e n t r a d a al sistema de una expresión escrita por el usuario, asi como t a mbién la manera en que del interior del s i stema se re e s c r i b e n las e x presiones e n la forma de usuario para entregar resultados. Para automatizar el primer punto que mencio n a m o s es necesario definir de alguna manera el universo de e x p resiones que se pe r m i t i r á escribir al usuario, es decir, el lenguaje válido de entrada al sistema, así como las reglas p ara obtener expres i o n e s s i n tácticamente correctas en el gramática lenguaje. d e scrita en el Para ello apéndice se utilizó A. D i cha c omo her r a m i e n t a gramática d e s cribe la la sintaxis de la f o rma de las expresiones par a el usuario, FU. 4.1.2 Forma Interna Pref i.ia (FIP). La FIP es la p rimera f o rma interna que obt i e n e el sistema a esta forma se la t r a n s f ormación FU-F I P e n la partir de la FU. El p rocedimiento mediante el cual describirá e n el módulo encargado de es obt e n i d a sección 6.2.2. La FIP consiste en representar todas las expres i o n e s m e d iante una lista de LISP c uyo primer elemento es un ope r a d o r y el resto de lista contiene los argumentos p ara dicho operador. Ver Fig. 4.1. 43 la Fig. 4.1 Lista para guardar una expresión e n FIP. Como puede observarse en la gramática de la sección 2.1.1, los operadores básicos que pueden ser usados en cualquier expresión son los que se presentan en la Fig. 4.2. Ope ra do r Operación E j emp lo + ma s binario A + B - menos / cociente binario * producto binarlo uñarlo, binarlo exponene iacion -A , A - B A / B A * B binaria A “B Fig. 4.2 Operadores Básicos. También el nombre de cualquiera de las funciones permitidas e n el sistema se considera como un operador para propósitos de esta f o rma de representación dentro de de expresiones, cualquiera de y las que son todas fueron aquellas mencionadas comprendidas en el capítulo anterior y cuya forma natural es e n sí prefija. Para los argumentos de un operador, resto de la lista, expresión. se puede tener Una expresión ahí debe que tienen su lugar e n el la opción de tener a s u vez una tener la sintaxis d e finida e n la categoría <EXP> de la gramática que define la FU. Debido módulo a la estructura de transformador apropiado en que FU-FIP deben la gramática que obtiene ejecutarse 44 la todas FIP las que define r e fleja operaciones, la el FU, el orden según la j erarquía asignada a los operadores y la a l t e ración p r e s e n t a d a e n é sta por paréntesis introducidos por el usuario e n una expresión. Además de que se los operadores ya considerados, manejan también como operadores e s t á n otr o s el e m e n t o s para efec t o s de la representación e n FIP. Sin embargo difieren en c i e r t a f o r m a de los que ya han sido mencionados. Son los terminadores, que funcionan como operadores postfijos y el operador de a s i g n a c i ó n , . Estos t a m b i é n se colo c a n en FIP como los anteriores; pero se e n c u e n t r a n e n catego r í a s sintácticas que no son permitidas como argumentos. 4.1.3 Forma Interna Pref i.ia Normal izada (FIPN). La FIPN tiene como objetivo representar en forma ú n ica una expresión. La razón de que sea necesario este r e q u e rimiento de son los m ódulos manipulación simbólica, que simplifican sus tareas c o n expres i o n e s normalizadas, que utilizan menos operadores y tie n e n una forma más u niforme que permite evitar ambigüedades. Por ejemplo, la siguiente expresión: a ( b - c ) d f puede representarse en FIP asi: ( / ( * a( - b e ) ) ( * d f) ) ( * ( * a ( - b c)) ( * ( • d f ) -1) ) o bien: La misma expresión puede tener en FIP distintas representaciones. Todas ellas reflejan adecuadamente el orden en que deb e n ejecut a r s e los operadores según su j e r a rquía y según el o r d e n es t a b l e c i d o por los paréntesis introducidos por el usuario. Los módulos de m a n ipulación s i m bólica se r e presentación en FIPN, en la representación si m p l i f i c a n usan d o la pues se u tiliza menos v a riedad de op e r a d o r e s y la r e p r e s entación 45 que se obt i e n e es más uniforme La normalización se efectúa a partir de la FIP e liminando operadores de division "/" y de diferencia los y permitiendo el uso del uno negativo, -1. La normalización toma en cuenta que: - Cualquier cociente puede ser convertido a un producto. - Cualquier diferencia puede convertirse en una suma. Las reglas a aplicar son las que se describen en la tabla de la Fig. 4.3. FU F IP F IP N A / B ( / A B ) ( • A ( * B -1 ) ) A - B ( - A B ) ( + A ( * B -1 ) ) Fig. 4.3 Reglas para normalización de expresiones. Aplicando ambas reglas al ejemplo anterior, c o nsiderándola como un cociente o como un producto, se obtiene la siguiente FIPN par a la e xpresión del ejemplo: ( * ( * a ( + b ( * c -1)) ) ( “ ( * d f) -1 ) ) 4.2 Forma Interna de Ventanas. Las manejo pantallas que menúes están de se despliegan codificadas en en el el s istema módulo y del forma de manejador la de ventanas. Las utilerías de Mu-LISP contienen un manejador de ventanas , que mejor dicho, es un manejador de pantallas y menúes. Dicho manejador se tomó como sistema lo requería. 46 base par a elaborar uno como el En e sta s e cción se explican algunos c o n ceptos p ropios del manejador de pantallas y se describen las e s t ructuras p a r a r e p resentar las entidades que se usaron. 4.2.1 Conceptos. El manejador divide físicamente la p a ntalla e n cuat r o áreas. primera es el á rea de ventanas, la segunda el á rea p a r a opciones, La la tercera es para mensajes y la última es una línea de estado. Pana el manejador de ventanas un p r o grama se d e n o m i n a aplicación. Cada aplicación tiene un menú asociado, en donde se def i n e n las opciones disponibles p ara la aplicación y e ventualmente sus submenúes y respectivas opciones. El editor de M u-LISP 87. el rastreador de p r o gramas y el sis t e m a objeto de este trabajo son ejemplos de aplicaciones. Todas las aplicaciones son independientes unas de otras. El área d e d icada a las ventanas puede d i v idirse en varias ventanas más pequeñas, c ada una de ellas corresponde a u n a aplicación. No es necesario que todas tengan el mismo tipo las ventanas que h aya e n la p a n talla de aplicación, ni tampoco se r e s tringe a que todas tengan que ser de diferente tipo. La ventana potencialidad esté f ormada del manjeador por uno posible ver uno a un tiempo, o de ventanas varios cristales, p ermite que aunque solo una es porque un cristal o c u p a todo el e spacio disponible para su ventana. Un cristal se puede imaginar como un vidrio c o n tenido e n un marco del ventanal de una casa. acostumbra llamar ventana. sólo cristal; pero si Usualmente Todas a todo el c o njunto se le las ventanas de una c a s a tienen un h ubiera posibilidad de tener c r i s tales intercambiables pod r í a tenerse el ventanal con un c o lor d i s tinto cad a día de acuerdo al gusto o a la necesidad. El ejemplo posibilidad que imaginario el de manejador los de cristales ventanas intercambiables del sistema de es una M u -LISP contempla. La aplicación que corresponde simbólica que nos o c u p a no requiere 47 al s i stema de manip u l a c i ó n nunca de más de u n cristal por ventana. El menú de las aplicaciones es desplegado en el áre a de la pantalla destinada a las opciones. Si en un momento dado existe más de una ventana en el área de ventanas sólo se desple g a r á ahí el menú correspondiente a una de ellas. Este menú será el que esté asociado a la aplicación de la llamada ventana activa. La ventana activa determina la aplicación que se e s t á ejecutando y si hay en otras ventanas el mismo tipo de aplica c i ó n establece entonces la instancia que se ejecuta. El número que corresponde a la v entana activa e s t á guardado en la variable *CURRENT-WINDOW*. Su expresión e xterna consiste en que el número que se despliega para ella en la pantalla e s t á escrito e n modo de video inverso y se encuentra en la e squina superior izquierda de la ventana. En el sistema de manipulación de símbolos el único tipo de aplicación que se maneja se llama "Modelo". Debido a ésto el menú que se despliega es siempre el mismo. C ada vez que se mencione la aplicación ha de entenderse que se refiere a la de este tipo. 4.2.2 Información General e Información Específica de ventanas. Acerca de una ventana se puede decir que exi s t e n dos información. especifican La información básicamente los general de cristales una que ventana, tiene la tipos de en donde ventana se y la posición y tamaño que guarda en la pantalla. La información específica es la que da el d etalle de los cristales de una ventana. Debido a que, como anteriormente se ha dicho, una ventana del sistema de manipulación de símbolos, solo tendrá un cristal, hablar indistintamente de información específica de una se podrá v entana e información del cristal de la ventana. La información general de una ventana tiene seis elementos: Elementos referentes a sus cristales: 1.- Posición que guarda la información del cristal visible, dentro de la lista que es el 2o. elemento de la información general de 48 una ventana. 2.- La lista que gua r d a la información esp e c í f i c a de una ventana, b ien también des c r i t a como la información acerca de o los cristales de una ventana. Elementos r eferentes a su posición: 3.- El r englón base del á rea de ventanas de la p a n t a l l a don d e se á rea de ventanas de la p a n t a l l a donde se posiciona la ventana. 4.- La col u m n a base del posiciona la ventana. E lementos referentes a su tamaño: 5.- El número de renglones de altura p ara la ventana. 6.- El número de columnas de ancho para la ventana. Como puede el lector apreciar, la información e s p e c í f i c a de una v entana es el segundo elemento de la información general de la misma. Ahora bien, la lista donde se guarda la información e s p e c í f i c a de u n a ventana tiene tantos elementos como variables g l obales necesiten manejarse para codificar la aplicación. L a asocia c i ó n de las variables ahí contenidas con sus respectivos valores cuando una a p l i c a c i ó n se activa, es controlado por el manejador de ventanas. Como c o n secuencia de que cada ven t a n a de la aplicación sólo tiene un cristal, el s egundo elemento de la información general de una ventana, que es una lista que contiene información p ara c a d a cristal, siempre tiene longitud igual a uno. Por el mismo motivo la posición que gua r d a d i cha i n f ormación en la lista es la 0. En la aplicación tipo "Modelo" son 6 elementos los que for m a n la información e specífica que nos interesa. 1. Nombre del tipo de la a plicación "Modelo" (siempre). 2. Lista de entradas c orre spondientes a la i n s tancia de la a la i n s t ancia de la apiicación. 3. Lista de salidas c orrespondientes apiicación. 4. Lista de variables usadas por el usuario en la i n s t ancia de 49 la apiicación. 5. Bandera de detección de cambios e n el estado de la sesión. 6. Nombre por omisión de una sesión. 4.2.3 Estructura Interna. P ara guardar la información necesaria acer c a de las ventanas es necesario tener listas de información general p ara tantas ventanas como las que haya abiertas en el sistema. Fig. 4.4 Estructura de »WINDOWS* El valor de la variable »WINDOWS* es una lista cuy a longitud es igual al número de ventanas abiertas en el sistema, elementos es la información general de una de y c ada uno de sus ellas. *WINDOWS* es indexada generalmente por medio de *CURRENT-WINDOW*, por lo cual puede concluirse entonces actualmente activa, que *CURRENT-WINDOW* es, más que la ventana la posición de ésta dentro de ‘WINDOWS*. La estructura que se utiliza para ’WINDOWS* se puede esquematizar en la Fig. 4.4. La información que contiene seg ú n expuestas para este sistema es la siguiente: 50 las necesidades CAP. En este sistema 5. DESCRI P C I O N GLO B A L INT E R N A DEL SISTEMA. capítulo como un se da todo. un Se pan o r a m a de enu m e r a n la config u r a c i ó n los módulos que del lo integran,describiendo su f unción y se s i t ú a c ada uno dentro del marco del sistema completo. Es sumamente importante c onocer los datos e n cada módulo, pues la forma en que se repres e n t a n la estruc t u r a de los a l goritmos e stá ligada estrechamente c o n la estruc t u r a de los datos, por tanto d i cha información también se p r oporciona aquí. Cada módulo del sis t e m a no es una fun c i ó n úni c a de LISP, que tome una entrada y regrese una salida. Más bie n se co n s t i t u y e n por una secuencia de definiciones y funciones de L ISP c uya labor con j u n t a se puede describir como la f unción op e r a t i v a del módulo al que peretenecen. 5.1. Los módulos del sistema. Manejador de Ventanas En este módulo e stá programado el manejo de pantallas y de menúes del sistema. Es particularmente importante porque, d espués de todo, es el que d a la presentación última al usuario. Su i m plementación est á estrechamente ligada a las características del intérprete de LISP. Las funciones principales que se e ncuentran e n este módulo s o n WIN D O W S y "Modelo". La primera sustituye al m a n ejador del s i s t e m a LISP, que es la función implementadora del propia intérprete. primera del y es donde La ciclo segunda de es e s t á codificado l e c t u r a - e valuación-impresión una fun c i ó n parámetro el del manipulación de símbolos de este trabajo. Se condiciones trabajo, parámetros condiciones iniciales existentes que de en p e r miten y de la s istema de enc a r g a de establ e c e r las la actua l i z a c i ó n las diferentes iniciar núcleo ventanas terminar la del p e r iódica sis t e m a instancia de y las de una apiicación. Transformador FU-FIP El transformador FU-F I P se compone de u n a serie de funciones que 51 realizan la traducción de las expresiones introducidas por el usuario a la primer forma interna que toman, FIP. Durante el proceso en el que se analiza la entrada del usuario para s u traducción, una expresión dada es sintácticamente correcta. realizó por medio del consiste en tener un gramática que método proceso define el de por descenso cada lenguaje recursivo. c a t e goría válido se reconoce si El reconocimiento se Este método s i ntáctica de entrada. El en la proceso correspondiente a la categoría sintáctica más a l t a es el que comienza a realizar el reconocimiento. los procedimientos recursivo termina según la cuando se Recursivamente se van grámatica lo encuentra invocando todos v a marcando. un símbolo El proceso terminal, cuya validez puede ser determinada léxicamente. Transformador FIP-FIPN Las funciones del transformador FIP-FIPN son invocadas cuando en una expresión intervienen operadores o "/" convertir una expresión que se encuentra en con FIP a FIPN. el fin de La FIPN es la forma adecuada para realizar operaciones simbólicas. Módulo Aritmético En este módulo se realizan las operaciones aritméticas requeridas en las expresiones introducidas por el usuario. Además éste es primer módulo que contiene algoritmos de manipulación simbólica. funciones en él codificadas básicas en forma simbólica. exponenciación. T a mbién tienen implementadas Esta son la suma, están incluidas en las el Las operaciones la multiplicación y la este lugar algunas funciones primitivas de apoyo al manejo simbólico de otros módulos más complejos. Módulo Algebraico Las funciones que componen este módulo r e alizan operaciones algebráicas que y a están directamente disponibles p ara el usuario. Las principales funciones codificadas en este módulo permiten realizar operaciones de expansión, factorización y selección de subexpresiones. 52 Módulo de difer e n c i a c i ó n e integración. Las funciones básicamente dos, expresión y p r incipale s que c o m ponen la que se enc a r g a de encontrar la que enc u e n t r a módulo se e ncuentran la integral t a mbién otras este módulo de una expresión. funciones son la der i v a d a de que son de una En este apoyo para encontrar derivadas parciales y de ordenes mayores, utiliz a n d o siempre como base la función pri m i t i v a de derivación. Otras f u n c iones de ayu d a en este módulo son las que se encargan de determinar entre variables según la defini c i ó n del usuario. la d ependecia Además se e ncuentran otras funciones que comple m e n t a n al proceso de integración. Módulo de Codifi c a c i ó n de Tablas. Las funciones de este módulo c o n tienen la defini c i ó n m a temática de funciones trigonométricas, primitivas trigonométricas de equivalencias, de derivadas, y logarítmicas. Estas f u n c iones pequeñas y compactas s o n básicamente defini ciones y son utilizadas principalmente por el módulo anterior. Manejador de Terminadores. En este módulo se e n c uentra la f u nción que inicial iza el proceso de reconocimiento del lenguaje de entrada, el cual ter m i n a cuando se obtiene la FIPN p ara la e ntrada recién introducida y aceptada. a que la notación en L ISP es prefija, muchas de cuando las se expresiones e n c u entra terminadores que una "!" se f unción ó el evaluador encuen t r a n cuyo se en FIPN. operador requiere de es de Debido L I S P evalúa Sin embargo, uno un de especial cuyas funciones de apoyo se e ncuentran en este módulo. se tienen también algunas funciones c o m plementarias que los tratamiento E n él r e a lizan el empatamiento de esquemas de derivación e integración c o n expresiones dadas por el usuario. Tr a n s formador F I PN-FU Las funciones codificadas e n este módulo s o n invocadas cuando el resultado presentado obtenido al después usuario. de la m a n i pulación sim b ó l i c a va Ellas se enc a r g a n tomar expresión de la a ser resultante que aún est á d e s crita por medio de una lista e n LISP con 53 las convenciones de la FIPN y despliegan sobre el dispositivo salida los caracteres más adecuados para expresarla al usuario. de Esta forma final de presentación es nuevamente una expresión e n FU. 5.2. Interrelación de las partes del sistema. La parte principal de est a sección es un d i a grama que tiene como objetivo numerados mostrar en la la relación sección que guardan anterior. Dicha entre sí relación los se módulos encuentra establecida en base a la secuencia de llamados entre ellos. El marco que brinda la presentación al usuario es el que provee el manejador de ventanas. Su funcionamiento e stá ligado de manera muy estrecha al funcionamiento del intérprete de LISP, por lo que va a ser descrito de manera general. Después se presenta el diagrama de relación entre los módulos y se da una explicación acerca de él. 5.2.1. E l intérprete de Lisp Mu-LISP es un intérprete del lenguaje LISP. El intérprete Mu-LISP comienza su ejecución preparándose un espacio para datos y después entra en un ciclo, el cual se identifica como Ciclo de Nivel Superior (CNS). (LOOP (CATCH N I L (FUNCALL DRIVER) ( ((throw was not active?)) ((EQ » THROW-TAG* ’ SYSTEM) (cerrar a r chivos a c tualmente abiertos) (reestablecer la Forma normal del cursor) (terminar la ejecu c i ó n de Mu-Lisp) ) ((EQ » THROW-TAG* "Memory-FUl 1") (BREAK N I L "Memory Ful 1") ) ((EQ * THROW-TAG* "Disk Full") (BREAK N I L "Disk Full") ) ) ) El CNS invoca a la función DRIVER, la cual implementa a su vez el ciclo llamado de Lectura-Evaluac ión-Impresión (LEI). 54 Si durante el ciclo de LEI se d e tecta una e x p resión que llame al s istema operativo o hubo algún error de a l m acenamiento saturado, el ciclo al se interrumpe. s is t e m a operativo, En el primer y en el segundo, caso r egresando el control enviando un mensaje de err o r p ara que el usuario determine si fin a l i z a el ciclo de LEI o bien, de que man e r a v a a ser éste reestablecido. (d e f u n D R I V E R () (LOOP ( W R I T E-PROMPT "$ ") (CATCH NIL (SETO ~ (READ T)) (SETO * (EVAL -)) (W R ITE * T) ; L E CTURA ; EVALUA C I O N ; IMPRESION (TERPRI NIL T) ) ( ((thr o w was not active?)) ((EQ * T H R O W-TAG* ’DRIVER) ( d esactívate throw)) ((E Q * T HROW-TAG* *RETURN) ( d esactívate throw) (RETURN *)) (THROW * THROW-TAG* *) ))) El ciclo de LEI consiste en el d esplegado del prompt de LISP, que es un signo Después de que se introduzca u n a e x p r esión com p l e t a en LISP y se teclee retorno de carro se lee la expresión, se e v a l ú a e imprime línea. el resultado de la evalua c i ó n en el c o mienzo de una nueva El ciclo de LEI se repite indefinidamente h a sta que se dé el comando SYST E M e n alg u n a de las expresiones tecleadas, r e g r esando al C N S p ara terminar la ejecución del intérprete. P a r a efectos de la implementación del s ubstituyó la f unción DRIVER, Manejador de V e ntanas donde est á codificado el ciclo LEI, se por la f unción W INDOWS que implementa un ciclo adecuado a las n e c esidades del manejo de pantallas y menúes. El e squema general de esta s iguiente manera: 55 n u eva f unción man e j a d o r a es de la (DEFUN WINDOWS v a r i a b l e s-locales (INICIALIZACION) (LOOP (SETO EXPN (CATCH NIL (APPLY ''Modelo" ’ R u n - W l n do w ))) ( ((EQ » T HR O W-TAG» ’ t L OS E - W I N D O W ) (eliminar ventana a cerrar) (d e s a c t 1vate t h r o w ) ) ((EQ * THROW-TAG* »SWITCH-WINDOW) (cambiar hacia la nue v a ventana elegida) (desactívate throw)) ((EQ « THROW-TAC* ’ DIVISION-WINDOW) (crear v e ntana nueva) (desactívate throw)) ((EQ » THROW-TAG* ’ QUIT-PROGRAM) (salvar sesiones) (terminar) ( desactívate throw)) ((EQ *THROW-TAG* *S WITCH-SCREEN) (dibujar los marcos del sistema) ( desactívate throw)) ((EQ » THROW-TAG* ’DRIVER) (desact ivate t h r o w ) ) (THROW « T HROW-TAG* EXPN) ))) 5.2.2. Diagrama de 11amado entre los módulos. El diagrama que se muestra en la fig. la relación que existe entre 5. 1 describe gráficamente los diferentes módulos de acuerdo a la serie de llamados que suceden a partir de que comience a ejecutarse el sistema. En primer lugar se ejecuta automáticamente la fun c i ó n WINDOWS del manejador de ventanas que es invocada por el CNS del intérprete de LISP. La ejecución de la función "Modelo" ocurre al ser invocada por el ciclo implementado en WINDOWS. "Modelo" donde se utiliza encuentra una lista codificado el llamada árbol *MODE L O - O P T I O N S * , que de opciones del es sistema, acompañado de las funciones respectivas que deben ejecutarse según sea la opción elegida por el usuario. La opción principal del árbol de opciones es la p rimera y aparece 56 e n el menú de opciones como "Lectura" . Las o t ras fun c i o n e s son de las utilerías referentes al manejo de sesiones, des p l e g a d o de tablas, impresión, opciones de m iscelánea y opciones de manejo conceptual de ventanas. Con la e l ección de estas opciones es interrumpida la e v aluación normal de la función "M o d e l o " por medio de la instrucción THROW, propia de LISP, que envia el control a d i f e rentes puntos de la función WINDOWS. r -------------------------------------------------------------- 1 Llamado al INTERPRETE DE MU-LISP ! Fig. 5.1 E squema general del s i stema Cuando la e v a l u a c i ó n con t i n ú a normalmente dentro de la o p c i ó n de Lec t u r a es llamado el módulo que t ransforma la F U a FIP. Ahora bien, como puede observarse en el diagrama, 57 e n e ste punto ocurre un llamado al intérprete Mu-LISP. En Mu-LISP básicas. Estas e xisten son implementadas suma, resta, las funciones multiplicación y aritméticas división. Dichas funciones solamente e f e ctúan operaciones aritméticas y los argumentos que reciben deber ser argumentos aritméticos, de acuerdo a lo que está especificado en el manual de referencia del lenguaje Mu-LISP. alguna de estas funciones recibe el número y tipo Cuando correcto de argumentos, realiza las operaciones aritméticas requeridas. Cuando reciben más de dos argumentos, asocian sucesivamente de izquierda a derecha los argumentos recibidos y realizan la operación adecuada. Para cada función aritmétic a de Mu-LISP hay una fun c i ó n de manejo de error, que es llamada cuando el tipo de los argumentos no es numérico. OPERADOR Función + +TRAP - -TRAP * «TRAP / /TRAP de manejo de er ro r Fig. 5.2 Funciones de LISP p ara manejo de error C ada función de manejo de error se encarga de llamar a la rutina de ruptura de LISP, la función mensaje de error adecuado. BREAK, para que sea desplegado el Sin embargo e n este punto se intercepta la secuencia descrita anteriormente. Las rutinas de manejo de error son llamadas cuando los argumentos recibidos por sus respectivas operaciones no son númericos. significa que tal vez se requiera un tratamiento Entonces simbólico para efectuar la operación. En el caso de los operadores "+ " y , sus funciones de manejo de error fueron modificadas y en su lugar se d efinieron las funciones escritas en el Módulo Aritmético para realizar s uma y multiplicación simbólica. 58 En el caso de los operadores y "/" las funciones respectivas de manejo de error invocan al módulo Transf o r m a d o r de FIP a FIPN. F IPN solo contiene operadores "+ ", y "A " cuya La implementación s imbólica y a se e n c uentra en el Módulo Aritmético. En el intérprete exponenciación, d e finición no se enc u e n t r a implementado el o p e rador de "*"t asi es que el Módulo Aritmé t i c o también contiene p ara él. Su d efinición co m t e m p l a ex p o n e n c i a c i ó n tanto a r itmética como simbólica. (♦ arg-1 arg-2 arg-3) arg-1 = arg-2 = arg-3 = 4 and 5 and 1 arg-l = A and arg-2 = A and arg-3 = 7 ♦TRAP del +TRAP INTERPRETE modificado , llamado ERROR: 4 a , •i' numerlc non 4 2 BREAK A + 4 argument Fig. 5.3 Intercepción de la func i ó n de manejo de error +T RAP En lo referente a las funciones que no s o n operadores, que, del tenemos cuando se tra t a de funciones de tipo a lgebraico s o n ejecutadas Módulo Algebraico. e j e cutan del Módulo especial son tratadas Cuando de se trata D i ferenciación las evaluaciones de e funciones de Integración. par a los c álculo Y de terminadores se manera en el M ódulo de Terminadores. E specialmente las rutinas implementadas en el Módulo de D i f e r e nciación e Integración h a cen uso de las d e f i niciones codificadas e n el Módulo de Codifi c a c i ó n de Tablas. Cuando simbólica, se ter m i n a n de e j ecutar las funciones la f o r m a de las expresiones es a ú n FIPN. de m a n i pulación El transformador FIP N - F U es llamado p a r a presentar los resultados al usuario. 59 CAP. 6. DESCRIPCION DETALLADA ACE R C A DEL FUNCIONAMIENTO MODULOS DEL SISTEMA. __________________________ DE LOS Este último capítulo tiene como objetivo describir la manera en que están codificadas las funciones principales de c a d a módulo. Además de la codificación de las definiciones matemáticas que son utilizadas por dichas funciones. El máximo detalle de cada función es el código de puede ser consultado apéndice asociado descripción que en los apéndices. que aquí realizados sobre el contiene se dé, el es P ara c ada código la misma, módulo existe correspondiente. complemento a los código fuente p ara entender como y un La comentarios está hecho el programa. Al término del estudio de este capítulo se espera que el lector pueda ser capaz de comprender la lógica seguida en la implementación del sistema y de poder llevar a cabo modificaciones, hacer uso de cualquiera de los módulos sin ampliaciones o tener necesidad de usuario se investigar otras fuentes. 6.1. Funcionamiento del Mane .iador de Ventanas. Uno de los objetivos del s istema es que el retroalimente mientras esta resolviendo algún problema. Se intenta que el sistema sea lo más amigable posible. Un sistema interactivo que permita usar ventanas y elegir fácilmente opciones de un menú resulta conveniente. Este código de Ya módulo contiene los algoritmos puede consultarse en el se ha mencionado que apéndice las propios p ara ello y su B. dos funciones principales implementadas en el manejador de ventanas son WINDOWS y "Modelo". La primera substituye al ciclo LEI del s istema Mu-LISP. Su estructura consiste de una inicialización y después se implementa un ciclo. En la inicial ización se pintan las ventanas llena ‘WINDOWS* con información de una ventana y valores iniciales a algunas variables, 60 la p r imera vez, se les ponen se los las que c o nservarán ese valor todo el tiempo. En el ciclo lo primero que se hace es invocar a la f u nción "Modelo" con el comando RUN-WI N D O W para provocar que se e jecute una instancia de la aplicación. Dependiendo de la opción que ejecute el usuario, la ev a l u a c i ó n de "Modelo" r egresa el control a “WINDOWS* en a l gún punto específico. Los casos que se con t e m p l a n p ara continuar c o n la ev a l u a c i ó n en WIND O W S son: a) CLOSE- W I N D O W En este punto se elimina de la pan t a l l a y del sistema la v entana que h aya sido seleccionada por el u suario para cerrarse. Después se mandan dibujar los marcos de las ventanas según hayan quedado. b) S W ITCH-WINDOW En este punto se cambia el número indicador de la ventana act i v a a la v entana previa o a la siguiente, r e specto a la ventana activa actual, según haya sido el caso eleg i d o por el usuario. L a p o sición de la nue v a ventana que quedó a c t i v a e stá indicada por medio de la variable EXPN, y este valor se le d á a •CURRENT-WINDOW*. c) DIVISION - W I N D O W Aquí se c r e a una v entana n u e v a e n el sis t e m a según la e l ección que el usuario hay a indicado, si la ven t a n a que quiere abrir es vertical u horizontal, así como s u tamaño según el espacio disponible. Se r e fleja sobre la pan t a l l a la nueva ventana. d) QUIT-P R O G R A M Se v e r ifica v e ntana por v entana si la sesión residente e n su medio ambiente fue sal v a d a y se fin a l i z a la ejecución del sistema. e) S WITCH-SCREEN E n este ventanas del sistema. Las funciones de punto ayuda a se redibujan WINDOWS son los varias, marcos de las primeramente se e n c uentra la de ACTUALIZA-VENTANAS. A C T U A L I ZA-VENTANAS se enca r g a de limpiar el á rea de cada una de las ventanas que h a yan sido a b i ertas e n de la pantalla el sistema. Su e structura es b á sicamente un ciclo que se e j e c u t a tantas veces como ventanas abiertas haya. E sta últ i m a información se enc u e n t r a en •WINDOWS*, pues s u longitud es precisamente el número de veces que se e j e c u t a un llamado de la f unción UPDATE-WINDOW. U PDATE -WINDOW llama a la fun c i ó n "Modelo" por medio del comando 61 UPDATE-WINDOW para que realice la limpieza del á rea de la pantalla que corresponde a la v e ntana indicada e n * CURRENT-WINDOW*. Las funciones UPPER-LEFT, UPPER-RIGHT, LOWER-LEFT y L0WER-R1GHT sirven principalmente p ara cerrar una ventana y determinar el caracter gráfico que es adecuado escribir en cada coordenada de la pantalla cuando se dibujan los marcos de las ventanas. Otras de las funciones importantes codificadas e n el módulo del manejador de ventanas son las que sirven como utilerías para manejar en la estructura »WINDOWS* Permiten consultar los la información general parámetros ahí de las ventanas. guardados y también modificarlos. Existe una función para c ada uno información general que tiene una ventana. de los parámetros de la Cualquiera de ellas puede llamarse enviándole 0, 1 6 2 valores. a) Cuando son llamadas con un solo valor, éste se toma como el número de la ventana de la que se quiere obtener el parámetro correspondiente. De la siguiente manera: (VINDOW-PANE N) Obtiene ventana N. (WINDOV-ROW N) Obtiene el (WINDOW-COL N) Obtiene la (U INDOW-ROWS N) Obtiene el (V INDOW-COLS N) Obtiene el (V INDOW-STATES N) Obtiene la la ventana el número de cristal b) Si cada una de estas funciones es llamada sin valor, respectiva que obtiene se activo de la renglón base de la ventana N. columna base de la ventana N. número de reglones de la v entana N. número de columnas de la v entana N. lista de la información e s pecífica de N. refiere a la de la la información ventana activa, * CURRENT-WINDOW*. c) El llamado a alguna de estas funciones especificando dos valores, modifica el parámetro correspondiente e n la ventana indicada por el primer valor. El segundo valor se usa como la información nue v a que se va a colocar. Por ejemplo, si ‘WINDOWS* tiene la siguiente información: 62 •WINDOWS* = ( (0 ((••Modelo" N I L N I L NIL N I L "SESION. S S N " ) ) (O (O ( ("Modelo" N I L ( ( "Modelo" N I L N I L NIL N I L "SESION. S S N " ) ) N I L NIL N I L "SESION. S S N " ) ) 1 1 9 37) 1 3 9 9 40) 11 1 9 78) ) y *CURRENT- WIND0W*=2 (recordar que *CURRENT-WINDOW* es la p o s i c i ó n en •WINDOWS* de la ven t a n a actual), (WINDOW-COL 1) r egresa 39, "T R A B A J O 1. SSN" ))) entonces (WINDOW-COLS) r e g r e s a 78, (W I NDOW-STATES 2 '({"Modelo" NIL NIL NIL T substituye la información general de la vent a n a tres, por {("Modelo" NIL NIL NIL T "TRABAJOl.S S N " )) . Las funciones EXECUTE-OPTION, MUESTRA-OPTIONS, MAX-LENGTH, M U E STRA-OPTION y SE L E C T - O P T I O N sirven para el manejo de p r e sentación de mensajes y ele c c i ó n de opciones. Otras permiten funciones presentar incluidas prompts en p ara este la módulo lectura de son utilerías datos en el que á rea correspondiente al desplegado de las opciones. L a f u n c i ó n e n c a r g a d a de e llo es M O D E -QUERY que recibe dos parámetros. TITLE, y es el letrero datos. El segundo, a imprimir antes El primero de e l los es de los p rompts para leer OPTIONS, es una lista que tiene tantas listas como datos se vayan a solicitar al usuario. Cada lista tiene seis elementos. Los primeros tres son valores de sal ida: 1. El valor leído por M O D E -QUERY p ara el dato solici t a d o al usuario. 2. Renglón donde se desple g a r á el prompt par a s o l i citar el dato. 3. Columna donde se desple g a r á el prompt para s o l i citar el dato. y los tres últimos s o n valores de ent r a d a para MODE-QUERY. 4. Mensaje a des p l e g a r en el á r e a de mensajes al s o l i citar el dato. 5. Prompt p ara s o l icitar el dato. 6. Espacio e n c a r a cteres que ocu p a r á el valor a ser tecleado por el usuario. 0 b ien una lista de valores a l t ernativos p ara que el dibujo de usuario elija. BORDER-WINDOWS Es la f unción principal u s ada par a el los marcos de las ventanas. Uti l i z a caracteres gráficos. 63 Las rutinas que siguen son para activar alguna de las áreas de la pantalla. CURRENT-WINDOW El área de ventanas, específicamente la que se refiere a la ventana activa. OPTION-WINDOW El área donde se despliegan usualmente las opciones. PROMPT-WINDOW El área de mensajes. STATUS-WINDOW El área para el desplegado del estado de las sesiones. También están variables como incluidas en este módulo definiciones de algunas *INIT-SCREEN*, *WINDOW-COLORS* y de algunas *RESET-SCREEN*, funciones I NVERSE-VIDEO, BLINK-WRITE-SCREEN, que sirven para manejar la tales » B O R D E R-CHARS*, como NORMAL-VIDEO, CURSOR-ON, CURSOR-OFF, lectura de las teclas CONSOLE-BYTE y la forma del desplegado sobre la pantalla, según el tipo de monitor. L a función "Modelo" tiene en su estructura una e ntrada para cada uno de los casos bajo los cuales es llamada por cuando la operación. instancia Para de la aplicación indicar argumento, COMMAND. la función WINDOWS, requiere realizar la operación deseada u tiliza alguna el primer Los demás argumentos se refieren a la información específica de la instancia de la aplicación. La función "Modelo" atender a WINDOWS [2]. contempla cuatro posibles A continuación se describe comandos para lo que se realiza con cada uno de ellos. a) Cuando se c rea una instancia para la aplicación " M odelo", el manejador utiliza el comando CREATE-WINDOW para obtener una lista con los valores apropiados que debe contener la infomación e specífica de una ventana. Esta información debe ser ("Modelo" NIL NIL NIL NIL "SESION.SSN") de acuerdo a lo expuesto e n la sección 4.2. b) Similarmente W INDOWS utiliza el comando CLOSE-WINDOW. P ara e sta entrada la aplicación verifica si se acepta cerrar una ventana. Si 64 los cambios realizados ya entonces se puede cerrar. han sido salvados en dicha De lo contrario r egresa NIL. ventana A menos de que el usuario no desee conservar la sesión que h aya sido generada en e s a ventana. c) El comando UPDATE - W I N D O W es usado por WINDOWS cuando es necesario limpiar y actualizar la información de la ventana indicada. d) Finalmente, el c omando R UN-WINDOW solicita que "Modelo" ejecute una instancia de la aplicación. La e j e cución de la instancia de una aplica c i ó n básicamente e n llamar a la función EX E CUTE-OPTION consiste que se enc a r g a del manejo de la elección de opciones y del llamado de los procedimientos apropiados para la opc i ó n seleccionada. Después se llama a la función UPDATE-STATE p ara actual i z a r la información de ‘WINDOWS* . En seg u i d a de la d efinición de la función "Modelo" se encuentran varias definiciones. En primer lugar la definición del árbol de o p c iones aplicación "M o d e l o " que es una lista del tipo que recibe EXECUTE-OPTION. opciones Contiene un árbol de como de la la función el que se esquematiza en la Fig 6.1. A c o n t inuación se encuentran definidas las funciones PERM1TE-CER RAR-PATRON y LINEA-ESTADO. PERMITE-CER R A R - P A T R O N es una f u nción que ver i f i c a que salvado los cambios r ealizados en el medio ambiente de se hayan u n a ventana p ara poder permitir que d i c h a ventana s e a cerrada. L I N E A-ESTADO de s p l i e g a en el áre a correspondiente la información de estado general de la sesi ó n residente e n la v entana activa. Las funciones a n teriores son la implementación que corresponde al núcleo de la función "Modelo" y que r e a lizan el manejo adecuado para las ventanas. A c o n tinuación se describen los grupos de funciones que son llamados para implementar las opciones que se brindan en el menú y en los submenues que pre s e n t a el sistema. 65 La f unción L ECTURA ventana act i v a e tome lleva el invoca al cursor al área que le toca a la módulo transformador de FU-FIP p ara que la secuencia de entradas tecleadas por el usuario y genere la continuación de la sesión de la ventana. Fig. 6.1 Arbol de opciones del sistema. Si aún no se inicia una sesión en e s a ventana se cre a entonces una sesión nueva. Si se realizaron cambios en el estado de actual izados. 66 la sesión, estos son Después se e n c u entra el grupo de funciones propias par a el manejo de sesiones. D E SPLIEGA-SESION completo de permite la sesi ó n de u s uario pueda inició. Para ver la ello al usuario d e s p legar la ven t a n a activa. s e c u encia recorre que las ésta Con ha listas el el contenido fin s eguido de que el desde que se ‘ENTRADAS* y *SALIDAS* d e s plegando alternativamente un elemento de cada una de ellas. Por entrada la es forma el en que último éstas se elemento fueron de las constr u y e n d o listas. Por la pri m e r a tanto par a desplegarlas en el o r d e n adecuado e n que se s u c e d i e r o n es necesario invertirlas primero. G UARDA-SESION p r e gunta el nombre p ara el a r chivo e n disco c o n el que v a a guardarse la sesión residente en la ven t a n a actual. Si el nombre del archivo ya existe, pregunta al u suario si reescribe sobre él, o e n su defecto vuelve a pedir o tro nombre. L l ama a la fun c i ó n ES C R I B E - ARCH-SESION p ara que grabe físicamente la sesión. Se g uardan el el archivo las listas *ENTRADAS*, *SALIDAS* y •VARIABLES* que s o n las entradas dadas por el u suario e n una sesión, las salidas que obtiene el s istema con esas entradas y la lista de los nombres de las variables que tienen un valor, respectivamente. C o n lo cual q u eda a lmacenada la información de una sesión. C A R G A-SESION pre g u n t a el nombre del archivo en d i sco de la sesi ó n que el usuario des e a cargar en la ven t a n a actual. Si hay algo en la ventana actual lo borra, preguntando previamente si es necesario guardar el contenido. Lee mediante la función L E E - A R C H-SESION el con t e n i d o del archivo, inicial izando con él las listas de ’E N T R A D A S * ,“SALIDAS* y ‘VARIABLES*, r e cuperando así la información que define la s e s i ó n y de donde puede o b t e nerse su medio ambiente. Finalmente con ‘ENTRADAS* y ‘SALIDAS* recons t r u y e el medio a m biente de la ses i ó n realizando los efectos laterales que hay a habido e n a l g u n a de las entradas, que consiste en dar a las variables de la lista ‘VARIABLES* los valores que tenían. M O D I FI CA-SESION pide al usuario 67 los datos n ecesarios para eliminar entradas en la sesión de la ventana actual. Elimina las entradas requeridas por el usuario de las listas»ENTRADAS* y »SALIDAS*. En seguida está un grupo de funciones propias para desplegar las tablas de equivalencias matemáticas, fórmulas de derivación y fórmulas de integración. Son básicamente tres funciones muy semejantes, T-EQUIVALENCIA, T-TABS-DER, T-TABS-INT. Realizan un tablas, llamado a DESP-PANTALLA, información de derivación y los de la función que despliega pasando como parámetro caracteres para las integración, que son la tablas de la pantalla de con la equivalencia, lista de *PANT-EQU*, *PANT-DER* información anterior y *PANT-INT* respectivamente. La función que despliega la es DESP-PANTALLA. DESP-PANTALLA limpia el área de la ventana actual y d e s pliega las tablas llamando a las funciones que permiten al usuario subir o bajar un renglón, LINEA-ARRIBA y LINEA-ABAJO respectivamente y PAGINA-ARRIBA y PAGINA-ABAJO para subir y bajar una página, de manera correspondiente. Sigue la función para la impresión de sesiones, IMPRESION. Esta función es semejante a la de DESPLIEGA-SESION con la d iferencia de que el archivo de salida no es la pantalla sino la impresora. El siguiente grupo de funciones son propias p ara las utilerías de miscelánea: SET - C O L O R , SET-DISPLAY, SET-MUTE y GO-DOS. Las primeras tres funciones realizan un llamado a M ODE-QUERY para solicitar los datos que el usuario d e sea cambiar y colo c a n los valores nuevos en las listas adecuadas para guardar la información de colores en *WINDOW-COLORS*, la bandera del sonido seleccionada por el usuario queda en el primer elemento de la lista SET-MUTE, y en el caso de la información leída para el estado y características del monitor éstas son ajustadas y guardadas en la lista SET-DISPLAY. La última función de miscelánea es GO-DOS que permite salir del sistema para ejecutar momentáneamente 68 comandos de MS-DOS usando la fun c i ó n EXEC U T E del intérprete de Mu-LISP. A c o n tinuación se encuentra el grupo de funciones referentes al manejo conceptual de ventanas, cer r a r ventanas, que p e rmiten operaciones como abrir y moverse de una v e ntana a o tra y enviar información ent r e ellas. D IVISION-HORIZONTAL i n f ormación ■WINDOWS* de la necesaria y DIVISION p ara abrir VERTICAL una nueva inicial izando sus coordenadas. evalua c i ó n a la función piden ventana al y usuario la la añaden en Después r e g resan el control WIN D O W S en el punto etiquetado DIVISON-WINDOW. C L O S E - W I N D O W pide el número de reg r e s a el control de la v e ntana que se d e áea cerrar y la evaluación a la función WIN D O W S e n el punto e t ique t ado ’C L O S E - W I N D O W . L A S T - W I N D O W y N E XT-WINDOW regresan el control de la e v aluación a la f u n c i ó n W INDOWS en el punto etiquetado SWITCH-WINDOW. EN V I A - W I N D O W pide los datos necesarios p ara enviar información de la sesión reg r e s a el de una v entana control de a otra, los valida, rea l i z a en envió y la evaluación a W INDOWS en el punto etiquetado SWITCH-SCREEN. 6.2. F u n cionamiento del transformador FU-FIP y func i ó n que lo i n v o c a . LEE-PROCESA. El texto fuente que corresponde a este módulo puede ser consul t a d o e n el apéndice C. En el sistema, mismo texto se demás m ódulos del sistema. el introdujo que es básicamente una función muy importante del la que realiza los llamados a todos los El primer módulo que invoca es precismente de t r ansformación FU-FIP, por lo cual s e c c i ó n y antes que el transformador. 69 va a ser d e scrito en e sta 6.2.1 La función LEEPROCESA. La estructura de la función LEEPROCESA c on ESC para regresar a es un ciclo que termina la función de LECTURA que es la que la invoca. En cada iteración se realizan las siguientes acciones: 1) Se inicial iza el medio ambiente para llamar al reconocedor sintáctica (parser), mediante: a) La c o jocación de NIL en las banderas de d e t ección de errores. b) La c olocación de toda la e ntrada leída en la variable #EN'J RADAACTUAL, para tomar de ahí elemento léxico por elemento lé; ico de la expresión (Tokens). c) S¿ toma el primer elemento léxico de la expresión leída y se •x>ne en la variable #TK usando la función SCAN. d) Invoca al reconocedor función que reconoce sintáctico (parser) a la categoría más alta de través de la la gramática: COMANDO. 2) Cuando la función COMANDO regresa NIL significa que durante el proceso fue detectado un error, el cual pudo haber sido de tipo léxico o sintáctico alguna de y entonces debe haber quedado encendida las banderas #ERROR-LEX# ó #ERROR-SIN# respectivamente, con el código de error adecuado para desplegar el mensaje. 3) En caso de que la expresión introducida por el usuario se haya detectado válida, su representación e n FIP quedó en la variable CENTRADA. 4) La expresión en FIP se evalúa de acuerdo a su operador principal. a) Si el operador principal es un terminador, el módulo de terminadores es invocado. b) Si contiene operadores aritméticos se invoca al módulo aritmético. 5) El resultado de la evaluación de variable de salida correspondiente, en FIPN y se llama al la expresión se asi g n a a transformador F IPN-FU para presentar resultado al usuario. 70 la donde la expresión se coloca el 6.2.2 Funcionamiento del transformador FU-FIP. El como módulo que h e rramienta se encarga de la t r a nsformación FU-FIP, la gramática del apéndice A, mediante u tiliza la cual es sencillo determinar automáticame nte si la expresión introducida en FU es válida o no para el sistema. Se u t iliza un parser TOP-DOWN de descenso r e c ursivo [4], durante la transformación FU-FIP. Se va ejecutando un conjunto de procedimientos r ecursivos p ara procesar la entrada. Se a s o c i a c ada uno de estos pr ocedimientos a un símbolo no terminal de la gramática. La gramática del apéndice A no puede usarse directamente pues algunas producciones hac e n que un parser de descenso recursivo entre en un ciclo. Las producciones de este tipo en la g r a mática la h a c e n recursiva por la izquierda. y <TERM>. Más S o n las que corresponden a la d e s c r i p c i ó n de <EXP1> precisamente las dos primeras de cada una de estas categorías sintácticas. <EXP1> ::= <EXP1> + <EXP1> ::= <EXP1> <EXP1> ::= <TERM> <TERM> <TERM> <TERM> ::= <TERM> * <TERM> : := <TERM> / <TERM> ::= <FACTR> <FACTR> <FACTR> El ciclo sucede al tratar de reconocer, por e jemplo <EXP1>, para lo cual se incurre, de acuerdo al consecuente, en tratar n u evamente de reconcer <EXP1> y así sucesivamente sin terminar nunca de consumir toda la parte d erecha de la producción. Existe un método de eliminación de recursividad izquierda en una gra m á t i c a [4]. El método consiste básicamente en cam b i a r c a d a conjunto de producciones A A A a £ por el siguiente grupo de producciones A -) M ' A ’ -> a A ’ 71 A ’ -» c Entonces a la gramática del apéndice A se le eliminó así la <EXP1> se recursividad izquierda. El grupo de producciones mencionadas arriba para substituyó por: <EXP1> ::= <TERM> <REXP1> <REXP1> ::= + <TERM> <REXP1> <REXP1> - <TERM> <REXP1> <REXP1> : := c y similarmente las producciones para <TERM> se substituyeron por: <TERM> : := <FACTR> <RTERM> <RTERM> : := « <FACTR> <RTERM> <RTERM> : := / <FACTR> <RTERM> <RTERM> ::= e Con codifica la gramática una rutina resultante, para cada sin una recursividad de las izquierda, categorías se sintácticas definidas en dicha gramática. Tales rutinas son las funciones COMANDO , EXP, EXP1, REXP1, TERM, RTERM, FACTR, P RIMARY, LISTAARGS. El reconocedor sintáctico (parser) está invocado por la función LEEPROCESA. Esta función realiza el llamado a la función COMANDO, para reconocer una expresión o un comando válido para el sistema. La lógica que sigue COMMANDO es la misma lógica que siguen todas las demás funciones del reconocedor sintáctico, siguiendo c ada u n a su producción asociada de la siguiente manera. (DEFUN COMANDO (#E ( (NULL (SETO #E ( (TERMINADOR-P #TK) (SETO #R #R) (EXP))) #E ) ' #TK) (SCAN) (LIST #R (ASIGNACODIGO-SIN #E) 3) ) ) Se supone que al invocar cada una de las funciones del reconocedor sintáctico se encuentra en la variable #TK el siguiente elemento léxico que se va a analizar de la entrada. 72 Cuando una función de estas no reconoce la c a t e goría si n t á c t i c a que le corresponde entonces debe regresar NIL, c o n el objeto de que la f unción que la llama detecte a d ecuadamente la ex i s t e n c i a de u n error durante el análisis. L a f unción COM A N D O debe reconocer una for m a tipo <EXP> y uno de los terminadores ’!*, *&*, luego Las producciones que la d efinen son: <COMANDO» <COMANDO> <COMANDO> <COMANDO> Se llama a d es c r i t a por : := : := : := : := <EXP> <EXP> <EXP> <EXP> $ ; ! & la función E X P p ara la categoría tratar s intáctica de <EXP>. reconocer Si al r eg r e s a NIL significa que no fué r econocida d i c h a forma. reconocida, d urante una de las una for m a llamarla ésta Como no fue las variables de error debe hab e r sido e n c e n d i d a llamadas consecutivas cuando se dete c t ó el error, y e n t onces debe regresar NIL la f unción COM A N D O y no c o n tinuar c o n el r e c onocimiento de dic h a categoría. Si fue recono c i d a una <EXP> se guarda, si el siguiente símbolo a analizar es y se trata de v e r ificar un terminador. En caso a firmativo se lee de la entrada con S C A N p ara ver si h a y más e l e m entos que analizar, y se r egresa la lista de la exp r e s i ó n leída e n FIP. no se reconoce un terminador como el siguiente elemento, la ban d e r a de error sintáctico, #ERROR-SIN# con el Si se e n c iende código 3 que c orreponde al mensaje de "Terminador Esperado". Como puede verse cuando se requiere r e c o nocer u n s ímbolo terminal de la g r a m ática se invocan las funciones de r e c o n o cimiento léxico. Las funciones principales de reconocimiento léxico se e n u m e r a n a cont inuación. S C A N Obtiene el siguiente símbolo (token) a ana l i z a r de la lista que contiene los caracteres de la e ntrada actual, #ENTRADAACTUAL, usando p ara ello la función RASTREATK. Las funciones auxiliares de r e c o n o cimiento de caract e r e s son SIGNOESPECIAL-P, POR C E N T A J E - P , INTARRO-P, VAR-IMPLICITA, NUM-S I M B O L I C O y las de e dición de línea LEEENTRADA, 73 EDITA-LINEA, MAPEAASCII, TECLA-F, IDENT-FUNCION y BORRA-IMPRESION. 6.3. Funcionamiento del Transformador FIP-FIPN. Este módulo solo contiene dos funciones y e s tán en el texto del apéndice D, donde también está el código del módulo aritmético. Las dos funciones son llamadas cuando en una ex p r e s i ó n e n FIP encuentran operadoreas de división, se ó de d iferencia -TRAP es llamada por el intérprete de Mu-LISP cuando éste trata de evaluar una forma (- argl arg2 . . . a r g n ) son numéricos sino simbólicos. El donde los argumentos no intérprete la llama, enviando sólo dos argumentos y asociándolos de izquierda a d erecha . La función regresa la suma del primero, ' más el segundo multiplicando por -1. Es decir a - b = a + (-1 * b) que es la forma de la expresión normalizada. / es llamada por el intérprete cuando éste trata de evalúan una forma. (/ argl arg2 ) L a función regresa la multiplicación del primero por el segundo elevado a la -1, es decir , a / b = a * ( b ~ - l ) en donde la expresión equivalente es y a una forma normalizada. 6.4 Funcionamiento del Mane. 1ador de Terminadores Entre deseable los objetivos permitir resolverse un automáticamente que el problema. una iniciales usuario En solución tal al de este dirigiera caso mismo. el s istema la forma sistema También se se en no consideró que debe debe d eseaba que dar en algunas ocasiones el sistema no diera el resultado automáticamente sin justificar absolutamente nada acerca del proceso. Es así como surgen formas diferentes de que un usuario pida al sistema como evaluar una 74 expresión. manera Para ello se d a la facilidad de que el usuario en que desea evaluar una expresión, y se indique c r earon la los terminadores. El código del manejador de terminadores puede c o nsultarse en el apéndice E. ' , El Las funciones principales codificadas en este módulo son '/' y módulo . de terminadores se invoca en la fun c i ó n LEEPROCESA. Cuando se ha reconocido que una f unción es s i n t ácticamente c o r recta se llama una de estas funciones, según el terminador de la expresión. El llamado se efectúa de la siguiente manera: (APPLY (CAR expresión) (CDR e x p r e s i ó n ) ) en donde expresión es una lista que contiene la FIP de la expresión admitida. La función que corresponde al terminador a utomático es función debe entonces llevar a cabo de manera esta automática toda operación que se indica en la expresión t e cleada por el usuario. la Como é sta se encuentra e n FIP se llama a la f u nción que eval ú a la expresión indicando cual es el terminador. La f unción pro p i a para ello es EVALUA-EXP. La función exactamente p ara el lo mismo que terminador mudo es la función p ara el Después de que termina la evaluación, "$", que t erminador realiza automático. en el lugar donde es llamada se impide la impresión del resultado. Para el terminador explícito se función se prende la b andera #TRACE, evaluación, también usando tiene la f unción la función EVALUA-EXP, proceso realizado en un stack llamado #STACK-TRACE. s e a r e gistrado expresión. para que del proceso realizado durante la la el Se u s a la f unción IMP-PROCESO p ara que imprima, de acuerdo a #STACK-TRACE, descripción E n esta p ara indicar que al realizar u n a sencilla eva l u a c i ó n de la Se inicial i Iza el stack y se a p aga la b a n d e r a de #TRACE, se efectúe la evaluación de la p r óxima entrada de manera correcta. El proceso de r astreo utiliza tres funciónes TRACE-FUN, T R A C E - R E T , y TRACE-PTO. #STACK-TRACE Estas que tres van a funciones indicar evaluación de la expresión. 75 registran partes del entradas p roceso en el stack d urante la La primera, TRACE-FUN, r e gistra forma ( NOMFUN_IN (ARG1 ARG2 ... una entrada en ARGN) el stack de la ). Dicha entrada en el stack indica que se llegó a la f unción NOMFUN, con los argumentos A R G 1 , ARG2 ... ARGN. El postfijo _IN indica llegada a la función. E sta f unción se utiliza al principio de las func iones que se desean registrar p ara el proceso, en este caso DERIVA e INTEGRA. Su llamado es p ara c ada una de ellas (TRACE-FUN 'D ERIVA LST-ARGUMENTOS) y (TRACE-FUN ’INTEGRA EXP1 VAR-INT), de manera respectiva. La función TRACE-RET registra e n el stack una ent r a d a de la forma (NOMFUN_OUT REGRESO) que indica que se terminó la f u nción NOMFUN y que su valor de regreso fue siempre regrese REGRESO, REGRESO. Es importante que pues es usada en cada una de e sta función las funciones que se desean registrar en el proceso, en todos los posibles puntos en los que la función pueda terminar y es la última expresión a evaluar en la función. La función TRACE-PTO registra varios tipos de e n trada e n el stack. Su forma general es (NOM-PTO EXP1 EXP2 ... EXPN), la difere n c i a está en NOM-PTO, que es un nombre único p ara cada llamada, e identifica un punto estratégico del proceso, que se va a describir. Las expresiones que se registran d e penden de lo que se requiera guardar en c ada uno de los puntos. Es importante hacer notar que la información que se r e g istra en cada punto estratégico debe ser e legida de tal algún paso que descripción que signifique puede algo dársele se mane r a que describa importante para refiere la a el usuario. manera en que La el algoritmo realiza las operaciones, pues es la única información que se tiene; y no como se realizaría humanamente dicho proceso. Entonces es necesario elegir los puntos de la siguiente manera: a) escogiendo partes del algoritmo que tiene algo e n común con la forma humana de realizar una operación. b) identificar la información que tienen las variables y el medio ambiente en ese lugar. c) usar la función TRACE-PTO expresiones necesarias. 76 para registrar en el stack las P a r a registrar el uso de fórmulas se debe identificar lo siguiente: a) El tipo de fór m u l a que se e stá usando, si es de i n t egración o de derivación y cual de ellas es. R egistrado en X y xx re s pectivamente de la forma siguiente. (EXP1 % X x x (VARI A S 0 C 1 ) (VAR2 A S 0 C 2 )... (V ARN ASOCN)) b) La e x p r esión que se u tiliza para aplicar d i c h a fórmula, EXP1. c) Las a s o ciaciones de variables que se realizan. P a r a el caso especial del registro de puntos no se uti l i z a n las mismas listas que describen las fórmulas i n tegración que se despli e g a n al sino de una lista, for m a de las tablas usuario en semejante a de de r i v a c i ó n e la opc i ó n de ESQUEMAS, éstas se que llama *ESQUEMAS-EXP*. Otro tipo de punto es el tra n s f o r m a en una equivalente, que r e gistra que una expresión p ara lo cual es n e c e sario se identificar lo siguiente: a) Cual es la expresión antes de que se realice una transformación, EXP-ANTES. b) El tipo de t r ansformación que se realiza, n. c) Cual es la e x p r esión después de que se r ealizó la t rans f o r mac ió n , E X P - D E S P U E S . Lo cual que d a r egistrado e n un punto de la siguiente forma: (TRANSFn (EXP-ANTES E X P - D E S P U E S ) ) Las tres f u n c iones anteriores solamente rea l i z a n r e g istros e n el sta c k cuando e stá pre n d i d a la b a ndera #TRACE. L a función I M P-PROCESO toma como e ntrada el stack que llenaron las funcion es TRACE-FUN, TRACE-RET y T R A CE-PTO y des p l i e g a s trings con la explic a c i ó n prop i a p ara c ada punto, que se com p l e t a con las expres i o n e s que e s tán e n las entradas del stack. Finalm ente función llama a la f unción p ara el la f unción terminador d i rigido es EVALUA-EXP. E sta última, se Esta encarga de evit a r la evalua c i ó n que r ealiza el evaluador de L ISP en los casos que req u i e r e el t e rminador dirigido. E n una expresión que ter m i n a c o n el e v a l u a d o r dirigido las únicas funciones que deb e n c alcularse s o n las fu n c i o n e s evaluables, que son APLICA y SUBEXP, p a r a p e rmitir que el usu a r i o indique e x p l í c itamente el cajnino del proceso. 77 La función E VALUA-EXP tiene dos argumentos, el expresión a evaluar y el segundo es el nombre de es la la f unción que primero la mando llamar, que puede ser cua lquiera de las que correponden a los terminadores. Recorre en toda su profundidad los operadores terminador que evaluación llamador de cada subexpresión llamó fue normal es el se la expresión, contenga. buscando Cuando el o "!" se permite que realice evaluador de distinguen realizar su evaluación, que LISP, las EVAL. funciones Si el APLICA y la terminador SUB E X P para llamándolas con sus argumentos evaluados con EVALUA-EXP y no con EVAL de LISP. En cualquier otro caso se regresa la expresión de entrada sin evaluar. 6.5. Manipulador Simbólico. 6.5.1. Funcionamiento del Módulo Aritmético. El código correspondiente a este módulo se encuentra en el que se texto del apéndice D. Las rutinas encargan de principales definir las codificadas operaciones en son las simbólicas él, de suma, multiplicación, exponenciación y logaritmos. Para la definición de la suma simbólica están las funciones +TRAP, MERGETERM, MERGESUM, ADÜTERM. +TRAP Es llamado por el los que al menos uno es intérprete sólo con dos elementos, no numérico. Sobre dichos argumentos de debe realizarse una suma simbólica. +TRAP tiene un parámetro que es la lista LEX1 con 2 elementos. Los elementos de LEX1 son expresiones en FIPN que representan las expresiones simbólicas a sumar. LEX1 = ( <FIPN-EXP1> <FIPN-EXP2> ) Esta función puede recibir potencialmente n argumentos para sumarlos, sin embargo la asociación de izquierda a derecha se encarga de hacerla el intérprete al llamarla y sólo le envía dos elementos a 78 la vez de la mane r a e s quematizada e n la Flg6.2. Intérprete. S e c u encia de llamados (+ a b c d) (+ T RAP a b) Fig. 6.2 Sec u e n c i a de llamados del intérprete a +TRAP +T R A P tiene def i n i d a localmente una lista, LEX2, que sirve para a l m acenar los términos que resulten al sumar las expres i o n e s de LEX1. LEX2 = ( <FIPN-TERM> . . . <FIPN-TERM> ) L a lógica que sigue la función en c u estión es la siguiente: Efec t ú a un ciclo que se e jecuta tantas veces c omo expresiones h a y a que sumar e n LEX1. En c ada iteración se rea l i z a lo siguiente: a) Se t om a la ex p r e s i ó n ya de hayan LEX1 sido que toca generados sumar se y junto envia a con la los términos que f unción MERGESUM. La lista de los términos resultantes que se obtiene se a s i g n a a LEX2 p a r a actual izarla. b) Cuando se han terminado de sumar todas las expresiones, los términos r e sultantes de la s uma han quedado e n LEX2. Se construye, usando la func i ó n MKSUM, la lista que rep r e s e n t a la sum a de los términos que hay e n LEX2. MERGESUM recibe dos argumentos EX1 = <FIPN-EX1> EX1 y LEX1 cuya forma es la siguiente: LEX1 = ( <FIPN-TERM> . . . <FIPN-TERM> ) Además e s t á d e f i n i d a una variable local, LEX2, que sirve como a u x iliar p ara ir descartando los términos de LEX1 que ya han sido sumados. Tiene la mis m a forma que LEX1. EX1 es la expresión que r epresenta 79 el e l emento a sumar, es propiamente la representación en FIPN de una <EXP1>. LEX1 tiene los términos que ya existen e n la suma que se e stá realizando. La lógica de la función M E RGESUM es la siguiente: 1) Si no hay términos previamente en LEX1 se revisa la f o rma de la expresión que se desea sumar. a) b) Cuando es una suma, se elimina el operador ♦, y se r egresa una lista con todos los términos que formaban la expresión. Cuando la expresión no es suma, significa que se trata de una expresión que está formada de un solo término y se r egresa una lista que contiene el término. 2) Cuando ya hay términos en LEX1, se llama a la función MERGETERM, para que se encargue de sumar los términos que se encuen t r e n en la expresión y se consideran los dos casos del punto anterior a) Cuando la expresión es una suma, se realiza acuerdo al número de términos que contiene cada iteración se toma un término de un la expresión y se LEX1 para ir acumulando los términos resultantes. términos se realiza por medio de un ciclo la expresión. de En usa L a sum a de llamado a M ER G E T E R M en cada vuelta del ciclo. b) Si la expresión no es suma, solamente se realiza un llamado a MERGETERM, enviando como término la expresión y acumulando el resultado en LEX1. 3) MERGESUM regresa una lista de la forma indicada para LEX1. tal lista ya se encuentran incorporados sido obtenidos de la expresión. En los términos que hayan La función MERGETERM se encargó de realizar la simplificación de los términos semejantes. MERGETERM recibe dos argumentos EX1 y LEX1 cuy a for m a es la por la siguiente: EX1 = <FIPN-TERM> LEX1 = ( <FIPN-TERM> . . . <FIPN-TERM> ) Las variables definidas función MERGETERM son EX2, para el medio EX3, LEX2 y LEX3. ambiente creado Las dos primeras son de la forma de EX1 y las dos últimas de la forma de LEX1 y funcionan como meras variables auxiliares. EX1 es una expresión de un solo término, 80 que es el que se va a sumar. Cuando y a hay a término semejante a él en LEX1 se s u m a r á ahí. S ino se creará u n a ent r a d a n u eva en LEX1. LEX1 es la lista que contiene las expresiones que re p r e s e n t a n los términos que y a exi s t e n en la suma. L a lógica de la f u nción M E R GEJERM es como sigue: E jecuta un ciclo que se efectúa tantas veces como términos haya e n LEX1. A menos de que el término a sumar s e a independiente. En c ada iteración se v e rifica lo siguiente. 1) Si ya se terminaron de revisar originalmente e staban en LEX1, un término independiente. todos los términos que buscando que alguno re p r e s e n t a r a Si no se e n c ontró n inguno se llega a este punto en el que se b u sca entonces, por medio de un ciclo, si existe en LEX1 un término semejante al que e stá repres e n t a d o en EX1. P ara verificar si un término es semejante a otro, se o b t i e n e n los factores no numéricos f unción C O DIV de [6.5.2], y los términos se comparan a comparar, por medio de usando la la función EQUAL de LISP. a) Si se e n c uentra algún término semejante a EX1, se o b t i e n e n los coeficientes, la f unción factores numéricos, ADETTERMS. representación de Se de ambos y se s u m a n usando construye la s uma de una lista que sea los términos se m e j a n t e s la y se ordena e n la lista que regresará MERGETERM. b) Si no se encuentra, se regresa una lista c o n s t r u i d a c o n los términos que venían originalmente en LEX1 c o n u n a e n t r a d a más pan a el nuevo tipo de término que v e n í a e n EX1. 2) Si se ha encontrado un término independiente en LEX1 que p udiera ser sumado con EX1 por medio de la f unción ADÜTERMS. E n c uyo caso la suma e n contrada se incorpora con todos los demás términos, que y a se hubieran revisado previamente y los los que q u e d a r o n sin verificar, por medio de la función MERGESUM. P ara la d efinición de la m u ltiplicación si m b ó l i c a se u san las s iguientes rutinas *TRAP, MERGEPROD, M E R G E F A C T , MULTFACTS. Si se o bserva el esq u e m a de sec u e n c i a de llamados entre las 81 la Fig. 6.3, funciones donde se d e scribe que r e alizan la la suma simbólica y las correspondientes a la multiplicación simbólica, se puede observar que su funcionamiento es muy semejante. Fig. 6.3 Rutinas para suma y para multiplicación simbólica. *TRAP es la función paralela a +TRAP. MERGEPROD es la función correspondiente a MERGESUM, así como MERGEFACT a MERGETERM y MULTFACTS a ADÜTERMS. Su estructura es igual y c ada una de estas funciones multiplicación sigue la misma lógica que la de la suma. es que una suma contiene términos, par a la La diferencia en tanto que en la multiplicación se habla de factores. La otra diferencia es que el elemento neutro para la s uma es el cero, en tanto que para la multiplicación es el uno. E sta diferencia se refleja hasta que se realiza el llamado a las funciones ADÜTERMS y MULTFACTS. Las funciones para la definición de la exponenciación s o n EXPT y La principal de las dos es "A ". Realiza varias referencias a ciertas propiedades de los átomos BASE y EXPONENTE. Dichas propiedades están codificadas en el módulo de codificación de tablas. Las propiedades BASE y EXPONENTE se d efinen par a un átomo que es un operador o bien el nombre de una función. L a propiedad <atomo> de BASE es una función. Esta función define el resultado apropiado que se obtiene cuando en una exponenciación el operador principal de la base 82 es <atomo>. De mane r a similar, en la propiedad <atomo> de EXP O N E N T E se define el resultado que se obtiene cuando en una ex p o n e n c i a c i ó n el operador principal del exponente es <atomo>. Recibe dos parámetros, EX1 y EX2. EX1 es la base de la exponenciación y EX2 es el exponente. La p rimera numérica. E sta parte de la f unción sólo se realiza corresponde a cuando, tanto la la potenciación base como el exponente, son enteros. Realizando primeramente las simplificaciones siguientes: a) lx = b) 0^ no está definido, se mar c a error. 1 Sin importar que entero sea X. c) 0 X no est á definido, pues p r ovoca división entre 0, pues —x i 0 = --- sin importar que entero sea X. ox Luego se man d a realizar la exponenciación a la función EXPD. Después se v e r ifican numérico y la base puede ser cualquier u n a suma, lista, o bien por ej, los casos no es un entero. e n los que el exponente La base es simbólica, es es decir, símbolo, ej. A, %PI, %I, una lista que represente puede ser un número racional r e p r esentado por una p/q , con p y q enteros lista (* p (~ q estaría r e p resentado en la -1)). a) X 1= b) X^ = 1, si e sta e n c e ndida la variable de control X siempre. #ZER0EXPT que permite realizar dic h a simplificación, A contin u a c i ó n se verifican los casos en los que la base es a tómica y repres e n t a al número imaginario i. Si la considerarse base es simbólica, tal los casos e n los que vez no sea ató m i c a y la base es una expresión. deben En este punto se invoca a la función d e finida p ara el operador principal de la base como propiedad de BASE. Si la base no fue el expresión, entonces exponenciación el átomo simbólico resultado sim b ó l i c a de EX1 83 es elevado del número la lista a la que p o tencia i, ni fue una re p r e s e n t a EX2, que la es entera. Cuando el exponente no es entero, se verifican a h ora los casos para los que la base es simbólica y además atómica. a) 1X entonces el resultado es 1. X no es entero. b) 0 X provoca división entre 0; pues 0 X es Después se consideran los casos en que —— ox tanto . la base como el exponente son átomos simbólicos. A continuación est á contemplado el caso e n que símbolo atómico y el exponente es una expresión. la propiedad EXPONENTE que corresponde al la base es un C o n ello se llama a operador principal del exponente. Finalmente está el caso en el que tanto la base como el exponente son expresiones simbólicas y se utilizan las BASE y EXPONENTE según el operador del propiedades de exponente y los átomos de la base respect iv amente. LOG es la función encarga da de obtener logaritmos. Recibe dos argumentos EX1 y EX2. EX1 es la expresión de la que se v a a buscar el logaritmo y EX2 es la expresión que representa la base del logaritmo. La variable #L0GBAS se considera la base por omi s i ó n del e x p o n e nciación las logaritmo. De manera propiedades similar de los que átomos funcionan BASE y para EXPONENTE, la en la o b t e nción de logaritmos se tienen propiedades para el átomo LOG. Cuando al tratar de expresión no numérica, obtener J-0 8EX2 EX1, si la EX1 es la propiedad del operador principal de EX1 una del átomo LOG define el resultado apropiado para ese caso. Cuando la variable de control #PBRCH es diferente de NIL se enteros, es considera realizar las siguientes transformaciones loga 1 =0 log a = 1 ilog^ a x = x Cuando la base del logaritmo y la expresión son calculado el logaritmo con ayuda de las funciones MODU L O y QUOTIENT. Si la función fué invocada p ara convertir bases se verifica que 84 calculado el logaritmo con ayuda de las funciones MODU L O y QU0TIENT. Si la función fué invocada par a c o n vertir bases la variable de control #LOGBAS no sea #L0GEXPD Igual a la se v e r i f i c a que sea un múltiplo p o s itivo de 2 y base EX2 para r e alizar la que siguiente conversión: °g a X Al final se hace uso . l0gb X logb a de la p r o piedad principal de EX1 del átomo L0G para o btener ade c u a d a l°gEX2 del operador cua n d o EX1 es una expresión. Las propiedades de LOG definidas p e rmiten r e flejar las leyes de los logaritmos, tales como log A B logx A B = 1°8X ^ + ^o g x ^ = B logx A y están codificadas en el módulo de c o d i ficación de tablas. Después de las funciones principales e s t á n codifi c a d a s funciones de apoyo BREAK del p ara d efinir s istema y propiedades, QUOTIENT. identificar si un número es -1, ordenamiento, redefi n i c i ó n de funciones de la f unción de p r u e b a o si es n o n o entero, para f u n c iones de de verificación de múltiplos negativos y positivos, reconocimiento suma, para Además de tipo de expresión, producto, e x p o n e nciación o es decir, logaritmo, si o de u n a e x p r e s i ó n es b ien alguna forma especial de función. 6.5.2 Funcionamiento de Módulo Algebraico. El texto donde se e n c uentra el código fuente de e ste módu l o puede ser consultado en el apéndice F. En primer lugar se d e s criben subexpresiones. para algunos Se usa átomos, el bajo las f u n c iones p ropias p a r a extraer concepto un de def i n i r indicador que funciones es a propiadas operador. Estas funciones regresen el valor apropiado p ara cuando la e x p r e s i ó n que se 85 Primeramente están las funciones N UMERADOR y DENOMINADOR, definidas de manera similar. NUMERADOR El numerador de una expresión c uya f o rma interna es atómica, es la expresión misma. P ara este caso la función DENOMINADOR debe dar como resultado 1. Si la forma interna de la e xpresión de la que se d e sea obtener su NUMERADOR o su DENOMINADOR no es atómica, interna, que está canonizada, es una entonces s u representación lista de c ualquiera de las siguientes tres formas: a) (+ a r g i a r g ¿ b) (* a r g arg2 ) c) (* arg^ arg^l En el primer caso, la expresión es una suma, donde el numerador, es pues, la misma expresión y el denominador es 1. En el segundo caso, la expresión representa un producto y el numerador de un producto es el producto de los numeradores de cad a uno de sus argumentos. es el producto De manera semejante, de los denominadores de el denominaor de un producto sus argumentos. Se propiedad * del átomo NUMERADOR y la del átomo DENOMINADOR, usa la donde se encuentra definido el resultado apropiado para c ada uno. En el último caso tenemos que la lista r epresenta una exponenciación y puede darse en sus argumentos uno de los siguientes casos respecto a su signo: Como se puede observar, aditivo de arS2> se tiene si el segundo argumento es el reciproco que el numerador de la expresión es 1. Hablando del denominador se o bserva que es el primer argumento elevado al segundo; pero con el signo invertido, es decir, positivo. 86 Hablando del denomi n a d o r se o bserva que es el pri m e r a r g umento elevado al segundo; pero c o n el signo invertido, es decir, positivo. Si no es un r e c i proco aditivo el segundo argumento, el numerador es la misma e x p r esión y el denominador es 1. Estos últimos resultados son los que r e g r e s a n las funciones definidas p ara los átomos NUMERADOR y DENOMI N A D O R bajo el operador En s eguida expresión va a están las funciones EX P O N E N T E y BASE. Cuando una se e l e v a a la primera potencia su re p r e s e n t a c i ó n interna no ser una potencia, puesto que el e x p o nente 1 expresión es implícito y es claro que el e x p o nente en de cualquier una e x p resión así es 1, en tanto que la base es la misma expresión. Si la repres e n t a c i ó n interna de la exp r e s i ó n comienza con el recíproco de operador ~ puede suc e d e r una de las siguientes dos cosas: a) Que la expon e n c i a c i ó n cualquier número, caso no se sea es decir, tra t a de una la r e p r e s entación del algo como ^ , es d e cir x 1 , e n cuyo potenciación propia m e n t e dicha exponente de tal e x p resión es 1, en tanto que la base y el es la misma expresión. b) Que sísea una p o t e nciación primer argumento propiamente dicha, que la base y como segundo a r g u mento tiene el como exponente, entonces el e x p o nente es el tercer e l emento de la r e p r e s entación interna de la exp r e s i ó n (el primer elemento de la r e p r e s entación es el op erador COEFIC I E N T E Si entera, entonces el , y el segundo elemento es la base. se des e a o btener el c o eficiente de una exp r e s i ó n coeficiente es la misma expresión. Después de lo a n t erior tenemos la p o sibilidad de que la e x p resión tenga solamente una de las s i guientes formas: a) (* a r g i arg2 ) b) (~ int -1), es decir, una p o t e nciación que repres e n t e el recíproco de un número entero. c) (+ argj ar g ^ ) ó (~ a r g j a r £2 ^ ’ donde representa el rec í p r o c o de un número. 87 la exponenciación no respectivamente entero, si un ésto número es así entero entonces y la representación el coeficiente es de el un número producto de ellos, o sea a r g a r g En el último caso tenemos que el coeficiente de una s uma o de una potenciación es 1. el caso coeficiente En sea de que una la expresión suma, tenemos de que la que el coeficiente se d e sea obtener de dicha expresión es simplemente 1. SUBEXP En el primer argumento se encuentra en FIP la expresión de la cual se desea obtener cierta parte, #EXP1. En el segundo argumento, #EST, se encuentra la descripción del usuario de la e structura de la e xpresión en FIP. El último argumento, #EXPGEN, indica el usuario la e xpresión que desea obtener a partir de EXP1. La lógica de función SUBEXP consiste en llamar a la función EMPATA para encontrar la lista de asociaciones que el usuario indica que existe entre #EXP1 y #EST. Si la lista consistente, en entonces donde por el usuario en #EXPGEN, indicando que las se guardan las asociaciones la utiliza para generar #ALIST la expresión es indicada de lo contrario envia un mensaje de error expresiones #EXP1 y #EST no g u ardan la misma estructura. La función EMPATA es un sencillo algoritmo de correspondencia en el que se verifica que la cabeza de las expresiones a empatar sea la misma. se puede proceder a encontrar Si esto es así, el empatamiento entre los argumentos, usando nuevamente la función EMPATA. 6.5.3 Módulo de derivación e integración. Este módulo puede ser consultado en el apéndice G.En él están codificados tres grupos de funciones. Las funciones DEPENDE y NODEPENDE que sirven para marcar la dependencia o independencia de una variable respecto a otra. La marca se realiza utilizando la lista de propiedades del átomo que representa a la variable. Cuando un átomo Y tiene asociada la propiedad DEPENDS bajo el que repres e n t a a la variable. Cuando un átomo Y tiene aso c i a d a la p r o piedad DEP E N D S bajo el indicador X, s i g nifica que la variable Y depende de la variable X. D E P E N D E recibe en el parámetro LST la lista de los a rgumentos que el a u suario e n via a DEPENDE, en tal lista el primer ele m e n t o repres e n t a la variable que se va a hacer d e p endiente de las variables r e p r e sentadas por el resto de los elementos. La f unción cic l o e n el que se ayu d a de la fun c i ó n DEPENDI, que implementa el se le d a el valor adecuado a la lista de propiedades de la variable dependiente. NOD E P E N D E tiene un argumento, LST, de la m i sma m a n e r a que DEPEND. L a fun c i ó n NO D EPENDE es inversa que DEPENDE, se a y u d a de la f unción U N D E P E N D 1 p ara eliminar las asociaciones que indican dependencia. El siguiente grupo de funciones son las que s i r v e n p ara llevar a cabo la d erivación de una expresión. S o n las f u n c iones DERIVA, DIFN, DIF1. Estas funciones g u ardan la s e c uencia de llamadas que describe la Fig. 6.4. Fig. 6.4 S e c u encia de llamados d urante la Derivación. La lógica que se sigue p ara la der i v a c i ó n se d e scribe a cont inuación. La recibe f unción principal los argumentos del de der i v a c i ó n es usuario e DERIVA, invoca a las p ues es fun c i o n e s la que que le una lista, cuyo primer elemento es la e x p r esión a derivar. Los demás elementos de LEX1 son variables y grados de derivación. LEX1 tiene pues la siguiente forma: LEXl=(exp var varororder varororder .. . .varororder) DERIVA separa la expresión a derivar de las variables y grados de derivación e invoca a DIFN con dicha información ya clasificada. La función DIF N tiene dos argumentos EX1 y L E X 1 . El primero es la expresión a derivar y el segundo derivación y los grados de ésta. es la secuencia de variables de Las variables auxiliares usadas son EX2, que es la variable con respecto a la que se deriva actualmente. EX3 que es el número de veces que ha de derivarse con respecto a EX2. DIFN se encarga de realizar la secuencia de derivaciones que se indican en LEX1, sobre la expresión. T oma uno a uno los elementos de LEX1 y efectúa las derivaciones individuales. La lógica de la función es un ciclo en el que en c ada paso realiza lo siguiente: a) Toma el la primer variable de LEX1 y la coloca e n la variable auxiliar EX2, que debe haber sido validado que fue r a una variable, no un número. b) Ejecuta un ciclo en el que, usando la función DIF1, r ealiza la d erivación de la expresión EX1 con respecto a EX2 tantas veces como se indica en el siguiente elemento de L E X 1 , si es que éste es un número y lo elimina de L E X 1 . c) Cuando el primer elemento de LEX1 no es un número, r ealiza la derivación con respecto a EX2 una s ola vez. d) Termina el ciclo cuando ya no hay elementos en L E X 1 , que indiquen seguir derivando. La función DIF1 realiza argumentos EX1 e INDET. una derivación sencilla. Recibe El primero es la expresión a derivar. dos 1NDET contendrá siempre la variable actual de derivación. DIF1 realiza las siguientes verificaciones : a) Si INDET no depende de EX1 entonces DERIVADA(£X2, b) Si INDET=EX1 entonces DERIVADA(£XJ, 90 INDET) = 1. INDET) = 0. a) Si INDET no d e pende de EX1 entonces D E R I V A D A [EX1, INDET) = 0. b) Si INDET=EX1 e n tonces DERIVADA(EX2, INDET) = 1. c) Cuando el ope r a d o r principal de la ex p r e s i ó n es DERIVA, a la f unción auxiliar DI F MERGE variables de derivación, p ara que se se llama incorporen las de tal manera que se r e alice primero la derivación interna. d) Se realiza un llamado a la regla de d e r i v a c i ó n a d e c u a d a según el operador principal de la expresión a derivar. INTEGRA expresión, es la función para realizar la i n t egración su segundo argumento corresponde a la variable de El algorimo de cualquier de una la cual recibe en su primer argumento al integrando, EX1, y integración no u tiliza un solo integración, sino que usa varios integración INDET. método métodos, p a r a realizar los cuales son propios solo p ara cierto tipo de integrandos. Se ayuda de las INT1, funciones INT2, INT3, INTPROD y DRVDIV. Se encuentra fuertemente apo y a d a en las definiciones p a r a integración del módulo de defini c i ó n de tablas. Lo primero que se hace al empezar est a función, es transformar el integrando de tal manera que la expresión inicial sea exp a n d i d a y reducida lo más que s e a posible, colocándo valores a a lgunas variables que controlan la f o r m a de la expresión. Se llama a la fun c i ó n INT1 p ara realizar intentos de integrar la expresión. Cuando fal l a convirtiendo algún intento se retran s f o r m a la expresión, lo más que s e a posible a senos y c osenos par a intentar integrar con e s t a nue v a forma. Cuando intentos, un ya intento sea f a lla se t ransformando regresa NIL la expresión para o seguir t r atando con de otros aplicar alguna fórmula s e g ú n el operador principal en el integrando. La función INT P R O D intenta realizar una i n t egración por partes, tiene dos a rgumentos EX2 y EX3, que son expresión inicial EX1 c o n la forma EX2*EX3. los dos factores de una EX2 fue e l e g i d a como U y EX3 fue e legida como DV. INTPROD se invocó e n la d e f i n i c i ó n del módulo de integración p a r a el átomo INTEGRA cuando el ope r a d o r principal de EX1 fue *. Si I N TPROD f a lla sig n i f i c a que la e l e c c i ó n de U y DV fue e quivocada o que no es posible integrar por partes. 91 I N TPROD se apo y a medio del sistema el usuario recibe como respuesta la misma expresión de entrada que él dió. 6.5.4 Módulo de codificación de tablas. En este módulo se encuentran codificadas las tablas matemáticas. El código fuente puede ser consultado en el apéndice H. Es fácilmente entendible que, entre mayor sea el número de definiciones registradas para el sistema, más poderoso puede ser éste. El apéndice H es bastante grande, si lo comparamos con el código usado e n módulos sistema anteriores. es Debido a ello, la gama de operaciones que capaz de realizar es más o menos grande, el pues en él se de tablas se apoyan todos esos módulos. En la primera parte del módulo de codificación encuentran las definiciones propias de las funciones trigonométricas, primero la definición del SEN y COS de una expresión. éstas se definen entondes la TAN, De manera similar A partir de COT, SEC y CSC. sigue la definición de las funciones trigonométricas inversas. A continuación viene la definición de las funciones hiperbólicas, donde el SENH y el COSH se define en términos del número e, base de los logaritmos naturales. Las funciones para TANH, COTH, SEC H y CSCH se definen en función de SENH y COSH. En la segunda parte del apéndice G se encuentra la d efinición de propiedades de operadores y fórmulas, para la mayoria de las cuales se hizo uso de las átomos en el lenguaje LISP. listas de propiedades que se pueden asociar a los El cdr de un átomo apunta a la lista de propiedades del átomo, que contiene tanto propiedades como banderas. Una pareja. lista de El car propiedades de cada de punto un átomo, pareja es la es una lista llave o de nombre puntos de la propiedad, en tanto que el cdr es el valor asociado a dicha propiedad. El valor de la propiedad de un átomo puede ser una función, cualidad cual es ampliamente explotada para la codificación de las definiciones matemáticas utilizadas en el sistema. En LISP e s tán disponibles 92 las funciones para el manejo de matemáticas utilizadas e n el sistema. En L ISP propiedades, están que d i sponibles fac i l i t a n las funciones la construcción de p ara el bases de manejo dat o s de cuya información puede ser c o n s ultada de manera sencilla. La función PR OPERTY se realizó con la ayuda de e s tas funciones. Tiene tres argumentos, el primero es el nombre del átomo, el segundo es el nombre de la p r o piedad y el tercero el valor de ésta. PROPERTY se e ncarga de registrar e s a información. En primer lugar se encuen t r a n las definiciones de las fórmulas o equivalencias trigonométricas para sum a de ángulos y para ángulos múltiplos. La propiedad + del átomo NomFun tiene cod i f i c a d a la f órmula ade c u a d a par a encontrar N o m F u n (A + B ) . La propiedad * del átomo NomFun tiene codifi c a d a la fór m u l a para en c o ntrar NomFun(n»A). Ejemplo: C o d ificación de: sen(A+B) = sen A eos B ♦ eos A sen B (PROPERTY ’ SEN ’ ♦ (LAMBDA (EX1 EX2) ( (N E CMULT # T R G E X P D 5) (♦ (* (SEN E X 1 ) (COS EX2) (• (COS EX1) (SEN EX2) El valor de la variable #TRGEXPD )) ))) indica si tal c o n v e r s i ó n debe e fectuarse o no. En s e guida se encuen t r a n las definiciones de identidades de com b i n a c i ó n de funciones trigonométricas y de funciones hiperbólicas. L a propiedad N o m-Fun del átomo * indica la fórm u l a p a r a encontrar la m u l t i p licación de Nom - F u n í A ) * O t r a - F u n ( A ) . Ejemplo: C o d i ficación de: TAN(A) * COSÍA) = SENÍA) TAÑÍ A) * COTÍA) = 1 (PROPERTY ’• ’ TAN (LAMBDA (EX1 EX2) ((EQUAL (CADR E X 1 ) EX2) ((EQ (CAR EX1) ’ COS) (SEN EX2) ) ((EQ (CAR EX1) ’ COT) 1 ) ) ) ) 93 Nom-FunlíNom-Fun(a)) A continuación del vienen las propiedades Op átomo Exponente. del átomo Base y Estas fueron utilizadas en las la d efinición de la exponenciación en el módulo aritmético. Las propiedades de los logaritmos se codificaron en las propiedades * y ~ del átomo LOG y e n la propiedad LOG de los átomos + y *• Ahí se encuentran definidas algunas otras propiedades que indican números que siempre son positivos y p ara del cuadrante en que banderas identificación caen algunas funciones trigonométricas. La segunda parte del apéndice H contiene la c o d i ficación de las tablas y propiedades de derivación e integración. El átomo que guarda las tablas de derivación es el átomo DIF1. El valor de la propiedad SEN del átomo DIF1 guarda la f órmula de la derivada del seno de una expresión. Ejemplo: Codificación de: D E R I VADA(seníU),X) = eos U DERIVADA(U,X) (PROPER T Y ’ DIFl ’ SEN ’(LAMBDA (EX1) (* (COS EX1) (DIFl EX1 I N D E T )))) En la sección anterior se puede ver la definición de la función DIFl. Se codificaron multiplicación, tablas de derivación exponenciación, derivadas de funciones que logaritmos, trigonométricas, incluyen valores trigonométricas suma, absolutos, inversas e hiperbólicas. Por último se incluyen en este módulo las definiciones de fórmulas de integración. Las fórmulas básicas incluidas son propiedades del átomo INTEGRA, INTPWR, INTEXPTMS y I N T M ONTMS. Para el átomo multiplicación, INTEGRA se tiene definición p ara la suma exponenciación y algunas funciones trigonométricas de base, SEN, COS, ASEN, ATAN y LOG. 94 , Para el átomo multiplicación, INTEGRA se tiene d efinición para la suma , ex p o n e n c i a c i ó n y algunas funciones t r i g onométricas de base, SEN, COS, ASEN, A TAN y LOG. El átomo INTPWR tiene definiciones para el operador +. LOG, SEN y C O S que indican integrar e x p resiones con las formas (EXP1 + EXP2) ~ n , L O G (E X P 1, E X P 2 ) ~ N, SEN(EXPl) ~ N y COS(EXPl) c onsiderando ciertas restricciones. " N, r e s p ectivamente Por ejemplo p ara LOG, SEN y COS que N sea negativa. Las definiciones p a r a los otros dos átomos ya no co r r e s p o n d e n a f órmulas muy generales. 6.6. Funcionamiento del T r a n sformador FIPN-FU. Este último módulo e s t á dis ponible e n el apéndice principal en él co d i f i c a d a es la función P RI N T E X P I. la f unción que recibe una e x p r esión en FIP y la e scribe en la pantalla en FU. P R I NTEXP recibe un argumento, EXP1, que es la expresión a imprimir e n F U y no reg r e s a u n a lista con la e x p r esión en FU, sino que más bien se distingue por co n s i s t e n en imprimir los efectos los laterales que caracteres provoca, necesarios p ara y que for m a r la ex p r e s i ó n correspondiente a EXP1, e n FU. Est a transformación se a p o y a bastante en para los auxiliares INTSPC, ellas operadores. de funciones P R I NTEXP PRI NT LIST, tiene Las y son PRINTATOM, como o b jetivo la j e r a rquía definida definidas PRINTOPER, P R I NTPAR y imprimir en este PRINTDELTA. una módulo PRINTPOINT, e x p r esión son PRINTFUNC, Cada de una de un tipo específico. Hay de finiciones operadores de +, impresión unario, de una *, de funciones -, exp r e s i ó n LOG, para el DERI V A e suma, átomo PRI N T E X P bajo los INTEGRA donde se define producto, expone n c i a c i ó n y la menos así como los casos e speciales para imprimir el llamado a las funciones de Log, Der i v a e Integra. 95 CONCLUSIONES Para llevar a cabo la construcción del sistema se tomó apoyo de varios tipos de herramientas y a existentes. El desarrollo del sistema requirió de usar algunos conceptos de varias áreas, entre las principalmente explotadas están: Gramáticas y Lenguajes Formales. Específicamente el manejo de una gramática libre de contexto para reconocer el lenguaje de entrada del sistema. Se utilizó como base una gramática p ara reconocimiento de expresiones aritméticas infijos de suma, algunas veces. muy resta, sencilla, Una gramática para ello cualquier libro acerca del tema. estas que multiplicación, gramáticas sencillas se se incluye los división puede y encontrar Siguiendo el e squema elaboró operadores potenciación la gramática casi en observado en pro p i a para el sistema, con más requerimientos, como operadores prefijos p ara denotar el llamado a funciones. Operadores infijos como operador de asignación requerido por el sistema. como los terminadores introducidos. en el caso del Operadores postfijos Categorías sintácticas para reconocer listas de argumentos de funciones. Compiladores. Más precisamente se utilizó el método indicado en [4], para elaborar un reconocedor de descenso recursivo p ara que el sistema fuera capaz de admitir el lenguaje descrito por la gramática mencionada anteriormente. Para ello también se utilizó el método de eliminación de recursividad izquierda descrito e n [6] e n una gramática libre de contexto. Algebra elemental, Cálculo Diferencial e Integral. Básicamente se utilizaron matemáticas. conceptos elementales de la extensa á rea de las Los operadores y operaciones que se m anejan guardan las leyes y propiedades convencionales de conmutatividad y asociatividad. Su jerarquía tampoco fue alterada con respecto a lo usual. Se usan resultados obtenidos de compendios de tablas y fórmulas matemáticas, de los cuales también existe una gran variedad. Ninguno de estos resultados se presta a alguna duda acerca de su veracidad y 96 por tanto no fueron objeto de ningún tipo de demostración. IA, Manipulación simbólica. Se utilizó lo que métodos p ara manipulación de expresiones algebraicas. no se encontró c o ntrucción entonces refiere la suficiente bibliografía ace r c a del dis e ñ o o de de métodos algunos m a n ipulación se p ara artículos s i m b ólica REDUCE, Mu-MATH. v ersión 83 de tales ya que fines. Par a h a b laban existentes, último, que junto con se de MAPLE, de SAINT, la i m plementación de la de RED U C E únicas disponibles para una computadora PC. E l i giéndose la revisaron sistemas MACSYMA, Se trabajó intensamente con éste ello ace r c a como a Par a este punto fue r o n la las la de Mu-MATH por su mayor manejabilidad puesto que es un sis t e m a más propio par a PC que REDUCE, pues REDUCE fue hecho o r iginalmente p a r a u n a máq u i n a más grande. Mu-MATH e stá Mu-SIMP, implementado en un lenguaje que tiene algún parentezco con LISP. códigos en M u-SIMP de y eligieron los m étodos que p o d í a n servir al sist e m a e n construcción, para llamado los algoritmos usados p ara Mu- M A T H pued e n ser accesados. Se e studiaron M u-SIMP interpretado Es un intérprete y los realizar p ara codificarlos en LISP. operaciones simbólicas, Los algori t m o s de los a l g o ritmos p ara e f ectuar sistemáticamente la derivación e integración de u n a e x p r esión fueron extraídos de Mu-MATH y son los que se dec r i b e n e n el capítulo Lenguajes de Programación. filosofía. responde Exactamente del lenguaje LIS P y su La e l ección del lenguaje LISP par a implementar el s i stema a varias ventajas que presenta r e specto a una posible implementación en PROLOG. - LISP es un lenguaje más aplicaciones interactivas que PROLOG, propicio p ara la i m p l e m entación independientemente de la v ersión que se utilice. Una a p l i cación interactiva es más difícil es t a b l e c e r l a e n términos descriptivos. Ciertamente, la ver s i ó n de Turbo-PROLOG, que es la versión que más facilidad brinda par a implementar i n t eracción da opc i ó n de usar varios predicados propios par a el manejo de v e ntanas y ele c c i ó n de opciones; La v ersión de pero no para la comuni c a c i ó n usuario - consola. M u-LISP 87 también 97 trae un módulo con funciones de semejantes que se prestó para ser explotado y modificado para la contrucción del sistema. - Es indispensable codificar algoritmos de empatamiento en LISP, pues no d a facilidades p ara ello. PROLOG, e n cambio, asociación entre embargo tipo el simplifica patrones de con las empatamiento enormemente por la estructuras que se permite realizar más requiere complejas. en característica el Sin s istema infija de se la representación de las expresiónes elegida y las expresiones que LISP maneja. El módulo de "manejo de ventanas" que trae la versión 87 Mu-LISP es propiamente un manejador de pantallas y de menúes. de Este manejador fue adaptado para ser usado por el sistema en desarrollo. En cuanto a la evaluación general del sistema pueden sugerirse algunas mejoras. - En primer lugar, en forma interna y viceversa la parte de los transformadores de F U a podría ser muy deseable que usuario se presentara en dos dimensiones. sistema aún renglones, más amigable. Se la forma de Con ello podría tenerse un presentarían los exponentes como superíndices, los cocientes en tres las e xtracción de raíces con el símbolo convencional, en lugar de exponentes fraccionarios. módulo En cualquier momento podrían incrementarse las definiciones d de codificación de tablas para aumentar el poder de cálculo del sistema. - Sería también conveniente aumentar el número de funciones ejecutables para permitir mayor versatilidad al terminador dirigido. Por ejemplo un comando que permitiera resolver una expresión en una variable. Si se tuviera manera de obtener las raíces de un polinomio o de algúnas obtener expresiones dentro del sistema, los estudiantes podrían las derivadas y hacer uso de esa facilidad para determinar máximos y mínimos. - Un módulo de graficación de funciones traería herramienta más para que se pudiera dar una aplicación más práctica al sistema. - Para lograr una mejora también con el terminador explicativo pueden buscarse más puntos estratégicos para su registro. 98 consigo u APE N D I C E A. Gr a m á t i c a libre de contexto que define el lenguaje de e ntrada usuario. <COMANDO> <COMANDO> <COMANDO> <COMANDO> : := ::= ::= :: = <EXPRESION> <EXPRESION> ::= <VAFi> = <EXPRESION> ::= <EXP1> <EXP1> <EXP1> <EXP1> :;= <TERM> <TERH> <TERM> ::= : := ::= <EXPRESION> $ <EXPRESION> ; <EXPRESION> ! <EXPRESION>& <EXP1> + <TERM> <EXP1> - <TERM> <TERM> <TERM> * <FACTR> <TERM> / <FACTR> <FACTR> <FACTR> <FACTR> ::= <PRIMARY> * <FACTR> ::= <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <PRIMARY> <CONSTANTE> V. P I V. E <VAR> ::= <VAR-ESPECIAL> <VAR-IMP-ENT> <VAR-IMP-SAL> : := - <PRIMARY> ( <EXP1> ) ::= <FUNC> C <LISTARGS> ) : := : := <LISTARGS> ::= <LARGS> <LARGS> ::= <FUNC> <FUNC> <FUNC> <FUNC> <FUNC> ::= ::= ::= ::= ::= <EXP1><LARGS> e , <LISTARGS> <TRASCENDENTAL> <SELECTORA> < ALGEBRAICA> <CALCULO> <SUBSTITUCION> <TRASCENDENTAL> ::= S E N | COS | TAN |SEC | CSC | C O T | ASEN | ACOS |A T A N | ASEC | A CSC | ACOT | S ENH | C O S H | T ANH | S E C H | C SCH | COTH del APENDICE J F O RMA RAPIDA DE FUNCIONAMIENTO DEL SISTEMA Jl. Contenido del disco del Sistema. J2. Requerimientos de m á quina e inicialización. J3. El sistema J3.1 P ar a elegir las opciones que se ven en el Menú J3.2 Utilidad de las opciones que se presentan J3.3 Tipo de expresiones permitidas en el sistema J3.4 Funciones disponibles Jl. El s i stema e sta grabado en un disco, que contiene lo siguiente: a) Sis t e m a Operativo MS-DOS COMMAND.COM IBMBIOS.COM (oculto) IBMDOS.COM (oculto) b) Intérprete de Mu-LISP MULISP.COM c) Sis t e m a de manipulación simbólica D EMOS.COM d) Archivos requeridos por DEMOS durante ejecución MENU.AYD CALCULO.AYD SELECTOR. AYD VENTANA.AYD SESION.AYD ALGEBRA.AYD TRASCEN. AYD IGUALDAD. LSP DERIVADA.LSP INTEGRAL.LSP e) Otros archivos requeridos K EYBSP .COM (configuración del teclado en español) AUTOEXEC.BAT (iniciación a u tomática del sistema) J2. P ara trabajar con el sistema se requiere: a) PC compatible con IBM-PC que tenga al menos 512 K de m e m o r i a RAM y un manejador de disco. b) El disco que contiene la información d e scrita en 1. c) Colocar el disco en el manejador A y prender la máquina. El s istema comenzará automáticamente presentando la p a ntalla inicial del sistema. J3. El sistema J3.1 Para elegir las opciones que se ven en el Menú Por medio de la barra de espacio se ilumina la opci ó n deseada del menú y se presiona <ENTER> (Retorno de carro). O tra manera es teclear la inicial de la opción deseada. (L-Lectura, S-Sesiones, E-Esquemas, I-Impresion, M-Miscelanea, V-Ventanas, A-Ayuda y F-Fin). De manera similar e n las opciones que se presentan e n los submenués. J3.2 Utilidad de las opciones que se presentan a) Lectura: Lle v a el cursor a la ventana acti v a y aparece el prompt para teclear una entrada. Entonces se pueden empezar a teclear expresiones. b) Sesiones: Presenta el submenú para realizar operaciones sobre sesiones, tales como Desplegar, Cargar, Guardar, Borrar y Modificar sesiones. c) Esquemas: Presenta el submenú para desplegar en la ventana activa las tablas de Equivalencias, Derivadas o Integrales. Las fórmulas desplegadas aquí son usadas en la función APLICA. d) Impresión: Despliega una sesión en la impresora. e) Miscelánea: Permite configurar Colores en la pantalla, elegir tipo de Monitor, prender o apagar la campana que mar c a errores, salir a ejecutar comandos del sistema operativo. f) Ventanas: Presenta el submenú para realizar operaciones sobre ventanas, tales como Dividir, Cerrar, Moverse de V entana y Enviar entradas o salidas de sesiones entre dos ventanas. g) Ayuda: Permite desplegar en la ventana activa un breve resumen de ayuda ace r c a de las funciones permitidas e n el s istema y de las opciones de los menúes. h) Fin: Termina de ejecutar el sistema. J3.3 Tipo de expresiones permitidas en el sistema Cuando se elige la opción de Lectura en la primer pantalla que presenta el sistema pueden empezar a teclearse expresiones. Para ello hay que tener en consideración lo siguiente. a) Toda expresión debe ser finalizada con uno de los siguientes terminadores: ;. $, !, &. Los cuales tendrán efectos diferentes sobre la manera en que se evaluará la expresión introducida. Obsérvense los ejemplos que se presentan en los siguientes incisos. Todos llevan al final un terminador. b) Pued e n realizarse asignaciones u tilizando el signo = , como se m uestra a continuación: A = 5 ; EXP = A + B ; c) Los operadores válidos en el s istema son: + , ellos pueden formarse expresiones tales como: *. / y Con A+B-C; C/TT2; d) Tam b i é n es permitido utiliz ar paréntesis para indicar prioridad e n la e valuación de las operaciones. A * (B+C~2)& C / (B~2 - 4 A C); e) Hay disponibles funciones trigonométricas y logarítmicas, por ejemplo: como SEN (A + B); SEN (A) * COS (B); LN (A) & Como puede observarse, los a rgumentos trigonométricas (SEN, COS, TAN, COT, SEC, paréntesis, así como también los trigonométricas inversas (ASEN, ACOS, ATAN, hiperbólicas (SENH, COSH, TANH, COTH, SECH, de las funciones CSC) d e b e n ir entre de las funciones ACOT, ASEC, ACSC) e CSCH). Es un caso diferente la función LOG, a la cual debe indicársele la base del logaritmo de la siguiente forma: L O G (A, % E ) ; que es lo mismo que: L N (A )$ J3.4 Funciones disponibles Dentro de una expresión también puede ser usado otro tipo de funciones, de manera semejante a las funciones trigonométricas; pero que, según la función, pueden llevar varios argumentos. El número y tipo de argumentos que debe llevar c ada u n a de ellas se d e s cribe en el capítulo 3 detalladamente. Por lo pronto tenemos algunos ejemplos: Las funciones NUMERADOR, DENOMINADOR, COEFICIENTE, BASE, y EXPONENTE, sirv e n para extraer tales partes de u n a expresión, por ejemplo: N U M E RADOR((A + B )/ 2 ); DENOMINADORÍ A + B + C ); C OEFIC I E N T E (3 X); BASE(A~2); EXPONENTE(A+B); (con lo cual obtendríamos A+B) (................ ” 1) ( ........................... “ (................ " A) " 1) ( .............................. 3) Con la función SUBEXP se puede obtener una parte de una expresión; pero a ésta es necesario darle más argumentos, en donde se le dice, además de la expresión, la for m a que tiene y que parte de ella queremos, por ejemplo: La expresión A SEN(3 B~2)/ B~2 tiene la forma X/Y, o con más detalle podríamos decir que tiene la f o rma X Y/ Z. Como se puede dar a la función SUBEXP en el segundo argumento cualquiera de esas formas vamos a suponer que queremos obtener de nuestra expresión la parte que dice SEN(3 B~2). Eso se escribiría como: S U B E X P (A S E N O B~2)/ B~2, X Y / Z, Y); y obtendríamos: SEN (3 B~2) Así como estas funciones existen otras, las cuales se clasifican, enumeran y describen en el capítulo 3, que es importante revisar para escribir expresiones correctas y permitidas en el sistema. Cuando una expresión no observa las reglas, e n lugar de que se despliegue la salida correspondiente a la expresión tecleada, se despliega un mensaje que indica que hubo un error. La relación de este tipo de mensajes se puede consultar e n el Apéndice K. APENDICE K Durante la ejecución del s istema a p arecen algunos sucede algún error. Aparecen en dos lugares: a) mensajes cuando En la ventana, donde debe a p arecer el prompt de s a l i d a y el resultado, si es que se introduce una ent r a d a inválida. Estos errores se listan a continuación y se da una idea de la c a u s a que pudo haber originado el error. Caracter invalido: expresión. Se ha introducido un c a r acter no válido en la Terminador Esperado : Se tecleo la e x p resión s i n terminador. ")" Esperado : El número de paréntesis e stá desequilibrado. Identificador, cte o función esperado : P o s iblemente se t e c laron dos operadores juntos, o no se abrió u n paréntesis. Función no definida : Posiblemente falta indicar u n a m u ltiplicación o tal vez se tecleo mal el nombre de la función. Numero o tipo invalido de argumentos: Los argume n t o s dados a una función e n la expresión no c o r r esponden en número o en tipo a lo especificado para esa función. Argl y Arg2 dados, no son estrucuralmente iguales : L a estruc t u r a dada p ara la expresión de la que se des e a obt e n e r una parte no corresponde correctamente. División invalida 0/0 : En alg u n a o p e ración ar i t m é t i c a se una división entre cero. p rovoca División invalida 1/0 : En alguna o p e ración a r i t m é t i c a se p rovoca una división entre cero. Exponenciacion Invalida 0~0 : La o p e r ación 0~0 no e s t á definida. El tercer argumento debe corresponder a d U : El a r g umento donde debe especificarse la d e r ivada de U no corresponde a la d e r i v a d a de la expresión dada como U. En el área de mensajes, cuando al pedir una o p c i ó n o introducir algunos datos ha incurrido un error. 0 bien, a veces se d e spliegan letreros que indican que el s istema e stá r ealizando a l g u n a acción, éstos últimos no son mensajes de error. Elija una Opción : Indica que el usuario teclee una opcion s i stema e s t á listo p a r a que el S e l e c c i o n a : Indica que el s istema esp e r a que el u suario e l ija alguna de las opciones que se presentan e n el á r e a de o p c iones en . b) ese momento. Rango Invalido existe. : Indica que tal rango de entradas par a borrar no Numero de ventana invalido : La ventana d ada no existe. BIBLIOGRAFIA [1] Manual de M u-Lisp 87 [2] Manual de Mu Math 83 [3] Manual de Tablas y Formulas Matematicas (SHAUM) [4] Principies of C o m piler Des i g n (Ullman) [5] Proceso de C o n strucción de un P r o grama de Manipu l a c i ó n Simbólica, y Aplicación al Análisis Numérico. (Feliu Davino Sagols Troncoso) Tesis de Licenciatura. El jurado designado por la Sección de Computación del Departamento de Ingeniería Eléctrica del Centro de Investigación y de Estudios Avanzados del I.P.N. aprobó ésta tesis el 30 de junio de 1989.