IPRJ CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO  
LISTA DE EXERCÍCIOS 06  
1
2
) Expresse através de fatos e regras Prolog as informações contidas na seguinte frase:  
Marcelo é um pássaro. Silvio é um peixe. Ana é uma minhoca. Pássaros gostam de  
minhocas. Gatos gostam de peixes. Gatos gostam de pássaros. Amigos gostam uns dos  
outros. O meu gato é meu amigo. O meu gato come tudo o que gosta, exceto pessoas.  
O nome do meu gato é Chuck Norris.”  
) Expresse através de fatos e regras Prolog as informações contidas na seguinte frase:  
Maria é bonita. Marcos é rico e bonito. Ana é rica e forte. Fabiano é forte e bonito.  
Silvio é amável e forte. Todos os homens gostam de mulheres bonitas. Todos os  
homens ricos são felizes. Qualquer homem que gosta de uma mulher que gosta dele é  
feliz. Qualquer mulher que gosta de um homem que gosta dela é feliz. Ana gosta de  
qualquer homem que gosta dela. Maria gosta de qualquer homem que gosta dela,  
desde que ele seja rico, amável ou bonito, e forte.”  
3
) Considere a seguinte base de fatos em Prolog:  
aluno(joao, calculo).  
aluno(maria, calculo).  
aluno(joel, programacao).  
aluno(joel, estrutura).  
frequenta(joao, puc).  
frequenta(maria, puc).  
frequenta(joel, ufrj).  
professor(carlos, calculo).  
professor(ana_paula, estrutura).  
professor(pedro, programacao).  
funcionario(pedro, ufrj).  
funcionario(ana_paula, puc).  
funcionario(carlos, puc).  
Escreva as seguintes regras em Prolog:  
1
2
) Quem são os alunos do professor X?  
) Quem são as pessoas que estão associadas a uma universidade X? (alunos e  
professores)  
4
) Suponha os seguintes fatos:  
nota(joao,5.0).  
nota(maria,6.0).  
nota(joana,8.0).  
nota(mariana,9.0).  
nota(cleuza,8.5).  
nota(jose,6.5).  
nota(jaoquim,4.5).  
nota(mara,4.0).  
nota(mary,10.0).  
Considerando que:  
Nota de 7.0 á 10.0 = Aprovado.  
Nota de 5.0 á 6.9 = Recuperação.  
Nota de 0.0 á 4.9 = Reprovado.  
Escreva uma regra para identificar a situação de um determinado aluno.  
5
) Crie uma base de conhecimento em Prolog declarando os fatos representados na  
seguinte tabela:  
a) Escreva regras genéricas em Prolog que possam responder as seguintes perguntas:  
i.  
ii.  
Quem dirigiu o filme Titanic?  
Quais são os filmes de suspense?  
iii.  
iv.  
v.  
Quais os filmes dirigidos por Donner?  
Em que ano foi lançado o filme Sinais?  
Quais os filmes com duração inferior a 100min?  
Quais os filmes lançados entre 2000 e 2005?  
vi.  
b) Usando as regras criadas anteriormente construa o predicado “clássico”, que  
retorna o título dos filmes lançados antes de 1980.  
c) Usando as regras criadas anteriormente construa o predicado “gênero”, que  
retorna o título dos filmes de um gênero específico.  
d) Usando os predicados “clássico” e “gênero” faça uma consulta para recuperar os  
títulos de filmes clássicos de suspense.  
6
) Quais das próximas operações de unificação serão bem sucedidas e quais irão falhar?  
Para as que forem bem sucedidas, quais são as instanciações de variáveis resultantes?  
a) ponto(A, B) = ponto(1, 2)  
b) 2 + 2 = 4  
c) ponto(A, B) = ponto(X, Y, Z)  
d) mais(2, 2) = 4  
e) +(2, D) = +(E, 2)  
f) t(p(-1,0), P2, P3) = t(P1, p(1, 0), p(0, Y))  
7
) Represente em Prolog os seguintes predicados genéricos sobre listas:  
a) adiciona(X,L1,L2) onde X é o elemento que será adicionado na lista L1. L2 é a  
lista retornada.  
b) remover(X, L1, L2) onde X é o elemento que deve ser removido da lista L1. L2 é a  
lista resultante sem o elemento X.  
c) inverte(L1, L2) onde L1 é a lista que deve ser invertida e L2 é a lista resultante.  
d) tamanho(L1, X) onde X deve retornar o tamanho (numero de elementos da lista  
L1.  
e) soma(L1, X) onde X deve retornar a soma de todos os elementos da lista L1.