Lógica de Programação
Introdução
Introdução
Nesta aula
Introdução à Lógica de Programação
Algoritmizando a Lógica
Conceitos e Exemplos de Algoritmos
Noções de Fluxo de Controle
Objetivos
Apresentar os conceitos elementares de lógica e sua
aplicações no cotidiano
Definir algoritmo
Estabelecer uma relação entre lógica e algoritmos
Noções de Lógica
Lógica: Ciência que estuda as formas do pensamento
Sempre que pensamos a lógica nos acompanha
Um bebê sabe que precisa chorar para receber atenção
Um casal com 3 filhos notou que um vaso estava quebrado, enquanto 2 das
crianças estavam na escola. Quem é o culpado?
A gaveta está fechada. A caneta está dentro da gaveta. Precisamos primeiro
abrir a gaveta para depois pegar a caneta.
O pensamento (e a lógica) pode ser expresso através da palavra falada
ou da palavra escrita
Um mesmo pensamento pode ser expresso em inúmeros idiomas, tanto
oralmente quanto por escrito
Vamos estudar uma forma única de representação
Algoritmo
É o pensamento descrito como uma sequência de passos que visam
atingir um objetivo
Algoritmos no dia-a-dia: Receita de bolo, orientação para se chegar em
algum endereço
Qual sua importância na programação?
Representar o raciocínio, independentemente de detalhes computacionais,
que podem ser acrescentados mais tarde
Focalizar primeiro na resolução algorítmica do problema, possibilitando
depois codificá-la em qualquer linguagem
Exemplos
Trocar uma lâmpada
Sequência
Algoritmo 1.1:
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
subir na escada;
retirar lâmpada velha;
colocar lâmpada nova.
Exemplos
Trocar uma lâmpada SE estiver queimada
Seleção (Decisão)
Algoritmo 1.2:
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
acionar o interruptor;
se a lâmpada não acender, então
subir na escada;
retirar lâmpada queimada;
colocar lâmpada nova.
Exemplos
Trocar uma lâmpada SE estiver queimada (v. 2)
Seleção (Decisão)
Algoritmo 1.3: Evita buscar a escada e lâmpada
acionar o interruptor;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
acionar o interruptor;
subir na escada;
retirar lâmpada queimada;
colocar lâmpada nova.
Exemplos
Trocar uma lâmpada SE estiver queimada (v. 3)
Seleção (Decisão)
Algoritmo 1.4: Re-teste depois da troca
acionar o interruptor;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
acionar o interruptor;
subir na escada;
retirar lâmpada queimada;
colocar lâmpada nova;
se a lâmpada não acender, então
retirar lâmpada queimada;
colocar lâmpada nova;
se a lâmpada não acender, então
...
Exemplos
Trocar uma lâmpada SE estiver queimada (v. 4)
Repetição
Algoritmo 1.5: Re-teste depois da troca (por repetição)
acionar o interruptor;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
acionar o interruptor;
subir na escada;
retirar lâmpada queimada;
colocar lâmpada nova;
enquanto a lâmpada não acender, faça
retirar lâmpada queimada;
colocar lâmpada nova;
Exemplos
Trocar 10 lâmpadas SE estiverem queimadas
Repetição
Algoritmo 1.6: Escrever 10 vezes
acionar o interruptor do primeiro soquete;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
acionar o interruptor;
subir na escada;
retirar lâmpada queimada;
colocar lâmpada nova;
enquanto a lâmpada não acender, faça
retirar lâmpada queimada;
colocar lâmpada nova;
acionar o interruptor do segundo soquete;
...
Exemplos
Trocar 10 lâmpadas SE estiverem queimadas (v. 2)
Repetição
Algoritmo 1.7: Contagem de trocas
ir até o interruptor do primeiro soquete;
enquanto a quantidade de soquetes testados for menor que 10, faça
acionar o interruptor;
se a lâmpada não acender, então
pegar uma escada;
posicionar a escada embaixo da lâmpada;
buscar uma lâmpada nova;
acionar o interruptor;
subir na escada;
retirar lâmpada queimada;
colocar lâmpada nova;
enquanto a lâmpada não acender, faça
retirar lâmpada queimada;
colocar lâmpada nova;
ir até o interruptor do próximo soquete;
Formas de Representação
Algoritmo 1.7 em Fluxograma
início
ir para o primeiro soquete
posicionar escada
não
acendeu?
soquetes
restantes < 10
F
buscar lâmpada nova
V
acionar o interruptor
V
acionar o interruptor
não
acendeu?
subir na escada
F
retirar a lâmpada queimada
colocar lâmpada nova
retirar a lâmpada queimada
ir ao próximo soquete
colocar lâmpada nova
V
pegar uma escada
F
acionar o interruptor
fim
Formas de Representação
Algoritmo 1.7 em Chapin
ir para o primeiro soquete
soquetes testados < 10
acionar o interruptor
lâmpada não acendeu
pegar uma escada
colocar a escada embaixo do soquete
buscar lâmpada nova
acionar o interruptor
subir na escada
retirar lâmpada queimada
colocar lâmpada nova
lâmpada não acendeu
retirar lâmpada queimada
colocar lâmpada nova
ir para o próximo soquete
Formas de Representação
Gráficas (Fluxograma e Chapin)
Características
Maior clareza no fluxo de execução
Linguagem visual
Requer conhecimento de convenções gráficas
Textuais (Português Estruturado)
Apresenta mais vantagens, desde que se tomem alguns cuidados:
Riqueza gramatical de nossa língua pode levar a ambiguidades
A frase “O pregador foi grampeado durante o conserto” tem 8
sentidos diferentes quando pronunciada
Para resolver, utilizaremos um conjunto restrito de regras,
conhecido como Português Estruturado
Exercício 01
No torneio de atletismo, Barnabé, Gumercindo e Teodoro
participam das provas de 100 metros rasos, salto em
distância e arremesso de dardo. Cada um deles conseguiu
um primeiro lugar, um segundo e um terceiro. Descubra o
que cada um conquistou, sabendo que:
Gumercindo venceu Barnabé no salto em distância;
Teodoro chegou atrás de Gumercindo no arremesso de dardo;
Barnabé não chegou em primeiro nos 100 metros rasos;
Resposta 01
A primeira informação garante que Barnabé não foi o primeiro e Gumercindo não
foi o último no salto em distância.
Com a segunda informação sabemos que Teodoro não foi o primeiro no
arremesso de dardo e Gumercindo não foi o último. Assim podemos concluir que
Gumercindo foi o último nos cem metros rasos.
A terceira informação garante que Barnabé não foi o primeiro nos cem metros,
como também não chegou em último (lugar ocupado por Gumercindo); logo ele
foi segundo. Portanto, o primeiro ficou com Teodoro.
Sabemos da primeira informação que Barnabé não foi o primeiro no salto;
também sabemos que não foi segundo, pois ocupou essa posição nos cem
metros. Portanto, terá sido o terceiro, e isso o coloca como primeiro no
arremesso de dardo.
No dardo, Gumercindo só pode ter sido o segundo, pois a informação número
dois nos garantiu que ele não foi o último. Então sobrou para Teodoro o último
lugar.
No salto em distância, sabemos que Barnabé foi o terceiro, Gumercindo o
primeiro e Teodoro o segundo.
Resposta 01 (cont.)
Colocação final (do primeiro lugar para o terceiro):
Cem metros rasos: Teodoro, Barnabé, Gumercindo;
Arremesso de dardo: Barnabé, Gumercindo, Teodoro;
Salto em distância: Gumercindo, Teodoro, Barnabé.
Exercício 02
Tendo como exemplo os algoritmos desenvolvidos para
solucionar o problema da troca de lâmpadas, elabore um
algoritmo que mostre os passos necessários para trocar um
pneu furado. Considere o seguinte conjunto de situações:
Trocar o pneu traseiro esquerdo;
Trocar o pneu traseiro esquerdo e, antes, verificar se o pneu reserva
está em condições de uso;
Verificar se existe algum pneu furado; se houver, verificar o pneu
reserva e, então, trocar o pneu correto.
Para cada algoritmo faça um refinamento do anterior, introduzindo novas
ações e alterando o fluxo de execução de forma compatível com as
situações apresentadas
Download

aula01