Вы находитесь на странице: 1из 5

Prctica No.

6
Ejercicios en Prolog.
Introduccin
El lenguaje Prolog (Programacin Lgica) puede ser visto como un lenguaje prescriptivo asi como un lenguaje descriptivo.
El enfoque de Prolog es describir un conjunto de hechos conocidos y un conjunto de relaciones entre esos hechos
respecto al problema a solucionar, ms que describir la secuencia de pasos que debe seguir la computadora para
resolver el problema. Prolog tiene implementada cierta inteligencia para resolver el problema (esta inteligencia es un
mecanismo de razonamiento automtico llamado motor de inferencia basado en un algoritmo que se conoce como
resolucin).
Un programa en Prolog consiste de un conjunto de clasulas, donde cada clasula es, o un hecho o una regla acerca de
como puede inferirse alguna solucin para los hechos dados.
esposos

francisco
padres
mario

victoria
padres

esposos

esposos
alicia

eduardo

padres

veronica

padres
luis

beatriz
Figura 1.- Una bonita familia.

Actividades
1.- Captura las siguientes clasulas y guarda el archivo con el nombre familiares.pl (que representa las
relaciones familiares mostradas en la Figura 1).
/*
Archivo: Familiares.pl
Clausualas sobre una familia y reglas para determinar las relaciones
familiares
*/
varon(eduardo).
varon(francisco).
varon(luis).
varon(mario).
mujer(alicia).
mujer(veronica).
mujer(victoria).
mujer(beatriz).
padres(eduardo,francisco,victoria).
padres(alicia,francisco,victoria).
padres(luis,eduardo,veronica).
padres(beatriz,alicia,mario).
esposos(eduardo,veronica).

esposos(mario,alicia).
esposos(francisco,victoria).
hermana(Ella,X) :- mujer(Ella),padres(Ella,M,P),padres(X,M,P).
hermano(El,X) :- varon(El),padres(El,M,P), padres(X,M,P).
hijo(El,X) :- varon(El),padres(El,X,_).
hijo(El,X) :- varon(El),padres(El,_,X).
hija(Ella,X) :- mujer(Ella),padres(Ella,X,_).
hija(Ella,X) :- mujer(Ella),padres(Ella,_,X).

2.- Ejecuta el intrprete de Prolog dando click sobre su cono (tecleando pl, desde una terminal X en Linux)
2.1.- Para cargar el programa contenido en el archivo familiares.pl, tecleamos:
consult('familiares.pl').
O tambin puede cargarse tecleando:
['familiares.pl']
2.2.- Convierte a Prolog las siguientes preguntas, ejectalas y reporta los resultados:
a) Eduardo y Alicia son hermanos?
hermanos(eduardo,alicia).
Consulta en Prolog: _____________________________________________________
true
Resultados: __________________________________________________________
b) Quienes son los padres de Beatriz?
padres(beatriz,X,Y).
Consulta en Prolog: _____________________________________________________
Resultados: __________________________________________________________
X = alicia,
Y = mario.
c) Eduardo es hijo de Mario?
hijo(eduardo,mario).
Consulta en Prolog: _____________________________________________________
false.
Resultados: __________________________________________________________
d) Luis es hijo de Vernica?
hijo(luis,veronica).
Consulta en Prolog: _____________________________________________________
true
Resultados: __________________________________________________________
e) De quien es hija Beatriz?
hija(beatriz,X).
Consulta en Prolog: _____________________________________________________
X = alicia ;
Resultados: __________________________________________________________
X = mario.
2.3.- Define reglas para las relaciones nieto y nieta.
Regla para nieto: _______________________________________________________
Regla para nieta: _______________________________________________________
2.4.- Defina reglas para la relacin abuelo y abuela
Regla para abuelo: ______________________________________________________
Regla para abuela: ______________________________________________________
abuelo(El,X):varon(El),padres(X,M,P),((hijo(M,El);hijo(P,El));
(hija(M,El);hija(P,El))).
abuelo(El,X):varon(El),padres(X,M,P),((hijo(M,El);hijo(P,El));
(hija(M,El);hija(P,El))).
abuela(Ella,X):- mujer(Ella),padres(X,M,P),((hijo(M,Ella);hijo(P,Ella)); (hija(M,Ella);hija(P,Ella))).

2.5.- Edita el archivo familares.pl para agregar las reglas definidas en los pasos anteriores, guarda el archivo,
crgalo nuevamente en el intrprete de Prolog y realiza las siguientes consultas:
a) Eduardo es abuelo?
abuelo(eduardo,X).
Consulta en Prolog: _______________________________________________________
false
Resultados: ____________________________________________________________
b) Victoria es abuela?
abuela(victoria,X).
Consulta en Prolog: _______________________________________________________
X = luis ;
Resultados: ____________________________________________________________
X = beatriz ;
c) De quien es nieto Luis?
?- abuelo(X,luis).
abuela(X,luis).
Consulta en Prolog: _______________________________________________________
X = victoria ;
X = francisco ;
Resultados: ____________________________________________________________
d) Francisco es abuelo de Beatriz?
abuelo(francisco,beatriz).
Consulta en Prolog: _______________________________________________________
true ;
Resultados: ____________________________________________________________
2.6.- Define al menos 2 de las siguientes relaciones: sobrino, sobrina, cuado o cuada. Codifcala en Prolog, modifica el
archivo familares.pl y prueba que la relacin est bien definida por medio de varias preguntas.
Relacin: __________________________________________________________
Sobrina y sobrino
sobrina(Ella,X):- hija(Ella,Y),hermano(X,Y).
Codificacin:____________________________________________________________
sobrino(El,X):- hijo(El,Y),hermana(X,Y).
___________________________________________________________________
Preguntas y resultados:
sobrina(X,francisco).
sobrina(X,eduardo).
____________________________________________________________________
sobrina(X,alicia).
sobrina(beatriz,X)
false.
false.
X = eduardo ;
X = beatriz ;
____________________________________________________________________
sobrina(X,Y).
____________________________________________________________________
sobrino(X,eduardo).
sobrino(X,alicia)
sobrino(X,Y).
false.
luis ;
____________________________________________________________________
X = beatriz,
X = luis,
Y = eduardo
Y = alicia ;
3.- Captura el siguiente programa que ilustra cmo aprobar un examen:
% Archivo: aprexamen.pl
% Predicados
aprueba_examen(X) :- preparado_para_examen(X).
aprueba_examen(X) :- persona(X),examen_facil.
preparado_para_examen(X) :- sabe_todo(X).
preparado_para_examen(X) :- asiste_a_clases(X), realiza_ejercicios(X),
lee_libro(X).
preparado_para_examen(X) :- preparado_para_examen(Y),tutor(Y,X).
% Proposiciones
persona(maria).
persona(alfredo).
persona(tomas).
persona(susana).
persona(juan).
lee_libro(alfredo).
lee_libro(maria).

asiste_a_clases(alfredo).
asiste_a_clases(maria).
realiza_ejercicios(alfredo).
realiza_ejercicios(maria).
sabe_todo(tomas).
tutor(maria,juan).
tutor(juan,susana).

3.1.- Codifica en Prolog y realiza las siguientes consultas:


a) Aprueba el examen Juan?
aprueba_examen(juan).
Consulta en Prolog: ________________________________________________________
true
Resultados: _____________________________________________________________
b) Est Susana preparada para el examen?
Consulta en Prolog: ________________________________________________________
preparado_para_examen(susana).
Resultados: _____________________________________________________________
true
c) Quin es el sabio del grupo?
sabe_todo(X).
Consulta en Prolog: ________________________________________________________
X = tomas.
Resultados: _____________________________________________________________
d) Quines aprueban el examen?
aprueba_examen(X) X = tomas ;
Consulta en Prolog: ________________________________________________________
X = alfredo ;
Resultados: _____________________________________________________________
X = maria ;
X = juan ;
4.- Dada la siguiente informacin:
X = susana
i) Si X est encima de Y, entonces Y soporta a X.
ii) Si X est arriba de Y y se tocan una y otra, entonces X est encima de Y.
iii) La taza est arriba del libro.
iv) La taza toca al libro.
4.1.- Escribe un programa en Prolog que use esta base de conocimiento y muestre que SOPORTA(libro,taza) es
verdadero.
Programa en Prolog:
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

4.2.-

SOPORTA(libro,taza)

4.3.-

Convierte a Prolog la pregunta: Qu soporta a la taza?


Pregunta en Prolog:
_____________________________________________
Respuesta: _____________________________________________________
Convierte a Prolog la pregunta: Qu esta encima del libro?
Pregunta en Prolog:
____________________________________________
Respuesta: ____________________________________________________

4.4.-

5.-

V: ____

F: ____

Comentarios y conclusiones
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________
______________________________________________________________

Вам также может понравиться