Buscar

Exercícios em Prolog

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Universidade Federal da Grande Dourados
Faculdade de Cieˆncias Exatas e Tecnologias
Bacharelado em Sistemas de Informac¸a˜o
Paradigmas em Linguagens de Programac¸a˜o
Lista de Exerc´ıcios 4 – Prolog
Prof. M.Sc. Rodrigo Porf´ırio da Silva Sacchi
1. Fac¸a um programa que encontre o u´ltimo elemento de uma lista. Exem-
plo:
?- my last(X,[a,b,c,d]).
X = d
2. Fac¸a um programa que encontre o k-e´simo elemento de uma lista.
Exemplo:
?- element at(X,[a,b,c,d,e],3).
X = c
3. Fac¸a um programa que encontre o nu´mero de elementos em uma lista.
4. Fac¸a um programa que, dada uma lista, retorna ela revertida.
5. A a´rvore genealo´gica da famı´lia Bento.
Pouco se sabe da histo´ria passada da famı´lia Bento. Existem alguns
registos antigos que indicam que o casal Jose´ e Maria criou dois filhos,
o Joa˜o e a Ana. Que a Ana teve duas filhas, a Helena e a Joana,
tambe´m parece ser verdade, segundo os mesmos registos. Ale´m disso,
o Ma´rio e´ filho do Joa˜o, pois muito se orgulha ele disso. Estranho
tambe´m, foi constatar que o Carlos nasceu da relac¸a˜o entre a Helena,
muito formosa, e o Ma´rio. Coloque os fatos, regras e predicados em um
arquivo chamado bento.pl.
(a) Utilizando o predicado progenitor(X,Y) (ou seja, X e´ progeni-
tor de Y), represente em Prolog todos os progenitores da famı´lia
Bento;
1
(b) Represente em Prolog as relac¸o˜es: sexo (masculino ou feminino),
irma˜, irma˜o, descendente, ma˜e (use a func¸a˜o findall), pai, avoˆ, tio
(use a func¸a˜o findall), primo (entende-se por ser primo ou prima
(use a func¸a˜o findall)).
(c) Formule em Prolog as seguintes questo˜es:
i. O Joa˜o e´ filho do Jose´?
ii. Quem sa˜o os filhos da Maria?
iii. Quem sa˜o os primos do Ma´rio?
iv. Quantos sobrinhos/sobrinhas com um Tio existem na famı´lia
Bento?
v. Quem sa˜o os ascendentes do Carlos?
vi. A Helena tem irma˜os? E irma˜s?
6. Represente em Prolog os seguintes predicados gene´ricos sobre listas
(sem utilizar os correspondentes predicados do mo´dulo lists). Crie um
arquivo chamado listas.pl para colocar os fatos, regras e predicados.
(a) adiciona(X,L1,L2) – onde L2 e´ a lista que conte´m o elemento X e
a lista L1. Teste este predicado no Prolog, executando:
?- adiciona(1,[2,3],L).
?- adiciona(X,[2,3],[1,2,3]).
(b) apaga(X,L1,L2) – onde L2 e´ a lista L1 sem o elemento X. Teste
com:
?- apaga(a,[a,b,a,c],L).
?- apaga(a,L,[b,c]).
(c) membro(X,L) – que e´ verdadeiro se X pertencer a` lista L. Teste
com:
?- membro(b,[a,b,c]).
?- membro(X,[a,b,c]). % carregar em ;
?- findall(X,membro(X,[a,b,c]),L).
(d) concatena(L1,L2,L3) – onde L3 e´ resultado da junc¸a˜o das listas
L2 e L1. Teste com:
?- concatena([1,2],[3,4],L).
?- concatena([1,2],L,[1,2,3,4]).
?- concatena(L,[3,4],[1,2,3,4]).
(e) comprimento(X,L) – onde X e´ o nu´mero de elementos da lista L.
Teste com:
?- comprimento(X,[a,b,c]).
2
(f) maximo(X,L) – onde X e´ o valor ma´ximo da lista L (assumir que
L conte´m somente nu´meros). Teste com:
?- maximo(X,[3,2,1,7,4]).
(g) media(X,L) – onde X e´ o valor me´dio da lista L (assumir que L
conte´m somente nu´meros). Teste com:
?- media(X,[1,2,3,4,5]).
3

Continue navegando