Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


Exercicio Resolvido Prolog, Exercícios de Informática

Exercicio Resolvido Prolog

Tipologia: Exercícios

2016

Compartilhado em 16/06/2016

gu-de-aguiar-2
gu-de-aguiar-2 🇧🇷

4.9

(25)

20 documentos

1 / 1

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Problema da Banda
Enunciado
Três músicos de uma banda multinacional irão fazer um solo de uma peça musical, cada um deles
tocando uma única vez. O pianista toca em primeiro lugar, João toca saxofone e toca anteriormente ao
australiano. Marcos veio dos EUA e toca antes do violinista. Um solista veio diretamente do Japão e
um deles chama-se Sam. Pergunta-se:
Qual a origem de cada músico?
Qual o instrumento de cada músico?
Qual a ordem de execução dos músicos?
Solução
A solução do problema é claramente a descrição do mesmo, assim devemos simplesmente transformar
as restrições do problema em uma regra cujo funtor será solução_banda de aridade 1, sendo seu
argumento (S) uma variável que é a solução do problema:
Desta forma, a variável S apresentará a forma banda(Solista1, Solista2, Solista3), representando a
informação total da banda, sendo que cada Solista será da forma solista(Nome, País, Instrumento).
Solista1 é o primeiro a tocar, seguido pelo Solista 2 e, finalmente, o Solista3.
Vejamos como resolver o problema em Prolog:
solução_banda(S) :- Predicado Principal (Regra)
S = banda(Solista1,Solista2,Solista3), Definição da forma da Solução S.
toca(Solista1,piano), O primeiro solista toca piano.
dupla_ordenada(X,Y,S), X e Y são solistas de S e X toca antes de Y.
nome(X,joão), João é o nome de X.
toca(X,saxofone), Saxofone é o instrumento de X.
pais(Y,austrália), O país de Y é a Austrália.
dupla_ordenada(A,B,S), A e B são solistas de S e A toca antes de B.
nome(A,marcos), Marcos é o nome de A.
pais(A,eua), O país de A é EUA
toca(B,violino), Quem toca violino é B.
membro(U,S), Um músico U da banda S veio do Japão.
pais(U,japão),
membro(V,S), Um músico V da banda S chama-se Sam.
nome(V,sam). Predicados Auxiliares (Fatos)
toca(solista(Nome,Pais,Inst),Inst).
nome(solista(Nome,Pais,Inst),Nome).
pais(solista(Nome,Pais,Inst),Pais).
Basicamente, esses predicados determinam
que informação está presente em cada
argumento do termo
solista(Nome,País,Instrumento).
dupla_ordenada(A,B,banda(A,B,C)).
dupla_ordenada(B,C,banda(A,B,C)).
dupla_ordenada(A,C,banda(A,B,C)).
Define quais os pares de músicos podemos
ter tais que um toca antes do outro. São três
possibilidades, um fato para cada uma delas.
membro(A,banda(A,B,C)).
membro(B,banda(A,B,C)).
membro(C,banda(A,B,C)).
Define quais são os membros da banda (são
termos da forma solista(Nome,País,Inst),
novamente, 3 possibilidades, 3 fatos.
A questão dever ser: ?- solução_banda(S). A resposta:
S = banda(solista(marcos,eua,piano),solista(joão,japão,saxofone),
solista(sam,austrália,violino)) -> ;
no

Pré-visualização parcial do texto

Baixe Exercicio Resolvido Prolog e outras Exercícios em PDF para Informática, somente na Docsity!

Problema da Banda

Enunciado

Três músicos de uma banda multinacional irão fazer um solo de uma peça musical, cada um deles

tocando uma única vez. O pianista toca em primeiro lugar, João toca saxofone e toca anteriormente ao

australiano. Marcos veio dos EUA e toca antes do violinista. Um solista veio diretamente do Japão e

um deles chama-se Sam. Pergunta-se:

Qual a origem de cada músico?

Qual o instrumento de cada músico?

Qual a ordem de execução dos músicos?

Solução

A solução do problema é claramente a descrição do mesmo, assim devemos simplesmente transformar

as restrições do problema em uma regra cujo funtor será solução_banda de aridade 1, sendo seu

argumento (S) uma variável que é a solução do problema:

Desta forma, a variável S apresentará a forma banda(Solista1, Solista2, Solista3) , representando a

informação total da banda, sendo que cada Solista será da forma solista(Nome, País, Instrumento).

Solista1 é o primeiro a tocar, seguido pelo Solista 2 e, finalmente, o Solista3.

Vejamos como resolver o problema em Prolog:

solução_banda(S) :- Predicado Principal (Regra) S = banda(Solista1,Solista2,Solista3), Definição da forma da Solução S. toca(Solista1,piano), O primeiro solista toca piano. dupla_ordenada(X,Y,S), X e Y são solistas de S e X toca antes de Y. nome(X,joão), João é o nome de X. toca(X,saxofone), Saxofone é o instrumento de X. pais(Y,austrália), O país de Y é a Austrália. dupla_ordenada(A,B,S), A e B são solistas de S e A toca antes de B. nome(A,marcos), Marcos é o nome de A. pais(A,eua), O país de A é EUA toca(B,violino), Quem toca violino é B. membro(U,S), Um músico U da banda S veio do Japão. pais(U,japão), membro(V,S), Um músico V da banda S chama-se Sam. nome(V,sam). Predicados Auxiliares (Fatos)

toca(solista(Nome,Pais,Inst),Inst). nome(solista(Nome,Pais,Inst),Nome). pais(solista(Nome,Pais,Inst),Pais).

Basicamente, esses predicados determinam que informação está presente em cada argumento do termo solista(Nome,País,Instrumento).

dupla_ordenada(A,B,banda(A,B,C)). dupla_ordenada(B,C,banda(A,B,C)). dupla_ordenada(A,C,banda(A,B,C)).

Define quais os pares de músicos podemos ter tais que um toca antes do outro. São três possibilidades, um fato para cada uma delas.

membro(A,banda(A,B,C)). membro(B,banda(A,B,C)). membro(C,banda(A,B,C)).

Define quais são os membros da banda (são termos da forma solista(Nome,País,Inst), novamente, 3 possibilidades, 3 fatos.

A questão dever ser: ?- solução_banda(S). A resposta:

S = banda(solista(marcos,eua,piano),solista(joão,japão,saxofone),

solista(sam,austrália,violino)) -> ;

no