4-Algoritmos-e-Tecnicas-Logica - Lig@

Propaganda
Algoritmos e Técnicas
- Lógica -
Algoritmo textual informal
 Modo de preparo:
Quão cremoso?!?
– Bata a margarina, as gemas e o açúcar até ficar
Quanto tempo?!?
cremoso
– Junte o leite, o coco e a farinha e continue
batendo
De uma vez só?!?
– Acrescente o fermento e, por último, as claras em
neve
Quanto tempo?!?
– Unte uma forma com manteiga e leve ao forno
para assar
1
Algoritmo textual informal
 Modo de preparo (refinado):
– Bata a margarina, as gemas e o açúcar por 15
minutos
– Junte o leite, o coco e a farinha e continue
batendo por mais 15 minutos
– Acrescente 20 g de fermento e, por último, as
claras em neve
– Unte uma forma com manteiga e leve ao forno
para assar por 30 minutos
Algoritmo: Problemas Complexos
 Problema da Torre de Hanói
– Seja a seguinte situação:
 deve-se mover todos os discos do primeiro eixo para o
terceiro mantendo-se a ordem original
 em cada movimento, pode-se mover apenas um disco
 um disco nunca poderá ser sobreposto por outro maior
2
Algoritmo: Problemas Complexos
 Passo 1:
mova disco menor para terceiro eixo
Algoritmo: Problemas Complexos
 Passo 2:
mova disco médio para segundo eixo
3
Algoritmo: Problemas Complexos
 Passo 3:
mova disco menor para segundo eixo
Algoritmo: Problemas Complexos
 Passo 4:
mova disco maior para terceiro eixo
4
Algoritmo: Problemas Complexos
 Passo 5:
mova disco menor para primeiro eixo
Algoritmo: Problemas Complexos
 Passo 6:
mova disco médio para terceiro eixo
5
Algoritmo: Problemas Complexos
 Passo 7:
mova disco menor para terceiro eixo
Algoritmo: Problemas Complexos
 Seqüência de passos completa:
Passo 1: mova disco menor para terceiro eixo
Passo 2: mova disco médio para segundo eixo
Passo 3: mova disco menor para segundo eixo
Passo 4: mova disco maior para terceiro eixo
Passo 5: mova disco menor para primeiro eixo
Passo 6: mova disco médio para terceiro eixo
Passo 7: mova disco menor para terceiro eixo
6
Lembre-se
 Não existe um algoritmo para
construir algoritmos
– a criação de um algoritmo é um exercício de
criatividade (conhecimento) e experiência (técnica
e prática)
O que é Programação?
= ABSTRAÇÃO!
A realidade é complexa
e rica em detalhes!
7
Abstração
Realidade
O que você abstrai dessa realidade?
Abstração
O que é abstração?
8
Abstração
Abstração
=
Operação mental que
observa a realidade e
captura apenas os
aspectos relevantes
para um contexto
9
10
Abstração
 A tarefa de
programar sistemas
computacionais
envolve o exercício
constante da
R ealidade
abstração da
realidade e sua
Abstração
codificação em uma
+
Programação
linguagem de
programação
Sistema de Locadora de Veículo
Sistema Computacional
O que é um
Sistema Computacional?
11
Sistema Computacional
Software
Sistema
Computacional
Hardware
Peopleware
Sistema Computacional
 A programação de um sistema computacional
pode ser resumida em 3 passos básicos
Entrada
Processamento
Saída
Dispositivo
de Entrada
UCP
Dispositivo
de Saída
Memória
12
Sistema Computacional
 Exemplo 1 – Exibir a média de dois números
Entrada
Processamento
Saída
Dispositivo
de Entrada
UCP
Dispositivo
de Saída
Memória
6,8
(6 + 8) / 2
7
Sistema Computacional
 Exemplo 2 – Exibir se o aluno está aprovado ou
reprovado
Entrada
Processamento
Saída
Dispositivo
de Entrada
UCP
Dispositivo
de Saída
Memória
Ana, 5, 3
Se (5+3)/2>=7
aprovado
Senão
reprovado
Ana, reprovado
13
Sistema Computacional
Unidade Central de Processamento
(2)
Unidade Lógica
e Aritmética
(3)
Unidade de Controle
(1)
Dispositivo
de Entrada
(5)
Dispositivo
de Saída
(4)
Memória Principal
Trajeto de dados
Trajeto de sinais de controle
Arquitetura de um computador hipotético – Modelo de Von Neuman
Programação de Sistema Computacional
 Tipos de Linguagens de Programação
– 1 - Totalmente codificadas em binário (0´s e 1´s)
– 2 - Usa instruções simbólicas para representar os 0´s e 1´s
– 3 - Voltadas para facilitar o raciocínio humano
Baixo Nível
Linguagem
de
Máquina
Linguagem
Assembly
(Mnemônica)
0010 0001 1110 LOAD R1, val1
Alto Nível
Linguagem
de
Alto N ível
val2 = val1+val2
0010 0010 1111 LOAD R2, val2
0001 0001 0010 ADD R1, R2
0011 0001 1111 STORE R1, val2
(1)
(2)
(3)
14
Noções de Lógica
 A lógica é o ramo da filosofia que cuida das
regras do bem pensar, ou do pensar correto,
sendo, portanto, um instrumento do pensar.
 É também a designação para o estudo de
sistemas prescritivos de raciocínio, ou seja,
sistemas que definem como se "deveria"
realmente pensar para não errar, usando a
razão, dedutivamente e indutivamente.
Noções de Lógica
 Exemplos de aplicação da lógica
– O quarto está fechado e meu livro está no quarto. Então,
preciso primeiro abrir o quarto para pegar o livro
– Rosa é mãe de Ana, Paula é filha de Rosa, Júlia é filha de
Ana. Então, Júlia é neta de Rosa e sobrinha de Paula
– Todo mamífero é animal e todo cavalo é mamífero. Então,
todo cavalo é animal
– Todo mamífero bebe leite e o homem bebe leite. Então, todo
homem é mamífero e animal (mas não é um cavalo)
15
Atividade 1 (10min)
 Resolva os seguintes problemas de lógica
– P1 – Uma lesma deve subir um poste de 10m de
altura. De dia sobe 2m e à noite desce 1m. Em
quantos dias atingirá o topo do poste?
– P2 - Três gatos comem três ratos em três minutos.
Cem gatos comem cem ratos em quantos
minutos?
– P3 - O pai do padre é filho do meu pai. O que eu
sou do Padre?
– P4 - Se um bezerro pesa 75 kg mais meio bezerro,
quanto pesa um bezerro inteiro?
Atividade 1 (10min)
– P5 – Qual o próximo número da seqüência
7,8,10,13,17,?
– P6 – Um pai de 80kg e suas 2 filhas (40kg cada),
precisam sair de uma ilha com um barco. Porém a
capacidade do barco é de 80kg. Como farão para
sair da ilha?
– P7 – Usando uma jangada, um camponês precisa
atravessar uma cabra, um leão e um fardo de
capim para a outra margem do rio. A jangada só
tem lugar para ele e mais outra coisa. O que ele
deve fazer para atravessar o rio com seus
pertences intactos?
16
RESPOSTAS - Atividade 1
– R1 - 9(nove) dias. No nono dia a lesma sobe 2(dois) metros,
atinge o topo e evidentemente não desce 1 metro
– R2 – 3 (três) minutos
– R3 – Tio
– R4 – 150 (cento e cinqüenta) kg
– R5 – 22
– R6 – Vão as duas filhas. Uma delas volta. O pai sai. A outra filha
volta. As duas filhas saem juntas.
– R7 - Primeiro leve a cabra, volte e pegue o capim; deixe o capim
e leve a cabra de volta; deixe a cabra e leve o leão, depois é só
voltar e pegar a cabra.
Noções de Lógica
Em Lógica um conceito importante
é o de “Proposição”
Você sabe o que é uma
PROPOSIÇÃO?
17
Noções de Lógica
 Proposição: é um enunciado verbal, ao qual deve ser
atribuído, sem ambigüidade, um valor lógico verdadeiro (V) ou
falso (F).
– Exemplos de proposições:
 Robson Fidalgo é Professor (V)
 3 + 5 = 10 (F)
 5 < 8 (V)
– Contra-exemplos de Proposições:
 Onde você vai ?
 3+5
 Os estudantes jogam vôlei. (quais ?)
Noções de Lógica
 Operações Lógicas: são usadas para formar novas
proposições a partir de proposições existentes.
– Considerando p e q duas proposições genéricas, pode-se
aplicar as seguintes operações lógicas básicas sobre elas
Operação Símbolo
Negação
~
Conjunção
^
Disjunção
v
Significado
Não
E
OU
– Definindo a prioridade:
 Usar parênteses Ex:((p v q)^(~q)) ou
 Obedecer (~) > (^) > (v)
18
Noções de Lógica
Tabela ^ (e) Tabela v (ou) Tabela ~ (Não)
V^V=V
VvV=V
~V=F
V^F=F
VvF=V
~F=V
F^V=F
FvV=V
F^F=F
FvF=F
Tabela Verdade
Noções de Lógica
 Exemplos de aplicação das operações lógica
– Considere:
 p = 7 é primo = (V)
 q = 4 é impar = (F)
– Então:
 4 NÃO é impar = ~q = (~F) = (V)
 7 NÃO é primo = ~p = (~V) = (F)
 7 é primo E 4 NÃO é impar = p ^ ~q = (V ^ (~F)) =
(V ^ V) = (V)
 7 é primo E 4 é impar = p ^ q = (V ^ F) = (F)
 4 é impar E 7 é primo = q ^ p = (F ^ V) = (F)
 4 é impar E 7 NÃO é primo = q ^ ~p = (F ^ (~V)) =
(F ^ F) = (F)
19
Noções de Lógica
 Exemplos de aplicação das operações lógica (Cont.)
– Considere:
 p = 7 é primo = (V)
 q = 4 é impar = (F)
– Então:
 7 é primo OU 4 NÃO é impar = p v ~q = (V v (~F)) =
(V v V) = (V)
 7 é primo OU 4 é impar = p v q = (V v F) = (V)
 4 é impar OU 7 é primo = q v p = (F v V) = (V)
 4 é impar OU 7 NÃO é primo = q v ~p = (F v (~V)) =
(F v F ) = (F)
Noções de Lógica
 Exemplos de aplicação das operações lógica
– Resumindo:
p
V
V
F
F
q
V
F
V
F
~p
F
F
V
V
p^q
V
F
F
F
pvq
V
V
V
F
– Ou seja:
 Não (~) troca o valor lógico. Se é F passa a ser V e viceversa
 E (^) só tem valor V quando as duas proposições forem
V, basta uma proposição ser F para o resultado ser F
 OU (v) só tem valor F quando as duas proposições forem
F, basta uma proposição ser V para o resultado ser V
20
Atividade 2
 Considerando p = V e q = F, resolva as seguintes
expressões lógicas
– ~p
– ~q
– p^q
– pvq
– (~p) ^ q
– (~p) v q
– p ^ (~q)
– p v (~q)
– (~p) ^ (~q)
– (~p) v (~q)
RESPOSTAS - Atividade 2
 Considerando p = V e q = F, resolva as seguintes expressões
lógicas
– ~p = F
– ~q = V
– p^q=F
– pvq=V
– (~p) ^ q = F
– (~p) v q = F
– p ^ (~q) = V
– p v (~q) = V
– (~p) ^ (~q) = F
– (~p) v (~q) = V
21
Lógica de Programação &
Algoritmo
O que é
Programação
de computadores?
 INSTRUÇÕES
Instruções Delimitadoras
 Servem para especificar o início e o fim
do algoritmo.
início
...
fim
22
Declaração de Variáveis
 Utilizado para especificar os nomes e os
respectivos tipos das variáveis
necessárias no algoritmo
declare <variáveis>: <tipo>;
onde:
<variáveis> - lista de nomes de variáveis
separados por vírgula
<tipo> - inteiro, real, caracter, string, lógico
Declaração de Variáveis
 Exemplos:
declare a,b,c: real;
declare nome: string;
declare sexo: caracter;
declare pratica_esporte: lógico;
23
Bloco de Comentário
 Serve para explicar um determinado
trecho do algoritmo, para torna-lo mais
claro, facilitando seu entendimento por
outras pessoas ou posteriormente.
{ <comentário> }
Exemplo:
{ Isto é um exemplo de comentário }
Instrução de Entrada
 Usada para ler dados de entrada do
algoritmo.
leia(<variáveis>);
onde:
<variáveis> - conterão os dados lidos.
24
Instrução de Entrada
 Exemplos:
leia(a,b,c);
leia(nome);
leia(sexo);
leia(pratica_esporte);
Instrução de Saída
 Usada para mostrar os resultados do
processamento dos dados de entrada.
escreva(<resultados>);
onde:
<resultados> - geralmente é o conteúdo de
uma ou mais variáveis com a resposta do
problema.
25
Instrução de Saída
 Exemplos:
escreva(“O valor de D é: ”, D);
escreva(nome, sexo);
escreva(“Pratica esporte.”);
Instrução de Atribuição
 Utilizado para atribuir um determinado
valor a uma variável.
<variável>
<expressão>;
onde:
<variável> - nome de uma variável
<expressão> - um valor do mesmo tipo da
variável ou uma expressão lógica ou
aritmética.
26
Instrução de Atribuição
 Exemplos
D
B^2-4*A*C;
nome
“Paulo”;
Pratica_Esporte
Sexo
‘M’;
TRUE;
27
Download