Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lenguajes de Programación
Universidad Técnica Federico Santa María
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Lenguaje Prolog
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Características de Prolog
• Basado en Lógica y programación declarativa
• Produce estilo de programación orientado a metas
• No se especifica cómo debe hacerse, sino qué
debe lograrse (alto nivel)
• El programador se concentra más en el
conocimiento que en los algoritmos
• ¿Qué es conocido? (hechos y relaciones )
• ¿Qué preguntar? (cómo resolverlo)
V-2-3
1
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Aplicaciones de Prolog
• Pruebas Matemáticas
– Demostración de teoremas
• Inteligencia Artificial
– Sistemas Expertos
• Consultas a base de datos
– Permite inferir relaciones no especificadas a
priori
V-2-4
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
padre(maria, pedro).
padre(juan, pedro). maria
maria juan
juan
padre(juan, carola).
padre(pedro, ana). pedro
pedro carola
carola
padre(pedro, paty).
padre(paty, aldo).
ana
ana paty
paty
aldo
aldo
V-2-5
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Consultas en Prolog
?- padre(pedro, ana).
=> yes
?- padre(ana, paty).
=> no
?- padre(X, carola).
=> X = juan
?- padre(pedro, X).
=> X = ana ;
=> X = paty ;
=> no
V-2-6
2
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Consulta: Ejemplo 1
V-2-7
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Consulta: Ejemplo 2
Preguntar por los nietos de juan:
=> X = pedro
Y = paty
V-2-8
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Consulta: Ejemplo 3
Preguntar si ana y paty tienen un padre en común:
V-2-9
3
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Otros Hechos
Agregar cláusulas sobre el sexo de las personas
(relaciones unarias):
femenino(maria).
masculino(juan).
masculino(pedro).
femenino(carola).
femenino(ana).
femenino(paty).
masculino(aldo).
V-2-10
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Alternativa de definición de
hechos
Podría haberse definido también con una relación binaria:
sexo(maria, femenino).
sexo(juan, masculino).
sexo(pedro, masculino).
sexo(carola, femenino).
sexo(ana, femenino).
sexo(paty, femenino).
sexo(aldo, masculino).
V-2-11
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Reglas en Prolog
• La relación:
a⊂b
• se expresa en Prolog como:
a :- b.
• Una cláusula de este tipo se denomina regla, que
tiene la siguiente estructura:
• la cabeza (parte izquierda de :- ) es la conclusión
• la proposición definida en el cuerpo (parte derecha de :- )
V-2-12
4
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Resolución Simple
• La relación hijo de corresponde a:
∀ X, Y : (Y es hijo de X) ⊂ (X es padre de Y)
• que se expresa en Prolog como:
hijo(X, Y) :- padre(Y, X).
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Ejemplo de Reglas
V-2-14
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Ejemplo de Consulta
?- hermana(ana, paty).
=> yes
?- hermana(X, paty).
=> X = ana ;
=> X = paty
5
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Observaciones
• Programas Prolog se extienden simplemente agregando más cláusulas
• Cláusulas son de tres tipos: hechos, reglas y consultas
• Reglas declaran cosas que cuya verdad depende de otras condiciones
• Por medio de consultas el usuario puede solicitar al programas que
establezca qué cosas son verdad
• Una cláusula tiene una cabeza y un cuerpo. El cuerpo son metas
separadas por comas (conjunción)
• Hechos son cláusulas que no tienen cuerpo
• Preguntas sólo tienen cuerpo
• Reglas tienen cabeza y cuerpo
• Una evaluación puede sustituir una variable X por otro objeto (se dice
que X se instancia)
• Variables se cuantifican universalmente (∀)
V-2-16
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Reglas Recursivas
V-2-17
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Ejemplo de Consulta
% Consultar por los descendientes de maria
?- antepasado (maria, X)
=> X = pedro ;
=> X = ana ;
=> X = paty ;
=> X = aldo
V-2-18
6
Departamento de Informática
Lenguajes de Programación
Universidad Técnica Federico Santa María
Resolución de Consulta
antepasado(juan,paty)
antepasado(juan, paty)
Regla#1 Regla#2
maria
maria juan
juan
padre(juan, X)
padre(juan, paty)
antepasado(X, paty)
NO Hecho: pedro
pedro carola
carola
X=pedro
padre(juan, pedro)
antepasado(pedro, paty) ana
ana paty
paty
Regla#1
aldo
aldo
padre(pedro, paty)
SI V-2-19