Sei sulla pagina 1di 4

Comienzo y finalizacin del programa

Clips es un programa para MS-Dos convertido a Windows95: esto quiere decir que el manejo del programa se basa principalmente en comandos sobre una ventana de texto; para algunos de ellos existe una contrapartida en el men principal de la aplicacin. El ejecutable es CLIPS.exe, y arranca simplemente con hacer dobleclick sobre l. No es necesario realizar ninguna accin adicional, pero es recomendable ir al men Window y visualizar las ventanas de hechos (facts) y la de agenda. Para finalizar, es necesario teclear en Clips el comando exit: CLIPS> (exit)

Una caracterstica importante es que los comandos utilizan la notacin tipo Lisp, as que ser necesario encerrarlos entre parntesis. [Volver al ndice]

Insercin de hechos
Para insertar un hecho, se utiliza el comando assert. Un hecho (fact, en ingls) para clips puede ser bastante flexible: desde una sola palabra hasta una sucesin de ellas. Vanse los siguientes ejemplos. Clips responde asignando un nmero a cada hecho.
CLIPS> (assert (foxterrier)) <fact-0> CLIPS> (assert (milu foxterrier)) <fact-1> CLIPS> (assert (intenta_asesinar marco cesar)) <fact-2>

Por supuesto, lo mejor es seguir algn tipo de esquema de notacin, para que despus los hechos sean tiles a la hora de crear reglas. Los hechos se muestran en la ventana de hechos (Window->facts), y pueden mostrarse en la pantalla principal ejecutando el comando (facts).
CLIPS> (facts) f-0 (foxterrier) f-1 (milu foxterrier) f-2 (intenta_asesinar marco cesar)

Este comando puede introducirse en cualquier momento. [Volver al ndice]

Insercin de Reglas
Las reglas se insertan en Clips mediante el comando 'Defrule', indicando primero los hechos de entrada, es decir las precondiciones, para que la regla se dispare (todas deben cumplirse), un smbolo '=>', y a continuacin, todas las acciones asociadas a esa regla.
CLIPS> (defrule gripe (malestar_general) (fiebre) (tos) => (assert (gripe)) (printout t "Tienes gripe." crlf) )

Como se puede ver, la notacin es la tpica de Lisp. No es necesario mantener este formato en la entrada: incluso podra teclearse todo en una sola lnea. En cuanto a espacios y nmero de lneas, pueden ponerse las que queramos. Utilizando notacin lgica, la regla podra escribirse como:
gripe :- malestar_general, fiebre, tos

En cuanto a una notacin programtica,


if (malestar_general and fiebre and tos) then conclude gripe.

El comando (printout t [salida|CRLF]*) sirve para imprimir en pantalla. [Volver al ndice]

Utilizacin de Variables
Pueden utilizarse variables, entendindose que estn cuantificadas universalmente. El uso de una variable se hace necesario en una regla:
coche(x) :- cuatro_ruedas(x), motor(x)

Se entiende que x se lee como "para todo x". sto se traduce, en una regla CLIPS, como:
CLIPS> (defrule es_coche (cuatro_ruedas ?x) (motor ?x) =>

(assert (coche ?x)) )

"es_coche" es el nombre de la regla, en realidad slo sirve de referencia. De hecho, ejecutndo el comando (rules), slo nos mostrar los nombres de las reglas. [Volver al ndice]

Un ejemplo completo: ejecucin del sistema experto creado


A continuacin se muestra un ejemplo completo: "Pepe es una persona" "Pepe vive en Toledo" "Toda persona que viva en Toledo es espaola" "Toda persona que viva en Espaa es Europea" persona(pepe) toledano(pepe) espaol(x) :- toledano(x) europeo(x) :- espaol(x)
CLIPS> CLIPS> <f-1> CLIPS> <f-1> CLIPS> (reset) (assert (persona pepe)) (assert (toledano pepe))

(defrule espaol (persona ?x) (toledano ?x) => (assert (espaol ?x)) (printout t ?x " es espaol." crlf) ) CLIPS> (defrule europeo (persona ?x) (espaol ?x) => (europeo ?x) (printout t ?x " es europeo." crlf) ) CLIPS> (run)

En el anterior ejemplo, los hechos (espaol pepe) y (europeo pepe) seran aadidos a la base de hechos. [Volver al ndice]

Comandos de Entrada y Salida


Existen 2 comandos que se pueden utilizar a la hora de realizar entrada y salida en pantalla: son los comandos (read) y (printout).
(printout <expr. lgica> [<vble>|<texto>|<crlf>]*)

Cuando se cumple la expresin lgica (se puede poner una "t" para que sea siempre cierta), se imprime en pantalla el texto o la variable que se indique. De existir varios argumentos, stos se separan con espacios. Finalmente, crlf cambia a una nueva lnea.
(read)

No admite parmetros, y se puede utilizar de la manera siguiente:


(assert (color (read))

De forma que pide al usuario el elemento que falta para completar el hecho. Si el usuario introduce 'rojo', entonces el hecho introducido ser (color rojo).

Potrebbero piacerti anche