Jflambert lyada -ayudantia 1 prolog

  • 899 views
Uploaded on

Ayudantia 1 Logica y Analisis de Algoritmos - Introduccion a la programacion logica en PROLOG

Ayudantia 1 Logica y Analisis de Algoritmos - Introduccion a la programacion logica en PROLOG

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
899
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Prolog : Programming in Logic Logica y Analisis de Algoritmos Francisco Lambert 2010-1
  • 2.
    • Lenguaje de programación ideado a principios de los años 70 en la Universidad de Aix-Marseille (Marsella, Francia).
    • Se enmarca en el paradigma de los lenguajes lógicos y declarativos, lo que lo diferencia enormemente de otros lenguajes más populares tales como Fortran, Pascal, C o Java.
    • Se compone por Clausulas de Horn ,que constituyen reglas del tipo MODUS PONENS .
  • 3. CLAUSULAS DE HORN
    • Regla de inferencia logica con cero o mas premisas y un unico consecuente.
    • En Prolog se permiten solamente dos tipos de forma para una clausura de Horn :
    • Existe solo UNA proposicion Atomica en la Izquierda de la clausula (Clausula con cabeza), utilizada para definir Reglas .
    • El lado izquierdo estas Vacio (clausula sin cabeza), utilizada para definir Hechos .
  • 4. MODUS PONENS
    • En Latin : “ Modo que Afirmando Afirma“, es una regla de inferencia logica construida de la siguiente forma :
    • “ Si está soleado, entonces es de día.
    • Está soleado.
    • Por lo tanto, es de día.”
  • 5. Comenzando.... Instalacion
    • http://www.swi-prolog.org/download/stable Es el enlace donde podemos obtener los binarios de SWI Prolog , dependiendo del sistema operativo que tengamos instalado (actualmente soportado en Windows, Linux y MAC). El archivo pesa 7,7 mb .
    • Version Actual 5.8.3 2010-01-10.
    • La instalacion no es nada fuera de lo comun, se debe dejar todo por defecto e instalar simplemente .
  • 6. Interfaz
    • La ventana principal de SWI Prolog se ve asi :
    • Para crear un nuevo archivo vamos a File ->New...
    • Y estaremos en la carpeta Prolog, ahi generamos un Archivo Nuevo y comenzamos a Programar.
  • 7. Sintaxis
    • Las variables deben escribirse con Mayúsculas
    • Las constantes se escriben con Minúsculas
    • Las afirmaciones se terminan con . (punto)
    • No se pueden dejar espacios entre los nombres de las constantes, para ello utilizar el guion bajo (_).
    • Los comentarios empiezan con % .
    • Operadores
    • Conjunción -> , (coma)
    • Disyunción -> ; (punto y coma)
    • Regla o Condición -> :- (dos puntos y guion)
    • Fin de la condición -> . (punto)
  • 8. Hechos
    • • Proposiciones:
    • o “Juan es un programador”
    • o “El león es un mamífero”
    • programador(juan).
    • mamifero(leon).
    • • Nótese que se anota primero el
    • predicado y entre paréntesis el sujeto de
    • la proposición
  • 9. Relaciones
    • o “Juan es el padre de Miguel”
    • padre(juan, miguel).
    • • Sentencias condicionales
    • • “ Si el león come carne, entonces es
    • carnívoro”
    • carnivoro(leon):- comecarne(leon)
    Reglas
  • 10. Conjuncion
    • Emplea el operador lógico AND
    • Se utiliza la coma ( , ) :
    • tia(X,Y):-hermana(X,Z),padre(Z,Y).
    • Emplea el operador lógico OR
    • Se utiliza el punto y coma ( ; )
    • hijo(X,Y):-padre(Y,X);madre(Y,X).
    Conjuncion Disyuncion
  • 11. Consultas
    • • No es necesario programar el mecanismo de búsqueda
    • • Utiliza la resolución en sus derivaciones (generalización del modus ponens junto con la unificación)
    • lagarto(iguana).
    • serpiente(vibora).
    • mamifero(conejo).
    • Las consultas son interactivas mediante el indicador de comandos (?-):
    • ?- lagarto(iguana).
    • Yes. (Respuesta de Prolog )
  • 12.
    • Se puede usar variables en las Consultas , de la siguiente forma :
    • lagarto(X).
    • X=iguana .
    • La X es la variable, que debe de ser Mayuscula. En Caso de que existiera mas de un valor posible para X, Prolog nos entrega UN resultado por pantalla, si quedamos conformes presionamos ENTER y continuamos, si queremos mas valores presionamos ; y prolog continuara entregandonos las respuestas .
  • 13. Ejemplo
    • pais(usa).
    • pais(canada).
    • pais(mexico).
    • capital(usa,washington).
    • capital(canada,ottawa).
    • capital(mexico,cd_mexico).
    • %Consultas realizadas:
    • ?- pais(mexico).
    • yes.
    • ?- capital(canada,washington).
    • no.
    • ?- pais(japon).
    • no.
    • ?- pais(X).
    • X=usa ;
    • X=canada ;
    • X=mexico
    • Yes
    • ?- capital(canada,B).
    • B=ottawa
    • yes.
    • ?- capital(R,washington).
    • R=usa
    • yes.
    • .
    Ejemplo
  • 14. BACKTRACKING
    • Las consultas pueden tener una o varias metas , Consideremos el sig. ejemplo:
    • compra(X,Y):-sevende(Y),gusta(X,Y),bueno(Y).
    • sevende(vestido).
    • sevende(sombrero).
    • sevende(zapatos).
    • gusta(jaime,zapatos).
    • gusta(maria,vestido).
    • gusta(maria,sombrero).
    • bueno(sombrero).
    • • La regla compra tiene éxito si todas sus
    • metas tienen éxito.
  • 15. BACKTRACKING
    • Prolog intenta satisfacer las metas de la consulta de izquierda a derecha y para cada meta va probando las cláusulas correspondientes .
    • 1er. Intento:
    • compra(Z, vestido ):- sevende( vestido ),gusta(Z, vestido ),bueno( vestido ).
    • Busca la cláusula para sustituir Z (de izq. a der.), teniendo a vestido como segundo argumento y encuentra gusta( maria , vestido )
    • Se tiene ahora:
    • compra( maria , vestido ):- sevende( vestido ),gusta( maria , vestido ), bueno( vestido ).
    • La regla fracasa porque no hay regla que satisfaga bueno( vestido )
  • 16. BACKTRACKING
    • • Esto no significa que compra(maria,vestido) haya fracasado, sino que se ha seleccionado una cláusula que no conduce a la solución.
    • • Por esa razón es necesario aplicar un retroceso (backtracking).
    • 2do. Intento:
    • compra(Z, sombrero ):- sevende( sombrero ),gusta(Z, sombrero ),bueno( sombrero ).
    • Busca la cláusula para sustituir Z (de izq. a der.), teniendo a sombrero como segundo argumento y encuentra gusta( maria , sombrero )
    • Se tiene ahora:
    • compra( maria , sombrero ):- sevende( sombrero ),gusta( maria , sombrero ), bueno( sombrero ).
    • La regla fracasa porque no hay regla que satisfaga bueno( sombrero )
  • 17. OPERADORES
  • 18. FUNCIONES
  • 19. EJERCICIO
    • Crear un fichero nuevo llamado patos.
    • Expresar el hecho “donald, lucas y gilito son patos”.
    • Expresar que sabemos que S es un pato si es sobrino de T y T es un pato.
    • Añadir que juanito, jaimito y jorgito son sobrinos de donald.
    • Por ultimo, sabemos que un pato tiene plumas y hace cuac, por lo tanto añadiremos eso a nuestro programa .
    • Piolin y daisy tienen plumas pero solo daisy hace cuac.
    • Importante : Luego de tener el codigo listo, se debe compilar en Compile -> Compile Buffer . Si editamos un fichero y lo compilamos denuevo, al volver a prolog deberemos cargarlo nuevamente, eso se realiza automatico luego de la compilacion o manualmente con la orden consult(nombreFichero) (En este caso, consult(patos).)
    • Al Terminar la orden halt nos cerrara el programa .
  • 20. EJERCICIO %patos% %Francisco Lambert Espinoza% %Logica y Analisis de Algoritmos% %24-03-2010% esPato(lucas). esPato(donald). esPato(gilito). esPato(S):-sobrino(S,T),esPato(T). esPato(P) :- tienePlumas(P),haceCuac(P). sobrino(jorgito,donald). sobrino(jaimito,donald). sobrino(juanito,donald). tienePlumas(piolin). tienePlumas(daisy). haceCuac(daisy).
  • 21. .-
    • Proxima Clase Tarea