{"id":432,"date":"2018-12-27T19:35:22","date_gmt":"2018-12-28T01:35:22","guid":{"rendered":"http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=432"},"modified":"2021-07-11T16:25:54","modified_gmt":"2021-07-11T21:25:54","slug":"objetos-con-prolog","status":"publish","type":"page","link":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=432","title":{"rendered":"Objetos con PROLOG"},"content":{"rendered":"<h1><strong>Ambientes Visuales<\/strong><\/h1>\n<p>Sabemos que es importante generar una interacci\u00f3n con nuestro software, no solo desde terminal, sino que este pueda ser atractivo visualmente, para este fin obviamente es necesario auxiliarnos de elementos como botones, im\u00e1genes, ventanas, etc. Con esta finalidad, se cre\u00f3 la librer\u00eda PCE, la cual permite a PROLOG poder generar cuadros de dialogo y dise\u00f1ar interfaces visuales, esto trabajando desde un esquema orientado a objetos, de esta manera, se pueden crear clases y trabajar con diferentes objetos.<\/p>\n<p>Si creamos objetos, tambi\u00e9n podremos destruirlos.<\/p>\n<h2 style=\"text-align: center;\"><strong>Open y destroy<\/strong><\/h2>\n<p>Estos comandos son los comandos de uso para trabajar con los objetos visuales b\u00e1sicos, ya que <em>open():<\/em> abre la ventana de di\u00e1logo visualiz\u00e1ndola en pantalla, y <em>destroy()<\/em> cierra la ventana de dialogo visualizada en pantalla. Para poder abrir o destruir los objetos generados, es necesario utilizar el comando <em>send,<\/em> tal como puede verse a continuaci\u00f3n.<\/p>\n<pre class=\"lang:default decode:true \">send(D, open).\r\nsend(D, destroy).<\/pre>\n<p>Los cuales\u00a0 abren el objeto <em>D<\/em>, y posteriormente env\u00edan la instrucci\u00f3n para destruir dicho objeto.<\/p>\n<h2 style=\"text-align: center;\"><strong>Append y message<\/strong><\/h2>\n<p>Podemos generar combinaciones entre los objetos visuales y mensajes por medio de los comandos\u00a0 <em>append<\/em> y <em>message.<\/em><\/p>\n<p><strong>Append: <\/strong>\u00a0es utilizado para insertar un objeto dentro de otro objeto, por ejemplo un dialogo, visualiz\u00e1ndolo en el mismo.<\/p>\n<p><strong>Message: <\/strong>indica el mensaje o acci\u00f3n que queremos que sea ejecutado cuando pulsemos sobre el bot\u00f3n con el rat\u00f3n.<\/p>\n<h2><strong>Cuadros de dialogo<\/strong><\/h2>\n<p>Podemos generar cuadros de dialogo desde PROLOG por medio del siguiente comando:<\/p>\n<pre class=\"lang:default decode:true \">dialog(label=[name], size=[size], display=[display])<\/pre>\n<p>del que podemos observar que el primer argumento es una etiqueta que llevara el cuadro, el tama\u00f1o del cuadro y si queremos desplegar otro objeto.<\/p>\n<p>Ahora bien, para poder generar un dialogo, podemos utilizar el siguiente c\u00f3digo, en donde generamos un nuevo objeto, que ser\u00e1 un cuadro de dialogo, y ser\u00e1 almacenado en la variable <em>D<\/em>. Cuando hemos generado el objeto, lo mandamos llamar por medio de <em>send\\2.<\/em><\/p>\n<pre class=\"lang:default decode:true\">dialogo:- new(D,dialog('Titulo del Dialogo', size(440, 320))),\u00a0\r\nsend(D, open).<\/pre>\n<p>Como ya hemos generado este objeto, es posible tambi\u00e9n que podamos destruirlo, esto se realiza dando la siguiente instrucci\u00f3n, despu\u00e9s de abrir el objeto <em>D<\/em>, se llama al destructor para eliminar a <em>D<\/em>, tal como puede verse en la siguiente l\u00ednea de c\u00f3digo.<\/p>\n<pre class=\"lang:default decode:true \">cierra:- new(D,dialog('Titulo del Dialogo', size(440, 320))),\u00a0\r\nsend(D, open),send(D,destroy).<\/pre>\n<h2><strong>Botones<\/strong><\/h2>\n<p>Es posible generar botones que se encontraran dentro de un cuadro de dialogo, para la generaci\u00f3n de botones, tenemos la siguiente instrucci\u00f3n:<\/p>\n<pre class=\"lang:default decode:true \">button(name=name, message=[code]*, label=[name])<\/pre>\n<p>Donde se incluye un mensaje que ser\u00e1 transmitido por la interfaz. Una forma de ver la utilizaci\u00f3n de este comando, lo podemos visualizar en la siguiente secci\u00f3n de c\u00f3digo:<\/p>\n<pre class=\"lang:default decode:true \">boton:-new(D,dialog('Titulo del Dialogo', size(440, 320))), new(Boton, \r\nbutton('Salir', message(D, quit))), send(Boton, open).<\/pre>\n<p>En el cual se genera un dialogo guardado en<em> D<\/em> y un bot\u00f3n, guardado en la variable <em>Boton<\/em>.<\/p>\n<h2><strong>Etiquetas<\/strong><\/h2>\n<p>La generaci\u00f3n de las etiquetas esta dada por medio del comando:<\/p>\n<pre class=\"lang:default decode:true \">label(name=[name], selection=[string|image], font=[font])<\/pre>\n<p>donde tenemos el nombre que llevara el objeto, la selecci\u00f3n, que puede ser una cadena o una imagen que queremos que sea mostrada en \u00e9l;\u00a0 y el tipo de fuente.<\/p>\n<p>Podemos realizar una etiqueta por medio de<\/p>\n<pre class=\"lang:default decode:true \">label:-new(L, label(nombre, 'Lo que quieres decir')), send(L, open).<\/pre>\n<p>Donde generamos un objeto llamado etiqueta, guardado en la variable <em>L<\/em>.<\/p>\n<p><strong>Ejemplo 1.<\/strong> Inserta un objeto llamado \u00a0<em>Objeto<\/em> dentro de un cuadro de dialogo, visualiz\u00e1ndolo en el mismo.<\/p>\n<p>Para poder realizar este ejercicio, es necesario concatenar un bot\u00f3n dentro de otro objeto, tal como se ve a continuaci\u00f3n.<\/p>\n<pre class=\"lang:default decode:true \">send(D, append(button(\u2018Boton 1\u2019)))<\/pre>\n<p>Dando como resultado, la siguiente secci\u00f3n de c\u00f3digo:<\/p>\n<pre class=\"lang:default decode:true \">inserta:-new(D, dialog('Titulo del Dialogo', size(440, 320)) ), \r\nsend(D, append(button('Boton 1'))), send(D, open).<\/pre>\n<p>Donde insertamos un bot\u00f3n con valor \u201c<em>Boton 1<\/em>\u201d dentro de un cuadro de dialogo <em>D<\/em>.<\/p>\n<h2><strong>Ventanas<\/strong><\/h2>\n<p>WINDOW: Esta clase sirve para crear ventanas donde dibujar o poner otros objetos gr\u00e1ficos, y esta formada por medio de:<\/p>\n<pre class=\"lang:default decode:true \">window(label=[name], size=[size], display=[display])<\/pre>\n<p>Podemos generar una ventana utilizando la siguiente forma:<\/p>\n<pre class=\"lang:default decode:true \">inicio:-new(W,window('nombre ventana',size(320,200))),send(W,open).<\/pre>\n<p>Si queremos utiliza im\u00e1genes, debemos de tener en cuenta en que directorio se van a encontrar dichas im\u00e1genes. Si el directorio de donde se extraer\u00e1 la imagen es diferente del directorio por defecto, se utiliza la sentencia:<\/p>\n<pre class=\"lang:default decode:true \">pce_image_directory.<\/pre>\n<p>Para indicarle que se encuentra en el directorio donde esta el archivo de consulta utilizamos<\/p>\n<pre class=\"lang:default decode:true \">:- pce_image_directory(\u2018.\/directorio\u2019)<\/pre>\n<p>Para poder ver la aplicaci\u00f3n de los elementos multimedia presentados en esta secci\u00f3n, es recomendable ir a la p\u00e1gina <a href=\"http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=200\">http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=200\u00a0<\/a>en donde se podr\u00e1n encontrar diferentes proyectos realizados con PROLOG y PCE.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ambientes Visuales Sabemos que es importante generar una interacci\u00f3n con nuestro software, no solo desde terminal, sino que este pueda ser atractivo visualmente, para este fin obviamente es necesario auxiliarnos de elementos como botones, im\u00e1genes, ventanas, etc. Con esta finalidad, se cre\u00f3 la librer\u00eda PCE, la cual permite a PROLOG poder generar cuadros de dialogo &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=432\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;Objetos con PROLOG&#8221;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-432","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/432"}],"collection":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=432"}],"version-history":[{"count":4,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/432\/revisions"}],"predecessor-version":[{"id":957,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/432\/revisions\/957"}],"wp:attachment":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=432"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}