Paradigmas de Linguagens de Programação Paradigma de Programação em Lógica Aula #11 (CopyLeft)2010 - Ismar Frango ismarfra...
Paradigma de Programação em Lógica (ou Declarativo) ?- ama (julieta,lomeu). :false.
a:-b Origens A programação em lógica inicia com a publicação do artigo de John Alan Robinson em 1965 pela ACM:  "A Ma...
O Que é o paradigma declarativo? Linguagens que seguem o paradigma declarativo são baseadas em programação em lógica (trad...
<ul><li>Prolog é baseado em cálculo de predicados de primeira ordem, ou seja, predicados compostos por: </li></ul><ul><ul>...
(Breve) Embasamento teórico Basicamente, a programação em lógica corresponde a escrever códigos como: goal :- subgoal_1, ....
MODULE  GCD. IMPORT  Integers. PREDICATE  Gcd : Integer * Integer * Integer. Gcd(i,j,d) <-  CommonDivisor(i,j,d) & ~ SOME ...
Upcoming SlideShare
Loading in …5
×

E:\Plp 2009 2\Plp Aula11

1,254 views

Published on

Paradigmas de Linguagens de Programacao
Aula #11
Prof. Ismar Frango

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,254
On SlideShare
0
From Embeds
0
Number of Embeds
21
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

E:\Plp 2009 2\Plp Aula11

  1. 1. Paradigmas de Linguagens de Programação Paradigma de Programação em Lógica Aula #11 (CopyLeft)2010 - Ismar Frango ismarfrango@gmail.com
  2. 2. Paradigma de Programação em Lógica (ou Declarativo) ?- ama (julieta,lomeu). :false.
  3. 3. a:-b Origens A programação em lógica inicia com a publicação do artigo de John Alan Robinson em 1965 pela ACM: &quot;A Machine-Oriented Logic Based on the Resolution Principle&quot; Uma das primeiras linguagens a implementar os resultados de Robinson é Prolog, proposta por Alain Colmerauer e Phillipe Roussel em 1972 (Marseille).
  4. 4. O Que é o paradigma declarativo? Linguagens que seguem o paradigma declarativo são baseadas em programação em lógica (tradução direta de logic programming ). Prolog (do francês Pro grammation en Log ique ) é a linguagem-expoente desse paradigma, embora existam outras, como Gödel, Mercury, MUSE, etc. Há um outro paradigma derivado deste, que é o paradigma de programação por propagação de restrições (CLP – Constraint Logic Programming), com as linguagens Oz, CLP(R), ECL i PS e , etc.
  5. 5. <ul><li>Prolog é baseado em cálculo de predicados de primeira ordem, ou seja, predicados compostos por: </li></ul><ul><ul><li>Variáveis (Sem tipagem explícita) </li></ul></ul><ul><ul><li>Funções e relações n-árias </li></ul></ul><ul><ul><li>Constantes (true e false) </li></ul></ul><ul><ul><li>Conectivos lógicos (limitados a  e  , ou seja, cláusulas de Horn ) /*Algumas outras linguagens lidam com lógica disjuntiva, como DLV .*/ </li></ul></ul>Qualquer proposição lógica do tipo: (p E q E R...) implica Z Prolog
  6. 6. (Breve) Embasamento teórico Basicamente, a programação em lógica corresponde a escrever códigos como: goal :- subgoal_1, ..., subgoal_n. Que significa que para provar goal , é suficiente provar de subgoal_1 até subgoal_n .
  7. 7. MODULE GCD. IMPORT Integers. PREDICATE Gcd : Integer * Integer * Integer. Gcd(i,j,d) <- CommonDivisor(i,j,d) & ~ SOME [e] (CommonDivisor(i,j,e) & e > d). PREDICATE CommonDivisor : Integer * Integer * Integer. CommonDivisor(i,j,d) <- IF (i = 0 / j = 0) THEN d = Max(Abs(i),Abs(j)) ELSE 1 =< d =< Min(Abs(i),Abs(j)) & i Mod d = 0 & j Mod d = 0. Exemplo em Gödel

×