PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.
Transcript of PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa.
PROLOGConceitos 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 (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.
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 !