prolog

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

Upload: twila

Post on 14-Feb-2016

36 views

Category:

Documents


0 download

DESCRIPTION

PROLOG. Conceitos e Linguagens de Programação. Raranna Alves da Costa. Sumário. O que é P rolog? 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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PROLOG

PROLOGConceitos e Linguagens de Programação

Raranna Alves da Costa

Page 2: PROLOG

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

O que é Prolog?

Page 4: PROLOG

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

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

História

Page 7: PROLOG

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

Características

Page 9: PROLOG

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

• 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

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

Fatos

Page 13: PROLOG

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

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

A sintaxe e regras

Page 16: PROLOG

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

• 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

• Á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

• 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

• 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

• 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

• Operadores:

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

Aritméticos:+-* /mod is

Page 23: PROLOG

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

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

Page 24: PROLOG

• 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

Executando um programa

Page 26: PROLOG

• 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

Campos de uso e algumas aplicações

Page 28: PROLOG

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

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

Obrigada !