Cuestiones de la práctica 8.



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.