Você está na página 1de 62

LÓGICA PARA COMPUTAÇÃO

Prof.ª Me. Edvania Gimenes de Oliveira Godoy

1
Aplicações à Computação
Tópicos que serão estudados:
• Álgebra dos Conjuntos nas Linguagens de
Programação.
• Programação Lógica.
• Caminho Crítico no Diagrama PERT.
• Autômatos Finitos e Funções.
• Relações e Banco de Dados.

2
Álgebra dos Conjuntos nas
Linguagens de Programação
Definições:
1. Alfabeto: Conjunto finito e não vazio de símbolos (ou
caracteres).
Notação: Σ

2. Símbolos (tokens ou átomos): Representações


gráficas indivisíveis.
Exemplos: 7; 𝑎𝑏; 𝑏𝑒𝑔𝑖𝑛; 𝑖𝑓; 1𝑒02
unidade atômica

3. Palavra (sentença, string ou cadeia de caracteres)


sobre um alfabeto: Sequência finita de símbolos do
alfabeto justapostos.
Notação: 𝛼, 𝛽, 𝛾, …
3
Álgebra dos Conjuntos nas
Linguagens de Programação
4. Cadeia Vazia: Cadeia que não contém
símbolos.
Notação: 𝜀 (épsilon)

5. Σ ∗ : conjunto de todas as palavras possíveis


sobre Σ.

6. Comprimento de uma palavra: quantidade


de símbolos que a compõe.
Notação: |𝛼|, sendo 𝛼 uma palavra.

4
Álgebra dos Conjuntos nas
Linguagens de Programação
Exemplo:
Σ = 0,1
• Σ ∗ = {𝜀, 0, 1, 00, 01, 10, 11, 000, 001, 010,
100, 101, 110, 111, 0000, … }.

• 𝛼 = 100101110 , 𝛽 = 11, 𝛾 =0 e 𝛿 = 𝜀 são


cadeias sobre Σ.

• | 𝛼 | = 9; | 𝛽 | = 2; | 𝛾 | = 1; | 𝛿 | = 0.

• 𝛾 é uma cadeia elementar (ou unitária).


5
Operação de Concatenação
Associa a cada par de palavras uma nova
palavra formada pela justaposição da
primeira com a segunda.
Exemplo:
Σ = 𝑎, 𝑏, 𝑐, … , 𝑧
𝛽 = 𝑎𝑏𝑟𝑎
𝛾 = 𝑐𝑎𝑑𝑎𝑏𝑟𝑎
• 𝛼 = 𝛽. 𝛾 = 𝑎𝑏𝑟𝑎𝑐𝑎𝑑𝑎𝑏𝑟𝑎
• 𝛾. 𝛽 = 𝑐𝑎𝑑𝑎𝑏𝑟𝑎𝑎𝑏𝑟𝑎
• 𝛽. 𝜀 = 𝜀. 𝛽 = 𝛽 = 𝑎𝑏𝑟𝑎
6
Linguagens
• Uma linguagem 𝐿 sobre um alfabeto Σ é um
conjunto de palavras em Σ.
Logo,
𝐿 ⊆ Σ∗ .
Exemplo:
Σ = {𝑎, 𝑏}

a) 𝐿1 = 𝑎, 𝑎𝑏, 𝑏 .
b) 𝐿2 = 𝜀
7
Linguagens
c) 𝐿2 = 𝑎, 𝑎𝑎, 𝑎𝑎𝑎, 𝑎𝑎𝑎𝑎, …
𝐿2 = 𝑎, 𝑎2 , 𝑎3 , 𝑎4 , … = 𝑎𝑛 𝑛 > 0}.

d) 𝐿3 = 𝑎𝑏 𝑛 | 𝑛 ≥ 0
𝐿3 =

𝐿3 consiste em todas as palavras que começam com 𝑎


e são seguidas por zero ou mais 𝑏 ′ 𝑠.
8
Linguagens
Relações entre os conceitos de símbolo,
alfabeto, cadeia e linguagem.
Sequência de

9
Operações sobre Linguagens
𝐿, 𝐿1 , 𝐿2 linguagens sobre um alfabeto Σ.

• União: 𝐿1 ∪ 𝐿2 = 𝛼 𝛼 ∈ 𝐿1 𝑜𝑢 𝛼 ∈ 𝐿2 }.

• Interseção: 𝐿1 ∩ 𝐿2 = 𝛼 𝛼 ∈ 𝐿1 𝑒 𝛼 ∈ 𝐿2 }.

• Diferença: 𝐿1 − 𝐿2 = 𝛼 𝛼 ∈ 𝐿1 𝑒 𝛼 ∉ 𝐿2 }.

• Complemento de 𝐿 sobre Σ:
𝐿′ = 𝛼 𝛼 ∈ Σ ∗ 𝑒 𝛼 ∉ 𝐿} = Σ ∗ − 𝐿.

10
Operações sobre Linguagens

Exemplo:
𝐿1 = 𝑎, 𝑏𝑎, 𝑎𝑏𝑎, 𝑎𝑏𝑏𝑏𝑎 ; 𝐿2 = 𝑏, 𝑎𝑏, 𝑎𝑏𝑎, 𝑎𝑎𝑏𝑏
linguagens sobre Σ = {𝑎, 𝑏}.

𝑎) 𝐿1 ∪ 𝐿2 = 𝑎, 𝑏, 𝑎𝑏, 𝑏𝑎, 𝑎𝑏𝑎, 𝑎𝑎𝑏𝑏, 𝑎𝑏𝑏𝑏𝑎 .

b) 𝐿1 ∩ 𝐿2 =

c) 𝐿1 − 𝐿2 =

11
Linguagem de Programação
• São linguagens sobre o alfabeto
constituído por letras, dígitos e símbolos
especiais.

• É um vocabulário e um conjunto de regras


gramaticais usadas para escrever
programas de computador.

• Uma L.P. é definida por todos os seus


programas possíveis.
12
Linguagem de Programação
Exemplo:
O alfabeto da linguagem Pascal é o conjunto de todos
os símbolos (letras, dígitos, caracteres especiais,
espaços) usados na construção da linguagem:

A, B, C,..., Y, Z, a, b, c,..., y, z,0, 1, 2,..., 9, +, -, *, /, =,


<>,<,>, =, (, ), [, ], :=, ., ,, :, ;,.., ', ^, div, mod,
nil, in, or, and, not, if, then, else,
case, of, repeat, until, while, do, for,
to, downto, begin, end, with, goto,
const, var, type, array, record, set,
file, function, procedure, label,
packed, program
13
Conjuntos e
Linguagem de Programação
Exemplo:
Conjuntos nas Linguagem de Programação
Trecho de um programa em linguagem Pascal
que identifica a classe eleitoral de uma pessoa
a partir de sua idade:

14
Conjuntos e
Linguagem de Programação
• 𝑈: conjunto de idades das pessoas.

• Não Eleitores = 𝑥 ∈ 𝑈 𝑥 < 16}.

• Eleitores facultativos = 𝑥 ∈ U 𝑥 ≥ 16 𝑒 𝑥 <


18 𝑜𝑢 𝑥 > 70}.

• Eleitores obrigatórios = 𝑥 ∈ 𝑈 18 ≤ 𝑥 ≤ 70}.

15
Programação em Lógica
• C, Pascal e Basic são linguagens
procedimentais (ou imperativas) –
especificam como deve ser feita alguma
coisa; codificam algoritmos (passo-a-
passo).

• Prolog – PROgramming in LOGic


É uma linguagem declarativa - especifica o
quê se sabe e o quê deve ser feito.

16
Prolog
• A linguagem Prolog inclui: predicados, conectivos
lógicos e regras de inferência - Princípio da
Resolução.

• Programar em Prolog consiste em:


– Declarar alguns fatos sobre objetos e suas
relações.

– Definir algumas regras sobre objetos e suas


relações.

– Fazer consultas sobre objetos e suas relações.


17
Operadores Prolog

18
Fatos e Regras
Uma forma de declarar um fato como “uma
baleia é um mamífero” é:
mamifero(baleia).
Para representar o fato “Lucas é supervisor de
Meire” podemos escrever:
supervisor(lucas, meire).

Predicado Objetos ou argumentos

supervisor(lucas, meire) ≠ supervisor(meire,lucas)

19
Consultas
Consideremos uma Consultas:
árvore genealógica
representada em Prolog: ?progenitor(josé, rui).
true
progenitor(maria, josé).
progenitor(joão, josé).
?progenitor(joão, X ).
progenitor(joão, ana).
progenitor(josé, rui). X=josé;
X=ana. Variável
progenitor(josé, lia).
fail
progenitor(lia, jorge). substituída
pelo termo

20
Consultas
?progenitor(josé, rui).

• Informalmente: José é progenitor de Rui?

• Formalmente: É possível provar a partir


dos fatos conhecidos pelo programa que a
relação progenitor(josé, rui) é verdadeira?

21
Regras
Uma diferença básica entre uma regra e um fato é
que um fato é sempre uma informação verdadeira,
já uma regra precisa ser avaliada para que se
possa determinar se esta é verdadeira ou não.

Exemplo:
Consideremos a seguinte base de dados (fatos):

22
Regras
progenitor(maria, josé).
progenitor(joão, josé).
progenitor(joão, ana).
progenitor(josé, rui).
progenitor(josé, lia).
progenitor(lia, jorge).
masculino(joão).
masculino(josé).
masculino(jorge).
masculino(rui).
feminino(maria).
feminino(ana).
feminino(lia).

23
Regras
Relações pai / mãe / avô: Em Prolog:
• X é pai de Y se se
X é progenitor de Y e pai(X,Y) :- progenitor(X,Y),
X é masculino. masculino(X). e
• X é mãe de Y se
X é progenitor de Y e mãe(X,Y):- progenitor(X,Y),
X é feminino. feminino(X).

• X é avô de Y se X é pai de
Z e Z é progenitor de Y. avô(X,Y):- pai(X,Z),
progenitor(Z,Y).
(Ou: se X é pai de Z e Z é progenitor
de Y, então X é avô de Y)
24
Inferência da Linguagem Prolog
progenitor(maria, josé). fato 1
progenitor(joão, josé). fato 2
progenitor(joão, ana). fato 3
progenitor(josé, rui). fato 4
progenitor(josé, lia). fato 5
progenitor(lia, jorge). fato 6
masculino(joão). fato 7
masculino(josé). fato 8
masculino(jorge). fato 9
masculino(rui). fato 10
feminino(maria). fato 11
feminino(ana). fato 12
feminino(lia). fato 13
25
Inferência da Linguagem Prolog

pai(X,Y) :- progenitor(X,Y) , masculino(X). regra 1


mãe(X,Y):- progenitor(X,Y), feminino(X). regra 2
avô(X,Y):- pai(X,Z), progenitor(Z,Y). regra 3

26
Inferência da Linguagem Prolog
?pai(X, rui). Cabeça da regra 1
pai(X,rui):=progenitor(X,rui),masculino(X).
pai(X,rui):=progenitor(josé,rui),masculino(X).
fato4
pai(X,rui):=progenitor(josé,rui),masculino(josé).
fato8
X=josé
Ocorre então um retrocesso e Prolog busca, a partir da
posição seguinte ao fato 4 uma nova cláusula que
possa ser resolvida com a regra.
27
Relações de Ordem e
Diagramas PERT
Relações de ordem podem ser representadas
por diagramas de Hasse.

Diagrama de Hasse para ordenação de tarefas:


• Nós: são as tarefas.
• Arcos: relações de precedência.
• Representação: da esquerda para a direita,
para representar que 𝑥 ≺ 𝑦.

• Diagramas PERT: diagramas para


ordenação de tarefas.

28
Diagrama PERT
Exemplo1: Projeto de elaboração de uma apostila
para um novo curso.
Atividade Atividade Duração Pré-requisito
(semana)
A Definição do projeto 1 -
B Pesquisa bibliográfica 4 A
C Texto preliminar 3 B
D Digitação 2 C
E Desenhos 3 C
F Revisão 2 D, E
G Correção e impressão 4 F
29
Diagrama PERT
Atividade A B C D E F G
Pré-requisito - A B C C D, E F

Tempo estimado

Precedência
Atividade

30
Caminho em um diagrama PERT
• Caminho:

Qualquer sequência de atividades que leve


do nó inicial ao nó final, ou seja, do início ao
fim do projeto.

31
Diagrama PERT

CAMINHO 1: A-B-C-D-F-G
CAMINHO 2: A-B-C-E-F-G
32
Caminho em um diagrama PERT
• Duração de um caminho: soma das durações de
todas as atividades que o compõe.

• Caminho 1: (A-B-C-D-F-G)
→ duração: 1+4+3+2+2+4 = 16 semanas.

• Caminho 2: (A-B-C-E-F-G)
→ duração: 1+4+3+3+2+4 = 17 semanas.
33
Caminho crítico em um
diagrama PERT
Caminho Crítico:
É o caminho com maior duração na rede.

• O tempo de término do projeto é igual à


duração de seu caminho crítico.

• Qualquer atraso nas atividades do caminho


crítico compromete todo o projeto (atividades
críticas ou atividades gargalos).

34
Caminho crítico em um
diagrama PERT

Tempo mínimo para se


completar o trabalho
do início até esse nó. Caminho crítico:
A-B-C-E-F-G.

35
Caminho crítico em um
diagrama PERT

• Em um projeto complexo, o caminho deve


ser continuamente recalculado para que
decidam o melhor lugar para se alocar
recursos de modo que o projeto progrida.

36
Caminho em um diagrama PERT
Exemplo 2: 5h
C
10h 11h 3h 7h
A B F G
D
4h I
3h
E H
12h 11h

CAMINHOS:

Caminho 1. A-B-C-F-G-I
Caminho 2. A-B-D-F-G-I
Caminho 3. A-E-H-I
37
Caminho crítico em um
diagrama PERT
5
C
10 11 3 7
A B F G
10 D
4 I
3
E H
12 11

Neste exemplo, o caminho 1 (ABCFGI) é o


caminho crítico.
Tempo mínimo para completar o projeto: 39h.

38
Autômatos Finitos
Máquina (ou Sistema) de Estados Finitos:
• É um modelo matemático de um sistema
com entradas e saídas discretas que podem
assumir um número finito e pré-definido de
estados.

• De modo simples um autômato finito (AF) é


uma máquina de estados. Quando se
encontra num dado estado recebe
um comando e reage a ele transitando de
estado e, eventualmente, realizando alguma
ação.

39
Autômatos Finitos
Autômato Finito (Máquina de estado finito):
• Reconhecedor de palavras ou cadeia de
caracteres (𝑤 ∈ 𝐿 𝑜𝑢 𝑤 ∉ 𝐿).
• Bons modelos para computadores com
memória reduzida.
• Fazem parte de diversos dispositivos
eletromecânicos do dia-a-dia: lavadoras
de louça/roupa, termômetros eletrônicos,
relógios digitais, calculadoras e máquinas
de venda automática, etc.
40
Autômatos Finitos
Um exemplo concreto, embora redutor, é o caso de
um interruptor.
Tem associado dois estados de uma lâmpada:
acesa e apagada .
A transição de estado é comandada pela
manipulação do interruptor.

Disponível em: http://programacaocompython.blogspot.com.br/


41
Autômatos Finitos
Representação do autômato

Disponível em: http://pt.slideshare.net/lsleilasouza/introduoteoriadacomputacocompleto?related=1

42
Autômatos Finitos Determinísticos
Definições Básicas:
Um AFD (M) é uma quíntupla
𝑀 = Σ, 𝑄, 𝛿, 𝑞0 , 𝐹 ,
onde:
Σ – é o alfabeto de entrada.
𝑄 – é um conjunto finito não vazio de estados.
𝛿 – é a função de transição de estados, definida
𝛿: 𝑄 × Σ → 𝑄 .
𝑞0 − é o estado inicial (𝑞0 ∈ 𝑄).
𝐹 − é o conjunto de estados finais, 𝐹 ⊆ 𝑄.
𝑞𝑓 é dito estado final.
43
Autômatos Finitos Determinísticos

Exemplo: Seja M um AFD ilustrado abaixo:


Temos:
M=(Σ, 𝑄, 𝛿, 𝑞𝑜 ,{𝑞1 })
0 q0
• Σ = 0,1
0 1 • 𝑄 = {𝑞𝑜 , 𝑞1 }
• 𝐹 = {𝑞1 } (𝑞1 = 𝑞𝑓 )
1 q1 • 𝛿: 𝑄 × Σ → 𝑄
𝜹 0 1
q0 q0 q1
q1 q0 q1

44
Autômatos Finitos Determinísticos

Verifique se M reconhece as
seguintes palavras:

0 q0 • 001
• 1100
0 1
• 111
q1
1 • 00101
• 0

L(M)={w∈ {0,1}∗ | w termina em 1}


45
Relações e Banco de Dados
Banco de dados:

• É uma coleção de dados relacionados e que


representam informações sobre um domínio
específico.

Exemplos: lista telefônica; controle do acervo de


uma biblioteca; sistema de controle dos recursos
humanos de uma empresa; cadastro de clientes
de uma loja; cadastro de pacientes no SUS.

46
Banco de Dados
• Entende-se por dado, toda informação que
pode ser armazenada e que apresenta
algum significado dentro do contexto ao
qual ele se aplica.
Exemplos:
Nº matrícula
Nome
Data admissão
Endereço
Bairro
Cidade

47
Banco de Dados
• Banco de dados relacional:

É um banco de dados cujos dados são


conjuntos (representados como tabelas) que
são relacionados com outros conjuntos
(tabelas).

48
Banco de Dados
Entidade: objeto importante no modelo.
Atributos: representam as propriedades das entidades.
Tupla: cada linha individual da tabela.
Grau da relação: Número de atributos.
Cardinalidade da relação: número de tuplas (linhas).
entidade
atributo Empregado
Matric. Nome Endereço Função Salário Dep.
147 Maria Lopes R. Antonio Soop, 632 Secretária 1200,00 D1
086 Zilda P. Silva R. Sibipiruna, 063 Aux. Adm. 1350,00 D3
204 André Moire Av. Palmares, 1027 Engenheiro 7900,00 D1
213 Sônia Valada Av. Brasil, 3255 Engenheiro 8200,00 D2
136 Roger Porto R. Ari Costa, 147 Técnico 1950,00 D1
Tupla 5
49
Banco de Dados

Domínio: Um domínio D é um conjunto de


valores atômicos.

Exemplos:
• Fone: conjunto de 10 dígitos
• CPF: conjunto de 11 dígitos
• Idade_Empregado: 16 ≤ idade ≤70
• Departamentos: conjunto de departamentos
de uma empresa.

50
Relações e Banco de Dados
Definição Formal:
Relação em um Banco de Dados
É um subconjunto de 𝐷1 × 𝐷2 × 𝐷3 × ⋯ × 𝐷𝑛 ,
em que 𝐷𝑖 é o domínio do atributo 𝐴𝑖 , ou seja,
o conjunto no qual o atributo toma seus
valores.

Exemplo:
Empregado(matrícula, nome, endereço,
função, salário, departamento).

51
Banco de Dados
Modelo conceitual usual para um projeto de banco
de dados: diagrama entidade-relacionamento
(diagrama E-R)

Retângulos: entidades
Elipses: atributos
Losangos: relacionamentos
52
Banco de Dados
Exemplo:
Diagrama E-R para a relação “Proprietário”

53
Banco de dados

• Exemplos de Relacionamentos

Medico Consulta Paciente

ContaCliente Conta
Cliente

Residência

Cidade
Fonte: http://unip.moraes.org/2semestre/Administracao_Banco_Dados/Aula2_ModeloERa.pdf
54
Banco de Dados
• Chave primária: (Primary Key (PK) )
Chave (atributo) que identifica de forma única cada
tupla (linha) da tabela.

• Chave candidata:
Possui as mesmas propriedades da chave primária,
mas não é implementada.

• Chave invisível:
Atributo criado para ser usado como chave primária
(código de identificação).

55
Banco de Dados

Chave
Candidata

Chave
Primária

56
Banco de dados
Chave estrangeira: (Foreign Key (FK))
Atributo ou conjunto de atributos de uma relação
que é chave primária em outra relação.
A chave estrangeira implementa o relacionamento
em um banco de dados relacional.

57
Banco de dados

Disponível em http://www.luis.blog.br/chave%20primaria-chave-estrangeira-e-candidata.aspx

58
Banco de Dados
Integridade dos dados:
• Restrição de Chave: Toda relação deve ter pelo
menos uma chave primária.

• Integridade da Entidade: nenhum valor de chave


primária pode ser nulo.

59
Operações em Banco de Dados
No modelo de banco de dados relacional
podemos extrair dados usando operações
matemáticas pré-definidas sendo 4 operações
de conjunto e operações relacionais.

• Conjunto: União; Diferença; Interseção e


Produto Cartesiano.
• Relacionais: Projeção; Seleção; Divisão e
Junção (ou Join).

60
Operações em Banco de Dados
• Operação Junção (ou Join): combina as linhas de
duas tabelas através de uma chave comum.

Disponível em http://goo.gl/QNDjOF

61
LÓGICA PARA COMPUTAÇÃO

Prof.ª Me. Edvania Gimenes de Oliveira Godoy

62

Você também pode gostar