Este tutorial de programación en Prolog constituye                la primera entrega de una serie de cursillos            ...
Como observará en breve, Prolog carece dedeclaraciones     en     el    sentido   imperativo:secciones, declaraciones de t...
todas las variables anónimas se escriben                                   igual, son todas distintas. Es decir,Los operad...
La unificación es el mecanismo mediante el cuál las                        variables lógicas toman valor en Prolog. El val...
EJECUTANDO COSAS          PREDICADOS Y OBJETIVOS                            SECUENCIAS DE OBJETIVOS    Los predicados son ...
EL CODIGO                                   CLÁUSULAS SIN CUERPOCláusulas.- Los predicados sedefinen mediante un conjunto ...
Ejemplo simpleVeamos un predica do compuesto por una simple cláusula:•es_viejo(Individuo) :- edad(Individuo,Valor), Valor ...
El Shell es una aplicación más que podemos                                            ejecutar en nuestro sistema operativ...
Una vez que hemos compilado y cargado                 nuestro programa vamos a estudiar susPREDICADOS                 cara...
MI PRIMER PROGRAMA EN PROLOGLos programas se escriben en ficheros de texto, generalmente conextensión .pl. y pueden conten...
el código existe el predicado consult/1.CARGANDO CODIGO   Recuerde que puede ser necesario indicar                  la rut...
Ejercicios de prolog
4ta tarea de sistemas expertos
Upcoming SlideShare
Loading in …5
×

4ta tarea de sistemas expertos

382 views
315 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
382
On SlideShare
0
From Embeds
0
Number of Embeds
110
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

4ta tarea de sistemas expertos

  1. 1. Este tutorial de programación en Prolog constituye la primera entrega de una serie de cursillos orientados a aquellas personas que desconocen la programación declarativa relacional y su lenguaje rey: Prolog. un entorno de desarrollo Prolog se compone de: Un compilador. Transforma el código fuente en código de byte. A diferencia de Java, no existe un standard al respecto. PorProlog se necesita eso, el codigo de byte generado por un entorno de desarrollo no tiene por que funcionar en el intérprete de otro entorno.unicamente dos cosas: *un Un intérprete. Ejecuta el código de byte.editor de texto y un entorno Un shell o top-level. Se trata de una utilidad que per mitede desarrollo Prolog. *Como probar los programas, depurarlos, etc. Su funcionamiento eseditor de texto resulta similar a los interfaces de línea de comando de los sistemas operativos.altamente recomendable el Una biblioteca de utilidades. Estas bibliotecas son, enuso de Emacs. general, muy amplias. incluyen (afortunadamente) unas bibliotecas standard -ISO que permiten funcionalidades básicas como manipular cadenas, entrada/salida, etc.
  2. 2. Como observará en breve, Prolog carece dedeclaraciones en el sentido imperativo:secciones, declaraciones de tipo, declaraciones devariable, declaraciones de procedimientos, etc.Los comentarios en Prolog se escriben comenzando lalínea con un símbolo de porcentaje. Ejemplo:% Hola, esto es un comentario.% Y esto también.Se escriben como una secuencia de caracteresalfabéticos comenzando siempre por mayúscula osubrayado. Ejemplos de variables:Variable_Hola_Pero no son variables:variable$Holap
  3. 3. todas las variables anónimas se escriben igual, son todas distintas. Es decir,Los operadores simplemente mientras que dos apariciones de lasirven para escribir términos secuencia de caracteres Hola se refieren aunarios o binarios de una la misma variable, dos apariciones de lamanera más cómoda. Por secuencia _ se refieren a variables distintas.ejemplo, un factor definidocomo operador infijo es lasuma (+). Un término se compone de un factor seguido de cero a N Para referirnos a un término con argumentos entre paréntesis y el factor f y A argumentos separados por comas. Los números usamos la notación f/A. Por enteros o decimales sin ejemplo: p(a,b), p(1,f(j)), p(A,_) restricciones de tamaño también son todos ejemplos del término son términos. p/2.
  4. 4. La unificación es el mecanismo mediante el cuál las variables lógicas toman valor en Prolog. El valor que puede tomar una variable consiste en cualquier término, por ejemplo, j(3), 23.2, DANDO VALOR EJEMPLOS A LASPARADIGMÁTICOS VARIABLES Ejemplo: k(Z,Z) y k(4,H). Por culpa del primer argumento, Z se liga al valor 4. Por culpa del segundo argumento, Z y H unifican, pero como Z se liga a un valor, entonces H se liga a ese mismo valor, que es 4.
  5. 5. EJECUTANDO COSAS PREDICADOS Y OBJETIVOS SECUENCIAS DE OBJETIVOS Los predicados son los elementos En Prolog los objetivos se pueden ejecutables en Prolog. En muchos combinar mediante conectivas sentidos se asemejan a los propias de la lógica de primer procedimientos o funciones típicos de orden: los lenguajes imperativos. la conjunción, la disyunción y la negación. BACKTRACKINGSupongamos que PREDICADOS PREDICADO SIGNIFICADOdisponemos de dos PREDEFINIDOS (BUILT- < menor quepredicados p/1 y q/1 IN)que tienen varias > mayor que El más importante es lasoluciones (el orden es igualdad: =/2. Este predicado =< menor o igual quesignificativo): tiene éxito si sus dos >= mayor o igual quep(1) tiene éxito. p(2) argumentos unifican entre sí, falla en caso contrario. Por =:= igualdad aritméticatiene éxito. q(2) tieneéxito. ejemplo, el objetivo X = 3 == desigualdad aritmética
  6. 6. EL CODIGO CLÁUSULAS SIN CUERPOCláusulas.- Los predicados sedefinen mediante un conjunto de Si no existen condiciones para que unacláusulas: cláusula sea cierta podemos omitir el cuerpo. En tal caso solamente escribimos la cabeza terminada en punto. Por ejemplo: edad(juan,32). edad(luis,20). Podemos escribir las cláusulas en una sola CULTURILLA línea, si no lo hacemos es por legibilidad: a :- b,c,d.
  7. 7. Ejemplo simpleVeamos un predica do compuesto por una simple cláusula:•es_viejo(Individuo) :- edad(Individuo,Valor), Valor > 60.Ahora invocamos el objetivo es_viejo(luis). Para ello supongamos que la edad de Luis es 32 años, esdecir, el objetivo edad(luis,32) tiene éxito.Primero se unifica la cabeza de la cláusula con el objetivo. Es decir, unificamos es_viejo(luis)y es_viejo(Individuo), produciéndose la ligadura de la variable Individuo al valor luis. Como elámbito de visibilidad de la variable es su cláusula, la lig adura también afecta al cuerpo, luego estamosejecutando realmente:es_viejo(luis) :- edad(luis,Valor), Valor > 60.Ahora ejecutamos el cuerpo, que liga la variable Valor a 32. Pero el cuerpo falla porque el segundo objetivofalla (32>60 es falso). Entonces la cláusula falla y se produce back tracking. Como no hay más puntos deelección el objetivo falla. Es decir, Luis no es un viejo.EJEMPLO MENOS SIMPLEAhora veamos como las ligaduras que se producen en el cuerpo de la cláusula afectan ta mbién a la cabeza.Consideramos el siguiente predicado compuesto de una única cláusula:mayor que(Fulano,Mengano) :-edad(Mengano,EdadMengano), edad(Fulano,EdadFulanano), Edad Fulano >EdadMengano.Supongamos que la edad de Juan es 20 a ños y la de Luis es 32 años. Ejecutamos el objetivomayor_que(luis,Quien):
  8. 8. El Shell es una aplicación más que podemos ejecutar en nuestro sistema operativo. EnEl Shell de Prolog es una aplicación que nuestro caso, la aplicación se denominapermite ejecutar objetivos y ver las ciaosh. Al ejecutarla aparece un típicoligaduras de las variables de manera mensaje de bienvenida:interactiva Ciao-Prolog 1.4 #0: Sat Nov. 27 19:27:11 1999 ?- EL SHELL DE PROLOG EJECUTANDO EL SHELL MI PRIMER OBJETIVO Los únicos objetivos que podemos ejecutar corresponden a pre dicados predefinidos en el sistema. Nuestro predicado predefinido favorito es la igualdad =/2. Así que vamos a probarlo: Ciao-Prolog 1.4 #0: Sat Nov 27 19:27:11 1999 ?- t(X,3) = t(4,Z). X = 4, Z=3?
  9. 9. Una vez que hemos compilado y cargado nuestro programa vamos a estudiar susPREDICADOS características. Una de ellas es el backREVERSIBLES tracking, o la posibilidad de obtener varias PREDICADOS NO soluciones, como ya hemos visto. REVERSIBLES 2 ?- hermano(A,B). No todos los predicados son A = Juan reversibles. Por ejemplo, los de B = Adalberto ; comparación aritmética. El A = Adalberto B = Juan ; predicado >/2 sirve para saber si A = Alberto un número es mayor que otro, B = Gerónimo ; pero no sirve para saber todos los A = Gerónimo números mayores que uno dado B = Alberto ; (puesto que son infinitos). No 3 ?-
  10. 10. MI PRIMER PROGRAMA EN PROLOGLos programas se escriben en ficheros de texto, generalmente conextensión .pl. y pueden contener comentarios y código
  11. 11. el código existe el predicado consult/1.CARGANDO CODIGO Recuerde que puede ser necesario indicar la ruta completa del fichero fuente
  12. 12. Ejercicios de prolog

×