{"id":449,"date":"2019-01-22T16:52:20","date_gmt":"2019-01-22T22:52:20","guid":{"rendered":"http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=449"},"modified":"2021-07-11T16:05:38","modified_gmt":"2021-07-11T21:05:38","slug":"sentencias-de-control","status":"publish","type":"page","link":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=449","title":{"rendered":"Sentencias de control"},"content":{"rendered":"<h1><strong>Sentencias de control en PROLOG<\/strong><\/h1>\n<p>En pr\u00e1cticamente todos los lenguajes de programaci\u00f3n, existen diferentes sentencias de control que nos ayudar a realizar la l\u00f3gica de programaci\u00f3n del c\u00f3digo realizado, sin embargo, estas sentencias de control, base en otros lenguajes, no existen de forma &#8220;natural&#8221; en PROLOG. Esto debido a las caracter\u00edsticas del paradigma de programaci\u00f3n l\u00f3gico en si mismo.<\/p>\n<p>Algunas de estas sentencias fueron posteriormente agregadas al lenguaje, a &#8220;petici\u00f3n&#8221; de los usuarios, y otras es necesario implementarlas a trav\u00e9s del mismo lenguaje. A continuaci\u00f3n se presentan tales sentencias.<\/p>\n<h2 style=\"text-align: center;\"><strong>If Then<\/strong><\/h2>\n<p>En PROLOG podemos realizar la siguiente estructura, para programar sentencias de control <em>If \u2013 then<\/em>.<\/p>\n<p>En este caso, podemos observar que <em>condition<\/em>, es la condici\u00f3n que se debe cumplir, seguido de -&gt; que ser\u00eda la primera resultante de esa condici\u00f3n, y seguido de ; que indica la acci\u00f3n <em>else<\/em>.<\/p>\n<pre class=\"lang:default decode:true \">( condition -&gt; then_clause ; else_clause )<\/pre>\n<p>Podemos ver el siguiente ejemplo<\/p>\n<pre class=\"lang:default decode:true \">(\u00a0\u00a0 X &lt; 0 -&gt;\u00a0\u00a0\u00a0 write('X es negativo'),\u00a0\u00a0\u00a0 fail;\r\nX =:= 0 -&gt;\u00a0\u00a0\u00a0 write('X is zero.');\r\nwrite('X is positive.'))<\/pre>\n<h2 style=\"text-align: center;\"><strong>While<\/strong><\/h2>\n<p>La sentencia <em>while<\/em>, no existe expl\u00edcitamente dentro del lenguaje de programaci\u00f3n PROLOG, por lo que es necesario simularla. Una forma de simularla es la mostrada a continuaci\u00f3n.<\/p>\n<pre class=\"lang:default decode:true \">prolog_while(0) : !.\r\nprolog_while(N, A) :-\u00a0 N1 is N -1,\u00a0\u00a0A1 is A + 1, prolog_while(N1, A1).<\/pre>\n<h2 style=\"text-align: center;\"><strong>Repeat<\/strong><\/h2>\n<p>En este caso la funci\u00f3n <em>repeat<\/em>, funciona para realizar una repetici\u00f3n de una funci\u00f3n una cantidad<em> N<\/em> de veces<\/p>\n<pre class=\"lang:default decode:true  \">repeat,\u00a0\u00a0\u00a0 \r\nread(Term),\u00a0\u00a0\u00a0 \r\n(Term == end_of_file\u00a0\u00a0\u00a0 -&gt; ! ;\u00a0 process(Term), fail).<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sentencias de control en PROLOG En pr\u00e1cticamente todos los lenguajes de programaci\u00f3n, existen diferentes sentencias de control que nos ayudar a realizar la l\u00f3gica de programaci\u00f3n del c\u00f3digo realizado, sin embargo, estas sentencias de control, base en otros lenguajes, no existen de forma &#8220;natural&#8221; en PROLOG. Esto debido a las caracter\u00edsticas del paradigma de programaci\u00f3n &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=449\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> &#8220;Sentencias de control&#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-449","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/449"}],"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=449"}],"version-history":[{"count":5,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/449\/revisions"}],"predecessor-version":[{"id":959,"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=\/wp\/v2\/pages\/449\/revisions\/959"}],"wp:attachment":[{"href":"https:\/\/virtual.cuautitlan.unam.mx\/intar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=449"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}