1 of 35

Prof. Dr. Roberta Andrade

raafupe@gmail.com

Lógica de Programação e Algoritmo II

Sistema de Informação

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

1

*

AULA 3 – LPA II

2 of 35

LPA2-Prolog

Resumo

  • Objetivo:

Conhecer o Prolog e como funciona.

  • Conteúdo:
    • Introdução a Prolog
    • Conceitos Básicos
    • Estrutura para programar em Prolog
    • Exemplos de Programinhas

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

2

*

AULA 3 – LPA II

3 of 35

LPA2-Prolog

Introdução a Prolog

  • O termo Prolog é derivado da expressão “Programming in Logic”, uma vez que é baseado em Lógica de Predicados de 1a ordem;

  • A linguagem foi desenvolvida na Universidade de Marseillle na frança para criar programas que traduzissem a linguagem natural (linguagem que utilizamos no cotidiano);

  • É uma linguagem interpretada, mas existem versões compiladas.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

3

*

AULA 3 – LPA II

4 of 35

LPA2-Prolog

Aplicações

  • Banco de dados relacionais

  • Linguagem natural

  • Sistemas especialistas

  • Aplicações de “General Problem Solving(GPS)”, como jogos de Xadrez e Damas.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

4

*

AULA 3 – LPA II

5 of 35

LPA2-Prolog

Como o Prolog funciona

  • O prolog é uma linguagem declarativa ela especifica o quê se sabe e o quê se deve ser feito.

  • O prolog é uma linguagem mais voltada ao conhecimento, menos direcionada aos algoritmos. Por isso o prolog n possui estruturas de controle(do-while,repeat-until, if-then-else...) como nas linguagens C e java.

  • O prolog se destaca pela sua capacidade de busca e Casamento de Padrões.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

5

*

AULA 3 – LPA II

6 of 35

LPA2-Prolog

Conceitos básicos sobre prolog

  • A linguagem prolog é geralmente utilizada para resolver problemas que envolvam objetos e relações entre objetos.

  • Sendo assim um programa em prolog consiste basicamente de:

    • Declaração de fatos(facts) sobre objetos e suas relações;
    • Definições de regras(rules) sobre os obejetos e suas relações;
    • Questões (goals) que são feitas sobre os objetos e suas relações.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

6

*

AULA 3 – LPA II

7 of 35

LPA2-Prolog

  • Comparada com uma linguagem procedural típica como C, Prolog é bem diferente.
  • Em C temos:
    • entrada -----> programa ----> saída
  • Em Prolog:
    • pergunta ----> mundo -----> resposta
  • O programa é a descrição de um mundo artificial, inventado pelo programador. Sobre este mundo são feitas perguntas (a "entrada" do programa) e suas respostas são a saída.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

7

*

AULA 3 – LPA II

8 of 35

LPA2-Prolog

  • Prolog trabalha com a noção de "mundo fechado", ou seja, tudo o que não for descrito como verdadeiro é considerado falso. Não existe o "não sei". Por exemplo:
    • mundo: ama(pedro,sara).
    • pergunta: ?- ama(pedro,sara).�resposta: Yes
    • pergunta: ?- ama(pedro,maria).�resposta: No
  • No mundo diz-se apenas que Pedro ama Sara (com iniciais minúsculas pois são constantes. Portanto, Pedro não ama Maria, nem ninguém além de Sara.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

8

*

AULA 3 – LPA II

9 of 35

LPA2-Prolog

  • Constantes e Variáveis:
  • Os identificadores são formados por letras, dígitos e sublinhado (underscore, em inglês: o caractere "_"), e tem que começar com letra ou sublinhado.
  • Os identificadores que têm inicial minúscula representam constantes.
    • casa, maria, pedro, comer.
  • Aqueles com inicial maiúscula são variáveis. Os que se iniciam com sublinhado são variáveis anônimas.
    • X, Valor, Casa_propria, Tail, _ignore.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

9

*

AULA 3 – LPA II

10 of 35

LPA2-Prolog

Fatos

  • Os fatos são os elementos fundamentais da programação em Prolog, pois determinam as relações que existem entre os objetos conhecidos.

  • Exemplo de um fato:

gosta(jose,maria).

Predicado

ou

Relação

Argumento do Predicado,

Com vários objetos

Objetos

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

10

*

AULA 3 – LPA II

11 of 35

  • Características dos fatos:
  • Os nomes dos predicados e dos objetos devem começar com letra minúscula. Por exemplo: joão, casa, gosta.

  • Os predicados são escritos primeiro e os objetos são escritos depois,sendo os mesmos separados por vírgulas.

  • Os objetos são escritos dentro de parênteses.

LPA2-Prolog

gosta(jose,maria).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

11

*

AULA 3 – LPA II

12 of 35

  • Características dos fatos
  • Todo fato é terminado com um ponto final.
  • A ordem dos objetos é importante: gosta (maria, josé). ≠ gosta (josé, maria).
  • Uma coleção de fatos é chamada de “banco de conhecimento” ou “banco de dados”.
  • Os fatos podem ter um número arbitrário de objetos como argumento.

LPA2-Prolog

gosta(jose,maria).

gosta(maria,jose).

“josé gosta de maira”

“maria gosta de jósé”

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

12

*

AULA 3 – LPA II

13 of 35

  • Características do fato

  • Para padronizar a criação de predicados (tanto os fatos quanto as regras), devemos sempre pensar que o predicado é uma propriedade do primeiro objeto do argumento. Assim, “gosta (jose, maria).” deve ser lido como “Jose gosta de Maria”.

LPA2-Prolog

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

13

*

AULA 3 – LPA II

14 of 35

  • Questões
  • Uma questão é escrita da mesma maneira que um fato, sendo diferenciada pelo interpretador ou por sua colocação em um local previamente definido e separado dos fatos, como no Turbo Prolog, ou por possuir um ponto de interrogação na frente, como no Prolog definido por Clocksin e Mellish.

LPA2-Prolog

?gosta(jóse,maria)

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

14

*

AULA 3 – LPA II

15 of 35

LPA2-Prolog

  • Prolog é uma linguagem interpretada e seu interpretador usa como prompt o sinal "?-";
  • Uma pergunta tem a mesma sintaxe da cauda de uma regra. Ao receber uma pergunta, Prolog trata cada um dos termos dela como metas a serem verificadas contra o banco de dados (descrição do mundo);
  • Se a meta casa com um fato, ela é tida como verdadeira. Dizemos que a meta foi satisfeita. Caso contrário, a meta não foi satisfeita.

  • Questões

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

15

*

AULA 3 – LPA II

16 of 35

  • Questão

  • Quando uma questão é feita, o Prolog realiza uma busca na Base de Conhecimento, procurando um Fato que seja igual ao da questão.

  • Dizemos que dois fatos (ou um fato e uma questão) são unificam (são iguais) se:
    • seus predicados são os mesmos,
    • eles possuem o mesmo número de argumentos e,
    • os argumentos são iguais.

LPA2-Prolog

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

16

*

AULA 3 – LPA II

17 of 35

LPA2-Prolog

  • Unificação é o nome dado ao processo que tenta casar um objetivo (goal) com uma cláusula, que inclui a busca, o casamento de padrões (pattern-matching) e as instanciações (Yin, 1987). A unificação é o elemento básico do interpretador ou compilador Prolog;

  • Basicamente, dizemos que a unificação teve resultado positivo se os objetos envolvidos na comparação são idênticos ou se as cláusulas possuem variáveis que podem ser instanciadas. Caso contrário, dizemos que a unificação falhou.

  • Questão

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

17

*

AULA 3 – LPA II

18 of 35

  • Questão

  • Se o Prolog encontra um fato que se iguala a questão, ele retorna “YES(ou TRUE)”, indicando que a questão tem resposta verdadeira; caso contrário, ele retorna “NO(ou FALSE)”.

  • OBS: O Prolog retornará “NO(ou FALSE)” toda vez que não conseguir igualar a questão a um fato da Base de Conhecimento. Isso implica que se nada for declarado sobre um determinado problema, qualquer questão relacionada a ele retornara como “NO(ou FALSE)”.

LPA2-Prolog

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

18

*

AULA 3 – LPA II

19 of 35

LPA2-Prolog

  • Estrutura para programar em Prolog

  • Um programa escrito em Prolog é dividido em várias partes, cada uma com um propósito específico. Estas partes são:

    • DOMAINS
    • PREDICATES
    • CLAUSES
    • GOAL

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

19

*

AULA 3 – LPA II

20 of 35

LPA2-Prolog

  • DOMAINS

  • parte onde são declaradas as diferentes classes dos objetos usados pelo programa. A declaração das classes dos objetos pode ser vista como uma definição dos tipos de todos os objetos a serem usados no programa.

  • Exemplo:

tipo_pessoa (jose).

Onde José é tipo pessoa.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

20

*

AULA 3 – LPA II

21 of 35

LPA2-Prolog

  • PREDICATES
  • Os predicados são usados para indicar o dominio de seus argumentos.

  • Um predicado deve ser definido para cada fato ou regra a ser utilizado no programa.

  • Exemplo de predicado:

gosta (tipo_pessoa, tipo_pessoa).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

21

*

AULA 3 – LPA II

22 of 35

LPA2-Prolog

  • CLAUSES
  • São as regras e os fatos que serão, utilizados no programa.

  • Exemplo:

  • gosta (joão, maria). /* um fato */

  • gosta (joão, X) :- X = mulher. /* uma regra */ estudaremos próxima aula

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

22

*

AULA 3 – LPA II

23 of 35

LPA2-Prolog

  • GOAL
  • é a chamada meta, o objetivo do programa. É uma questão que vai dar início ao programa. O objetivo pode ser interno ou externo. Ele é interno se for definido dentro do corpo do programa, e externo, quando é definido interativamente, através da formulação de questões na janela de diálogo.

  • Exemplo:

? gosta (joão, maria).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

23

*

AULA 3 – LPA II

24 of 35

LPA2-Prolog

  • DATABASE

  • parte usada para declarar os predicados usados por um banco de dados dinâmico em um programa. É necessária somente quando se utiliza bancos de dados dinâmicos.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

24

*

AULA 3 – LPA II

25 of 35

LPA2-Prolog

  • pensar declarativamente, não mais em “procedimentos”;
  • modo de abordar problemas é diferente� - linguagem de alto nível� - permite a rápida construção de protótipos
  • permite abordar problemas complexos com pouco código
  • mecanismo de busca de soluções para problema é inerente ao Prolog

  • PARADIGMA

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

25

*

AULA 3 – LPA II

26 of 35

LPA2-Prolog

  • INTERPRETADOR
  • Para interpretar a linguagem de prolog usaremos o swi-prolog em conjunto com um editor de texto (bloco de notas por exemplo).
    • http://www.swi-prolog.org/ (download)
      • 32 bits ou 64 bits ;
      • Arquivos de Programas/swipl/bin/
      • Clicar em: swipl-win
    • https://swish.swi-prolog.org/ (Online)

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

26

*

AULA 3 – LPA II

27 of 35

  • mulher (maria ) .
  • mulher ( joana ) .
  • mulher ( iolanda ) .
  • GOAL
    • ?- mulher(X).
    • ?-tocaViolao(maria).
    • ?-tocaViolao(joana).
    • ?-tocaViolao(X)

  • Domains
  • Predicates
    • tocaViolao(mulher).

Exemplo 0

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

27

*

AULA 3 – LPA II

28 of 35

  • Vamos criar um programa em prolog baseado no texto.
    • José gostava de Maria por ela gostar do livro lotr (Lord of the rings) assim como ele. Porem Maria não gostava de José pois ele gostava de comer peixe e ela não gosta de peixe. Tereza gosta do livro lotr e de José porem não gosta de peixe.

Exemplo 1

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

28

*

AULA 3 – LPA II

29 of 35

  • Primeiro passo precisamos criar e identificar quais são as partis do texto que seram nossos domains, predicats e clauses para crialos no editor de texto.

    • Domains:
      • homem(jose).
      • mulher(maria).
      • mulher(tereza).
      • comida(peixe).
      • livro(lotr).

Exemplo 1 - Resposta

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

29

*

AULA 3 – LPA II

30 of 35

    • Predicates:
      • gosta(homem,comida).
      • gosta(mulher,livro).
      • gosta(homem,livro).
      • gosta(homem,mulher).
      • gosta(mulher,homem).

Exemplo 1 - Resposta

    • Clauses:
      • gosta(jose,peixe).
      • gosta(jose,maria).
      • gosta(maria,lotr).
      • gosta(jose,lotr).
      • gosta(tereza,jose).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

30

*

AULA 3 – LPA II

31 of 35

  • Agora é só utilizar as goal (perguntas) para ver se esta tudo certo para isso vamos precisar abrir o arquivo criado no swi-prolog. E digitar nossas goals.

  • Exemplos de goal:
    • gosta(jose,peixe). %Retorna true.
    • gosta(tereza,jose). %Retorna true.
    • gosta(maria,peixe). %Retorna false.
    • gosta(jose,X). %Retorna todas as coisas de que josé gosta

Exemplo 1 - Resposta

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

31

*

AULA 3 – LPA II

32 of 35

Exemplo 2

  • Vamos criar um programa em prolog baseado no texto.

    • Pedro gostava de jogar dominó com Marta pq ela gosta de escutar musica de Coldplay. Porem Marta não gostava de Pedro pois ele gostava de beber cerveja e ela não gosta de beber cerveja. Tatiana gosta de escutar musica de Coldplay e de jogar domino, assim como Pedro.

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

32

*

AULA 3 – LPA II

33 of 35

Exemplo 2 - Resposta

    • Domains:
    • homem(pedro).
    • mulher(marta).
    • mulher(tatiana).
    • musica(codplay).
    • beber(cerveja).
    • jogar(domino).
    • Predicates:
    • gosta(homem,mulher).
    • gosta(homem,musica).
    • gosta(homem,beber).
    • gosta(homem,jogar).
    • gosta(mulher,musica).
    • Clauses:
    • gosta(mulher,jogar).
    • gosta(pedro,tatiana).
    • gosta(pedro,marta).
    • gosta(pedro,coldplay).
    • gosta(pedro,domino).
    • gosta(pedro,cerveja).
    • gosta(tatiana,coldplay).
    • gosta(marta,coldplay).
    • gosta(tatiana,domino).
    • gosta(marta,domino).

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

33

*

AULA 3 – LPA II

34 of 35

  • Exemplo utilizando PROLOG

  • João que amava Teresa que amava Raimundo que amava Maria que amava Joaquim que amava Lili que não amava ninguém. João foi para os Estados Unidos, Teresa para o convento, Raimundo morreu de desastre, Maria ficou para tia, Joaquim suicidou-se e por fim, Lili descobriu que amava com J.Fernandes, o qual não tinha entrado na história.

Exemplo 3

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

34

*

AULA 3 – LPA II

35 of 35

  • CLAUSES
    • amava(joao,teresa).
    • amava(teresa,raimundo).
    • amava(raimundo,maria).
    • amava(maria,joaquim).
    • amava(joaquim,lili).
    • foi_para(joao,eua).
    • foi_para(teresa,convento).
    • foi_para(raimundo,ceu).
    • foi_para(joaquim,ceu).
    • amava(lili,jfernandes).
  • DOMAINS
    • homem(joao).
    • homem(raimundo).
    • homem(joaquim).
    • homem(jfernandes).
    • mulher(teresa).
    • mulher(maria).
    • mulher(lili).
    • lugar(eua).
    • lugar(convento).
    • lugar(ceu).
  • PREDICATES
    • amava(homem,mulher).
    • amava(mulher,homem).
    • foi_para(homem,lugar).
    • foi_para(mulher,lugar).

Exemplo 3 - Resposta

UPE – UNIVERSIDADE DE PERNAMBUCO PROF. MSC ROBERTA ANDRADE

35

*

AULA 3 – LPA II