Sie sind auf Seite 1von 14

UNIVERSIDADNACIONALDETRUJILLO ESCUELADEINFORMATICA

SWIPROLOG
InterfacesGraficas

GustavoAlexanderAlvarezAlvarez

UNIVERSIDADNACIONALDETRUJILLO 2 SWIPROLOG 1. INSTALARSWIPROLOG SiaunnoinstalaselSWIPrologentuPC,descrgalodesdesuPortalWeb:http://www.swi prolog.org/index.html

DirgetealreadeDescarga,yseleccionaStablerelease,parapoderdescargarlaversin actualyestable(actual5.6x).

SeleccionaelSOconelquetrabajarasSWIProlog

UNIVERSIDADNACIONALDETRUJILLO 3 SWIPROLOG

TambinDescargaelEditorGrafico,dirgetealreaIDE,yseleccionaSWIPrologEditor Yprocedeadescargarlo.

UNIVERSIDADNACIONALDETRUJILLO 4 SWIPROLOG InstalaprimeroSWIProlog:w32pl5664.exe LuegodescomprimeEditordeSWIPrologeinstlalo:setup.zip>setup.exe Alfinaldeinstalartendrseleditoryelcompilador:

Siluegodeinstalareleditornocargaconellenguajecastellano(elqueusaremos),veamenu ventana/configuracin,aparecerunaventanadeconfiguracinyenlapestaaOpcionesve al botn Translate y busca la ruta del archivo espaol.ini (debe de estar en la carpeta de instalacindelEditor)yseleccinalo.

UNIVERSIDADNACIONALDETRUJILLO 5 SWIPROLOG 2. GRAFICOSENSWIPROLOG SehaceusodelalibreraXPCE,lacualhasidodesarrolladaparaeldesarrolloenGUIProlog desdeelprincipio. XPCEhaescritounadinmicaorientadaaobjetosdelncleo.Mtodossepuededefiniren cualquieridioma.XPCEpredefineungrannmerodeclases,destinadoalarepresentacinde datos,ascomogrficos.Labibliotecagrficapermiteresumendescripcindecomponentes delainterfazyesporttilparaWin32yUnix/X11. XPCEesunconjuntodeherramientasparaeldesarrollodeaplicacionesgrficasenProloge interactiva. XPCE y no sigue un enfoque nico de la GUI para el desarrollo de aplicaciones, queseintentararesumirconlospuntosacontinuacin. 3. CARGARLALIBRERAXPCE ParapoderusarpredicadosparatrabajarcongrficosbajoSWIPrologdeberemoscargarla libreraXPCE.Paracargardichalibrerapondremoslasiguientelneaencualquierpartedel archivo(preferiblementealprincipiodelmismo):

Esta lnea lo que hace es decirle a Prolog que cargue la librera una vez ha terminado de compilar,antesqueelpromptdePrologsenosdejehacerningunaconsulta. Una vez cargada esta librera, ya disponemos de una serie de predicados para poder crear ventanas,botones,...yunagranvariedaddeobjetos. 4. CREANNUESTROPRIMEROBJETO Con la librera PCE se trabaja con un esquema orientado a objetos, donde podremos crear clases y trabajar con diferentes objetos, pudiendo llamar a mtodos de dichos objetos (pasndolesloscorrespondientesparmetros)ollamaramtodosquenosdevuelvanalgn valor,yobviamentesicreamosobjetos,tambinpodremosdestruirlos. Aspuesprincipalmenteexisten4predicadosconlosquesepuedetrabajarconXPCE/Prolog. Estos predicados sirven para crear objetos, enviar mensajes a objetos, recibir mensajes de objetosyliberarlamemoriadelosobjetos.Estos4predicadosson: New(?Reference, +NewTerm): Este predicado recoge dos parmetros, e primero recogera la referencia que se le asigna al nuevo objeto, ya que new se usa para crearobjetos.Elsegundoparmetroleindicaraelobjetoquesequierecrear. send(?Receiver, +Selector(...Args...)): El primer parmetro del predicado es una referencia al objeto al que deseemos enviarle un mensaje. El segundo parmetro

UNIVERSIDADNACIONALDETRUJILLO 6 SWIPROLOG indicar el mtodo al que queremos invocar, lo cual indicaremos junto a los argumentosquequeremosenviarlealmtodo. get(?Receiver, +Selector(+Argument...), Result): Los dos primeros parmetros tienen el mismo significado que para send, sin embargo el ltimo parmetro sirve pararecogerelvalorquenosdevuelvaelmtodoquehayamosinvocado. free(?Reference):liberalamemoriaasociadaalobjetoqueseleindicaenelprimer parmetro.

Las referencias se usan para saber a qu objeto nos referimos, as pues cada objeto que creemosdebertenersu propiareferencia,yaque despustodamemoriaquereservemos connew,serconvenienteliberarlaconfree. Prolog usa principalmente dos tipos de referencias, una que sera mediante las variables tpicasdeprolog(unacadenaqueempiecepormayscula,comoVariable,Pepe,....),ylaotra formaesdefinirreferenciasconnombre,lascualesunavezdefinidasnopodremosvolvera crearotrareferenciapara dichonombre,yaquenosdarerrorenejecucin.Estasltimas referenciasresultaninteresantesparaaccederdeformaglobalaunmismoobjeto,sintener quepasarningntipodeparmetro.Estasvariablessecreanusandoeloperadorespecial@ aspues,cualquiernombrequeempiecepor@serunavariableasociadaaesenombreque ledemos(porejemplo,@pepe,@variable). Cuando usemos las variables con nombre deberemos llevar especial cuidado ya que deberemosliberarlasusandofreeantesdequefinalicelaevaluacindelpredicado,yaquesi volvemos a realizar la misma consulta, y volvemos a crear objetos usando esas mismas variables,darerrorynodejarejecutar. Por ejemplo, para crear un dialogo que contenga un botn y que al pulsar sobre el mismo cierreesaventana:

Cdigo1:Ejemplo01

UNIVERSIDADNACIONALDETRUJILLO 7 SWIPROLOG

Figura1:VentanadeEjemplo01 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 mtodos de la clase dialog(delacualhemoscreadounainstanciaenlavariableDusandoelpredicadonew). Cuandopasamosparmetrosenlacreacinoenlallamadaaunmtododeunobjeto,estos mtodos pueden tener dos tipos de parmetros, pueden tener parmetros obligatorios y parmetros opcionales. La diferencia est en que si no indicamos explcitamente un parmetroobligatorioXPCEgenerarunerror,mientrasquesinodefinimosunparmetro opcional, entonces XPCE pondr en su lugar la constante @default cuyo valor ya es el que tengadefinidopordefectoesemtodo. 5. ENVIANDOMENSAJES Como hemos visto en el ejemplo, determinados objetos pueden ejecutar determinadas acciones,comopuedeserelcasodelobjetobutton,aspues,cuandopulsamosenelbotn, podemoshacerqueseejecutenunaomsacciones,enestecasoque seevaluenunoomspredicados. Sinicamentequeremosevaluar1predicado,podemoshacerusodelpredicado:

Comosepuedeobservar,elprimerparmetroindicaquieneselreceptor,encuyocaso,enel ejemploanteriorsersiempreunobjetoquepreviamentehemoscreadoconnew. El selector (el segundo parmetro), indicara el nombre del mtodo o la funcin o el predicado al que se desea llamar, y los posteriores parmetros son los argumentos de esa funcin. Comonotaimportantecabedestacarqueenesosparmetrosnicamentepuedenirobjetos declarados en el XPCE, es decir, que no podemos poner una lista como tercer o cuarto parmetroyesperarque selepaseesalistaalafuncincuandoseallamada(almenosen principio). En el campo del receptor bsicamente podemos especificar una variable que hallamos inicializado con new, teniendo entonces que invocar necesariamente a un mtodo de ese objeto, o por el contrario, tambin se permite invocar a un predicado con sus

UNIVERSIDADNACIONALDETRUJILLO 8 SWIPROLOG correspondientes parmetros (exceptuando listas y tipos no bsicos que implemente el XPCE), pero en este caso en el campo de receptor deberemos poner @prolog y en el segundoparmetroelnombredelpredicadoyseguirrellenandoconlosargumentos. Connimodemostraryentendermejorcomofuncionasepuedeverelsiguienteejemplo:

Cdigo2

Figura2

UNIVERSIDADNACIONALDETRUJILLO 9 SWIPROLOG

Figura3 6. ELEMENTOSDELENTORNOGRAFICO Una vez explicados los conceptos bsicos ya podemos crear objetos en el entorno grfico, tales como dilogos, textos, etiquetas, recuadros para dibujar, botones, etc. adems seguramenteenesteapartadoseentendermejorelusodetodoloanterior. Como hemos dicho anteriormente, podemos crear varios tipos de objetos, a continuacin enumeraralgunosdeestosobjetosyalgunosdesusmtodos.

UNIVERSIDADNACIONALDETRUJILLO 10 SWIPROLOG

Tabla1:DiferenteObjetosparaSWIProlog Delasclasescitadas,nicamentedescribirelconstructoryalgunosmtodosdealgunasde ellas,ycomousarlasointeraccionarconlasdemsclases. 6.1. Dialogo Estaeslaclasebsicaparacrearventanasdedilogo. Constructor: name:indicaeltituloalaventana size:esdetiposizeysirveparaindicareltamaodelaventana display:indicadondequeremosquesevisualice(mejornotocaresteparmetrosino sabemosqueestamoshaciendo) Podemosobservarquetodoslosparmetrossonopcionales,aunquesiempreesbueno ponerleuntituloalaventana

UNIVERSIDADNACIONALDETRUJILLO 11 SWIPROLOG As,comoejemplocrearemosundialogocontituloTitulodeldialogoydetamao 440x320. Mtodos: Estaclasedisponedevariosmtodosquepuedenresultarinteresantes,entreellos tenemos: append(Objeto):InsertariaelobjetoObjetodentrodeldialogo,visualizndoloenel mismo,porejemplosirveparainsertarunbotnocualquierotracosa,comoenel siguienteejemplo: open():abrelaventanadedilogovisualizndolaenpantalla: destroy():cierralaventanadedilogovisualizadaenpantalla: 6.2. Label Estaeslaclasebsicaparacrearetiquetasdetexto Constructor: name:indicaelnombredelaetiqueta selection: puede ser una cadena o una imagen que queremos que sea mostrada en el lugardondeaparecelaetiqueta. font:permiteindicarlafuenteenlaquequeremosmostrareltexto 6.3. Windows Estaclasesirveparacrearventanasdondedibujaroponerotrosobjetosgrficos Constructor: name:indicaelnombredelaventana

UNIVERSIDADNACIONALDETRUJILLO 12 SWIPROLOG size:indicaeltamaoquequeremostengalaventana display:indicadondequeremosqueaparezca(recomendamosnousaresteparmetro) Porejemploparacrearunanuevaventana(degrficos)detamao320x200pixeles Mtodos: Paraestaclasenosinteresarnbsicamentelosmtodosdisplayyflush: 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 indicarlascoordenadas(x,y)delaventanadondequeremosquesemuestre. ElsiguienteejemplomostraralafiguraFigureenlaposicion(22,32)delaventana W. flush(): sirve para redibujar la venana que invoca al mtodo, es decir, si estamos realizandounaseriedellamadasynoestenelbucleprincipaldelaventana,entonces podemosllamaraestemtodopararedibujarlaventanayloselementosquehayamos creadoomovido.

UNIVERSIDADNACIONALDETRUJILLO 13 SWIPROLOG 7. APLICACIONSIMPLE

Cdigo4

Figura5

UNIVERSIDADNACIONALDETRUJILLO 14 SWIPROLOG 8. BIBLIOGRAFIA ProgramminginXPCE/Prolog:GuadeusuarioparaaprenderaprogramarenPrologcon elXPCE,desdelomsbsicohastalomscomplejo. http://www.swi.psy.uva.nl/projects/xpce/UserGuide/ Classsummarydescriptions:Pginadondesepuedeencontrarinformacinsobreungran nmerodeclasesyalgunosdesusmtodos,conalgunosejemplos. http://www.swi.psy.uva.nl/projects/xpce/UserGuide/summary.html PginaOficialdeSWIProlog:Pginadedondedescargarunintrpreteola documentacinparaprogramarenPrologyXPCE http://www.swiprolog.org/ TheXPCEonlinereferencemanual:manualdereferenciacontodoslosmtodosy objetosquepuedensercreadosyreferenciados. http://gollem.swi.psy.uva.nl:8080/

Das könnte Ihnen auch gefallen