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.
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.
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
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 + = == *
:, / //
^ >=
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
Paradigmas
Imperativo
Declarativo
Estruturado
Orientado a Objetos
Concorrente
Funcional
Lgico
Declarativo o Especificaes sobre a Tarefa a Ser Realizada o Predicados o Deduo e inferncia Automticas o Difcil Implementao computacional
alta produtividade
Integrao do Prolog
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;
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).
regra
X,Y,Z
? 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