1
Introduccin a Prolog
Conceptos Bsicos (1/2)
Prolog es un lenguaje de programacin
basado en la programacin lgica
deductiva
Desarrollado por la Universidad de
Edimburgo
Poderoso para la deduccin de conocimiento
basado en una serie de hechos
La base de prolog es el backtracking
2
Conceptos Bsicos (2/2)
Existen diversos compiladores de prolog
B-prolog
Strawberry Prolog
DGKS Prolog
GNU Prolog
Logtalk
SWI Prolog
SWI-Prolog
Desarrollado por la Universidad de
Amsterdam
Disponible para varias plataformas
Unix
Linux
Windows
3
Iniciando
Para iniciar una sesin de trabajo se tienen dos
opciones
Ejecutando un archivo prolog (.pl)
Ejecutando la aplicacin (no recomendable)
Leer Archivos
Para cargar archivos se usa la sintaxis
?- load_files([listas,familia2]).
?- [listas, familia2].
Si los archivos no se encuentran en el
archivo activo de swi-prolog (comando
pwd), se usa la sintaxis:
?- [d:/itesm/archivo].
4
Sobre Archivos Prolog
Los archivos se pueden editar en
cualquier editor de texto sin formato
Tambin se pueden editar archivos con el
editor de swi o con emacs
?- emacs.
Sintaxis
Toda instruccin se ejecuta llamando a la
funcin especfica
Si se encuentra una solucin, significa que
la consulta se pudo empatar con una
funcin previamente definida
Si existe ms de una solucin, se usa ; para
mostrar otras soluciones en backtracking
En caso contrario, reporta con no
5
Ejemplos
familiar(padre,jesus,pepe).
familiar(hermano,pepe,carlos).
quees(X,Y,Z):-familiar(Z,X,Y).
quees(X,Y,Z):-familiar(Z,Y,X).
En prolog, las consultas se hacen de dos
formas:
Buscando un empate con variables
Buscando un empate con constantes
Ejemplos
Como sera la consulta
quin es el padre de pepe?
Qu relacin tiene pepe con jesus y carlos?
Qu tendras que hacer para sacar la
relacin entre jesus y carlos?
6
Factorial
En prolog tambin es posible usar e
implementar funciones aritmticas
Cmo se calculara el factorial de un nmero
n
TIP: directamente se pueden usar las
comparaciones.
La asignacin del valor a al valor b es b is a
Listas
Las listas se manipulas bsicamente a
travs de la cabeza y el resto
Sintaxis
[X|Y]
Una cabeza tambin puede ser una lista
7
Ejercicio
Realizar un programa en prolog que dada
una lista, invierta sus valores
Realizar un programa en prolog que
ordene de forma ascendente a la lista