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 !