{"id":4254,"date":"2016-08-23T12:54:17","date_gmt":"2016-08-23T11:54:17","guid":{"rendered":"http:\/\/smart--grid.net\/?page_id=4254"},"modified":"2022-12-03T23:00:11","modified_gmt":"2022-12-03T22:00:11","slug":"programmation-logique","status":"publish","type":"page","link":"https:\/\/complex-systems-ai.com\/es\/algoritmico\/programacion-logica-2\/","title":{"rendered":"Programaci\u00f3n l\u00f3gica"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"4254\" class=\"elementor elementor-4254\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4d98395 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4d98395\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-4ab0d0e\" data-id=\"4ab0d0e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-511e75f elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"511e75f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/es\/algoritmico\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Algor\u00edtmico<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-a8fa60f\" data-id=\"a8fa60f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a538674 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"a538674\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/es\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Pagina de inicio<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-624dd2f\" data-id=\"624dd2f\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c402b69 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"c402b69\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Programmation_logique\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Wiki<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-4e82a9cc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"4e82a9cc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-238fac2b\" data-id=\"238fac2b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-72ab5b8c elementor-widget elementor-widget-text-editor\" data-id=\"72ab5b8c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenido<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Tabla de contenido alternativo\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Palanca<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><ul class='ez-toc-list-level-2' ><li class='ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/complex-systems-ai.com\/es\/algoritmico\/programacion-logica-2\/#Programmation-logique\" >Programaci\u00f3n l\u00f3gica<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/complex-systems-ai.com\/es\/algoritmico\/programacion-logica-2\/#Regles-faits-et-buts\" >Reglas, hechos y metas<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/complex-systems-ai.com\/es\/algoritmico\/programacion-logica-2\/#Syntaxe-Prolog\" >Sintaxis del pr\u00f3logo<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/complex-systems-ai.com\/es\/algoritmico\/programacion-logica-2\/#Ecrire-un-programme-Prolog\" >Escribe un programa de Prolog<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Programmation-logique\"><\/span>Programaci\u00f3n l\u00f3gica<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"wp-block-paragraph\"><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">La programaci\u00f3n l\u00f3gica es la declaraci\u00f3n de una serie de hechos y reglas de deducci\u00f3n. La ejecuci\u00f3n de un programa consiste en demostrar un teorema. El programa responde si el teorema se puede probar o no a partir de los enunciados hechos de antemano.<\/p>\n<p><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">La programaci\u00f3n l\u00f3gica es diferente a la programaci\u00f3n procedimental (C, JAVA, etc.), los c\u00e1lculos se realizan en forma de pruebas l\u00f3gicas. Hablamos de programaci\u00f3n declarativa: el programa describe una situaci\u00f3n correspondiente a un problema a resolver. La programaci\u00f3n declarativa no es incompatible con la estructuraci\u00f3n de objetos.<\/p>\n<p><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">Las f\u00f3rmulas expresadas en Prolog est\u00e1n restringidas a cl\u00e1usulas de Horn y l\u00f3gica de primer orden. Una cl\u00e1usula de Horn es una cl\u00e1usula con como m\u00e1ximo un literal positivo. Estos no ser\u00e1n explicados sino impl\u00edcitos en las explicaciones del lenguaje Prolog.<\/p>\n<p><\/p>\n<p><\/p>\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Regles-faits-et-buts\"><\/span>Reglas, hechos y metas<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><\/p>\n<p><\/p>\n<div style=\"padding: 5px; background-color: #ffdcd3; border: 2px solid #ff7964; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px;\">Si la cl\u00e1usula Horn tiene un literal positivo y al menos un literal negativo, son <strong>normas<\/strong> :<br \/><em>qqbe x, y, z, \u00achijo (x, y) \u2228 \u00achijo (y, z) \u2228 nieto_hijo (x, z)<\/em> que es igual<br \/><em>hijo (x, y) \u2227 hijo (y, z) \u21d2 nieto_hijo (x, z)<\/em><\/div>\n<p><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">est\u00e1 escrito en Prolog: <em>nieto_de (X, Z): - hijo_de (X, Y), hijo_de (Y, Z) <\/em><\/p>\n<p><\/p>\n<p><\/p>\n<div style=\"padding: 5px; background-color: #ffdcd3; border: 2px solid #ff7964; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px;\">Puede escribir cl\u00e1usulas Horn sin un literal negativo (cl\u00e1usulas Horn positivas), pero con solo un literal positivo. Esos son<strong> hechos<\/strong> : <em>hijo_de (&#039;Bernardo&#039;, &#039;Bernadette&#039;). <\/em><\/div>\n<p><\/p>\n<p><\/p>\n<div style=\"padding: 5px; background-color: #ffdcd3; border: 2px solid #ff7964; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px;\">Podemos escribir cl\u00e1usulas Horn sin literales positivos (cl\u00e1usulas Horn negativas), pero solo con literales negativos. Esos son <strong>metas<\/strong> : <em>? -ni\u00f1o_peque\u00f1o_de (B, &#039;germaine&#039;), sobrino (X, Y). <\/em><\/div>\n<p><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">Por lo tanto, un programa es un conjunto de hechos y reglas, todo en forma de cl\u00e1usulas Horn. El int\u00e9rprete de Prolog utiliza esta base de conocimientos para alcanzar sus objetivos.<\/p>\n<p><\/p>\n<p><\/p>\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Syntaxe-Prolog\"><\/span>Sintaxis del pr\u00f3logo<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><\/p>\n<p><\/p>\n<div style=\"padding: 5px; background-color: #d5edff; border: 2px solid #3c95e8; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px;\">\n<p>La sintaxis consta de:<\/p>\n<ul style=\"text-align: justify;\">\n<li><strong>Constantes<\/strong> : n\u00fameros enteros o de coma flotante, valores booleanos, identificadores y cadenas.<\/li>\n<li><strong>Variables<\/strong> : identificado por cadenas de caracteres que comienzan con una letra may\u00fascula o un gui\u00f3n bajo (si no se especifica, es decir, sin inter\u00e9s para el usuario). Variable es en el sentido matem\u00e1tico, siempre representa el mismo objeto y no cambia de valor en la misma rama de prueba.<\/li>\n<li><strong>Predicado<\/strong> : identificado por cadenas de caracteres que comienzan con una letra min\u00fascula. Un predicado tiene aridad (el n\u00famero de argumentos que requiere). Los par\u00e1metros est\u00e1n separados por una coma, equivalente a AND; el OR es un punto y coma.<\/li>\n<\/ul>\n<\/div>\n<p><\/p>\n<p><\/p>\n<div style=\"padding: 5px; background-color: #d5edff; border: 2px solid #3c95e8; -moz-border-radius: 9px; -khtml-border-radius: 9px; -webkit-border-radius: 9px; border-radius: 9px;\">\n<p>Reglas y hechos:<\/p>\n<ul>\n<li style=\"text-align: justify;\">un hecho es un predicado con constantes como par\u00e1metros: <em>padre (&#039;Bernard&#039;, &#039;Bernardo&#039;)<\/em><\/li>\n<li style=\"text-align: justify;\">una regla consta de una cabeza (literal positivo) y una cola (conjunci\u00f3n de literales negativos que terminan con un punto:<em> sobrino (X, Y): - hijo (X, Z), hermano_o_hermana (Y, Z).<\/em><\/li>\n<\/ul>\n<\/div>\n<p><\/p>\n<p><\/p>\n<h1 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Ecrire-un-programme-Prolog\"><\/span>Escribe un programa de Prolog<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">Un programa es una lista de hechos y reglas. Agrupamos las reglas que tienen el mismo predicado principal y los hechos que se relacionan con el mismo predicado. El orden en el que se declaran las reglas puede tener un impacto en los goles.<\/p>\n<p><\/p>\n<p><\/p>\n<div style=\"padding: 3px; border: 2px dotted #a5a5a5; background-color: #f6f9fa;\">\n<pre>hijo_de (&#039;roger&#039;, &#039;gertrude&#039;). hijo_de (&#039;gertrude&#039;, &#039;germaine&#039;). hijo_de (&#039;marcel&#039;, &#039;robert&#039;). hermano_o_hermana (&#039;gertrude&#039;, &#039;robert&#039;). sobrino (X, Y): - hijo (X, Z), hermano_o_hermana (Y, Z). nieto_de (X, Y): - hijo_de (X, Z), hijo_de (Z, Y).<\/pre>\n<\/div>\n<p><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">Una constante (&#039;roger&#039;) cubre todo el programa mientras que una variable solo existe en la cl\u00e1usula donde se encuentra. Entonces, la variable X de sobrino (X, Y) no es la misma que la de nieto_hijo_ de (X, Y). Por otro lado, es lo mismo que en la conjunci\u00f3n que se le asocia.<\/p>\n<p><\/p>\n<p><\/p>\n<p class=\"wp-block-paragraph\">Una vez cargados los programas y, por tanto, constituida la base de hechos y reglas, es posible hacer preguntas. A esto se le llama demostraci\u00f3n o resoluci\u00f3n de preguntas. Surge una pregunta al reemplazar una regla o al hacer una constante o variable por un &#039;?&#039;. Para conocer todas las reglas de un tipo, escriba el nombre de la regla que contiene las variables seguido de un &#039;?&#039; : <em>humano (H)? <\/em>Se utiliza para conocer a todos los humanos de la base.<\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-9658 size-full\" src=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/Fundamental_Prolog_2_fig1.png\" alt=\"l\u00f3gica programaci\u00f3n algoritmo paradigma pr\u00f3logo\" width=\"465\" height=\"269\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/Fundamental_Prolog_2_fig1.png 465w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/Fundamental_Prolog_2_fig1-300x174.png 300w\" sizes=\"(max-width: 465px) 100vw, 465px\" \/><\/p>\n<p><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"<p>Algoritmos Inicio Wiki Programaci\u00f3n L\u00f3gica La programaci\u00f3n l\u00f3gica es el enunciado de una serie de hechos y reglas de deducci\u00f3n. Ejecutando un programa... <\/p>","protected":false},"author":1,"featured_media":0,"parent":1062,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4254","page","type-page","status-publish","hentry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/4254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/comments?post=4254"}],"version-history":[{"count":4,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/4254\/revisions"}],"predecessor-version":[{"id":17938,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/4254\/revisions\/17938"}],"up":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/pages\/1062"}],"wp:attachment":[{"href":"https:\/\/complex-systems-ai.com\/es\/wp-json\/wp\/v2\/media?parent=4254"}],"curies":[{"name":"gracias","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}