Académique Documents
Professionnel Documents
Culture Documents
Introdução à Lógica de
Programação
1
Desafio 1: Liberte o prisioneiro
Regras:
- Liberte o prisioneiro;
- Você só libertará o prisioneiro se conseguir colocar 6 litros de água na balança, nem a
mais nem a menos que isso!
Liberte o Prisioneiro
2
Desafio 1: Liberte o prisioneiro
4
Outra descrição da solução (2/2)
5
Desafio 2
Considere o seguinte ambiente:
1 balança como a do desenho abaixo
9 bolas, sendo que uma é mais leve do que as demais
Objetivo: descobrir qual é a bola mais leve com o menor
número possível de pesagens, no pior caso.
6
Solução do desafio 2(1/4)
Solução (?)
1ª pesagem
1ª possibilidade: pesos iguais
bola extra é a mais leve!!!
2ª possibilidade: a bola mais
leve está no grupo mais leve
descarta-se a bola extra e o
grupo mais pesado e realiza-se
nova pesagem
2ª pesagem
descarta-se o grupo mais
pesado e realiza-se nova
pesagem
3ª pesagem
determina-se a bola mais
leve!!!!
7
Solução do desafio 2(2/4)
Solução
1ª pesagem
1ª possibilidade: pesos iguais
a bola está no grupo extra
6 bolas são descartadas e
realiza-se nova pesagem
2ª possibilidade: pesos
diferentes bola mais leve
está no grupo mais leve 6
bolas são descartadas e realiza-
se nova pesagem
2ª pesagem
determina-se a bola mais
leve!!!!
8
Solução do desafio 2(3/4)
9 9
Solução do desafio 2(4/4)
10 10
Outros Exercícios
http://www.leoakio.com/jogos.html
Pinguim
Ponte Escura
Sapo
Exercício 1
Escreva um roteiro (receita) que descreva, passo a
passo, as etapas necessárias para trocar uma lâmpada
no teto (algoritmo para trocar uma lâmpada no teto).
12
Uma Solução Ex 1(1/4)
13
Uma Solução Ex 1(2/4)
14
Ex1: Lâmpada deve ser trocada? (3/4)
● Ligue o interruptor.
● SE a lâmpada não acender, então:
● Pegue uma escada;
● Posicione-a embaixo da lâmpada;
● Desligue o interruptor
● Pegue uma lâmpada nova;
● Suba na escada com a lâmpada nova na mão;
● Desenrosque a lâmpada velha que está bucal,segurando-a;
● Coloque e enrosque a lâmpada nova no bucal;
● Desça da escada com a lâmpada velha na mão
● Jogue a lâmpada velha no lixo
● Ligue o interruptor.
● Guarde a escada E se a lâmpada nova
não funcionar?
15
Ex1: Lâmpada nova funciona? (4/4)
● Ligue o interruptor.
● SE a lâmpada que está no bucal não acender, então:
● Pegue uma escada;
● Posicione-a embaixo da lâmpada;
● Faça
● Desligue o interruptor
● Busque uma lâmpada nova;
● Suba na escada com a lâmpada nova na mão;
● Desenrosque a lâmpada velha que está bucal, segurando-a;
● Coloque a lâmpada nova no bucal e enrosque-a nele;
● Desça da escada com a lâmpada velha na mão
● Jogue a lâmpada velha no lixo
● Ligue o interruptor.
● ENQUANTO a lâmpada que está no bucal não acender:
● Guarde a escada
16
Exercício 2
Escreva um algoritmo para fazer um hambúrguer com
alface e tomate
17
Uma Solução Ex2
1. Pegar o pão
2. Cortar o pão ao meio e deixá-lo aberto
3. Passar maionese nos dois lados de dentro do pão
4. Pegar e cortar alface e tomate
5. Colocar alface e tomate em um lado do pão
6. Pegar o Hambúrguer
7. Fritar o Hambúrguer
8. Colocar o Hambúrguer no outro lado do pão
9. Fechar o pão
18
Funciona?
Um robô humano que executa fielmente os algoritmos,
pode seguir este modo de usar para lavar seu pet?
Modo de usar:
1. Molhe o pelo de seu pet
2. Aplique o shampoo.
3. Enxague e repita.
19
NO QUE DÁ????? (1/3)
Execute o algoritmo abaixo:
1. Desenhar um círculo
2. Traçar sobre este círculo, de forma imaginária 2 eixos, x e y, perpendiculares
entre si que se cruzam na origem. (o plano cartesiano ortogonal )
3. Desenhar um JJJ.
4. Posicioná-lo sobre o eixo do X, com a ponta do triângulo encostando no círculo .
5. Desenhar um JJJ .
6. Posicioná-lo sobre o eixo do Y , com a ponta do triângulo encostando no círculo
JJJ
1. Desenhe um retângulo com comprimento equivalente a 2/3 do raio do círculo
2. Desenhe um triângulo, fora do retângulo, com a base encostada no lado menor
do retângulo e com altura igual a 1/3 do raio do círculo
20
NO QUE DÁ????? (2/3)
21
NO QUE DÁ????? (3/3)
Desenhar um círculo ( QUAL O RAIO?)
Traçar sobre este círculo, de forma imaginária 2 eixos, x e y,
perpendiculares entre si que se cruzam na origem. (plano cartesiano
ortogonal )( Qual o sentido?)
Desenhar um JJJ. (diferença no comprimento p/hora e minuto,
qual altura?) Um algoritmo
valores necessários para alguém desenhar um JJJ : deve ser uma
comprimento: proporção do raio desejado em função do uso: sequência finita,
h ou min
precisa, sem
altura: proporção fixa em relação ao raio desejado
ambiguidade de
Posicioná-lo sobre o eixo do X, com a ponta do triângulo encostando passos que
no círculo .
descrevem as
Desenhar um JJJ .
etapas para
Posicioná-lo sobre o eixo do Y , com a ponta do triângulo encostando
no círculo
resolver um
JJJ
problema de
Desenhe um retângulo com comprimento equivalente a 2/3 do raio do círculo e
forma automática
de altura... e repetitiva!
Desenhe um triângulo, fora do retângulo, com a base encostada no lado menor
do retângulo e com altura igual a 1/3 do raio do círculo
22
Linguagem para descrever a solução de um problema (1/2)
23
Linguagem para descrever a solução de um problema (2/2)
24
Linguagens
Linguagem humana: composta pelo alfabeto, símbolos e
números
Linguagem de Máquina: linguagem binária, composta
por 0 e 1
0 0 0
0 1 1 1
1
Todo dado coletado pelos computadores, as instruções por ele
executadas, bem como os resultados de um processamento são
sempre constituídos de conjuntos ordenados de zeros e uns.
25
Exercício 3(1/2)
26
Exercício 3(2/2)
add 3 0 0 0 0 0 0 0 0 0 1 #1
sub4 0 0 0 0 0 0 0 1 1 0 # divisão: 6
0 0 0 0 0 0 0 0 0 0 #0
mul 5
0 0 0 0 0 0 0 0 0 1 #1
div6
0 0 0 0 0 0 0 1 1 1 #armazena: 7
store 7
0 0 0 0 0 0 0 0 1 0 #2
0 0 0 0 0 0 0 0 0 1 # write: 1
0 0 0 0 0 0 0 0 1 0 #2
"linguagem de máquina", é
projetada para um
computador e não para uma
pessoa
27
Linguagem de Programação
Uma linguagem de programação facilita a comunicação
de instruções para um computador
Cálculos
Efeitos especiais
Criar cookies
33
http://www.lightbot.com/hocflash.html
5
https://blockly-games.appspot.com/
Maze
Exercícios 2,3,4 e 6
Algoritmo: conceito
Seqüência finita e não ambígua de passos que permite
a solução de um problema de maneira automática e
repetitiva
Atores envolvidos
– criador da solução
– executor da solução
– usuário da solução “faz ele desenhar um
quadrado de lado 100”
riscar lado
pf 100 girar 90º
pd 90 riscar outro lado
pf 100 girar 90º ...
pd 90
.......
Exemplos
Partitura
Criador?
Executor?
Usuário
Receita Culinária
Criador?
Executor?
Usuário
Algoritmos
A noção de algoritmo é central para toda a computação
Atores envolvidos
criador da solução: programador
executor da solução:computador
descrição do algoritmo
Que ações devem ser realizadas para obter os valores necessários e transformá-los nas
respostas desejadas
Executor
Criador
Desenvolvendo a Solução(3/19)
1ª ação - Perguntar os valores das quantidades(números),
memorizando-os
Quem fornece os números????? O usuário
1 - Perguntar e “memorizar” os valores das quantidades fornecidos pelo usuário
como resposta
Usuário Executor
Problema: Perguntar????
Solução: Comunicar ao usuário uma frase que ele deve fornecer
os valores e então“memorizar” ? ? ? ? ? os valores informados
Desenvolvendo a Solução(4/19)
Executor Criador
Desenvolvendo a Solução(5/19)
1ª ação - Perguntar os valores das quantidades(números), memorizando-os
2ª ação – Subtrair um do outro memorizando o resultado
3ª ação – Falar o resultado memorizado
Quantidade
comprada?
Usuário
Executor
Desenvolvendo a Solução(9/19)
Quantidade comprada?
Usuário
Executor
Quantidade comprada?
Usuário
Executor
Solução:
Instruir o executor a desenhar uma caixa para que possa anotar os valores
que necessita (reserva um local físico )
Problema:
– Como identificar qual foi o primeiro valor e qual foi o segundo valor
fornecido?
Solução:
Instruir o executor a identificar as caixas criadas: criar a caixa e batizá-la com um
nome!!!
Comprado
Desenvolvendo a Solução(12/19)
1. Desenhar uma “caixa” e chamá-la de comprado
2. Desenhar uma “caixa” e chamá-la de consumido
3. Desenhar uma “caixa” e chamá-la de sobra
4. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”, escrevendo o número
fornecido na caixa comprado
5. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”, escrevendo o número
fornecido na caixa consumido
6. Calcular a subtração do número guardado em comprado pelo número guardado em
consumido e guardar o valor produzido na caixa chamada sobra
sobra comprado- consumido
9. Comunicar ao usuário “Quantidade de caixas restantes:”
10. Comunicar ao usuário o número guardado na caixa chamada sobra
Desenvolvendo a Solução(13/19)
24
24
Quantidade comprada? 24
Desenvolvendo a Solução(16/19)
Quantidade consumida?
24
Desenvolvendo a Solução(16/19)
Quantidade comprada? 24
Quantidade consumida? 19
19
24 19
Desenvolvendo a Solução(17/19)
Quantidade comprada? 24
Quantidade consumida? 19
24 19 5
Quantidade comprada? 24
Desenvolvendo a Solução(18/19)
Quantidade consumida? 19
Quantidade de caixas
restantes:
24 19 5
Quantidade comprada? 24
Desenvolvendo a Solução(19/19)
Quantidade consumida? 19
Quantidade de caixas
restantes: 5
24 19 5
Exemplo 2
Faça um algoritmo para mostrar o número de disciplinas que falta
para um aluno se formar nrdisc
2 0
identificação da saída
quais os valores que devem ser mostrados ao usuário como
resultado da execução da solução
locais para guardá-los ( identificados e adequados ao tipo de valor)
descrição do algoritmo
Como fazer (que ações e cálculos devem ser realizados) para que os valores de
entrada sejam transformados nos valores de saída
Representação de Algoritmos
Linguagem Natural
Pseudo Linguagem
o mais próximo possível de uma linguagem de programação
de computadores de alto nível mas evitando de definir regras
de construção gramatical muito rígidas.
Vantagens do emprego da linguagem natural, mas
restringindo o escopo da linguagem.
https://developers.google.com/blockly/
https://blockly-demo.appspot.com/static/demos/code/index.html#326ro6
Blockly
Desenhar “caixa” para guardar valores, identificando-as e definindo o tipo de valor que poderá ser
armazenado (criar variáveis): Variables/create
identificação da saída
quais os valores que devem ser mostrados ao usuário como resultado da
execução da solução
peso em kg ( real)
1 kg equivale a 1000g
Solução
Exercício 3
Faça um algoritmo para mostrar a área de um retângulo
cujas dimensões são obtidas com o usuário
Desenvolvendo a Solução
Faça um algoritmo para mostrar a área de um retângulo
cujas dimensões são obtidas com o usuário
11. Modifique o exercício 10) para que seja acrescido uma taxa de administração
de crédito sobre o valor parcelado. Esta taxa equivale a 10% do valor
parcelado e deve ser pago junto com a entrada
Exercícios
11. Faça um algoritmo em pseudolinguagem que calcule quantos litros de tinta
serão necessários para pintar um tampo de mesa circular cujo raio (valor
inteiro em m) é fornecido pelo usuário
A) considere que com um litro de tinta pode-se pintar 5m2
B) considere que o rendimento por litro da tinta (m2/l) será também
informado pelo usuário
C) DESAFIO: considerando que uma lata tem 10 l e só são vendidas latas
fechadas, quantas latas serão necessárias?
Solução de Problemas
definir o objetivo do problema;
entender a proposta do problema;
levantar dados sobre a situação que ele descreve;
gerar alternativas para a solução (idéias);
avaliar as alternativas e chegar à solução;
refletir acerca dessa solução;
fazer com que ela seja entendida e aceita.