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
O que é 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.
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.
História
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
Características
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.
• 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 (ifelse, 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.
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.
Fatos
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
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
A sintaxe e regras
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.
• 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.
• Á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'.
• 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
• 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
• 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
• Operadores:
Relacionais:
 Igualdade: =
 Diferença: \= ou <>
 Menor que: <
 Maior que: >
 Menor ou igual: =< ou <=
 Maior ou igual: >=
Aritméticos:
+
*
/
 mod
 is
• Entrada e saída: read() e write()
Ex.:
ola :- read(X), write('Olá '), write(X).
Faremos a chamada:
?- ola. 'Luciano'.
• 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”
Executando um programa
• 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
Campos de uso e algumas aplicações
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.
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.
Obrigada !
Download

Prolog