PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

30
PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa

Transcript of PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Page 1: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

PROLOGConceitos e Linguagens de Programação

Raranna Alves da Costa

Page 2: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Sumário

• O que é Prolog?• História• Características• Conceitos básicos• Fatos• A sintaxe e as regras do prolog• Executando um programa em Prolog• Campos de uso e algumas aplicações• Bibliografia

Page 3: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

O que é Prolog?

Page 4: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• Prolog é uma linguagem de programação que se enquadra no paradigma de Programação em Lógica Matemática. É uma linguagem de uso geral que é especialmente associada com a inteligência artificial e linguística computacional.

• Linguagem concreta, em que acrescenta-se o Prolog puro com componentes extra-lógicos.

Page 5: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• Apesar do longo tempo de desenvolvimento , essa linguagem ainda não é uma linguagem portável já que em cada implementação usa rotinas completamentes diferentes e incompatíveis entre si.

• Exemplo de programa trivial ao realizar um loop, o interpretador não consegue rodar.

Page 6: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

História

Page 7: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• O nome Prolog para a linguagem concreta foi escolhido por Philippe Roussel como uma abreviação de “PROgrammation en LOGique”. Foi criada em meados de 1972 por Alain Colmerauer e Philippe Roussel, baseados no conceito de Robert Kowalski da interpretação procedimental das cláusulas de Horn.

• A motivação para isso veio da vontade de reconciliar o uso da lógica como uma linguagem

Page 8: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Características

Page 9: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• O Prolog é uma linguagem declarativa, ou seja, ao invés de o programa estipular a maneira de chegar à solução passo-a-passo, como acontece nas linguagens procedimentais ou orientadas a objeto, ele fornece uma descrição do problema que se pretende computar utilizando uma coleção de fatos e regras (lógica) que indicam como deve ser resolvido o problema proposto.

Page 10: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Além de ser uma linguagem declarativa, outro fato que o difere das outras linguagens é a questão de não possuir estruturas de controle (if-else, do-while, for, switch) presentes na maioria das linguagens de programação. Para isso utilizamos métodos lógicos para declarar como o programa deverá atingir o seu objetivo.

– Um programa em Prolog pode rodar em um modo interativo, o usuário poderá formular queries utilizando os fatos e as regras para produzir a solução através do mecanismo de unificação.

Page 11: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• O Prolog é baseado num subconjunto do cálculo de predicados de primeira ordem, o que é definido por cláusulas de Horn. A execução de um programa em Prolog é efetivamente a prova de um teorema por resolução de primeira ordem. Alguns conceitos fundamentais são unificação, recursão, e backtracking.

Page 12: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Fatos

Page 13: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• Em Prolog são fornecidos os fatos e as regras para uma base de dados, que posteriormente serão executadas consultas em cima da base de dados.

• A estrutura de um fato é formada por um predicado, seus argumentos (objetos) e finalizamos a instrução com um ponto(.) equivalente ao ponto-vírgula das linguagens comuns de programação

Page 14: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• O predicado é a relação sobre os quais os objetos irão interagir.Ex.: predicado(argumento1,argumento2...).

Relação entre 2 objetos: -> amiga(joana, maria).

Característica do objeto: -> homem(jose).

Obs.: Nomes começam por letra minúscula Ordem dos objetos podem inferir no resultado

Page 15: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

A sintaxe e regras

Page 16: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Clique para adicionar texto

• Prolog não emprega tipos de dados do mesmo modo que as linguagens de programação mais comuns normalmente fazem. Todos os dados são tratados como sendo de um único tipo.

• Ou seja, os elementos léxicos utilizados na sua declaração determinam se esse termo será um número, um texto, uma variável, uma estrutura complexa e assim por diante.

Page 17: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• O escopo de uma variável é a asserção (fato, regra, ou consulta) na qual aparece.

• O escopo de qualquer outro nome (constante, nome de função, ou nome de predicado) é todo o programa.

Obs.: Isto significa que um nome de variável pode ser utilizado e reutilizado a vontade no programa para denotar variáveis diferentes, enquanto qualquer outra notação representa, ou é, o mesmo objeto para o programa todo.

Page 18: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Átomos:Um átomo é uma seqüência constituída

de letras e números, mas iniciando com uma letra minúscula. Se um átomo não alfanumérico é necessário, pode-se usar qualquer seqüência entre aspas simples .

Ex.: – começando com letra minúscula:

pedro henrique_iv – como uma sequência de caracteres entre

aspas simples: 'quem é você?' 'eu não sei'.

Page 19: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Números:Um número é uma seqüência de

dígitos, permitindo também os sinais de . (para números reais), - (número negativo) e e (notação científica).

Ex.: – 589– 5.89

Page 20: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Variáveis:São como uma incógnita, cujo valor é

desconhecido a princípio mas, após descoberto, não sofre mais mudanças.

Um tipo especial de variável, a variável anônima (explicada mais adiante), é uma expressão que significa 'qualquer variável', e é escrita como um único subtraço (_).

Ex.: – X Nome Rei_da_Espanha

Page 21: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Strings:São normalmente escritas como uma

seqüência de caracteres entre aspas. É comum serem representadas internamente como listas de códigos de caracteres, em geral utilizando a codificação local ou Unicode.

Ex.: – X Nome Rei_da_Espanha

Page 22: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Operadores:

Relacionais: Igualdade: =Diferença: \= ou <>Menor que: <Maior que: >Menor ou igual: =< ou <=Maior ou igual: >=

Aritméticos:+-* /mod is

Page 23: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Entrada e saída: read() e write()

Ex.:ola :- read(X), write('Olá '), write(X). Faremos a chamada:?- ola. 'Luciano'.

Page 24: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Regras:• Para utilizarmos uma regra , se usa o símbolo

“:-” Ex.: Dados os fatos:

pai(arthur,silvio).pai(arthur,carlos).pai(carlos,xico).pai(silvio,ricardo).

Utilizaremos a seguinte regra:avo(X,Z) :- pai(X,Y), pai(Y,Z).

Isso significa que se alguém é pai de uma pessoa, que por sua vez é pai de outra pessoa, então ele é avô.

Vamos realizar uma querie para conferir a regra:?- avo(arthur,xico),avo(arthur,ricardo).

Resposta : “YES”

Page 25: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Executando um programa

Page 26: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

• Software Swi-Prolog 6.4.1 plataforma Windows :

Criação de um novo arquivo fonte .pl Edição de .pl já existente Execução de arquivo finalizado

Page 27: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Campos de uso e algumas aplicações

Page 28: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Como podemos ver, o Prolog é uma linguagem muito poderosa, principalmente na área de Inteligência Artificial onde é líder absoluta. Entre as implementações do Prolog, podemos citar o Visual Prolog (Turbo Prolog), o SWI Prolog, GNU Prolog, Amzi! Prolog, entre muitas outras já existentes.

Page 29: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Bibliografia

• http://www.linhadecodigo.com.br/Artigo.aspx?id=1697• PROLOG. Disponível em:

http://www.din.uem.br/ia/ferramen/prolog/. • PROLOG, Wikipédia - Enciclopédia livre. Disponível em:

http://pt.wikipedia.org/wiki/Prolog.• JACQUES ROBIN, Slides sobre Fundamentos do Prolog.

Page 30: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.

Obrigada !