TP Prolog
TP Prolog
TP Prolog
52823
Paradigmas de Programación
Universidad Tecnológica Nacional
Facultad Regional Tucumán
Ló gica proposicional refiere a la ló gica entre proposiciones, a las diferentes operaciones que
podemos aplicar entre proposiciones que nosotros consideremos verdaderas o falsas y como
esto nos lleva a conseguir nuevas proposiciones.
Hechos: Expresan relaciones entre objetos. Supongamos que queremos expresar el hecho de
que "un coche tiene ruedas". Este hecho, consta de dos objetos, "coche" y "ruedas", y de una
relació n llamada "tiene". La forma de representarlo en PROLOG es: tiene(coche, ruedas).
Los nombres de objetos y relaciones deben comenzar con una letra minú scula.
Primero se escribe la relació n, y luego los objetos separados por comas y encerrados
entre paréntesis.
Al final de un hecho debe ir un punto (el cará cter ".").
El orden de los objetos dentro de la relació n es arbitrario, pero debemos ser coherentes a lo largo de
la base de hechos.
Variables: Representan objetos que el mismo PROLOG determinará . Una variable puede
estar instanciada ó no instanciada. Estará instanciada cuando existe un objeto determinado representado
por la variable. De este modo, cuando preguntamos "¿Un coche tiene X?", PROLOG busca en los hechos
cosas que tiene un coche y respondería:
X = ruedas.
Los nombres de variables comienzan siempre por una letra mayú scula. Un caso particular es la variable
anó nima, representada por el cará cter subrayado ("_"). Es una especie de comodín que utilizaremos en
aquellos lugares que debería aparecer una variable, pero no nos interesa darle un nombre concreto ya
que no vamos a utilizarla posteriormente.
Reglas Las reglas se utilizan en PROLOG para significar que un hecho depende de uno ó mas hechos. Son
la representació n de las implicaciones ló gicas del tipo p ---> q (p implica q).
Una regla consiste en una cabeza y un cuerpo, unidos por el signo ":-".
La cabeza está formada por un ú nico hecho.
El cuerpo puede ser uno ó mas hechos (conjunció n de hechos), separados por una coma (","), que
actú a como el "y" ló gico.
Las reglas finalizan con un punto (".").
La cabeza en una regla PROLOG corresponde al consecuente de una implicació n ló gica, y el cuerpo al
antecedente. Este hecho puede conducir a errores de representació n. Supongamos el siguiente
razonamiento ló gico:
suelo(mojado)
Que el suelo esté mojado, es una condició n suficiente de que el tiempo sea lluvioso, pero no necesaria.
Por lo tanto, a partir de ese hecho, no podemos deducir mediante la implicació n, que esté lloviendo
(pueden haber regado las calles). La representació n correcta en PROLOG, sería:
suelo(mojado) :- tiempo(lluvioso).
suelo(mojado).
Operadores: Son predicados predefinidos en PROLOG para las operaciones matemá ticas bá sicas. Su
sintaxis depende de la posició n que ocupen, pudiendo ser infijos ó prefijos. Por ejemplo el operador suma
("+"), podemos encontrarlo en forma prefija '+(2,5)' ó bien infija, '2 + 5'. También disponemos de
predicados de igualdad y desigualdad.
X = Y igual
X \= Y distinto
X < Y menor
X > Y mayor
X =< Y menor o igual
X >= Y mayor o igual
?- esMadre (_,maría).
Todos son madre de maría
?- esMadre (X,_).
Alguien es madre de todos
?- esMadre (_,_).
Todos son madre de todos
?- esMadre (_,X).
Todos son madre de alguien
?- esMadre (X,Y).
Alguien es Madre de Alguien
1. Suponiendo que el predicado gusta (X, Y) indica que a X le gusta Y, escriba los objetivos
que habría que definir en Prolog para contestar las siguientes preguntas:
3. Se necesita un sistema que devuelva las siguientes categorías segú n las edades de esta familia.
Para ello debemos considerar que una persona es:
a) En base a esto, desarrollar las clá usulas que represente y que responda en qué categoría se
encuentra cada uno de sus familiares, teniendo en cuenta el siguiente á rbol:
Convierte en Prolog las siguientes preguntas en consultas, ejecú talas y obtiene los resultados.
✓ ¿Oscar es bebe?
✓ ¿Marcelo es adolescente?
4. Escriba un programa que cuente el nú mero de veces que un elemento se encuentra repetido en
una lista.
5. Escriba un programa en Prolog que borra un elemento de una lista, el resultado se guardará en
otra lista nueva. Por ejemplo, el resultado de borrar el valor a de la lista [b,a,g,a,h,b], sería la nueva
lista formada por [b,g,h,b].
6. Escriba un programa en Prolog que inserte de forma ordenada un entero en una lista ya
ordenada de enteros. NOTA: Guarde el resultado en una segunda lista.
7. Escriba un programa en Prolog que quite las repeticiones de elementos de una lista, guardando
el resultado en una segunda lista. Por ejemplo, si tenemos [a,b,h,b,a,j] se obtendría como resultado
la lista [a,b,h,j].
8. Dada la siguiente base de conocimiento, donde se indica cada materia que cursa cada alumno:
cursa(pedro, paradigmas).
cursa(mario, paradigmas).
cursa(pedro, operativos).
cursa(sara, sintaxis).
b) Todos los pares de estudiantes y materia que cursa que hay en la base ce conocimiento.
9. Librería “San Pablo” tiene en su base del conocimiento los siguientes productos indicando su
descripció n y precio:
✓ producto(cuaderno,570).
✓ producto(lapiz,50).
✓ producto(goma,25).
✓ producto(compaz,150).
✓ producto(carpeta,255).
✓ producto(folios,20).
✓ producto(cartuchera,920).
Las reglas que indican cada compra realizada por los clientes detallando el producto en su
descripció n y cantidad.
✓ compra(camila, producto(cuaderno,180)).
✓ compra(camila, producto(lapiz,55)).
✓ compra(lisandro, producto(compaz,39)).
✓ compra(lisandro, producto(goma,50)).
Se pide desarrollar haciendo uso de findall clá usulas de Horm que:
El enunciado tiene un error ya que primero dice que en la base de conocimiento las reglas
producto(x,y), y es el precio, mientras que luego dice que dicha regla indica la cantidad.
Plantearemos una solució n, dejando a y como el precio y agregando otra variable en la regla
compra, que será la cantidad.
Está n registradas todas las secciones de una empresa y la cantidad de personal a cargo.
✓ empleados(administració n,3).
✓ empleados (personal,1).
✓ empleados (produccion,10).
✓ ventas(180000).
b) porcentaje/3 que afirme que el recorte es nulo cuando los ingresos superan el total de
gastos.
c) porcentaje/3 que plantee que si las ventas con menores a los gastos, se resulta las
operaciones aritméticas del cá lculo porcentual.