Profa. Isabel Cristina Siqueira da Silva Paradigmas de Linguagens de Programao Informtca Ulbra Gravata
Imperativo
Declarativo
Estruturado
Concorrente
Funcional
Lgico
Orientado a Objetos
Programa
Conjunto de fatos (conhecidos) e regras (de deduo) que
Principais aplicaes
Sistemas Baseados em Conhecimento
sistemas que aplicam mecanismos automatizados de raciocnio para
em critrios
Sistemas Especialistas
sistemas que emulam a especializao humana em algum domnio
especfico.
matemtica que formaliza a estrutura lgica e define o significado dos conectivos e, ou, no, se...ento e outros
Lgica Simblica
Representao pq pq p q p q Significado p ou q peq p implica q p equivale a q
no p
Exemplo de deduo
Se um coelho um mamfero e um mamfero tem sangue quente Se p q Ento, um coelho tem sangue quente. Ento r
Dados a e b, determinar se R(a,b) verdadeira. Dado a, encontrar todo y tal que R(a,y) verdadeira. Dado b, encontrar todo x tal que R(x,b) verdadeira. Encontrar todo x e todo y tal que R(x,y) verdadeira.
sentena se p ento q
Representao: q p ou p q
4 classificaes:
Representao: q
Exemplo: 3 um nmero inteiro
inteiro(3)
concluses. Representao: q p
Exemplo: Todo nmero natural um nmero inteiro
inteiro(N) natural(N)
condies.
Representao: q p1p2 Exemplo: Para que um nmero seja natural, ele deve ser
inteiro e positivo
natural(N) inteiro(N) N>0
cabea da clusula (conseqente): concluso corpo da clusula (antecedente): condies a serem satisfeitas
Representao: p
Exemplo: Ser 3 um nmero inteiro?: inteiro(3) Processo de deduo: Se 3 um nmero natural (fato) e
do problema: fatos e regras Procedimentos de resoluo, baseados em um conjunto de clusulas e um objetivo: consulta ao programa Projeto de solues: abordagem de redes semnticas
porta criana
amassou
dedo chocolate
adora comer
relao 1:n
brincar
gosta
criana
circo bicicleta
comeu
pizza
transitiva
maior
pedro
maria
maior
maior
paulo
relao -um
gato -um felino -um mamfero
faz-parte
banquete
A abordagem de grupo
Fatos:
F1: Pedro, Maria e Paulo gostam de ler F2: Pedro, Paulo e Vera gostam de cinema F3: Paulo, Maria e Vera gostam de boliche Questes: X gosta de ler? Quem gosta de boliche? Quem gosta de boliche e cinema?
F1
F2
F3
-uma
cidade
-um
pais
capital
brasil
objetos
capital_pais(X,Y) :- pais(X), cidade(Y), capital(X, Y). capital_estado(X,Y) :- estado(X), cidade(Y), capital(X, Y). Y capital do pais X, se X -um pais e Y -uma
cidade e Y capital de X.
Exemplo em PROLOG
/* Base de Dados */ cidade(portoalegre). cidade(brasilia). pais(brasil). estado(rgs). capital(brasil,brasilia). capital(rgs, portoalegre). capital_pais(X,Y) :- pais(X), cidade(Y), capital(X, Y). capital_estado(X,Y) :- estado(X), cidade(Y), capital(X, Y).
/* Consultas */ ?- cidade(portoalegre). Yes ?- capital(brasil,X). X = brasilia ; No
Operadores relacionais
Smbolo/Significado
> < >= =< =
\=
?- 1+2 \= 2+1. no
Consultas: reversibilidade
Permite a definio de programas sem distino de e/s Permite a obteno de respostas alternativas Programas com mais de uma finalidade
Exemplo: gosta(maria, peixe). gosta(maria, vinho). gosta(pedro, vinho). gosta(pedro, maria).
Perguntas: - Quem gosta de peixe? ?- gosta(X, peixe). - Quem gosta de vinho? ?- gosta(X, vinho). - Pedro e Maria se gostam? ?- gosta(pedro, maria), gosta(maria, pedro). - Existe algo que Pedro e Maria (ambos) gostem? ?- gosta(pedro, X), gosta(maria, X).
X\=Y
considerada
Cut: S um!
pedro maria maria pedro
Exemplos de cut !
/* Base de dados */ teste(um). teste(dois). teste(tres). /* Regras */ lista(X):-teste(X). listacut(X):-teste(X),!. listacut2(X,Y):-teste(X),!,teste(Y). /* Consulta */ ?- lista(C). C = um ; C = dois ; C = tres no /* Consulta */ ?- listacut(N). N = um no /* Consulta */ ?- listacut2(M,N). M = um N = um ->; M = um N = dois ->; M = um N = tres yes
Aritmtica Simples
Operadores aritmticos:
+, - , *, / , div (diviso inteira), mod (resto diviso inteira), ^
Aritmtica Simples
Exemplo:
/* Base de dados */ velocidade(ford, 100). velocidade(chevy, 105). velocidade(dodge, 95). velocidade(volvo, 80). tempo(ford, 20). tempo(chevy, 21). tempo(dodge, 24). tempo(volvo, 24). /* Regra */ distancia(X, Y) :- velocidade(X, V ), tempo(X, T), Y is V * T.
Condicionais
Exemplo: Se x = y
Escrever quadrado Seno Escrever retangulo
/* Regras */ quadrado(X) :- area(X,X). retangulo(X,Y) :- area(X,Y). area(X,Y) :- Z is X * Y, ( X=Y, write('quadrado: '); write('retangulo: ')), !, write(Z). /* Consultas*/
?- quadrado(3). quadrado: 9
?- retangulo(2,3). retangulo: 6
Recursividade
Exemplo: fatorial
/* Base de dados */ /* Fatorial de 0 1 devolve 1 em F1 */
fatorial(0,1). /* Regra */
/* Enquanto N > 0, define N1 e chama recursivamente */
Recursividade
Exemplo: Clculo do fatorial de 4
? fatorial (4,F).
fatorial(4,F) N = 4, F? 4 > 0, N1 = 3, fatorial(3,F1) fatorial(3,F) N = 3, F? 3 > 0, N1 = 2, fatorial(2,F1) fatorial(2,F) N = 2, F? 2 > 0, N1 = 1, fatorial(1,F1) >> F1 = 6 >> F = 4 * 6 = 24
>> F1 = 2 >> F = 3 * 2 = 6
>> F1 = 1 >> F = 2 * 1 = 2
Contadores
Exemplo: Inteiros de 1 a 10
/* Regras */
/* Consulta*/ ?- dezena.
Contadores
Exemplo: Inteiros de 1 a 10
? dezena.
dezena >> dezena(0) >> X1 = 1 >> dezena(1) dezena(1) >> X1 = 2 >> dezena(2) dezena(2) >> X1 = 3 >> dezena(3) ... dezena(9) >> X1 = 10 >> dezena(10)
dezena(10) :- !