Anda di halaman 1dari 20

PROGRAMMATION EN LOGIQUE

O que ?
  O nome Prolog foi formado a partir dessas duas palavras: programmation en logique; Linguagem enquadrada nos paradigmas lgico e declarativo da programao: lgico, pois todas as regras so construdas atravs de sentenas lgicas; declarativo, pois o objetivo detalhar, mostrar, provar algo, um teorema. E no calcular e exibir um resultado, como as linguagens de programao mais conhecidas. Projetada, em 1972, por Alain Colmerauer e Philippe Roussel na Frana; Sua semntica foi formalizada por Robert Kowalski baseada no conceito das clusulas de Horn; Desenvolvida para criar programas de traduo de linguagens naturais como portugus, francs e

  

O que ?
 Tem na lgica um formalismo conveniente para representar e processar o conhecimento de maneira natural; Linguagem no numrica, orientada a smbolos; adequada soluo de problemas envolvendo objetos e suas relaes; Tem sido aplicada em inteligncia artificial, redes de computadores, educao, base de dados e sistemas paralelos.

 

Por que o Prolog importante?


     H uma preferncia por servios de especificao no mercado de trabalho; Pode ser vista como uma linguagem de programao e de especificao; Eficaz na elaborao de ambientes e interfaces computacionais para seres humanos; Permite definir e estender sistemas reflexivos, utilizados em robtica; adequado para a descrio do mundo real com todos os seus aspectos e sutilezas.

Caractersticas
     A programao limita se a fornecer uma descrio do problema que se pretende computar; A execuo de um programa em Prolog efetivamente a prova de um dado teorema; Obtm respostas backtracking ; alternativas atravs de

Suporta cdigo recursivo e iterativo, dispensando o uso de mecanismos como while, for e repeat; Apesar do longo tempo de desenvolvimento, ainda no uma linguagem portvel.

Mas o que Clusulas de Horn?

uma implicao cujo antecedente uma conjuno de frmulas atmicas e cujo conseqente consiste em, no mximo, uma frmula atmica. atmica. Lgica: (
1

...

n)

Prolog: :- ( 1, ...,
n)

Backtracking
 A evoluo da busca por solues assume a do padro da busca em profundidade em rvores; Quando a pesquisa falha ou encontrado um n terminal, o sistema retorna pelo mesmo caminho percorrido com a finalidade de encontrar solues alternativas; O backtracking pode se tornar em uma fonte de ineficincia, uma vez que o programa pode executar passos tentando satisfazer objetivos que no contribuiro para a soluo do problema.

Tipos de dados
tomos
bolsa, bolsa

variveis
Y, _Y

nmeros inteiros
26, -15, a = 21

nmeros em ponto flutuante


38.0, .12e14

strings
$eu amo o rio de janeiro$, eu adoro nadar

estruturas
morar(patricia, italva)

listas
[a, b, c]

Conceitos bsicos
Fatos Mae (Maryah, juan). Regras Mae (Maryah) :- mulher (Maryah). Consultas ?-mae (juan). Propriedade de entrada de dados Write() Propriedade de sada de dados Read()

Operadores bsicos
pr-definidos no, e, ou lgicos aritmtica relacional outros Atribuir valores a uma varivel

_ not + = == *

:, / //

?; mod =< > \+

^ >=

=:= \== =\= <

Member (elemento, [ ]) (para criar lista) Is (exemplo: a is 2*2.)

Obs.: [] uma lista vazia que ir receber elemento com o uso do \+. E uma das formas de se declarar uma lista com Member. O underline (_) serve para declarar uma varivel annima, a qual pode assumir valores aleatrios ao longo da execuo.

Sadas automticas

Quando as consultas feitas externamente encontrarem alguma regra que faa com que elas sejam verdadeiras, ou seja, faz com que a sentena lgica a qual ela pertence e o termo consequente, seja verdadeira, o prolog gera uma sada de somente dois estados, falso e verdadeiro, no e yes, respectivamente. Estas sadas so como resultados de um teste, e podem ou no, virem acompanhadas de uma mensagem, ou algo que o programador quis escrever na tela.

Aplicaes
Escrita de compiladores Prova de Teoremas Redes de Computadores Sistemas Baseados em Conhecimento Sistemas de Bases de Dados Sistemas Especialistas Processamento de Linguagem Natural Educao Arquiteturas No-Convencionais

Prolog X linguagens imperativas (pascal,C , java,...)

Paradigmas

Imperativo

Declarativo

Estruturado

Orientado a Objetos

Concorrente

Funcional

Lgico

Caractersticas e diferenas entre os Paradigmas


 Imperativo o o o Processo de Mudanas de Estados Varivel, Valor e Atribuio Execuo de passos algortmicos

Declarativo o Especificaes sobre a Tarefa a Ser Realizada o Predicados o Deduo e inferncia Automticas o Difcil Implementao computacional

Prolog X linguagens imperativas


Imperativas processamento numrico solues algortmicas modificao difcil melhor soluo possvel fcil re-usabilidade iteratividade integrada apenas respostas corretas conexo a base de dados prolog processamento simblico solues heursticas fcil modificao todas as solues possveis difcil re-usabilidade iteratividade separada incluem respostas parcialmente corretas no conecta a base de dados baixa produtividade

alta produtividade

Integrao do Prolog

  

Possibilidade de buscas mais definidas atravs de SQL. Prolog interpreta um scripts.

complexas

no

Passos para integrao o Definio de conjuntos e regras em script prolog .pl; o Utilizao de programao Imperativa para selecionar situaes; o Verificar veracidade das situaes com execuo de um script prolog; o Organizar resultados; Torna o prolog mais reutilizvel;

Para que o Prolog utilizado?


 Para resoluo de problemas lgicos, podemos utilizar o Prolog como uma forma de facilitar o encontro de uma soluo; Pelo fato de ser uma linguagem interpretada, pode ser facilmente incorporada a uma linguagem de programao que faa chamadas de execuo de programas; Prolog uma linguagem muito utilizada na rea da pesquisa, desenvolvimento de projetos cientficos, vem tentando ser utilizada no mercado.

Exemplo de cdigo

Pergunta: avo (helio,juan). Cdigo: pai(helio,dan) pai(helio,tony) pai(dan,juan) pai(tony,jack) Avo(X,Z) : pai(X,Y),pai(Y,Z). Write (X). write (e avo de ). write (Z).

O que o cdigo anterior vai fazer?


 Isso: querie: ? avo(helio,juan). helio e avo de juan yes  O que o que: pai(helio,dan) dizendo que a con pai(helio,tony) satisfeita de acordo com pai(dan,juan) fatos pai(tony,jack) Avo(X,Z) : pai(X,Y),pai(Y,Z). variveis write consulta yes retorno automtico sulta foi corretamente os critrios do cdigo.

regra

X,Y,Z

propriedade de sada de dados

? avo(helio,juan)

Obrigada!
Grupo: Letcia Cristina Barbosa da Silva Amanda Klem Porto & Silva Sarah Barreto Marques Yasmmin Cortes Martins Turno: noite 2 perodo Professor: Adriano V. S. Terra Curso: Anlise e desenvolvimento de sistemas

Anda mungkin juga menyukai