miércoles, 20 de agosto de 2014

Sistemas Expertos en Prolog

Repaso Prolog: http://elvex.ugr.es/decsai/intelligent/workbook/ai/PROLOG.pdf
Gráficos en Prolog: http://www.dccia.ua.es/logica/prolog/docs/ProgGUI.pdf

XPCE/Prolog
Se hace uso de la librería XPCE, la cual ha sido desarrollada para el desarrollo en GUI Prolog.
CARGANDO LA LIBRERÍA PCE
Para poder usar predicados para trabajar con gráficos bajo Prolog deberemos cargar la librería PCE.
:- use_module(library(pce)).
Esta línea lo que hace es decirle a Prolog que cargue la librería una vez ha terminado de compilar, antes de que desde el prompt de Prolog se nos deje hacer ninguna consulta. Una vez cargada esta librería, ya disponemos de una serie de predicados para poder crear ventanas, botones, y una gran variedad de objetos.

CREANDO OBJETOS PARA LUEGO INTERACTUAR
Con la librería PCE se trabaja con un esquema orientado a objetos, en  donde podremos crear clases y trabajar con diferentes objetos, pudiendo llamar a métodos de dichos objetos (pasándoles los correspondientes parámetros) o llamar a métodos que nos devuelvan algún valor, y obviamente si creamos objetos, también podremos destruirlos.
Existen 4 predicados con los que se puede trabajar con XPCE/Prolog. Estos predicados sirven para crear objetos, enviar mensajes a objetos, recibir mensajes de objetos y liberar la memoria de los objetos.
·         new(?Reference, +NewTerm): Este predicado recoge dos parámetros, el primero recogería la referencia que se le asigna al nuevo objeto, ya que new se usa para crear objetos. El segundo parámetro le indicaría el objeto que se quiere crear.
·         send(?Receiver, +Selector(...Args...)): El primer parámetro del predicado es una referencia al objeto al que deseemos enviarle un mensaje. El segundo parámetro indicará el método al que queremos invocar, lo cual indicaremos junto a los argumentos que queremos enviarle al método.
·         get(?Receiver, +Selector(+Argument...), -Result): Los dos primeros parámetros tienen el mismo significado que para send, sin embargo el último parámetro sirve para recoger el valor que nos devuelva el método que hallamos invocado.
·         free(?Reference): libera la memoria asociada al objeto que se le indica en el primer parámetro.
Las referencias se usan para saber a que objeto nos referimos, así pues cada objeto que creemos deberá tener su propia referencia, ya que después toda memoria que  reservemos con new, será conveniente liberarla con free. Las variables de referencia deben crearse con el símbolo @ y el nombre de la VAR. Posteriormente se liberara con free.
MANOS A LA OBRA: Crear un dialogo que contenga un botón y que al pulsar sobre el mismo cierre esa ventana.
:- use_module(library(pce)).
ejemplo:-
/*
* Crea el objeto dialogo en la variable D
*/
new(D,dialog('Nombre del Dialogo')),
/*
* Crea el objeto boton almacenandolo en la variable @boton de tal forma
* que al pulsar sobre el boton libere la memoria y cierre la ventana)
*/
new(@boton, button('Cerrar Dialogo',
and(message(D, destroy),message(D, free),message(@boton, free)))),
/*
* Inserta el botón en el diálogo
*/
send(D, append(@boton)),
/*
* Le envia el mensaje open al dialogo para que cree y muestre la ventana.
*/
send(D, open).

Diagnosticar enfermedades: https://www.youtube.com/watch?v=xzmiO72G9mE

No hay comentarios:

Publicar un comentario