Manual SWI Prolog - Interfaces Graficas

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

 

   

UNIVERSIDAD NACIONAL DE TRUJILLO 
ESCUELA DE INFORMATICA 

SWI PROLOG 
Interfaces Graficas 

Gustavo Alexander Alvarez Alvarez 
 
UNIVERSIDAD NACIONAL DE TRUJILLO 2 
SWI PROLOG
 
1. INSTALAR SWI PROLOG 
 
Si aun no instalas el SWI Prolog en tu PC, descárgalo desde su Portal Web: http://www.swi‐
prolog.org/index.html 

 
Dirígete al área de Descarga, y selecciona Stable release, para poder descargar la versión 
actual y estable (actual 5.6x).  
 

 
 
Selecciona el SO con el que trabajaras SWI Prolog 
UNIVERSIDAD NACIONAL DE TRUJILLO 3 
SWI PROLOG
 

 
 
También Descarga el Editor Grafico, dirígete al área IDE, y selecciona SWI‐Prolog‐Editor 
Y procede a descargarlo. 

 
UNIVERSIDAD NACIONAL DE TRUJILLO 4 
SWI PROLOG
 
Instala primero SWI Prolog: w32pl5664.exe 
Luego descomprime Editor de SWI Prolog e instálalo: setup.zip ‐> setup.exe  
Al final de instalar tendrás el editor y el compilador: 
 

 
 
Si luego de instalar el editor no carga con el lenguaje castellano (el que usaremos), ve a menu 
ventana/ configuración, aparecerá una ventana de configuración y en la pestaña Opciones ve 
al  botón  Translate  y  busca  la  ruta  del  archivo  español.ini  (debe  de  estar  en  la  carpeta  de 
instalación del Editor) y selecciónalo. 
 

 
 
UNIVERSIDAD NACIONAL DE TRUJILLO 5 
SWI PROLOG
 
2. GRAFICOS EN SWI‐PROLOG 
Se hace uso de la librería XPCE, la cual ha sido desarrollada para el desarrollo en GUI Prolog 
desde el principio.  
XPCE ha escrito una dinámica orientada a objetos del núcleo. Métodos se puede definir en 
cualquier idioma. XPCE predefine un gran número de clases, destinado a la representación de 
datos, así como gráficos. La biblioteca gráfica permite resumen descripción de componentes 
de la interfaz y es portátil para Win32 y Unix/X11. 
 
XPCE es un conjunto de herramientas para el desarrollo de aplicaciones gráficas en Prolog e 
interactiva.  XPCE  y  no  sigue  un  enfoque  único  de  la  GUI  para  el  desarrollo  de  aplicaciones, 
que se intentara resumir con los puntos a continuación. 
 
 
3. CARGAR LA LIBRERÍA XPCE 
Para poder usar predicados para trabajar con gráficos bajo SWI Prolog deberemos cargar la 
librería XPCE. Para cargar dicha librería pondremos la siguiente línea en cualquier parte del 
archivo (preferiblemente al principio del mismo):   
 

 
 
Esta  línea  lo  que  hace  es  decirle  a  Prolog  que  cargue  la  librería  una  vez  ha  terminado  de 
compilar, antes que 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. 
 
 
4. CREAN NUESTRO PRIMER OBJETO 
Con  la  librería  PCE  se  trabaja  con  un  esquema  orientado  a  objetos,  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.  
  
Así pues principalmente 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. Estos 4 predicados son: 
• New(?Reference,  +NewTerm):  Este  predicado  recoge  dos  parámetros,  e  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 
UNIVERSIDAD NACIONAL DE TRUJILLO 6 
SWI PROLOG
 
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 hayamos 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  qué  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.  
  
Prolog  usa  principalmente  dos  tipos  de  referencias,  una  que  sería  mediante  las  variables 
típicas de prolog (una cadena que empiece por mayúscula, como Variable, Pepe, ....), y la otra 
forma es definir referencias con nombre, las cuales una vez definidas no podremos volver a 
crear otra referencia para  dicho nombre, ya que nos dará error en ejecución. Estas últimas 
referencias resultan interesantes para acceder de forma global a un mismo objeto, sin tener 
que pasar ningún tipo de parámetro. Estas variables se crean usando el operador especial @ 
así pues, cualquier nombre que empiece por @ será una variable asociada a ese nombre que 
le demos (por ejemplo, @pepe, @variable).  
  
Cuando  usemos  las  variables  con  nombre  deberemos  llevar  especial  cuidado  ya  que 
deberemos liberarlas usando free antes de que finalice la evaluación del predicado, ya que si 
volvemos  a  realizar  la  misma  consulta,  y  volvemos  a  crear  objetos  usando  esas  mismas 
variables, dará error y no dejará ejecutar. 
 
Por  ejemplo,  para  crear  un  dialogo  que  contenga  un  botón  y  que  al  pulsar  sobre  el  mismo 
cierre esa ventana: 
 

 
Código 1: Ejemplo 01 
 
UNIVERSIDAD NACIONAL DE TRUJILLO 7 
SWI PROLOG
 

 
Figura 1: Ventana de Ejemplo 01 
 
En  este  ejemplo  podemos  ver  como  se  usan  los  predicados  new,  free  y  send,  así  como 
podemos  ver  que  aparecen  otros  como  append,  open  y  quit,  que  son  métodos  de  la  clase  
dialog  (de la cual hemos creado una instancia en la variable D usando el predicado new). 
 
Cuando pasamos parámetros en la creación o en la llamada a un método de un objeto, estos 
métodos  pueden  tener  dos  tipos  de  parámetros,  pueden  tener  parámetros  obligatorios  y 
parámetros  opcionales.  La  diferencia  está  en  que  si  no    indicamos  explícitamente  un 
parámetro obligatorio XPCE  generará un error, mientras que si no definimos un parámetro 
opcional,  entonces  XPCE  pondrá  en  su  lugar  la  constante  @default  cuyo  valor  ya  es  el  que 
tenga definido por defecto ese método. 
 
 
5. ENVIANDO MENSAJES 
Como  hemos  visto  en  el  ejemplo,    determinados  objetos  pueden  ejecutar  determinadas 
acciones, como puede ser el caso del objeto  button, así pues, cuando pulsamos en el botón, 
podemos hacer que se ejecuten una o más acciones, en este caso que  
se evaluen uno o más predicados.  
  
Si únicamente queremos evaluar 1 predicado, podemos hacer uso del predicado: 
 

 
 
Como se puede observar, el primer parámetro indica quien es el receptor, en cuyo caso, en el 
ejemplo anterior será siempre un objeto que previamente hemos creado con new.  
El  selector  (el  segundo  parámetro),    indicaría  el  nombre  del  método  o  la  función  o  el 
predicado  al  que  se  desea  llamar,  y  los  posteriores  parámetros  son  los  argumentos  de  esa 
función.  
  
Como nota importante cabe destacar que en esos parámetros únicamente pueden ir objetos 
declarados  en  el  XPCE,  es  decir,  que  no  podemos  poner  una  lista  como  tercer  o  cuarto 
parámetro y esperar que  se le pase esa lista a la función cuando sea llamada (al menos en 
principio).  
  
En  el  campo  del  receptor  básicamente  podemos  especificar  una  variable  que  hallamos 
inicializado  con    new,  teniendo  entonces  que  invocar  necesariamente  a  un  método  de  ese 
objeto,  o  por  el  contrario,  también  se  permite  invocar  a  un  predicado  con  sus 
UNIVERSIDAD NACIONAL DE TRUJILLO 8 
SWI PROLOG
 
correspondientes  parámetros  (exceptuando  listas  y  tipos  no  básicos  que  implemente  el 
XPCE),  pero  en  este  caso  en  el  campo  de  receptor  deberemos  poner    @prolog  y  en  el 
segundo parámetro el nombre del predicado y seguir rellenando con los argumentos.   
  
Con ánimo de mostrar y entender mejor como funciona se puede ver el siguiente ejemplo: 
 

 
Código 2 
 
 

 
Figura 2 
 
UNIVERSIDAD NACIONAL DE TRUJILLO 9 
SWI PROLOG
 

 
Figura 3 
 
6. ELEMENTOS DEL ENTORNO GRAFICO 
Una  vez  explicados  los  conceptos  básicos  ya  podemos  crear  objetos  en  el  entorno  gráfico, 
tales  como  diálogos,  textos,  etiquetas,  recuadros  para  dibujar,  botones,  etc.  además 
seguramente en este apartado se entenderá mejor el uso de todo lo anterior.  
  
Como  hemos  dicho  anteriormente,  podemos  crear  varios  tipos  de  objetos,  a  continuación 
enumeraré algunos de estos objetos y algunos de sus métodos. 
 
UNIVERSIDAD NACIONAL DE TRUJILLO 10 
SWI PROLOG
 

 
Tabla 1: Diferente Objetos para SWI Prolog 
 
De las clases citadas, únicamente describiré el constructor  y algunos métodos de algunas de 
ellas, y como usarlas o interaccionar con las demás clases.   
 
 
6.1. Dialogo 
Esta es la clase básica para crear ventanas de diálogo.   
  
Constructor:   

 
name: indica el titulo a la ventana   
size: es de tipo size y sirve para indicar el tamaño de la ventana   
display: indica donde queremos que se visualice (mejor no  tocar este parámetro si no 
sabemos que estamos haciendo)  
  
Podemos observar que todos los parámetros son opcionales, aunque siempre es bueno 
ponerle un titulo a la ventana   
UNIVERSIDAD NACIONAL DE TRUJILLO 11 
SWI PROLOG
 
  
Así, como ejemplo crearemos un dialogo con titulo ‘Titulo del dialogo’ y de tamaño  
440 x 320. 
 

 
 
Métodos:  
Esta clase dispone de varios métodos que pueden resultar interesantes, entre ellos 
tenemos:   
  
append(Objeto): Insertaria el objeto Objeto dentro del dialogo, visualizándolo en el  
mismo, por ejemplo sirve para insertar un botón o cualquier otra cosa, como en el 
siguiente ejemplo: 

 
 
open(): abre la ventana de diálogo visualizándola en pantalla: 

 
 
destroy(): cierra la ventana de diálogo visualizada en pantalla: 

 
 
6.2. Label 
Esta es la clase básica para crear etiquetas de texto  
  
Constructor:  

   
name: indica el nombre de la etiqueta  
selection:  puede  ser  una  cadena  o  una  imagen  que  queremos  que  sea  mostrada  en  el 
lugar donde aparece la etiqueta.  
font: permite indicar la fuente en la que queremos mostrar el texto 

 
 
 
6.3. Windows 
Esta clase sirve para crear ventanas donde dibujar o poner otros objetos gráficos  
  
Constructor:  

 
name: indica el nombre de la ventana  
UNIVERSIDAD NACIONAL DE TRUJILLO 12 
SWI PROLOG
 
size: indica el tamaño que queremos tenga la ventana   
display: indica donde queremos que  aparezca (recomendamos no usar este parámetro) 
 
Por ejemplo para crear una nueva ventana (de gráficos) de tamaño 320x200 pixeles 
 

 
 
Métodos:  
Para esta clase nos interesarán básicamente los métodos ‘display’ y  ‘flush’:  
  
display(figure,  point):  sirve  para  mostrar  una  figura  en  un  lugar  determinado  de  la 
ventana  una  determinada  figura  (que  por  ejemplo  puede  ser  una  imagen)  y  point  que 
indicará las coordenadas (x,y) de la ventana donde queremos que se muestre.  
  
El siguiente ejemplo mostraría la figura Figure en la posicion (22, 32) de la ventana  
W. 
 

 
 
flush():  sirve  para  redibujar  la  venana  que  invoca  al  método,  es  decir,  si  estamos 
realizando una serie de llamadas y no está  en el bucle principal de la ventana, entonces 
podemos llamar a este método para redibujar la ventana y los elementos que hayamos 
creado o movido. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDAD NACIONAL DE TRUJILLO 13 
SWI PROLOG
 
7. APLICACION SIMPLE 
 

 
Código 4 
 

 
Figura 5 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDAD NACIONAL DE TRUJILLO 14 
SWI PROLOG
 
8. BIBLIOGRAFIA 
• Programming in XPCE/Prolog: Guía de usuario para aprender a programar en Prolog con 
el XPCE, desde lo más básico hasta lo más complejo.  
http://www.swi.psy.uva.nl/projects/xpce/UserGuide/  
  
• Class summary descriptions: Página donde se puede encontrar información sobre un gran 
número de clases y algunos de sus métodos, con algunos ejemplos.  
http://www.swi.psy.uva.nl/projects/xpce/UserGuide/summary.html  
  
• Página Oficial de SWI‐Prolog: Página de donde descargar un intérprete o la 
documentación para programar en Prolog y XPCE  
http://www.swi ‐prolog.org/  
  
• The XPCE online reference manual: manual de referencia con todos los métodos y 
objetos que pueden ser creados y referenciados.  
http://gollem.swi.psy.uva.nl:8080/ 

También podría gustarte