Você está na página 1de 47

Paradigmas

de
Programação
Profa. Vandecia Fernandes – BiCT/ECP/UFMA
Referências: Sebesta, Robert W. Conceitos de linguagens de programação. 11. ed. 2018., Varejão, F. M. Linguagens de
Programação: Conceitos e Técnicas. 2004. Agradecimentos aos professores Alex Barradas e Sergio Costa.
Roteiro

• O paradigma lógico

• Introdução ao prolog

2
Tipos de Paradigmas

Estruturado

Impera'vo
Orientado a
objetos

Funcional
Declarativo

Lógico

3
Tipos de Paradigmas

Estruturado

Imperativo
Orientado a
objetos

Funcional
Declarativo

Lógico

4
Introdução
• Linguagens para programação lógica:

• São linguagens declarativas


• os programas consistem em declarações, em vez de atribuições e sentenças de fluxo de
controle.

• Essas declarações são na verdade sentenças, ou proposições, em lógica


simbólica

5
Programação Lógica

• Os programas são coleções de fatos e regras.

• A abordagem é baseada na expressão de programas em uma forma de lógica


simbólica

• Usa um processo de inferência lógico para produzir resultados.

6
Aplicações da programação lógica
• Sistemas de gerenciamento de bases de dados relacionais

• Consultas em tabelas feitas utilizando SQL (SQL – Structured Query Language),


que é uma linguagem não procedural 

• Tabelas simples de informação podem ser descritas por estruturas Prolog e


relacionamentos entre tabelas podem ser fácil e convenientemente descritos
por regras

• Capacidade de dedução é predefinida

7
Aplicações da programação lógica
• Sistemas especialista

• Sistemas computacionais projetados para emular especialidades humanas em


algum domínio em parRcular.

• Consistem em uma base de dados de fatos, um processo de inferência, algumas


heurísRcas acerca do domínio e alguma interface amigável com o usuário

8
Aplicações da programação lógica
• Processamento de linguagem natural

• Certos tipos de PLN podem ser feitos com programação lógica: interfaces de
linguagem natural para sistemas de software, como bases de dados inteligentes
e outros sistemas baseados em conhecimento

• Para descrever a sintaxe de linguagens: formas de programação lógica foram


descobertas como equivalentes às gramáticas livres de contexto.

9
Lógica Formal
• Proposições:
• sentença lógica que pode ou não ser verdadeira. Consiste em objetos e
relacionamentos entre objetos.
• Exemplo: “Maria gosta de flores” gosta(maria,flores)

• Lógica simbólica:
• Usada para as três necessidades básicas da lógica formal:
• expressar proposições;
• expressar os relacionamentos entre proposições;
• Descrever como novas proposições podem ser inferidas a partir de outras
proposições que se presume verdadeiras.
10
Lógica Formal

A forma particular de lógica simbólica usada


para programação lógica é chamada de
cálculo de predicados de primeira ordem

11
Proposições
• Em proposições:

• Objetos são representados por termos simples, constantes ou variáveis.

• Uma constante é um símbolo que representa um objeto.

• Uma variável é um símbolo capaz de representar objetos diferentes em


momentos diferentes

12
Proposições

• Podemos formar novas proposições usando operadores lógicos e outras


proposições.

• Esses operadores são definidos por aquilo que chamamos de tabelas verdade.

13
Tabela verdade

p ¬p
V F
F V

Tabela Verdade para ¬p (negação)

14
Tabela verdade

p q p∧q p∨q
V V V V
V F F V
F V F V
F F F F

Tabela Verdade para ∧ (conjunção - and) e ∨ (disjunção – or)

15
Tabela verdade

p q p⟹q p⟺q
V V V V
V F F F
F V V F
F F V V

Tabela Verdade para ⟹ (Implicação) e ⟺ (Equivalência)

16
Lógica Formal

• Em proposições, variáveis são introduzidas por quantificadores.

• O cálculo de predicados inclui dois quantificadores:

considere X uma variável e P uma proposição


Símbolo Nome Exemplo Significado
∀ universal ∀ X.P Para todo X, P é verdadeiro.
∃ existencial ∃ X.P Existe um valor de X tal que
P é verdadeiro

17
Lógica Formal
• Exemplo:

Para todo número primo x, existe um outro número primo y, tal que y é
maior do que x.

∀x (x é primo ⟹ ∃y(y é primo ∧ y > x))

18
Função com valor boleano
• Função com valor boleano - resultado verdadeiro (true) ou falso (false).

• Exemplos:

• primo(x)
• verdadeiro (true), se o valor inteiro x for um número primo;
• falso (false) em caso contrário.

• fala(x, y)
• verdadeiro se a pessoa x fala a língua y.
19
Função com valor boleano
• Exemplos:

• fala(x, Russo) ∧ fala(y, Russo) ⟹ comunicacom(x, y)  


• verdadeiro se o fato de que tanto x quanto y falam russo implica que x
se comunica com y;
• caso contrário, falso.

• ∀x(fala(x, Russo))  
• verdadeiro se todos no planeta falam russo;
• falso, caso contrário.
20
Função com valor boleano
• Exemplos:

• ∃x(fala(x, Russo))  
• verdadeiro se pelo menos uma pessoa no planeta fala russo;
• falso em caso contrário.

• ∀x∃y(fala(x,y))  
• verdadeiro se toda pessoa no planeta fala uma linguagem;
• falso em caso contrário.

21
Cálculo de predicados
• O cálculo de predicados fornece um método de expressar coleções de
proposições.

• Resolução:
• regra de inferência que permite às proposições inferidas serem computadas a
partir de proposições dadas
• fornece um método com aplicação potencial para a prova automática de
teoremas.

• Simplificar o processo de resolução: restringir a forma das proposições.


• Cláusulas de Horn
22
Cláusulas de Horn
• Definição:

• Uma cláusula de Horn tem uma parte mais importante h (atributo) , e um corpo
(lista de atributos p1, p2, . . ., pn).
h ← p1, p2, . . ., pn
h é true somente se p1, p2, . . . e pn forem simultaneamente true.

• Têm uma única proposição atômica no lado esquerdo ou um lado esquerdo


vazio.
nevando(C) ← precipitação(C), congelando(C)
23
Linguagem Prolog

24
Prolog
• Programming in logic.

• Linguagem declarativa baseado nos princípios da lógica;

• Focada na especificação do conhecimento;

• Desenvolvida em 1972 por Alain Colmerauere, Philippe Roussel e Robert


Kowalski

25
Prolog
• Ideia:
• Desenvolver uma linguagem de programação baseada em lógica.

• Início de aplicações industriais (1981);

• O primeiro compilador (1982);

• Em 1992, a definição de normas ISO para Prolog.

26
Prolog
• SWI-Prolog:
• http://www.swi-prolog.org/
• TurboProlog;
• LPAProlog;
• GNUProlog;
• ...

• Online:
• https://swish.swi-prolog.org/

27
Prolog - SWISH

28
Prolog - SWISH

Base de
Conhecimento

Respostas

Prompt

29
Prolog
• Um programa em Prolog é composto de:

• fatos sobre certos objetos


• regras de inferência
• perguntas sobre os objetos

Fatos e regras em prolog são realizações da ideia


formal das cláusulas de Horn.

30
Prolog - Fatos
• Fatos:
• Servem para estabelecer um relacionamento existente entre objetos de um
determinado contexto de discurso
• Predicados: idenRficadores de relacionamentos
• Átomos: idenRficadores de objetos

Tanto predicados quanto átomos devem iniciar com letra minuscula.


O ponto final (.) é obrigatório ao final do fato.

31
Fatos
• Exemplos:

• mulher(maria).
• valioso(ouro).
• gosta(pedro, maria).
• entrega(jose, livro, maria).

32
Fatos
• A aridade é a quantidade de argumentos:

• mulher(maria). % 1 ou mulher/1
• valioso(ouro). % 1 ou valioso/1
• gosta(pedro, maria). % 2 ou gosta/2
• entrega(jose, livro, maria). % 3 ou entrega/3

33
Consultas
• Consultas:

• São sentenças digitadas no prompt (?-) do interpretador Prolog.

• Uma consulta pergunta se uma determinado relacionamento existe entre


objetos.

• Exemplo:
?- gosta(maria,pedro).
• A resposta será yes ou no, de acordo com os fatos estabelecidos.

34
Variáveis
• Variáveis

• As variáveis em Prolog servem para responder questões mais elaboradas.

• Variáveis distingüem-se dos objetos por terem nomes iniciados com letra maiúscula.

• Exemplo:
gosta(maria, flores).
gosta(maria, pedro).
gosta(paulo, maria).

?- gosta(maria, X).
X = flores

• OBS: enter ou ; para mais respostas


35
Variáveis
• Variáveis podem ser comparRlhadas (permitem estabelecer restrições entre
objeRvos disRntos ) ou anônimas(_).

• Variáveis Anônimas começam com _ e não são exibidas no resultado da


consulta.

• Exemplo:
• turma(matemaRca, turma1, rodrigo).
• turma(fisica, turma2, rodrigo).
• turma(fisica, turma3, ivan).
• %% Consulta: Quais sao as disciplinas de Rodrigo (não exibe as turmas)?
turma(D, _T, rodrigo).
36
Prolog
• Conjução (E) – usa-se a , (vírgula)

• Disjunção (OU) – use ; (ponto e vírgula)

• Negação – not

• Comparação:
== (igual)
\== (diferente).

37
Prolog - Regras
• Regras:

• Permitem definir novas relações em termos de outras relações já existentes.

• Uma regra possui cabeça e corpo, no formato


cabeça :- corpo.

• A interpretação da regra é “se o corpo é verdadeiro, então a cabeça é


verdadeira”.

38
Regras
• Exemplo:

• “Maria gosta de todo mundo que gosta de vinho.”


gosta(maria, X) :- gosta(X, vinho).

• “Maria gosta de qualquer um que goste de vinho e de queijo”.


gosta(maria, X) :- gosta(X, vinho), gosta(X, queijo)

39
Grafos de relacionamentos
• Exemplo:

avô(X,Y) :- pai(X,Z), pai(Z,Y).

40
Consulta

41
Consulta
• Backtracking:
• É um procedimento que segue o padrão busca em profundidade.
• A árvore é percorrida sistemaGcamente de cima para baixo e da esquerda para a direita.

• Exemplo:

• O compilador tenta saGsfazer o primeiro objeGvo;


• Quando conseguir, tenta saGsfazer o segundo;
• Caso não consiga,retorna para a solução do primeiro objeGvo.

42
Exercício
• Considere a árvore genealógica a seguir:

43
Exercício

1- Defina os fatos para a relação homem(x), mulher(X) e progenitor (X,Y)

2-Defina as relações: pai, mãe, filho, filha e irmãos

3- Defina as relações: tio, tia, primo, prima

44
Exercício
2-Defina as relações: pai, mãe, filho, filha e irmãos

pai( P, F):- homem( P), progenitor( P, F).


mae( M, F):- mulher( M), progenitor( M, F).
filho ( F, P):- homem( F), progenitor( P, F).
filha ( F, P):- mulher( F), progenitor( P, F).
irmaos( X, Y):- progenitor( P, X), progenitor( P, Y), X\== Y.

45
Exercício
3- Defina as relações: tio, tia, primo, prima

tio ( T, S) :-homem( T),irmaos( T, P), progenitor( P, S).


tia ( T, S) :-mulher( T),irmaos( T, P), progenitor( P, S).
primo( A, B) :- homem( A), progenitor( X, A), irmaos( X, Y), progenitor( Y, B).
prima( A, B) :-mulher( A),progenitor( X, A),irmaos( X, Y), progenitor( Y, B).

46
NOTA DE ESCLARECIMENTO: Direito de Imagem
https://portais.ufma.br/PortalUfma/paginas/noticias/noticia.jsf?id=57033
47

Você também pode gostar