310 likes | 404 Views
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.
E N D
PROLOG Conceitos e Linguagens de Programação RarannaAlvesda Costa
Sumário • O que é Prolog? • História • Características • Conceitosbásicos • Fatos • A sintaxe e as regras do prolog • Executando um programaem Prolog • Campos de uso e algumasaplicações • Bibliografia
Clique para adicionar texto • Prolog é umalinguagem de programaçãoque se enquadra no paradigma de ProgramaçãoemLógicaMatemática. É umalinguagem de usogeralque é especialmenteassociada com a inteligência artificial e linguísticacomputacional. • Linguagemconcreta, emqueacrescenta-se o Prolog puro com componentes extra-lógicos.
Clique para adicionar texto • Apesar do longo tempo de desenvolvimento , essalinguagemaindanão é umalinguagemportáveljáqueemcadaimplementaçãousarotinascompletamentesdiferentes e incompatíveis entre si. • Exemplo de programa trivial aorealizar um loop, o interpretadornãoconseguerodar.
Clique para adicionar texto • O nome Prolog para a linguagem concreta foi escolhido por Philippe Roussel como uma abreviação de “PROgrammationenLOGique”. 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
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 (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.
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.
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.: Nomescomeçamporletraminúscula Ordem dos objetospodeminferir no resultado
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: pedrohenrique_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 <> • Menorque: < • Maiorque: > • Menorouigual: =< ou <= • Maiorouigual: >= 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 utilizarmosumaregra , 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”
Software Swi-Prolog 6.4.1 plataforma Windows : • Criação de um novo arquivofonte .pl • Edição de .pl jáexistente • Execução de arquivofinalizado
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.
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. Bibliografia