Top Banner
Lenguajes de Programación Lenguajes lógicos: PROLOG M.C Said Zamora
33

Lenguajes de Programación PROLOG

Dec 04, 2015

Download

Documents

SaidZamora

Notas de PROLOG
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Lenguajes de Programación   PROLOG

Lenguajes de ProgramaciónLenguajes lógicos: PROLOG

M.C Said Zamora

Page 2: Lenguajes de Programación   PROLOG

Lenguajes lógicos

• Utilizan constructores lógicos para establecer relaciones.

• Átomos.

Page 3: Lenguajes de Programación   PROLOG

PROLOG

• Hechos

• Reglas

• Base de conocimiento.

• Búsquedas.

Page 4: Lenguajes de Programación   PROLOG

Base de conocimiento

• mujer(ana).

• mujer(juany).

• mujer(yolanda).

• tocaguitarra(juany).

• fiesta.

Page 5: Lenguajes de Programación   PROLOG

Búsquedas

• ?- mujer(ana).

• ?- mujer(genoveva).

• ?- party.

Page 6: Lenguajes de Programación   PROLOG

Creación de reglas.

• feliz(yolanda).

• escuchamusica(ana).

• escuchamusica(yolanda):- feliz(yolanda).

Page 7: Lenguajes de Programación   PROLOG

Búsquedas

• ?- mujer(X).

Page 8: Lenguajes de Programación   PROLOG

Base de conocimiento

• gusta(vicente,ana).

• gusta(marsellus,ana).

• gusta(calabaza,conejodechocolate).

• gusta(conejodechocolate,calabaza).

• celos(X,Y):- gusta(X,Z), gusta(Y,Z).

Page 9: Lenguajes de Programación   PROLOG

Archivos .pl

• ?- [kb2].

• ?- ['c:/Documents and Settings/…/Prolog/kb2.pl'].

• ?- listing.

Page 10: Lenguajes de Programación   PROLOG

Átomos

• String de caracteres.

• Secuencia arbitraria de caracteres entre comillas simples

• ’ &^%&#@$ &* ’

• String de caracteres especiales

• @= ====> ; :-

Page 11: Lenguajes de Programación   PROLOG

Números

• Enteros

• Flotantes

Page 12: Lenguajes de Programación   PROLOG

Variables

• X , Y , Variable , _variables , X_526 , Lista , Lista24

Page 13: Lenguajes de Programación   PROLOG

Actividad

• vINCENT• Footmassage• variable23• Variable2000• big_kahuna_burger• ’big kahuna burger’• big kahuna burger• ’Jules’• _Jules• ’_Jules’

Page 14: Lenguajes de Programación   PROLOG

Unificación

• Dos términos se unifican si son el mismo átomo

• ?- =(mia,mia).

• ?- =(mia,vincent).

Page 15: Lenguajes de Programación   PROLOG

Términos complejos

• Se construyen a partir de constantes, números y variables.

• Son llamados estructuras.

• Es una función seguido de sus argumentos.

Page 16: Lenguajes de Programación   PROLOG

Términos complejos

• canta(juany)

• busca(X,padre(padre(padre(ana))))

Page 17: Lenguajes de Programación   PROLOG

Aridad

• Número de argumentos que posee un termino complejo.

• mujer(ana)

Page 18: Lenguajes de Programación   PROLOG

Predicado

• gusta(vincent,mia)

• gusta(vincent,marsellus,mia)

• gusta/2

• gusta/3

Page 19: Lenguajes de Programación   PROLOG

Unificación de términos complejos

• Pertenecen al mismo funtor.

• Tienen la misma aridad.

• Sus argumentos pueden ser unificados.

• Las variables deben ser compatibles.

Page 20: Lenguajes de Programación   PROLOG

• ?- 2 = 2.

• yes

• ?- mia = vincent.

• No

• ?- 'mia' = mia.

• yes

Page 21: Lenguajes de Programación   PROLOG

• ?- '2' = 2.

• no

• ?- mia = X.

• X = mia

• yes

Page 22: Lenguajes de Programación   PROLOG

• ?- k(s(g),Y) = k(X,t(k)).

• X = s(g)

• Y = t(k)

Page 23: Lenguajes de Programación   PROLOG

• ?- father(X) = X.

• X = father(father(father(father(father(father• (father(father(father(father(father(father• (father(father(father(father(father(father• (father(father(father(father(father(father• (father(father(father(father(father(father

• X = father(father(father(father(...))))))))• yes

Page 24: Lenguajes de Programación   PROLOG

Recursividad

• digiere(X,Y) :- hacomido(X,Y).

• digiere(X,Y) :-

• hacomido(X,Z),

• digiere(Z,Y).

• hacomido(mosquito,sangre(cacerolo)).

• hacomido(rana,mosquito).

• hacomido(hacomido,rana).

Page 25: Lenguajes de Programación   PROLOG

Significado Declarativo y Procedimental

• Lo que dice, lo que significa como declaraciones lógicas.

• Si X digiere a Y, Prolog puede utilizar esta regla para preguntar si X se ha comido a Y.

Page 26: Lenguajes de Programación   PROLOG

• ?- digiere(caiman,mosquito).

• ?- hacomido(caiman,mosquito).

• Al unificar caimán con X y mosquito con Y

• ?- hacomido(caiman,Z),

• digiere(Z,mosquito).

Page 27: Lenguajes de Programación   PROLOG

• ?- hacomido(caiman,Z).

• ?- digiere(Z,mosquito).

• ?- hacomido(caiman,rana).

• ?- digiere(rana,mosquito).

• ?- hacomido(rana,mosquito).

Page 28: Lenguajes de Programación   PROLOG

Árbol genealógico

• hijo(anne,bridget).

• hijo(bridget,caroline).

• hijo(caroline,donna).

• hijo(donna,emily).

• descendiente(X,Y) :- hijo(X,Y).

• descendiente(X,Y) :- hijo(X,Z),

• descendiente(Z,Y).

Page 29: Lenguajes de Programación   PROLOG

Listas

• [mia, vincent, jules, yolanda]

• [mia, ladron(honey_bunny), X, 2, mia]

• []

• [mia, [vincent, jules], [butch, novia(butch)]]

• [[], muerto(z), [2, [b, c]], [], Z, [2, [b, c]]]

Page 30: Lenguajes de Programación   PROLOG

Listas

• ?- [Head|Tail] = [mia, vincent, jules, yolanda].

• Head = mia

• Tail = [vincent,jules,yolanda]

• yes

• ?- [X|Y] = [[], dead(z), [2, [b, c]], [], Z].

• X = []

• Y = [dead(z),[2,[b,c]],[],_7800]

• Z = _7800

• yes

Page 31: Lenguajes de Programación   PROLOG

Aritmética

• 6 + 2 = 8 8 is 6+2.

• 6 ∗ 2 = 12 12 is 6*2.

• 6 − 2 = 4 4 is 6-2.

• 6 − 8 = − 2 -2 is 6-8.

• 6 ÷ 2 = 3 3 is 6/2.

• 7 ÷ 2 = 3 3 is 7/2.

Page 32: Lenguajes de Programación   PROLOG

Aritmética y variables

• ?- 8 is 6+2.

• yes

• ?- 12 is 6*2.

• yes

• ?- X is 6*2.

• X = 12

• ?- R is mod(7,2).

• R = 1

Page 33: Lenguajes de Programación   PROLOG

Predicado aritmético

• sumatresyduplica(X,Y) :- Y is (X+3)*2.

• ?- sumatresyduplica(1,X).

• X = 8