1. ¿Qué se entiende por variables globales? ¿Cuál es su alcance?
Las variables globales son aquellas cuyo valor está accesible desde cualquier
sitio del programa, es decir, desde cualquier módulo en el que nos situemos.
Podríamos de alguna forma, asemejarlas a las variables globales del lenguaje de
programación C
2. ¿Cómo se definen las variables globales?
Se definen mediante el constructor defglobal
3. ¿Cómo puede hacerse uso de las variables globales en las reglas? Escriba
un ejemplo sencillo
Pueden usarse en cualquier lugar que pueda aparecer una variable local, excepto
en:
1. Como un parámetro variable para deffunction, defmethod o message-handler
2. Como las variables locales en el antecedente de una regla
(defrule ejemplo
(fact ?x&:(> ?y ?*x*))
4. ¿Cómo se les puede asignar valores a las variables globales?
Se puede hacer de dos formas:
1. Al declararse, por ejemplo:
(defglobal
(?*x* = 1)
)
2. Con bind cuando no tenga asignado ningún valor:
(bind ?*x* 1)
5. ¿Se les puede asignar valores a las variables globales en el consecuente
de una regla?
Sí, se puede asignar, como hemos visto antes empleando bind, por ejemplo:
(defrule ejemplo
(dato ?z&: (=?z ?*x*))
=>
(bind ?*x* = 1)
)
6. ¿Qué utilidad tiene la opción <nombre-del-módulo> en la sintaxis del
constructor defglobal? ¿Qué relación tiene esto con el control de razonamiento?
Indica el módulo en el que se definirá las variables globales.
Si utilizamos distintos módulos es importante especificar a qué módulo estamos
declarando la variable global, ya que va a ser en este módulo donde podemos
hacer uso de ésta.
Aquí radica la relación con el control de razonamiento ya que especificamos el
módulo en el que declaramos la variable.