Software SWI-PROLOG:
I – Inserção dos Fatos (0.5 Pontos)
a) Insira 15 fatos do tipo gosta(pessoa, algo), adicionando passatempos, tais como Teatro, Show, Música, Cinema, Leitura, entre
UNIVERSIDADE LUTERANA DO BRASIL
EDUCAÇÃO A DISTÂNCIA
outros (use sua criatividade, não fique apenas nos exemplos de aula).
b) Estabeleça fatos com preços para esses passatempos do tipo custo(algo,valor) – cada passatempo terá um valor diferenciado (use
valores inteiros para facilitar);
I – Criação de Regras (2.5 Pontos)
c) Crie uma regra para responder: Quanto custa para uma pessoa fazer um determinado passatempo (use o comando de escrita)?
d) Crie uma regra para responder: Quanto irá gastar ao todo a pessoa X e a pessoa Y para sair e fazer algo que ambos gostem (use o
comando de escrita).
e) Crie uma regra para permitir que: A pessoa X quer convidar a pessoa Y para sair e fazer algo que ambos gostem, mas que custe menos
que um valor V, fornecido na consulta.
f) Crie uma nova regra envolvendo os fatos acima, que contenham pelo menos uma condição.
g) Crie uma nova regra envolvendo os fatos acima, que contenham pelo menos uma condição e seja diferente da questão f.
Soluções para a tarefa
Primeiramente cabe saber que SWI-Prolog é uma implementação em código aberto da linguagem de programação Prolog.
A maneira mais conveniente de adicionar algumas cláusulas é consultando o pseudo arquivo user. A entrada é finalizada usando o caractere de final de arquivo do sistema.
?- [user].
|: hello :- format('Hello world~n').
|: ^D
true.
?- hello.
Hello world
true.
A consulta abaixo pede ao Prolog o que o `sam 'gosta. O sistema responde com se pode provar a meta para um determinado X . O usuário pode digitar o ponto e vírgula (;) ou a barra de espaço 6 se quiser outra solução. Use a tecla de retorno se você não quiser ver mais respostas.
O Prolog conclui a saída com um ponto final (.) Se o usuário usar a tecla return ou o Prolog sabe que não há mais respostas. Se o Prolog não consegue encontrar (mais) respostas, ele escreve falso. Por fim, o Prolog responde usando uma mensagem de erro para indicar que a consulta ou o programa contém um erro. X = <value>.
Espero ter ajudado.