• Nenhum resultado encontrado

Paradigmas de Linguagens de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Paradigmas de Linguagens de Programação"

Copied!
49
0
0

Texto

(1)

faculdadenovaroma.com.br

Paradigmas de

Linguagens de Programação

Faculdade Nova Roma

Cursos de Ciências da Computação (6° Período) Prof. Adriano Avelar -

Site: www.adrianoavelar.com

Email: [email protected]

(2)

faculdadenovaroma.com.br

PROGRAMAÇÃO LÓGICA

(3)

faculdadenovaroma.com.br

Paradigma Lógico

Modelo Declarativo

Declara os objetivos da computação, ao invés do algoritmo detalhado por meio dos quais o objetivo deve ser alcançado.

Os objetivos são expressos como coleções de regras. (Programação baseada em regras)

Não-deterministicos e baseados backtracking

Várias soluções para um problema. Soluções baseados em refinamentos de busca.

(4)

faculdadenovaroma.com.br

Aplicações

Inteligência Artificial

Representação do conhecimento

Sistemas especialistas Provadores de teoremas Aprendizagem de máquina Processamento de linguagem natural

Sistemas multi-agentes Robótica

Sistemas Distribuídos e Internet

Comércio eletrónico

Recuperação, filtragem e extração de informação

Engenharia de Software

Prototipagem rápida de software complexos Especificações formais executáveis

Programação por resolução de restrições

Programação multi-paradigma de alto-nível

Banco de Dados

BD dedutivos e DOO Mineração de Dados e

Descoberta de Conhecimento Integração de Dados e

Interoperabilidade

(5)

faculdadenovaroma.com.br

Paradigma Lógico

A PL Implementa os conceitos da lógica matemática

Lógica Matemática

Lógica Proposicional

Lógica de Predicados

(6)

faculdadenovaroma.com.br

LÓGICA PROPOSICIONAL

Revisando...

(7)

faculdadenovaroma.com.br

Lógica Proposicional

Em lógica matemática, o principal objetivo será a

investigação da validade de ARGUMENTOS: conjunto de enunciados dos quais um é a CONCLUSÃO e os demais PREMISSAS ou PROPOSIÇÔES

Argumento Dedutivo: é valido quando suas premissas, se verdadeiras, a conclusão também é verdadeira.

Premissa 1: “Todo homem é mortal”

Premissa 2 : “João é homem”

Conclusão: “João é mortal”

(8)

faculdadenovaroma.com.br

Lógica Proposicional

Argumento Indutivo: a verdade das premissas não basta para assegurar a verdade da

conclusão

Premissa 1: “Maria é casada com João”

Premissa 2: “Pedro é filho de Maria”

Premissa 3: “Roberto também é filho de Maria”

Conclusão: “Pedro e Roberto são filhos de João”

(9)

faculdadenovaroma.com.br

Lógica Proposicional

Proposição (premissa) : sentenças

declarativas afirmativas da qual tenha sentido afirmar que seja V ou F (não ambos).

Ex.

A lua é quadrada A neve é branca O universo é infinito

?

(10)

faculdadenovaroma.com.br

Cálculo Proposicional

A proposição é o elemento básico a partir do qual os argumentos são construídos, sendo também o principal objeto de estudo na lógica proposicional.

Usar a lógica matemática para resolver problemas do mundo real

Também chamado de: Cálculo Sentencial ou

Cálculo das sentenças

(11)

faculdadenovaroma.com.br

Simbologia

Variáveis proposicionais: letras latinas minúsculas p,q,r,s .... Para indicar as proposições (fórmulas atômicas)

Exemplo:

A lua é quadrada: p

A neve é branca: q

(12)

faculdadenovaroma.com.br

Conectivos Lógicos

As fórmulas atômicas podem ser combinadas entre si. Usa-se os conectivos lógicos para

representar tais combinações.

˄ : e

˅ : ou

→ : se ... então

↔ : se e somente se

~ ou ¬ : não Exemplos:

A lua é quadrada e a neve é branca: p ˄ q

A lua é quadrada: p A neve é branca: q

(13)

faculdadenovaroma.com.br

Símbolos Auxiliares

(): Parênteses que servem para denotar o “alcance” dos conectivos

Exemplo:

Se a lua é quadrada e a neve é branca então a lua não é quadrada:

(p ˄ q) → ~ p

Os parênteses são usados segundo a ordem dos conectivos: ~,

˅, ˄, →, ↔

Ex.: p ˅ q ˄ ~r → p → ~q

(((p ˅ q )˄ (~r)) → (p → (~q)))

(14)

faculdadenovaroma.com.br

Tabela Verdade

Mapeia todos os valores lógicos de uma relação.

Qual a probabilidade de eu ir jogar bola hoje?

p: não está chovendo

q: a bola não está murcha

p q p ˄ q

V V V

V F F

F V F

F F F

(15)

faculdadenovaroma.com.br

LÓGICA DE PREDICADOS

(16)

faculdadenovaroma.com.br

Lógica de predicados

Há vários argumentos que não podem ser adequadamente formalizados e validados em lógica proposicional

intuitivamente, podemos ver que este argumento é válido sua formalização em lógica proposicional resulta em {p, q}  r porém, não há como mostrar que {p, q}  r é válido

a validade deste argumento depende do significado da palavra

“Algumas”

para tratar este tipo de argumento precisamos da lógica de predicados Exemplo

Ricardo foi para a festa

Algumas pessoas da festa ficaram bêbadas Logo, Ricardo ficou bêbado

(17)

faculdadenovaroma.com.br

Lógica de predicados

A linguagem formal da lógica de predicados é mais expressiva que aquela da lógica proposicional. Esta maior expressividade decorre do fato de as fórmulas da lógica de predicados serem compostas pelos

seguintes elementos básicos:

objetos predicados conectivos variáveis

quantificadores:

(18)

faculdadenovaroma.com.br

Objetos

Na lógica de predicados, a noção de objeto é usada num sentido bastante amplo. Objetos podem ser:

concretos: a bíblia, a lua, ...

abstratos: o conjunto vazio, a paz, ...

fictícios: unicórnio, Saci-Pererê, ...

atômicos ou compostos: um teclado é composto de teclas Objeto

É qualquer coisa a respeito da qual precisamos dizer algo

Nomes de objetos devem iniciar com letra minúscula!

(19)

faculdadenovaroma.com.br

Predicados

Predicados

Denota uma relação entre objetos num determinado contexto

Nomes de predicados também devem iniciar com letra minúscula!

sobre(a,b): o bloco A está sobre o bloco B cor(b,azul): o bloco B tem cor azul

maior(c,a): o bloco C é maior que o bloco A distante(c,a): o bloco C está distante de A

? ? ?

M

(20)

faculdadenovaroma.com.br

Conectivos

Conectivos

Forma proposições compostas a partir de proposições atômicas

sobre(a,b) ∧ sobre(b,m) : A está sobre B e B está sobre a mesa

¬cor(b,vermelho): a cor de B não é vermelho

maior(b,c) ∨ maior(c,b): o bloco B é maior que C ou C é maior que B

¬cor(a,verde) ∧ ¬cor(c,vermelho) : A não é verde e C não é vermelho ? ? ?

M

(21)

faculdadenovaroma.com.br

Variáveis

Variáveis

Permite estabelecer fatos sobre objetos, sem nomeá-los explicitamente

Nomes de variáveis devem iniciar com letra maiúscula!

bloco(X): X é um bloco mesa(Y): Y é uma mesa sobre(X,Y): X está sobre Y

Note que proposições atômicas são sentenças que podem ter valor verdadeiro ou falso; mas não podemos dizer se bloco(X) é verdadeiro ou falso até que a variável X tenha sido substituída, instanciada ou quantificada.

(22)

faculdadenovaroma.com.br

Quantificadores

Quantificadores

Permite estabelecer fatos sobre objetos, sem enumerá-los explicitamente Há dois quantificadores:

Universal: ∀X[bloco(X)] estabelece que todo objeto X é um bloco

• Lê-se: Para todo X, X é um bloco

Existencial: ∃Y[mesa(Y)] estabelece que algum objeto Y é uma mesa

• Lê-se: Existe um Y, tal-que Y é uma mesa

• Estes quantificadores podem ser combinados numa mesma fórmula

• Todo bloco está sobre alguma coisa que é um bloco ou uma mesa

∀X[bloco(X)→ ∃Y[sobre(X,Y) ∧ (bloco(Y) ∨ mesa(Y))]]

(23)

faculdadenovaroma.com.br

Representação do conhecimento

Para facilitar a formalização de sentenças na lógica de predicados, destacamos quatro tipos de sentenças de especial interesse,

denominadas enunciados categóricos:

Universal afirmativo: Todos os homens são mortais Universal negativo: Nenhum homem é extraterrestre.

Particular afirmativo: Alguns homens são cultos.

Particular negativo: Alguns homens não são cultos.

(24)

faculdadenovaroma.com.br

Representação do conhecimento

Universal afirmativo

É da forma ∀X[p(X)→q(X)]]

Estabelece que p é um subconjunto de q

(25)

faculdadenovaroma.com.br

Representação do conhecimento

Universal negativo

É da forma ∀X[p(X)→¬q(X)]]

estabelece que os conjuntos p e q são disjuntos

(26)

faculdadenovaroma.com.br

Representação do conhecimento

Particular afirmativo

É da forma ∃X[p(X) ∧ q(X)]

Estabelece que os conjuntos p e q têm intersecção não-vazia

(27)

faculdadenovaroma.com.br

Representação do conhecimento

Particular negativo

É da forma ∃X[p(X) ∧ ¬q(X)]

estabelece que existem elementos em p que não estão em q

(28)

faculdadenovaroma.com.br Exercício 1.

Formalize as sentenças a seguir usando lógica de predicados

Toda cobra é venenosa.

Nenhuma bruxa é bela.

Algumas plantas são carnívoras.

Há aves que não voam.

Tudo que sobe, desce.

Existem políticos que não são honestos.

Não existe bêbado feliz.

Pedras preciosas são caras.

Ninguém gosta de impostos.

Vegetarianos não gostam de açougueiros.

Toda mãe ama seus filhos.

(29)

faculdadenovaroma.com.br

Representação do conhecimento

Há sentenças que podem ser escritas em mais de uma forma.

Exemplo:

Sentenças

Nem tudo que brilha é ouro.

Existe algo que brilha e não é ouro.

Fórmulas

¬∀X[b(X)→o(X)]

∃X[b(X)∧ ¬¬o(X)]

Equivalência

¬∀X[b(X) → o(X)]

≡ ¬∀X[¬b(X) ∨ o(X)]

≡ ∃X¬[¬b(X) ∨ o(X)]

≡ ∃X [ b(X) ∧ ¬o(X)]

(30)

faculdadenovaroma.com.br Exercício 2.

Formalize e Verifique se os pares de sentenças são equivalentes

Nem toda estrada é perigosa.

Algumas estradas não são perigosas.

Nem todo bêbado é fumante.

Alguns bêbados são fumantes.

Nem todo ator americano é famoso.

Alguns atores americanos não são famosos.

(31)

faculdadenovaroma.com.br

Cláusula de HORN

A lógica proposicional e predicativa fornece os fundamentos formais para a programação

lógica.

A cláusula de horn é uma variante particular da lógica predicativa que está por trás da

sintaxe do Prolog.

Clausula horn possui cabeça e corpo.

h  p1,p2,p3,..., pn

molhado( X )  descoberto( X ), chovendo( C )

(32)

faculdadenovaroma.com.br

PROLOG

PROgraming in LOGic

(33)

faculdadenovaroma.com.br

Introdução

Linguagem de programação declarativa para processamento simbólico que implementa o paradigma lógico.

Essencialmente, a programação em Prolog consiste em:

Identificar os objetos em um contexto de discurso

Identificar relações (ou predicados) de interesse entre estes objetos

Declarar fatos e regras a respeito destas relações Consultar o sistema acerca das relações declaradas

(34)

faculdadenovaroma.com.br

Elementos básicos

Os elementos básicos da linguagem Prolog são herdados da lógica de predicados.

Esses elementos são:

fatos regras

consultas.

(35)

faculdadenovaroma.com.br

Fatos

Fatos servem para estabelecer um

relacionamento existente entre objetos de um determinado contexto. Por exemplo, num

contexto bíblico,

pai(adão,cain).

é um fato que estabelece que Adão é pai de Cain, ou seja, que a relação pai existe entre os objetos denominados adão e cain.

átomos predicado

(36)

faculdadenovaroma.com.br

Programa 1.1

Programa 1.1: Uma árvore genealógica.

pai(adão,cain).

pai(adão,abel).

pai(adão,seth).

pai(seth,enos).

KB1 - Base de Dados (FATOS e REGRAS)

(37)

faculdadenovaroma.com.br

Consultas

Para recuperar informações de um programa lógico, usamos consultas. Uma consulta

pergunta se uma determinado relacionamento existe entre objetos.

Por exemplo, a consulta

?- pai(adão,cain).

pergunta se a relação pai vale para os

objetos adão e cain ou, em outras palavras,

pergunta se Adão é pai de Cain.

(38)

faculdadenovaroma.com.br

Consultas

Sintaticamente, fatos e consultas são muito similares. A diferença é que fatos são

agrupados no arquivo que constitui o

programa, enquanto consultas são sentenças digitadas no prompt (?-) do interpretador

Prolog.

(39)

faculdadenovaroma.com.br

Consultas

Consultas à KB1

Adão é pai de enos

?- pai(adão,enos).

Quem é pai de Cain?

?- pai(X,cain).

Quem é pai de Abel e Seth?

pai(X,seth), pai(X,abel)

Uma consulta com variáveis pode ter mais de uma resposta.

?- pai(adão,X).

“Enter”  para satisfeito com a resposta.

ou lógico (“;”)  para obter outra resposta.

(40)

faculdadenovaroma.com.br

Exemplo 2

Programa 1.2: Gosto.

gosta(pedro, maria). %Pedro gosta de Maria gosta(maria, pedro). %Maria gosta de Pedro

KB2 - Base de Dados (FATOS e REGRAS)

(41)

faculdadenovaroma.com.br

Consulta

Será que maria gosta de pedro e pedro gosta de maria?

?- gosta(pedro, maria), gosta(maria, pedro).

Há algo de que ambos Maria e Pedro gostam?

?- gosta(maria, X), gosta(pedro, X).

(42)

faculdadenovaroma.com.br

Regras

Uma regra é uma armação geral sobre objetos e seus relacionamentos. Por exemplo,

suponha que queremos representar a seguinte dependência entre fatos:

Pedro gosta de todo mundo que gosta de vinho.

o que pode ser reescrito como:

Pedro gosta de X se X gosta de vinho.

(43)

faculdadenovaroma.com.br

Regras

Em Prolog, regras consistem de uma cabeça e um corpo. A cabeça e o corpo são

conectados pelo símbolo :- formado por dois pontos e hífen. O “:-” procuncia-se se. A

dependência acima seria escrito como:

• gosta(pedro, X) :- gosta(X, vinho).

(44)

faculdadenovaroma.com.br

Regras

A cabeça de uma regra descreve o que está sendo definido. O corpo, no caso gosta(X, vinho), é uma conjunção de metas que devem ser satisfeitas para que a cabeça seja considerada

verdadeira.

Por exemplo, podemos tornar Pedro mais exigente sobre o que ele gosta adicionando mais metas ao corpo da regra:

gosta(pedro, X) :- gosta(X, vinho), gosta(X, chocolate).

Supondo que Pedro gosta de mulheres que gostam de vinho.

gosta(pedro, X) :- mulher(X), gosta(X, vinho).

(45)

faculdadenovaroma.com.br

West é criminoso?

• Requisitos

1. É crime para um americano vender armas para uma nação hostil

2. O Brasil possui mísseis

3. O Brasil adquiriu todos seus mísseis do West.

4. West é um americano.

5. Brasil é uma nação

6. Brasil é inimigo dos EUA.

7. EUA é uma nação

• Em lógica da 1a ordem

1.  P,W,N [ americano(P)  arma(W)

 nação(N)  hostil(N) 

vendeu(P,N,W)  criminoso(P) ] 2.  W [ possui(brasil,W)  míssil(W) ] 3.  W [possui(brasil,W)  míssil(W)

 vendeu(west,brasil,W) ] {*}  W [ míssil (W)  arma(W) ] {*}  N [ inimigo(N,eua)  hostil(N) ] 4. americano(west)

5. nação(brasil)

6. inimigo(brasil,eua) 7. nação(eua)

(46)

faculdadenovaroma.com.br

West é criminoso?

• Em Lógica de Horn:

americano(P)  arma(W)  nação(N)

 hostil(N)  vendeu(P,N,W)  criminoso(P)

possui(brasil,m1) míssil(m1)

possui(brasil,W)  míssil(W)  vendeu(west,brasil,W)

míssil(W)  arma(W) inimigo(N,eua)  hostil(N) americano(west)

nação(brasil)

inimigo(brasil, eua) nação(eua)

• Em lógica da 1a ordem

1.  P,W,N [ americano(P)  arma(W)

 nação(N)  hostil(N) 

vendeu(P,N,W)  criminoso(P) ] 2.  W [ possui(brasil,W)  míssil(W) ] 3.  W [possui(brasil,W)  míssil(W)

 vendeu(west,brasil,W) ] {*}  W [ míssil (W)  arma(W) ] {*}  X [ inimigo(N,eua)  hostil(N) ] 4. americano(west)

5. nação(brasil)

6. inimigo(brasil,eua) 7. nação(eua)

(47)

faculdadenovaroma.com.br

West é criminoso?

• Em Prolog:

criminoso(P) :- americano(P), arma(W), nação(N), hostil(N), vendeu(P,N,W).

possui(brasil,m1).

míssil(m1).

vendeu(west,brasil,W) :-

possui(brasil,W), míssil(W).

arma(W) :- míssil(W).

hostil(N) :- inimigo(N,eua).

americano(west).

nação(brasil).

inimigo(brasil,eua).

nação(eua).

• Em Lógica de Horn:

americano(P)  arma(W)  nação(N)

 hostil(N)  vendeu(P,N,W)  criminoso(P)

possui(brasil,m1) míssil(m1)

possui(brasil,W)  míssil(W)  vendeu(west,brasil,W)

míssil(W)  arma(W)

inimigo(N,eua)  hostil(N) americano(west)

nação(brasil)

inimigo(brasil, eua) nação(eua)

(48)

faculdadenovaroma.com.br

West é criminoso? --- Busca

• Busca:

criminoso(west)?

american(west)?

arma(W)?

míssil(W)?

nação(N)?

hostil(brasil)?

inimigo(brasil,eua)?

vendeu(west,brasil,m1)?

possui(brasil,m1)?

míssil(m1)?

• Em Prolog:

criminoso(P) :- americano(P), arma(W), nação(N), hostil(N), vendeu(P,N,W).

possui(brasil,m1).

míssil(m1).

vendeu(west,brasil,W) :-

possui(brasil,W), míssil(W).

arma(W) :- míssil(W).

hostil(N) :- inimigo(N,eua).

americano(west).

nação(brasil).

inimigo(brasil,eua).

nação(eua).

 true.

W = m1.

W = m1.

 true.

 true.

 true.

 true.

 true.

 true.

N = brasil

(49)

faculdadenovaroma.com.br

Exercício 3.

Dados os requisitos abaixo, construa as

declarações de primeira ordem, cláusulas de Horn e implemente um programa em prolog para responder a pergunta.

A curiosidade matou o gato?

Jack possui um cachorro.

Todo dono de cachorro gosta muito de animais.

Nenhum amante de animal mata um animal.

Nem Jack ou a curiosidade mataram Tuna.

Tuna é um gato.

Referências

Documentos relacionados

Já, outro estudo demonstrou que os resultados mostraram que os fatores que mais motivam as pessoas a praticarem academia são: saúde, aptidão física, disposição,

● Dica: ao utilizar o método puts com as aspas (para escrever textos), dentro das aspas você pode acessar as variáveis com #{IDENTIFICADOR} , trocando IDENTIFICADOR pelo

• Elabore uma sequência que mova três discos de uma Torre de Hanói, que consiste em três hastes (a-b-c), uma das quais serve de suporte para três discos de tamanhos diferentes

Interpreta¸ c˜ ao Seja Σ = (OP, R) uma assinatura para a l´ ogica de predicados.. A Id´ eia de um Ambiente para Vari´ aveis Livres.

exatamente conforme dispõe a nova lei anticrime. Todos os anexos apresentados descrevem fatos delituosos cometidos com pessoas já investigadas, tomadoras dos

Algoritmos e Programação Estruturada – Conceitos Importantes Estrutura de dados.. Algoritmos e Programação Estruturada –

O aprendizado da Lógica é essencial para formação de um bom programador, servindo como base para o aprendizado de todas as linguagens de programação, es- truturadas ou não.. De

Um comando de atribuição permite-nos fornecer um valor a uma variável (guardar um valor em uma gaveta), em que o tipo do dado deve ser compatível com o tipo da