{"id":10,"date":"2010-09-27T16:15:36","date_gmt":"2010-09-27T16:15:36","guid":{"rendered":"https:\/\/blogs.ua.es\/dar15\/?p=10"},"modified":"2010-09-27T16:15:36","modified_gmt":"2010-09-27T16:15:36","slug":"practicas-sesion-2","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/dar15\/2010\/09\/27\/practicas-sesion-2\/","title":{"rendered":"Pr\u00e1cticas Sesi\u00f3n 2"},"content":{"rendered":"<p>En esta segunda sesi\u00f3n ( 21\/09\/2010) hemos profundizado con prolog, hemos visto la sintaxis a emplear y las distintas partes de un programa en prolog:<\/p>\n<p><strong>Comentarios:<\/strong><\/p>\n<p><strong>Un comentario es<\/strong>: Texto dentro de un archivo de c\u00f3digo PROLOG (.pl)que es ignorado por el int\u00e9rprete\/compilador. Escribiendose de la siguiente manera:<\/p>\n<p>% Comentario<br \/>\n% M\u00e1s comentarios<br \/>\n\u2026\u00a0 sentencias de c\u00f3digo \u2026.<br \/>\n\/* Comentario<br \/>\nde 2 l\u00edneas\u00a0 o m\u00e1s*\/<\/p>\n<p><strong>Predicado es:<\/strong> Construcci\u00f3n l\u00f3gica que expresa propiedades y relaciones entre objetos. Se escriben de la siguiente manera : \u201cpredicado(arg1, arg2, arg3,\u2026.,argN)\u201d. Y siguen las siguientes normas:<\/p>\n<ol>\n<li>&#8211; Empiezan siempre por letra min\u00fascula.<\/li>\n<li>&#8211; No hay espacio entre el nombre y el par\u00e9ntesis.<\/li>\n<li>&#8211; Argumentos separados por comas.<\/li>\n<li>&#8211; Pueden tener 0 argumentos (y no habr\u00eda par\u00e9ntesis)<\/li>\n<li><strong>EJEMPLO: % habitacion(X): X es una habitaci\u00f3n<br \/>\nhabitacion(salon).<\/strong><\/li>\n<\/ol>\n<p><strong>Variable: <\/strong>Representaci\u00f3n abstracta de un objeto cualquiera, indeterminado, del dominio. Empiezan por letras may\u00fasculas o subrayado. No contienen espacios.<\/p>\n<p><strong> <\/strong>Ejemplos: %<br \/>\n% X<br \/>\n% _predicado<br \/>\n% VALOR<br \/>\n% Jugador_1<\/p>\n<p>Si hay \u201c_\u201d entonces es una variable an\u00f3nima: %_<\/p>\n<p><strong> <\/strong><\/p>\n<p><strong>Hecho: <\/strong>Indica unos valores concretos para los cuales ese predicado se cumple.<\/p>\n<p>Si un hecho est\u00e1 definido y preguntamos por \u00e9l se nos dira Yes, si no est\u00e1 definido un hecho y preguntamos por \u00e9l nos dir\u00e1 que no existe. Para preguntar por un hecho se ponen los valores de las variables, el int\u00e9rprete se encargar\u00e1 de buscar el hecho y nos responder\u00e1.<\/p>\n<p><strong>EJEMPLO: <\/strong><\/p>\n<p>% sumar(O1, O2, S): S es O1 + O2<br \/>\n% Cada una de las siguientes l\u00edneas<br \/>\n% es un hecho del predicado sumar\/3<br \/>\nsumar( 2, 2, 4).<br \/>\nsumar( 1, 5, 6).<br \/>\nsumar(-2,10, 8).<\/p>\n<p><strong>Definici\u00f3n de cabeza :- cuerpo: (Parte importante)<br \/>\n<\/strong><\/p>\n<p><strong>Cabeza:<\/strong> objetivo (cl\u00e1usula de un predicado) que puede ser cierto o falso, es decir, tener \u00e9xito o fracasar.<br \/>\n<strong>Cuerpo:<\/strong> condiciones de las que depende que cabeza tenga \u00e9xito o fracase.<\/p>\n<p>Ejemplo:<\/p>\n<p>mortal(david):-persona(david)<\/p>\n<p>Si preguntamos que si david es mortal obtendremos una respuesta afirmativa si david est\u00e1 definido como persona, es decir, la respuesta del cuerpo nos indicar\u00e1 la falsedad o veracidad de la cabeza.<\/p>\n<p><strong>Predicado predefinido<\/strong>: Un predicado que ya viene definido en<strong> SWI-PROLOG<\/strong> y que tiene alguna funcionalidad asociada. S\u00f3lo pueden utilizarse en preguntas al int\u00e9rprete o en el cuerpo de una regla. Si ponemos hechos de un predicado predefinido en un programa nuestro dar\u00e1 error al compilar, porque no podemos redefinirlo. Para conocer los predicados predefinidos de Swi-Prolog podemos utilizar la ayuda, poniendo ?- help. en el int\u00e9rprete. Un ejemplo ser\u00eda el write, consult, etc\u2026.<\/p>\n<p><strong>Preguntas:<\/strong> Durante la ejecuci\u00f3n de cualquier programa se pueden realizar preguntas a este, ya sea para realizar pruebas, por que lo exija la aplicaci\u00f3n, etc\u2026<\/p>\n<p>Por ejemplo si definimos un hecho: habitacion(cocina)<\/p>\n<p>Podemos preguntar si cocina es una habitacion poniendo: ?-habitacion(cocina).<\/p>\n<p>El sistema nos devolver\u00e1 un \u201cYes\u201d o un \u201cNo\u201d en funci\u00f3n de si ha encontrado una coincidencia o hecho igual a lo que le indicamos.<\/p>\n<p>Hay m\u00e1s formas de preguntar, podemos preguntar por todas las habitaciones, habitaciones con otro nombre, etc\u2026<\/p>\n<p>Cuando hagamos una pregunta que tenga varios resultados podemos ir pasando de uno a otro con \u201c;\u201d o pulsando la \u201cn\u201d.<\/p>\n<p><strong>Para escribir por pantalla<\/strong><br \/>\n<strong>% write(A):<\/strong> Escribe el \u00e1tomo A por pantalla.<\/p>\n<p><strong>Reglas con conectivas:<\/strong> Permiten describir condiciones complejas en reglas o preguntas al int\u00e9rprete. Las conectivas fundamentales son el conjuntor (,), el disyuntor (;) y el negador(not(A).<\/p>\n<p>Prolog<\/p>\n<p>&#8211; Intenta satisfacer los objetivos de izquierda a derecha<br \/>\n&#8211; Prolog recorre la BC de arriba hacia abajo.<\/p>\n<p>Aqui acaba el resumen de hoy, otro dia m\u00e1s y mejor<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta segunda sesi\u00f3n ( 21\/09\/2010) hemos profundizado con prolog, hemos visto la sintaxis a emplear y las distintas partes de un programa en prolog: Comentarios: Un comentario es: Texto dentro de un archivo de c\u00f3digo PROLOG (.pl)que es ignorado por el int\u00e9rprete\/compilador. Escribiendose de la siguiente manera: % Comentario % M\u00e1s comentarios \u2026\u00a0 sentencias [&hellip;]<\/p>\n","protected":false},"author":1754,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-10","post","type-post","status-publish","format-standard","hentry","category-general"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/posts\/10","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/users\/1754"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/comments?post=10"}],"version-history":[{"count":3,"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/posts\/10\/revisions"}],"predecessor-version":[{"id":13,"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/posts\/10\/revisions\/13"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/media?parent=10"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/categories?post=10"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/dar15\/wp-json\/wp\/v2\/tags?post=10"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}