prolog conceitos e linguagens de programação raranna alves da costa
TRANSCRIPT
![Page 1: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/1.jpg)
PROLOGConceitos e Linguagens de Programação
Raranna Alves da Costa
![Page 2: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/2.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/3.jpg)
O que é Prolog?
![Page 4: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/4.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/5.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/6.jpg)
História
![Page 7: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/7.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/8.jpg)
Características
![Page 9: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/9.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/10.jpg)
• 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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/11.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/12.jpg)
Fatos
![Page 13: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/13.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/14.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/15.jpg)
A sintaxe e regras
![Page 16: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/16.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/17.jpg)
• 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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/18.jpg)
• Á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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/19.jpg)
• 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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/20.jpg)
• 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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/21.jpg)
• 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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/22.jpg)
• Operadores:
Relacionais: Igualdade: =Diferença: \= ou <>Menor que: <Maior que: >Menor ou igual: =< ou <=Maior ou igual: >=
Aritméticos:+-* /mod is
![Page 23: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/23.jpg)
• Entrada e saída: read() e write()
Ex.:ola :- read(X), write('Olá '), write(X). Faremos a chamada:?- ola. 'Luciano'.
![Page 24: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/24.jpg)
• 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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/25.jpg)
Executando um programa
![Page 26: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/26.jpg)
• 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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/27.jpg)
Campos de uso e algumas aplicações
![Page 28: PROLOG Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/28.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/29.jpg)
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 Conceitos e Linguagens de Programação Raranna Alves da Costa](https://reader036.vdocuments.site/reader036/viewer/2022062318/552fc13c497959413d8db536/html5/thumbnails/30.jpg)
Obrigada !