texto visual prolog 7.4
TRANSCRIPT
-
8/12/2019 Texto Visual Prolog 7.4
1/26
Visual Prolog 7.4Julio Luis Tenorio Cabrera.
Marcelino Torres Villanueva.
Robert Jerry Snchez Ticona.
-
8/12/2019 Texto Visual Prolog 7.4
2/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 1
INDICE
ndice general .....................................................................................................................................ndice de figuras ................................................................................................................................Sobre los autores ............................................................................................................................... Notas preliminares ............................................................................................................................
Desarrollo de la aplicacin experta NEUROEXPERT ..........................................................................Ejecucin de la aplicacin experta NEUROEXPERT ...........................................................................Sitios Web ...........................................................................................................................................
-
8/12/2019 Texto Visual Prolog 7.4
3/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 2
INDICE DE FIGURAS
Figura 01: Pantalla con mensaje explicativo al usuario de la finalidad de la aplicacin experta. ......
Figura 02: Pantalla general de la aplicacin experta ..........................................................................
Figura 03: Pantalla con opcin y subopciones de la aplicacin experta .............................................Figura 04: Pantalla donde se solicita nombre al usuario de la aplicacin experta ............................
Figura 05: Pantalla de bienvenida al usuario de la aplicacin experta ...............................................
Figura 06: Pantalla de consultas de la aplicacin experta ..................................................................
Figura 07: Pantalla de resultados de la aplicacin experta ................................................................
-
8/12/2019 Texto Visual Prolog 7.4
4/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 3
SOBRE LOS AUTORES
Julio Luis Tenorio Cabrera es Ingeniero de Computacin y Sistemas y Maestro en IngeniSistemas con Mencin en Administracin y Direccin de Tecnologas de la Informacin.
Marcelino Torres Villanueva es Ingeniero Qumico, Ingeniero de Sistemas y MaestInformtica.
Robert Jerry Snchez Ticona es Ingeniero de Computacin y Sistemas y Maestro en Tecnde Informacin e Informtica Educativa.
-
8/12/2019 Texto Visual Prolog 7.4
5/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 4
NOTAS PRELIMINARES
El presente texto, pretende proporcionar al lector una visin prctica de la programacinlenguaje declarativo Visual Prolog 7.4, mediante el desarrollo de una aplicacin experta bdar as un panorama del paradigma de programacin lgica.
Se espera que por parte del lector profundice la investigacin de la programacin en este ley as tambin contribuir a enriquecer y fortalecer el uso de este lenguaje en el desarroaplicaciones expertas reales.
Julio Luis Tenorio Cabrera
Marcelino Torres VillanuevaRobert Jerry Snchez Ticona
-
8/12/2019 Texto Visual Prolog 7.4
6/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 5
DESARROLLO DE LA APLICACIN EXPERTA NEUROLGICO
Ingresar al Visual Prolog y seleccionar la opcinProject y luego la opcinNew con lo cualaparecer una interfaz en la que se escribir el nombre del proyecto, en este
NEUROLOGICO .
Luego Visual Prolog ejecutar automticamente el proceso de compilacin y linkeado con se genera la aplicacin por defecto. Luego para ejecutar la aplicacin se seleccina la
Execute y como resultado se tiene la interfaz de la aplicacin.
En este punto es importante indicar que dentro de la carpetaTaskWindow se encuentran un
conjunto de archivos y una carpetaToolbars que luego se trabajarn, siendo por ahora de inteel archivoTaskWindow.win mediante el cual, con el botn derecho del mouse y la opc
Attributes , podemos modificar los atributos de la ventana raz, es decir,TaskWindow , porejemplo el nuevo ttulo de la ventana ser SISTEMA EXPERTO EN NEUROLOGAy seactiva la opcinMaximized y luego seleccionar el botnOk . Si se ejecuta nuevamente laplicacin se vern los cambios.
Es de inters ahora el archivoTaskMenu.mnu , mediante el cual se puede modificar las opcioque por defecto implementa Visual Prolog. Entonces se eliminar todas las opciones menosFile ydentro de esta opcin se eliminar todas las subopciones menosNew y Exit .
Las opciones no eliminadas se renombrarn de la siguiente manera:File = Consulta , New =
Nueva , Exit = Salir . La opcinNueva deben de habilitarse ya que por defecto est deshabilita
En este punto se debe ejecutar nuevamente la aplicacin mediante la opcinBuild y luegoBuild con lo que se observa la advertencia que no es usado el predicado onHelpAbout. Esto significaque hay un cdigo asociado a las opciones eliminadas que est dems en el a
TaskWindow.pro , de donde debemos eliminar a dicho cdigo. Para ir al arc
TaskWindow.pro , se hace doble click en el mensaje de advertencia.
-
8/12/2019 Texto Visual Prolog 7.4
7/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 6
El cdigo a eliminar es el siguiente:
predicates
onHelpAbout : window::menuItemListener.
clausesonHelpAbout(TaskWin, _MenuTag):-
_AboutDialog = aboutDialog::display(TaskWin).
Luego en el mismo archivo, se debe modificar en el siguiente cdigo, el valortrue por false , paraas eliminar la opcinWindow la que no se elimina en modo diseo. El cdigo a modificar es
constants
mdiProperty : boolean = true.
Tambin en el mismo archivo se recomienda modificar la aparicin de la ventana de mecuando se ejecuta la aplicacin experta. Para lograr esto se debe modificar el siguiente cdi
predicates
onShow : window::showListener.
clauses
onShow(_, _CreationData):-
_MessageForm = messageForm::display(This).
de la siguiente manera:
predicates
onShow : window::showListener.
clauses
onShow(_, _CreationData).
%_MessageForm = messageForm::display(This).
El paso siguiente es enviar al usuario un mensaje que explique la finalidad de la aplicacieste mensaje debe aparecer automticamente luego que se muestra la interfaz del punto aPara esto haciendo click con el botn derecho sobre la carpetaNEUROLOGICO , seleccione la
-
8/12/2019 Texto Visual Prolog 7.4
8/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 7
opcinNew in New Package y luego elija el objeto dialog para luego escribir como nombredialog:dlgmensaje .
Debe eliminar todos los botones que aparecen menosOk, el cul se renombrar con:Continuar yluego elija el objetoStatic Text y en la propiedadText escriba un mensaje explicando al usuarla finalidad del sistema experto. Finalmente cierra el dilogo creado y lo graba.
Como se dijo anteriormente el mensaje creado en el punto anterior debe apautomticamente, por lo que para esto hacemos doble click enTaskWindow.win , con lo que en lacarpetaWindow hacemos doble click en el eventoOnShow y modificamos el siguiente cdigo:
predicatesonShow : window::showListener.
clauses
onShow(_, _CreationData).
%_MessageForm = messageForm::display(This).
escribiendo el siguiente cdigo:
predicates
onShow : window::showListener.
clauses
onShow(_, _CreationData):-
% _MessageForm = messageForm::display(This).
postAction({ :- _ = dlgmensaje::display(This) }).
Al ejecutar la aplicacin, de aparecer algn mensaje de agregar las libreras necesarias, click en el botnAdd All para que finalmente aparezca automticamente el mensaje creado.
A continuacin se deber crear un dilogodlgnombre (la propiedad Text de este objeto debecontenerSolicitando nombre al usuario), con el mismo procedimiento para creardlgmensaje ,el cul no deber tener ningn botn de ventana y slo deber quedar el botnOk (ok_ctl) , el cul
-
8/12/2019 Texto Visual Prolog 7.4
9/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 8
se renombrar conSalir . Luego se debe colocar un botn de comando denominadoContinuar cuyo nombre serbtncontinuar_ctl .
El objetivo dedlgnombre es que el usuario ingrese su nombre en una caja de texto y mientralo haga no se podr continuar. Entonces se debe considerar un objeto tipoStatic Text para elmensaje de:Ingrese su nombre por favor . Debe haber tambin unEdit Control para ingresarel nombre del usuario, elEdit Control , se llamarednombre_ctl .
En este punto se deber mediante las opcionesConsulta y luego Nueva , llamar al dilogo
dlgnombre y para esto, se hace doble click en el archivoTaskWindow.win de la carpeta
TaskWindow , para luego de la interfaz que aparece seleccionar la carpetaMenu , TaskMenu ,
id_file y luego hacer doble click sobreid_file_new con lo que se deber completar el cdigo qaparece por defecto, con el siguiente:
predicates
onFileNew : window::menuItemListener.
clauses
onFileNew(_Source, _MenuTag):-
_ = dlgnombre::display(This).
Luego al ejecutar la aplicacin, de aparecer algn mensaje de agregar las libreras necesahace click en el botnAdd All con lo que debera ejecutarse sin ningn problema hasta el pdesarrollado.
Ahora se debe crear un dilogo llamadodlgbienvenida , mediante el mismo procedimiento q para crear los dilogos anteriores (recordar haciendo click con el botn derecho sobre la
NEUROLOGICO , seleccione la opcinNew in New Package) . En este dilogo debe mostrarsun mensaje de bienvenida al uso del sistema al usuario. Se debe tener en cuenta que edilogo debe capturarse el nombre del usuario ingresado en el dilogo anteriordlgnombre.
Entonces ahora escribir el siguiente cdigo al programar el botn de comando:btncontinuar_ctl ,en eldlgnombre.pro :
-
8/12/2019 Texto Visual Prolog 7.4
10/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 9
predicates
onBtningresarClick : button::clickResponder.
clauses
onBtningresarClick(_Source) = button::defaultAction:-
Contenido=ednombre_ctl:getText(),
Contenido"",
close(),
_ = dlgbienvenida::display(getParent(), ednombre_ctl:getText()),
!.
onBtningresarClick(_Source) = button::defaultAction:-
vpiCommonDialogs::error("Mensaje del Sistema","Ingrese su nombre").
Al ingresar el nombre de usuario, se debe displayar un dilogo llamado dlgbienvenida, en
aparezca un mensaje de bienvenida con el nombre de usuario ingresado. En el adlgbienvenida.cl , debe el cdigo quedar as:
/*************************************************************************
****
Copyright (c) 2014 My Company
**************************************************************************
****/
class dlgbienvenida : dlgbienvenida
open core
predicates
display : (window Parent, string Name) -> dlgbienvenida Dlgbienvenida.
constructors
new : (window Parent, string Name).
end class dlgbienvenida
En el dilogodlgbienvenida , se coloca unStaticText_ctl , el que debe ser del tipoFact Variable ,con lo que ahora se llamar:staticText_ctl, quedando la propiedadText en blanco. Finalmente
-
8/12/2019 Texto Visual Prolog 7.4
11/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 10
debe quedar solo el botnok_ctl, el cul se renombrar con la propiedadtext, con el nombre
Continuar.
En el archivodlgbienvenida.pro , parte del cdigo a modificar debe quedar as:
clauses
display(Parent,Name) = Dialog :-
Dialog = new(Parent,Name),
Dialog:show().
facts
name : string.
clauses
new(Parent,Name) :-
name := Name,
dialog::new(Parent),
generatedInitialize(),
staticText_ctl:setText(string::format("%, te doy la bienvenida,
con gusto te ayudar. Presiona en Continuar por favor.", name)).
En este punto del desarrollo de la aplicacin, se trabajar formateando las opciones de l(men) de herramientas, para lo cual se abre haciendo doble click, el archivoProjectToolbar.pro ,y el cdigo que deber quedar por el momento se muestra a continuacin:
-
8/12/2019 Texto Visual Prolog 7.4
12/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 11
/*************************************************************************
****
Copyright (c) 2014 My Company
**************************************************************************
****/
implement projectToolbar
open core, vpiDomains, vpiToolbar, resourceIdentifiers
clauses
create(Parent):-
_ = vpiToolbar::create(style, Parent, controlList).
% This code is maintained automatically, do not update it manually. 22:18:31-3.4.2014
constants
style : vpiToolbar::style = tb_top().
controlList : vpiToolbar::control_list =
[tb_ctrl(id_file_new,pushb(),resId(idb_NewFileBitmap),"Nueva consulta;",1,1),
tb_ctrl(id_file_open,pushb(),resId(idb_OpenFileBitmap),"Abrir consulta;",1,1),
tb_ctrl(id_file_save,pushb(),resId(idb_SaveFileBitmap),"Grabar consulta;",1,1
),
vpiToolbar::separator,
%tb_ctrl(id_edit_undo,pushb(),resId(idb_UndoBitmap),"Undo;Undo",1,1),
%tb_ctrl(id_edit_redo,pushb(),resId(idb_RedoBitmap),"Redo;Redo",1,1),
%vpiToolbar::separator,
%tb_ctrl(id_edit_cut,pushb(),resId(idb_CutBitmap),"Cut;Cut to Clipboard",1,1),%tb_ctrl(id_edit_copy,pushb(),resId(idb_CopyBitmap),"Copy;Copy to Clipboard",1,1),
%tb_ctrl(id_edit_paste,pushb(),resId(idb_PasteBitmap),"Paste;Paste from Clipboard",
1,1),
%vpiToolbar::separator,
tb_ctrl(id_help_contents,pushb(),resId(idb_HelpBitmap),"Ayuda;",1,1)
].
% end of automatic code
end implement projectToolbar
Ahora se debe crear un dilogo en el que se realizar las consultas al experto artificiadilogo se llamadlgconsulta al cul en la propiedadText se deber escribir:Consultando alexperto. Finalmente a este punto, en el dilogo creado, se cambiar la apariencia del botOk
-
8/12/2019 Texto Visual Prolog 7.4
13/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 12
por Salir. En este dilogodlgconsulta , se debern poner los siguientes controles con respectivas propiedades:
o Un Push Button , el que se denominarbtndiagnosticar_ctl.
o Un StaticText_ctl , para que recepcione el nombre del usuario ingresado anteriormenque debe ser del tipoFact Variable , con lo que ahora se llamar:staticText_ctl,quedando la propiedadText en blanco.
o Un StaticText1_ctl, el que se denominar (en la propiedadText ) Sintomas aseleccionar.
o Un StaticText2_ctl, el que se denominar (en la propiedadText ) Sintomasseleccionados.
o Un List Box , el que se denominarlbdisponibles_ctl.
o Un List Box , el que se denominarlbseleccionados_ctl.
o Un StaticText3_ctl, el que se denominar (en la propiedadText ) Enfermedaddiagnosticada.
o Un Edit Control , denominadoedenfermedad_ctl , poniendo en blanco la propiedadText por el momento.
o Un StaticText4_ctl, el que se denominar (en la propiedadText ) Tratamiento
recomendado.
o Un Edit Control , denominadoedtratamiento_ctl , poniendo en blanco la propiedadText por el momento.
-
8/12/2019 Texto Visual Prolog 7.4
14/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 13
Lo que ahora se debe hacer es que cuando se llame adlgconsulta , automticamente los sntomadisponibles deben aparecer enlbdisponibles_ctl . Para esto en la pestaaEvents de la caja de propiedades dedlgconsulta , se debe hacer doble click sobre el eventoShowListener , con lo queaparecer el siguiente cdigo:
predicates
onShow : window::showListener.
clauses
onShow(_Source, _Data).
El cdigo anterior se modificar quedando de la siguiente manera:
predicates
onShow : window::showListener.
clauses
onShow(_Source, _Data):-
lbdisponibles_ctl:add("Sntoma_01"),
lbdisponibles_ctl:add("Sntoma_02"),
lbdisponibles_ctl:add("Sntoma_03"),
lbdisponibles_ctl:add("Sntoma_04"),
lbdisponibles_ctl:add("Sntoma_05").
Ahora la idea es que cuando el usuario seleccione (con doble click), un sntom
lbdisponibles_ctl , este sea agregado albseleccionados_ctl , eliminndose automticamente d primerList Box y viceversa, es decir si el usuario desea eliminar un sntoma selecciona
lbseleccionados_ctl , pues lo debe seleccionar con doble click y automticamente panuevamente a formar parte delbdisponibles_ctl . Para esto en la pestaaEvents de la caja de propiedades delbdisponibles_ctl , se hace doble click sobre el eventoDoubleClickListener , conlo que aparecer el siguiente cdigo:
predicates
onLbdisponiblesDoubleClick : listBox::doubleClickListener.
clauses
onLbdisponiblesDoubleClick(_Source).
-
8/12/2019 Texto Visual Prolog 7.4
15/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 14
El cdigo anterior se modificar de la siguiente manera:
predicates
onLbdisponiblesDoubleClick : listBox::doubleClickListener.
clausesonLbdisponiblesDoubleClick(_Source):-
lbdisponibles_ctl:getAllSelected(E,I),
E=[EE|_],
I=[II|_],
lbseleccionados_ctl:add(EE),
lbdisponibles_ctl:delete(II),
!.
onLbdisponiblesDoubleClick(_Source).
Ahora en la pestaaEvents de la caja de propiedades delbseleccionados_ctl , se hace doble clicksobre el eventoDoubleClickListener , con lo que aparecer el siguiente cdigo:
predicates
onLbseleccionadosDoubleClick : listBox::doubleClickListener.
clauses
onLbseleccionadosDoubleClick(_Source).
El cdigo anterior se modificar de la siguiente manera:
predicates
onLbseleccionadosDoubleClick : listBox::doubleClickListener.
clauses
onLbseleccionadosDoubleClick(_Source):-
lbseleccionados_ctl:getAllSelected(E,I),
E=[EE|_],I=[II|_],
lbdisponibles_ctl:add(EE),
lbseleccionados_ctl:delete(II),
!. onLbseleccionadosDoubleClick(_Source).
-
8/12/2019 Texto Visual Prolog 7.4
16/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 15
Se debe ahora llamar desde el dilogodlgbienvenida al dilogodlgconsulta . Para esto, en el botnContinuar (es el botn ok_ctl) dedlgbienvenida , poner el siguiente cdigo:
predicates
onOkClick : button::clickResponder.
clauses
onOkClick(_Source) = button::defaultAction:-
close(),
_ = dlgconsulta::display(getParent(), name),
!.
Ahora en el archivo dlgconsulta.cl, se debe escribir el siguiente cdigo:
/*************************************************************************
****
Copyright (c) 2014 My Company
**************************************************************************
****/
class dlgconsulta : dlgconsulta
open core
predicates
display : (window Parent, string Name) -> dlgconsulta Dlgconsulta.
constructors
new : (window Parent, string Name).
end class dlgconsulta
En el archivo dlgconsulta.pro, se debe escribir el siguiente cdigo:
-
8/12/2019 Texto Visual Prolog 7.4
17/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 16
clauses
display(Parent,Name) = Dialog :-
Dialog = new(Parent,Name),
Dialog:show().
facts
nam : string.
clauses
new(Parent,Name) :-
nam:=Name,
dialog::new(Parent),
generatedInitialize(),
staticText_ctl:setText(string::format("%, selecciona los requerimientos requeridos.", n
am)).
Finalmente se debe escribir el cdigo para el botnbtndiagnosticar_ctl, para esto se hace dobleclick en el botn mencionado con lo que aparecer el siguiente cdigo:
predicates
onBtndiagnosticarClick : button::clickResponder.
clauses
onBtndiagnosticarClick(_Source) = button::defaultAction.
el que se modificar de la siguiente manera:
-
8/12/2019 Texto Visual Prolog 7.4
18/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 17
domains
sintomas = string*.
facts
diagnostico:(sintomas,string,string).
clauses
diagnostico(["Sntoma_01","Sntoma_02","Sntoma_03"],"Enfermedad_01_02_03","Trata
miento_01_02_03").
diagnostico(["Sntoma_04","Sntoma_05"],"Enfermedad_04_05","Tratamiento_04_05").
predicates
onBtndiagnosticarClick : button::clickResponder.
clauses
onBtndiagnosticarClick(_Source) = button::defaultAction:-
edenfermedad_ctl:setText(""),
edtratamiento_ctl:setText(""),S=lbseleccionados_ctl:getAll(),
diagnostico(S,E,T),
edenfermedad_ctl:setText(E),
edtratamiento_ctl:setText(T),
!.
onBtndiagnosticarClick(_Source) = button::defaultAction:-
edenfermedad_ctl:setText(""),
edtratamiento_ctl:setText(""),
vpiCommonDialogs::error("Mensaje del Sistema","No existen respuestas para los sntomas seleccionados").
-
8/12/2019 Texto Visual Prolog 7.4
19/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 18
EJECUCIN DE LA APLICACIN EXPERTA NEUROLGICO
Figura 01: Pantalla con mensaje explicativo al usuario de la finalidad de la aplicacin exp
Fuente: (Elaboracin propia, 2014)
-
8/12/2019 Texto Visual Prolog 7.4
20/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 19
Figura 02: Pantalla general de la aplicacin experta.
Fuente: (Elaboracin propia, 2014)
-
8/12/2019 Texto Visual Prolog 7.4
21/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 20
Figura 03: Pantalla con opcin y subopciones de la aplicacin experta.
Fuente: (Elaboracin propia, 2014)
-
8/12/2019 Texto Visual Prolog 7.4
22/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 21
Figura 04: Pantalla donde se solicita nombre al usuario de la aplicacin experta.
Fuente: (Elaboracin propia, 2014)
-
8/12/2019 Texto Visual Prolog 7.4
23/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 22
Figura 05: Pantalla de bienvenida al usuario de la aplicacin experta.
Fuente: (Elaboracin propia, 2014)
-
8/12/2019 Texto Visual Prolog 7.4
24/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 23
Figura 06: Pantalla de consultas de la aplicacin experta.
Fuente: (Elaboracin propia, 2014)
-
8/12/2019 Texto Visual Prolog 7.4
25/26
Visual Prolog 7.4
Tenorio, Torres, Snchez Pgina 24
Figura 07 : Pantalla de resultados de la aplicacin experta.
Fuente: (Elaboracin propia, 2014)
-
8/12/2019 Texto Visual Prolog 7.4
26/26
Visual Prolog 7.4
SITIOS WEB
Prolog Development Center (PDC). [Fecha de consulta: 15 enero 2013]. Dispen: http://www.visual-prolog.com/
http://www.visual-prolog.com/http://www.visual-prolog.com/http://www.visual-prolog.com/http://www.visual-prolog.com/