Guia del Laboratório 1 Conceitos básicos de Prolog
Introdução
Este laboratório tem como objetivos:
• Resolver problemas simples na linguagem Prolog
• Elaborar árvores de resolução SLD para um objetivo determinado. A atividade terá 3 momentos:
1. Familiarização com a ferramenta JProlog (SWI-Prolog) 2. Familiarização com a ferramenta JSld
3. Trabalho na implementação de exercícios no Prolog.
Familiarização com as ferramentas para Prolog
Para programar na linguagem prolog se deve utilizar uns dos IDE disponíveis para isso:
Windows
Descarregar a ferramenta SWI-Prolog do sítio oficial da ferramenta: http://www.swi-prolog.org/Download.html
Uma vez instalado pode-se editar os arquivos com extensão .pl num editor próprio da ferramenta (Figura 1)
E para realizar as perguntas utiliza-se uma interface diferente (Figura 2):
Ubuntu
Para instalar Prolog no Linux somente é necessário executar o seguinte comando em um terminal:
sudo apt install swi-prolog
Logo é possível usá-lo executando o comando swipl do console em qualquer momento, logo solo é necessário consultar a base de conhecimento que se deseje e preparado.
Web
Também se pode utilizar uma ferramenta Web chamada Swish (Figura 3) que permite a implementação de programas em linguagem Prolog, a mesma se encontra na seguinte endereço:
https://swish.swi-prolog.org/
Familiarização com a ferramenta JSld
Nesta etapa do laboratório veremos como se usa a ferramenta JSld para construir as árvores de resolução de uma meta dada uma base de conhecimento. Os passos que vamos realizar para eles são:
• Descarregar a ferramenta JSld
• Desempacotar a ferramenta e executá-la (recordar que é uma aplicação Java pelo que devem fazê-lo mediante o comando java -jar jsld.jar)
• Familiarizar-se com a ferramenta com a ajuda do professor (Figura 4)
• Na ferramenta onde diz Código fonte: programa é o lugar onde vai a base de conhecimento e na parte onde diz Código fonte: objetivo é onde vai a meta da qual queremos a árvore de resolução SLD (Figura 3).
Figura 4: Vista geral da ferramenta JSld.
• Para construir a árvore de resolução se deve executar a opção Executar no menu Criação, e se obtém como resultado a árvore de resolução SLD (Figura 6).
• Se a árvore não se visualizar corretamente pode configurar a representação visual mediante a opção Configuração visual do menu Configuração.
Ejercicios
1. Agregue aos factos existentes progenitor vistos de a conferência, os correspondentes ao género feminino (fem) e ao masculino (masc). A partir de todo o conjunto obtido, defina regras para as seguintes relações:
a) Mãe X de E. b) Filho X de E. c) Irmão X de E. d) Médio-irmão X de E. e) Médio-irmão X de E. f) Tia X de E. g) Primo X de E. h) Sobrinho X de E.
2. Dada a base de conhecimento que se escreve a seguir: viaja(mario, auto).
viaja(juana, camion). viaja(beatriz, auto).
a) ¿Que responderá Prolog às seguintes perguntas? ?- viaja(X,Y).
?- viaja(X, auto).
?- viaja (X, auto), viaja(Y,auto).
a)
Gere a árvore de resolução SLD para cada objetivo. 3. Tem-se a seguinte base de conhecimento:vendio(antonio, computador). vendio(antonio, automovil).
a) Diga que responderá Prolog às perguntas seguintes: ?- vendio(antonio, E).
?- vendio(antonio, computador). ?- vendio (X, E).
a)
Gere a árvore de resolução SLD para cada objetivo.4. Elabore um predicado no Prolog para lhe dar solução aos seguintes enunciados: Figura 6: Árvore de resolução SLD resultante.
a) Calcular o máximo entre dois números. b) Calcular o mínimo entre dois números. c) Verificar se um número é par.
d) Verificar se um número é ímpar.
Estudio independiente
Escrever e provar no Prolog e no JSld todos os exercícios que se realizaram nas conferências e aulas práticas da disciplina e que ficaram que estudo independente em semanas anteriores.