Un Sistema de Manipulación Simbólica Interactivo

Anuncio
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.
Descargar