Relatório 1
PROLOG
Itabira - MG
2019
DANIELLE OLIVEIRA NUNES - 30801
LUDIMILA JÁCOME MACHADO - 25868
Relatório 1
PROLOG
Itabira - MG
2019
”Cem vezes todos os dias lembro a mim mesmo que minha vida interior e exterior,
depende dos trabalhos de outros homens, vivos ou mortos, e que devo esforçar-me a fim
de devolver na mesma medida que recebi.”
(Albert Einstein)
LISTA DE ILUSTRAÇÕES
1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3 Resolução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 Exercício 01 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Exercício 02 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.3 Exercício 03 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.4 Exercício 04 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.5 Exercício 05 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.6 Exercício 06 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.7 Exercício 07 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Considerações Finais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5
1 INTRODUÇÃO
2 OBJETIVOS
3 RESOLUÇÃO
3.1 Exercício 01
Implementar um progama em PROLOG para a árvore genealógica. Implementar
regras para pai, mãe, avô, avó, irmão, irmã, primo, prima, tio e tia.
SOLUÇÃÕ DO EXERCÍCIO 01:
A figura 1 mostra a árvore genealógica que foi criada para resolução do problema.
Fonte:Autoria Própria
homem(joao).
homem(joaquim).
homem(pedro).
homem(jose).
homem(vitor).
mulher(amanda).
mulher(maria).
mulher(bruna).
mulher(alice) .
mulher(luzia).
mulher(ana).
genitor(joao, pedro).
genitor(joao, maria).
Capítulo 3. Resolução 8
genitor(amanda, pedro).
genitor(amanda, maria).
genitor(pedro, jose ) .
genitor(pedro, vitor ) .
genitor( luzia , jose ) .
genitor( luzia , vitor ) .
genitor(joaquim, bruna).
genitor( alice , bruna).
genitor(joaquim, augusto).
genitor( alice , augusto).
genitor(augusto, caio) .
genitor( isa , caio) .
genitor( vitor ,ana).
genitor(bruna,ana).
Para mostrar o funcionamento das regras criadas, foi realizdo um texto no SWI
Prolog Online e os resultados são mostrados nas oito figuras a seguir.
Fonte:Autoria Própria
A figura 2 foi um exemplo que mostrou quem é o avô de Caio. Assim como feito
Capítulo 3. Resolução 9
com o Caio, poderia ser feito com Ana, José ou Vitor. Bem como procurado de quem
"fulano"é avô a partir de: avoh(joaquim,X). Neste caso, a resposta seria Caio.
Fonte:Autoria Própria
A figura 3 foi um exemplo que mostrou quem é o conjuge de Isa. Outros exemplos
também podem ser testados. Bem como procurado de quem "fulano"é cônjuge montando
a mesma estrutura do caso no avô, conforme explicado para a figura 2.
Fonte:Autoria Própria
A figura 4 foi um exemplo que mostrou quem é o/a irmão/ã de Pedro. Outros
exemplos também podem ser testados.
A figura 5 foi um exemplo que mostrou quem é mãe de Bruna. Outros exemplos
também podem ser testados.
A figura 6 foi um exemplo que mostrou quem é o filho de João. Neste caso, a
estrutura que foi utilizada para fazer o teste foi diferente dos exemplos anteriores. E
obteve-se duas soluções para este caso. Neste caso, também pode-se testar o código com
outras pessoas.
Capítulo 3. Resolução 10
Fonte:Autoria Própria
Fonte:Autoria Própria
Fonte:Autoria Própria
A figura 7 foi um exemplo que mostrou quem é primo de Ana. Para este tipo de
relacionamento familiar, especificamente nesta família fictícia, nao tem outro exemplo a ser
Capítulo 3. Resolução 11
dado, pois são os únicos primos. Somente podemos modificar o teste para: primo(caio,X).
Fonte:Autoria Própria
A figura 8 foi um exemplo que mostrou quem é tio ou tia de Ana. Outros exemplos
também podem ser testados.
Fonte:Autoria Própria
A figura 9 foi um exemplo que mostrou quem é o neto de Amanda. Este caso, foi o
mesmo da 6, quando fala-se de estrutura do teste realizado. Neste caso, também pode-se
testar o código com outras pessoas.
Capítulo 3. Resolução 12
3.2 Exercício 02
Considere uma base de fatos em Prolog para registrar relacionamentos afetivos
envolvendo o sexo, o gosto por filmes e o gosto por faixa etária do parceiro. A partir dessa
base, inclua mais fatos e implemente as seguintes regras:
%Dados
homem(pedro).
homem(marcos).
homem(ze).
homem(matheus).
homem(samuel).
mulher(maria).
mulher(joana).
mulher(danielle) .
mulher(carla).
idade(carla ,27) .
idade( danielle ,23) .
idade(ze,30) .
idade(maria,40).
idade(marcos,20).
idade(pedro,25).
idade(samuel,22).
idade(joana,28).
idade(matheus,26).
gosta(carla ,aventura).
gosta(ze,aventura).
gosta(matheus,comedia).
gosta( danielle ,romance).
gosta( danielle ,comedia).
gosta(matheus,terror).
gosta(maria,comedia).
gosta(joana,romance).
gosta(marcos,terror) .
gosta(samuel,comedia).
gosta(marcos,romance).
gosta(pedro,romance).
gosta(maria,romance).
escuta(maria,sertanejo) .
escuta(marcos,rock).
Capítulo 3. Resolução 14
escuta(matheus,pop).
escuta( danielle , sertanejo) .
escuta( danielle ,pop).
escuta(matheus,sertanejo).
escuta(carla ,rock).
escuta(pedro,jazz) .
escuta(pedro,pop).
escuta(samuel,pop).
escuta(samuel,rock).
escuta(joana,sertanejo) .
escuta(ze,rock).
escuta(marcos,sertanejo).
escuta(joana,pop).
escuta(carla , jazz) .
(a)
afinfilme (X,Y):−
gosta(X,F),gosta(Y,F),
X \== Y.
(b)
casal(X,Y):−
(homem(X),mulher(Y));
(mulher(X),homem(Y)).
(c)
casalafinfilme (X,Y):−
casal(X,Y),afinfilme(X,Y).
Capítulo 3. Resolução 15
(d)
afinidade(X,Y):−
opcao(X,L,M),idade(Y,K),K>=L,K=<M, X \== Y,casal(X,Y).
(e)
afintotal (X,Y):− casalafinfilme(X,Y),afinidade(X,Y), X \== Y..
afinmusica(X,Y):−
escuta(X,M),escuta(Y,M), X \== Y.
casalmusica(X,Y):− casal(X,Y),afinmusica(X,Y).
casalmusicaidade(X,Y):−
casal(X,Y),casalmusica(X,Y).
3.3 Exercício 03
Construa a tabela da verdade para a seguinte proposição:
Fonte:Autoria Própria
3.4 Exercício 04
Mostre se as expressões E1 e E2 são equivalentes logicamente:
Capítulo 3. Resolução 16
𝐸2 = (𝑝 ∧ 𝑞∧ ∼ 𝑟 ∧ 𝑠)∨ ∼ (𝑝 ∨ 𝑠) (3.3)
Fonte:Autoria Própria
Fonte:Autoria Própria
Capítulo 3. Resolução 17
Comparando a tabela verdade das preposições 3.2 e 3.3 pedidas, pode-se concluir
que essas não são preposições equivalentes.
3.5 Exercício 05
Suponha a seguinte base de fatos:
tran(eins ,one).
tran(zwei,two).
tran(drei ,three) .
tran(vier , four) .
tran(fuenf , five ) .
tran(sechs , six ) .
tran(sieben,seven).
tran(acht, eight) .
tran(neun,nine).
tran(zehn,ten).
tran(um,un).
tran(dois ,deux).
tran( tres , trois ) .
tran(quatro,quatre).
tran(cinco,cinq) .
tran( seis , six ) .
tran(sete ,sept) .
tran(oito , huit) .
tran(nove,neuf).
tran(dez,dix) .
listtran ([],[]) .
listtran ([ A|B],[C|D]):−listtran(B,D),tran(A,C).
Capítulo 3. Resolução 18
3.6 Exercício 06
Observe o programa e responda:
xxxx(X):− nnnn(X,N), mod(N,2) =:= 0. nnnn([ ],0). nnnn([_|Y], N):− nnnn(Y, N1), N
is N1+1.
(b) Faça a simulação e apresente o resultado para a seguinte consulta: xxxx ([5,3,7,9]).
(a) O programa verifica se o tamanho da lista passada é par. por exemplo, se a lista
for composta por 4 elementos retorna TRUE, se for composta por 3 valores, retorna
FALSE.
Fonte:Autoria Própria
3.7 Exercício 07
Considere a seguinte base de fatos exemplo:
aluno(joao, estruturas1) .
aluno(maria, estruturas1) .
aluno(joel , estruturas1) .
aluno(creusa, estruturas1) .
aluno(joao, so) .
aluno(maria, so).\
aluno(creusa, so) .
aluno(creusa, cn).
aluno(iara , cn).
aluno(cesar, cn).
aluno(iara , estruturas2) .
Capítulo 3. Resolução 20
aluno(paulo, estruturas2) .
aluno(marta, estruturas2).
aluno(josimar, so) .
frequenta(joao, unifei ) .
frequenta(maria, unifei ) .
frequenta( joel , unifei ) .
frequenta(creusa, unifei ) .
frequenta(creusa, ufmg).
frequenta(iara , ufmg).
frequenta(cesar , ufmg).
frequenta(iara , unifal ) .
frequenta(paulo, unifal ) .
frequenta(marta, unifal ) .
frequenta(josimar, unifei ) .
professor (sandro, estruturas1) .
professor ( juliano , so) .
professor ( gisele , cn).
professor ( luiz , estruturas2) .
funcionario(sandro, unifei ) .
funcionario( juliano , unifei ) .
funcionario( gisele , ufmg).
funcionario( luiz , unifal ) .
(c) Quem é colega de quem? Se aluno: é colega se for colega de disciplina ou colega de
curso ou colega de universidade. Se professor: se for professor da mesma universi-
dade.
(a)
discente(A,P):−
professor (P,D),
aluno(A,D).
Capítulo 3. Resolução 21
(b)
pessoas(P,Y):−
funcionario(P,Y);frequenta(P,Y).
(c)
colega(C,P):−
funcionario(C,U),funcionario(P,U),
(funcionario(C,U) \== funcionario(P,U));
aluno(C,D),aluno(P,D),
(aluno(C,D) \== aluno(C,D));
frequenta(C,W),frequenta(P,W),
(frequenta(C,W) \== frequenta(P,W)).
22
4 CONSIDERAÇÕES FINAIS
5 REFERÊNCIAS