Linguagem Prolog

        Grupo:
        Cael London Vieira
        Mateus Felipe
        Rafael Pereira Bozzetti
        Walter da Silva Fernandes
Prolog - Definição Geral


    Prolog é uma linguagem Declarativa, ou seja,
    limita-se a descrever um problema.

    Define uma coleção de Fatos e Relações sobre
    determinado objeto ou problema.

    Utiliza-se de métodos lógicos para declarar
    como o programa deve atingir o seu objetivo.

    Possibilita que consultas sejam feitas na base
    de conhecimento.
Prolog - Histórico


    Foi criada em 1971 por Alain Colmerauer e
    Robert Pasero na Universidade de
    Marselha, França.


    Não foi idealizada como uma linguagem de
    programação, mas para o processamento de
    linguagens naturais, como o Português e o
    Inglês.
Prolog - Domínio da Aplicação

    Lógica matemática, prova de teoremas e semântica.

    Compiladores

    Soluções de equações simbólicas

    Banco de dados relacionais

    Linguagem Natural

    Aplicações, como jogos de Xadrez e Damas

    Planejamento automático de atividades

    Análise Bioquímica e projetos de novas drogas
Prolog - Características


    Provador de teoremas (Verdade ou Falso)

    Linguagem declarativa

    Não emprega tipos de dados

    Linguagem é interpretada

    Diferente de programação estruturada.

    Não existe variáveis globais
Elementos da Linguagem

    Fatos: Determina uma relação entre objetos
    existentes. Exemplo: gosta(maria,X).


    Regras: Determina um relacionamento entre Fatos
    Exemplo: gosta(X,maria) :- gosta(X,peixe).


    Consultas: Infere pesquisas na base de
    conhecimento à procura de cláusulas consultadas.
    Exemplo: ?- gosta(X,maria).
Fatos
                      gosta( joao,maria ).

                          Relação        Objeto

   Relações e Objetos devem começar com letra minúscula.
   Objetos são escritos dentro de parênteses.
   Todo Fato deve terminar com ponto.
   Uma Relação pode receber mais de um Objeto.
Exemplo: gosta( joao, maria ).
   A ordem dos objetos é importante.
gosta( joao, maria ). é diferente de gosta( maria, joao ).
Regras

      luz(acesa) :- interruptor(ligado).


    Determina um relacionamento entre Fatos.

    O “:-” significa “SE”, portanto na expressão acima, a
    luz está acesa se o interruptor estiver ligado.

    Pode-se utilizar variáveis, devem ser em maiúsculo.

    O conteúdo da variável após ser instanciada não pode
    ser mudado.
, =E
                      Consultas
                                                     ; = OU
                 gosta(X, esporte),
                 gosta(X, futebol).


    Ao fazer uma consulta a base de conhecimento, será
    realizado uma procura por relações entre os termos.

    Referente a consulta, caso exista relação será
    retornado true, senão fail.

    Pode-se utilizar variáveis nas consultas, neste caso
    todos os termos serão pesquisados.
Operadores Relacionais
X=Y          X e Y são iguais;
X = Y       X e Y são diferentes;
X<Y          X é menor que Y;
X>Y          X é maior que Y;
X =< Y       X é menor ou igual a Y;
X >= Y       X é maior ou igual a Y.
X =:= Y      X e Y são iguais (p/ números);
X == Y      X e Y são diferentes (p/ números).
Operadores Aritméticos
X+Y       Soma de X e Y;
X–Y       Diferença de X e Y;
X*Y       Multiplicação de X por Y;
X/Y       Divisão de X por Y;
X mod Y   Resto da divisão de X por Y.
Ambiente de Desenvolvimento

    Plugin Eclipse
http://sewiki.iai.uni-bonn.de/research/pdt/start



    Windows: SWI-Prolog-Editor
http://lakk.bildung.hessen.de/netzwerk/faecher/informatik/swi
   prolog/indexe.html



    Linux (debian/ubuntu):
    apt-get install swi-prolog
Exemplo de Código

fatorial(0,1).
fatorial(N,F) :-
    N>0,
    N1 is N-1,
    factorial(N1,F1),
    F is N * F1.
Exercício Proposto
Na base de                   gosta( julio, peixe ).
 conhecimento ao lado,       gosta( julio, maria ).
 como ficariam as            gosta( maria, livro ).
 consultas?
                             gosta( joao, livro ).

    Quem gosta de livro?     gosta( joao, peixe ).

    Quem gosta de livro e    gosta( maria, chocolate ).
    chocolate?               gosta( maria, peixe ).
                             gosta( joao, cerveja ).

    Quem gosta de livro ou   gosta( joao, futebol).
    chocolate?
Resolução do Exercício

    Quem gosta de livro?
gosta(X,livro).


    Quem gosta de livro e chocolate?
gosta(X,livro),gosta(X,chocolate).


    Quem gosta de livro ou chocolate?
gosta(X,livro);gosta(X,chocolate).

Seminário Prolog

  • 1.
    Linguagem Prolog Grupo: Cael London Vieira Mateus Felipe Rafael Pereira Bozzetti Walter da Silva Fernandes
  • 2.
    Prolog - DefiniçãoGeral  Prolog é uma linguagem Declarativa, ou seja, limita-se a descrever um problema.  Define uma coleção de Fatos e Relações sobre determinado objeto ou problema.  Utiliza-se de métodos lógicos para declarar como o programa deve atingir o seu objetivo.  Possibilita que consultas sejam feitas na base de conhecimento.
  • 3.
    Prolog - Histórico  Foi criada em 1971 por Alain Colmerauer e Robert Pasero na Universidade de Marselha, França.  Não foi idealizada como uma linguagem de programação, mas para o processamento de linguagens naturais, como o Português e o Inglês.
  • 4.
    Prolog - Domínioda Aplicação  Lógica matemática, prova de teoremas e semântica.  Compiladores  Soluções de equações simbólicas  Banco de dados relacionais  Linguagem Natural  Aplicações, como jogos de Xadrez e Damas  Planejamento automático de atividades  Análise Bioquímica e projetos de novas drogas
  • 5.
    Prolog - Características  Provador de teoremas (Verdade ou Falso)  Linguagem declarativa  Não emprega tipos de dados  Linguagem é interpretada  Diferente de programação estruturada.  Não existe variáveis globais
  • 6.
    Elementos da Linguagem  Fatos: Determina uma relação entre objetos existentes. Exemplo: gosta(maria,X).  Regras: Determina um relacionamento entre Fatos Exemplo: gosta(X,maria) :- gosta(X,peixe).  Consultas: Infere pesquisas na base de conhecimento à procura de cláusulas consultadas. Exemplo: ?- gosta(X,maria).
  • 7.
    Fatos gosta( joao,maria ). Relação Objeto  Relações e Objetos devem começar com letra minúscula.  Objetos são escritos dentro de parênteses.  Todo Fato deve terminar com ponto.  Uma Relação pode receber mais de um Objeto. Exemplo: gosta( joao, maria ).  A ordem dos objetos é importante. gosta( joao, maria ). é diferente de gosta( maria, joao ).
  • 8.
    Regras luz(acesa) :- interruptor(ligado).  Determina um relacionamento entre Fatos.  O “:-” significa “SE”, portanto na expressão acima, a luz está acesa se o interruptor estiver ligado.  Pode-se utilizar variáveis, devem ser em maiúsculo.  O conteúdo da variável após ser instanciada não pode ser mudado.
  • 9.
    , =E Consultas ; = OU gosta(X, esporte), gosta(X, futebol).  Ao fazer uma consulta a base de conhecimento, será realizado uma procura por relações entre os termos.  Referente a consulta, caso exista relação será retornado true, senão fail.  Pode-se utilizar variáveis nas consultas, neste caso todos os termos serão pesquisados.
  • 10.
    Operadores Relacionais X=Y X e Y são iguais; X = Y X e Y são diferentes; X<Y X é menor que Y; X>Y X é maior que Y; X =< Y X é menor ou igual a Y; X >= Y X é maior ou igual a Y. X =:= Y X e Y são iguais (p/ números); X == Y X e Y são diferentes (p/ números).
  • 11.
    Operadores Aritméticos X+Y Soma de X e Y; X–Y Diferença de X e Y; X*Y Multiplicação de X por Y; X/Y Divisão de X por Y; X mod Y Resto da divisão de X por Y.
  • 12.
    Ambiente de Desenvolvimento  Plugin Eclipse http://sewiki.iai.uni-bonn.de/research/pdt/start  Windows: SWI-Prolog-Editor http://lakk.bildung.hessen.de/netzwerk/faecher/informatik/swi prolog/indexe.html  Linux (debian/ubuntu): apt-get install swi-prolog
  • 13.
    Exemplo de Código fatorial(0,1). fatorial(N,F):- N>0, N1 is N-1, factorial(N1,F1), F is N * F1.
  • 14.
    Exercício Proposto Na basede gosta( julio, peixe ). conhecimento ao lado, gosta( julio, maria ). como ficariam as gosta( maria, livro ). consultas? gosta( joao, livro ).  Quem gosta de livro? gosta( joao, peixe ).  Quem gosta de livro e gosta( maria, chocolate ). chocolate? gosta( maria, peixe ). gosta( joao, cerveja ).  Quem gosta de livro ou gosta( joao, futebol). chocolate?
  • 15.
    Resolução do Exercício  Quem gosta de livro? gosta(X,livro).  Quem gosta de livro e chocolate? gosta(X,livro),gosta(X,chocolate).  Quem gosta de livro ou chocolate? gosta(X,livro);gosta(X,chocolate).