Escolar Documentos
Profissional Documentos
Cultura Documentos
FACULDADE DE ENGENHARIA DA
COMPUTAÇÃO
LISTA DE EXERCÍCIOS –
PROLOG
progenitor(maria,carlos).
progenitor(joão,carlos).
progenitor(joão,antônia).
progenitor(antônia,eduardo).
progenitor(antônia,ana).
progenitor(ana,andré).
progenitor(carlos,luizinho).
a. ?- progenitor(antônia,ana).
True.
b. ?- progenitor(eduardo,antônia).
False.
c. ?- progenitor(X,antônia).
X = joão.
d. ?- progenitor(joão,X).
X = antônia.
X = carlos.
e. ?- progenitor(X,Y).
X = maria,
Y = carlos
X = joão,
Y = carlos
X = joão,
Y = antônia
X = antônia,
Y = eduardo
X = antônia,
Y = ana
X = ana,
Y = andré
X = carlos,
Y = luizinho
f. ?- progenitor(X,carlos).
X = joão.
g. ?- progenitor(ana,X).
X = andré.
h. ?- progenitor(joão,X),progenitor(X,eduardo).
X = antônia.
i. ?- progenitor(joão,X),progenitor(X,Y),progenitor(Y,andré).
X = antônia,
Y = ana.
Prolog
come(urso, peixe).
come(urso, raposa).
come(raposa,coelho).
come(coelho, grama).
come(peixe, peixinho).
come(veado,grama).
a. ?- come(urso,X).
X = peixe
X = raposa
b. ?- come(X,grama).
X = coelho
X = veado
c. ?- come(X,Y).
X = urso,
Y = peixe
X = urso,
Y = raposa
X = raposa,
Y = coelho
X = coelho,
Y = grama
X = peixe,
Y = peixinho
X = veado,
Y = grama
d. ?- come(B,raposa).
B = urso
Exercício 1: mulher(maria).
mulher(antônia).
mulher(ana).
homem(carlos).
homem(joão).
homem(eduardo).
homem(andré).
a. Maria é mulher?
?- mulher(maria).
true.
b. Qual o sexo de Maria?
Para que o prolog responda essa questão, seria necessário adicionar
mais dados à base de dados do programa.
Exercício 4: sexo(maria,feminino).
sexo(antônia,feminino).
sexo(ana,feminino).
sexo(carlos,masculino).
sexo(joão,masculino).
sexo(eduardo,masculino).
sexo(andré,masculino).
a. Quem é mulher?
?- mulher(X).
true.
b. Qual o sexo de Maria?
?- sexo(maria,X).
feminino.
Exercício 7) Ao invés de declarar fato por fato dos filhos, pode-se usar uma regra geral
para filhos, como abaixo. Acrescente-a ao programa Prolog obtido no Exercício 5:
filho_a(X,Y) :-
progenitor(Y,X).
regras abaixo:estudioso(joão).
estudioso(maria).
gosta(maria,ler).
gosta(joão,futebol).
gosta(X,Y) :-
estudioso(Y).
aprende(X,Y) :-
estudioso(X), gosta(X,Y).
Exercício 9) avó(X,Z) :-
progenitor(X,Y
),
progenitor(Y,Z
), mulher(X).
a. ?- presidente(X, 1900).
false
b. ?- presidente(getulio,1940).
true
a. ?- X is Y * 20.
Arguments are not sufficiently instantiated
b. ?- 8 is 3+5.
true
c. ?- X is Y//2, Y=11.
Arguments are not sufficiently instantiated
d. ?- X=12, Y=X//2.
X = 12,
Y = 12//2
e. ?- X=11, Y is X//2.
X = 11,
Y=5
população(brasil,18
0). população(eua,
250).
população(china,90
0). área(brasil,8).
área(eua,8).
área(china,10).
densidade(X,Y) :-
população(X,
P), área(X,A),
Y is P/A.
abaixo?
a. ?- f([X|Y]).
X = 1,
Y = [2, 3]
X = o,
Y = [carro, é, [muito, potente]]
b. ?- [X,Y,Z] = [maria, ana, joão].
X = maria,
Y = ana,
Z = joão
c. ?- [casa|X] = [casa,grande].
X = [grande]
a. ?- member(a, [a,b,c]).
true
b. ?- member([a,b],[c,[a,b],d]).
true
c. ?- member(a,[[a],b,c]).
false
a. ?- concatena([a,b],[c],L).
false
b. ?- concatena([a],[a,b,c],L).
false
a. ?- exclui(b,[a,b,c],R).
R = [a, [c]]
b. ?- exclui([a],[[a],b,c],R).
R = [b, c]