Vous êtes sur la page 1sur 85

INF1030

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

Descreva um passo a passo ( um roteiro) para o prisioneiro seguir!!


Ele só reconhece as seguintes ordens:
Encher garrafa ....
Transferir de .... para....
Esvaziar garrafa ....
Colocar garrafa .... na porta
3
Liberte o Prisioneiro: Uma Solução (1/2)
1 - Encher a garrafa de 7 litros
2 - Transferir da garrafa 7 para a garrafa 5 litros até
enchê-la.
3 – Esvaziar a garrafa de 5 litros.
4 – Transferir da garrafa de 7 para a garrafa de 5 litros.
5 - Encher a garrafa de 7 litros.
6 – Transferir da garrafa de 7 litros para a garrafa de 5
litros até enchê-la.
7 – Esvaziar a garrafa de 5 litros.
8 - Transferir da garrafa de 7 para a garrafa de 5.
9 - Encher a garrafa de 7 litros.
10– Transferir da garrafa de 7 litros para a garrafa de 5
litros até enchê-la
!
11- Colocar a garrafa de 7 litros na porta

4
Outra descrição da solução (2/2)

Enquanto a garrafa 7 não tem 6 litros faça


se garrafa 7 com água
transferir da garrafa 7 p/a 5
encher garrafa 7
transferir a água da garrafa 7 para a 5
esvaziar a garrafa 5
Colocar a garrafa de 7 litros na porta

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)

1) Divida as bolas em 3 grupos iguais


2) Escolha dois grupos para pesar e reserve o grupo
extra
3) Coloque-os cada um em um lado da balança
4) Se os pesos forem iguais, descarte ambos os grupos
Senão, descarte o grupo mais pesado e o grupo extra
5) Divida as bolas do grupo (que sobrou) em 3 grupos
6) Escolha dois grupos para pesar e reserve o grupo
extra
7) Coloque-os cada um em um lado da balança
8) Se os pesos forem iguais descarte ambos os grupos
Senão, descarte o grupo mais pesado e o grupo extra
9) A bola que restou é a mais leve

9 9
Solução do desafio 2(4/4)

a) Repita os passos 1 a 4 até que reste apenas uma bola


1) Divida as bolas em 3 grupos iguais
2) Escolha dois grupos para pesar e reserve grupo extra
3) Coloque-os cada um em um lado da balança
4) Se os pesos forem iguais, descarte ambos os grupos
Senão, descarte o grupo mais pesado e o grupo extra
b) A bola que restou é a mais leve

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)

● Pegue uma escada;


● Posicione-a embaixo da lâmpada;
● Pegue uma lâmpada nova;
● Suba na escada com a lâmpada nova na mão;
● Desenrosque a lâmpada velha que está bucal;
● 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;
● Guarde a escada.

13
Uma Solução Ex 1(2/4)

● Pegue uma escada;


● Posicione-a embaixo da lâmpada;
● 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 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; Sempre a lâmpada
● Guarde a escada. precisa ser
trocada?

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

A mesma resposta de um problema pode ser


É a única forma de resolver ? obtida de diversas maneiras podem existir
vários algoritmos para solucionar o mesmo
problema

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.

Como o robô humano executa literalmente Um algoritmo deve ser


este procedimento , jamais terminaria. finito

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)

 Qualquer humano que conheça a língua portuguesa é


capaz de resolver os problemas anteriores seguindo os
passo a passos fornecidos (se estiverem corretos).

 É possível mostrar a um computador como resolver um


problema?

23
Linguagem para descrever a solução de um problema (2/2)

 Para que o algoritmo possa ser executado por uma máquina é


importante que as instruções estejam corretas, sem
ambiguidades e escritas numa linguagem que ela compreenda.

 Uma linguagem natural (ainda) não é adequada para escrever


algoritmos executáveis por máquinas
o linguagens naturais tem ambiguidade e redundância
o um texto em linguagem natural pode exigir a interpretação de quem o lê

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)

Construir um passo a passo (algoritmo) para instruir uma pessoa a mostrar


o peso em KG de um pacote cujo peso em G é informado

1. Perguntar e anotar o valor do peso em gramas do pacote


2. Dividir o valor anotado por 1000, anotando o resultado

3. Mostrar o valor anotado da divisão

26
Exercício 3(2/2)

Construir um passo a passo (algoritmo) para instruir UM ROBÔ a


mostrar o peso em KG de um pacote cujo peso em G é informado
Deve ser escrito numa linguagem que ele compreenda:
Instruções disponíveis 0 0 0 0 0 0 0 0 0 0 # read: 0
read 0 0 0 0 0 0 0 0 0 0 0 #0
write 1 0 0 0 0 0 0 0 0 1 0 # armazena const: 2
storeconst2 1 1 1 1 1 0 1 0 0 0 # 1000

add 3 0 0 0 0 0 0 0 0 0 1 #1

sub4 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
div6
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

 Deve ser formal e precisa


 como notações matemáticas, fórmulas químicas, ...
 porque é necessário descrever, com precisão, as instruções a
serem executadas

 Existem diversas LP, e cada uma tem determinadas


características que a tornam adequada
 para a solução de determinados tipos de problemas
 para expressar (escrever) soluções para esses tipos de
problemas
Tradução de Programas
 Um algoritmo escrito em uma linguagem de alto
nível(programa) deve ser traduzido para a linguagem de
máquina para que possa ser executado por ela

 Essa tradução é feita por dois tipos de programas:


 compiladores
 interpretadores
Interpretação de Programas
 Um interpretador atua como um "intérprete" entre
uma Linguagem de Programação e a linguagem de
máquina
 ele lê um programa escrito em linguagem de alto nível e o
“executa”, como se fosse a CPU
Compilação de Programas
 Um compilador traduz um programa em uma linguagem
de alto nível para um “programa executável” em
linguagem de máquina
 depois que um programa é compilado, ele pode ser executado
repetidamente, sem que precise de nova tradução

programa executável CPU


Javascript
 Linguagem script popular, independente de plataforma , baseada em objetos,
no lado do cliente.
 scripts são pequenas sequências de instruções (“miniprogramas”)
interpretados pelo browser e voltados para execução de tarefas específicas.
 Suportada por diversos navegadores web e outras ferramentas
 Interage com HTML, adicionando interatividade (em geral as páginas HTML são
estáticas):
 Criar Janelas pop-up

 Interação com formulários (validando dados, por exemplo)

 Cálculos

 Efeitos especiais

 Atualização do conteúdo da página após sua visualização

 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

 Linguagem utilizada na solução deve ser compreendida pelo executor da


solução
Algoritmo: conceito
 Na seqüência de passos que soluciona um problema
pode-se ter:
 Instruções diretas
 tomada de decisões ( em função do contexto atual)
 repetição de passos (iteração)
Algoritmo: conceito
 Diferentes algoritmos podem levar a solução de um mesmo problema
 Exemplo : como se vestir de manhã?
 Primeiro colocar a calça ou a camisa?
 Meia e Sapato?

Seqüência finita e não ambígua de passos que permite a solução de


um problema de maneira automática e repetitiva
Interação dos atores envolvidos

 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

 Programa é um algoritmo escrito em uma linguagem de programação


Algoritmos Computacionais
Algoritmo

 Atores envolvidos
 criador da solução: programador

 executor da solução:computador

 usuário da solução: humano

 Linguagem utilizada na solução deve ser compreendida


pelo executor da solução
Algoritmo Computacional

 Um algoritmo computacional opera sobre um conjunto


de entradas (valores) de modo a gerar uma saída que
seja útil para o usuário
Solução de Problemas

Método para construção de algoritmos


1. Compreender completamente o problema a ser resolvido, destacando os pontos
mais importantes e os objetos que o compõem.
2. Definir os dados de entrada, ou seja, quais dados serão fornecidos e quais objetos
fazem parte desse cenário-problema.
3. Definir o processamento, ou seja, quais cálculos serão efetuados e quais restrições
para esses cálculos. O processamento é responsável pela transformação dos dados
de entrada em dados de saída. Além disso, deve-se verificar quais objetos são
responsáveis pelas atividades.
4. Definir os dados de saída, ou seja, quais dados serão gerados depois do
processamento.
5. Construir o algoritmo
6. Testar o algoritmo realizando simulações.
Exemplo 1

 Calcula p/mim quantas caixas de suco sobraram da


festa?

 Faça um algoritmo para calcular e mostrar a diferença


entre a quantidade de caixas comprada e a quantidade
consumida na festa (dois números inteiros)
Desenvolvendo a Solução(1/19)
 Faça um algoritmo para calcular e mostrar a diferença entre a quantidade de
caixas comprada e a quantidade consumida (dois números inteiros)
 Passos da solução:

 identificação da entrada de dados ( a partir de que valores?)


 2 números inteiros : a quantidade comprada e a quantidade consumida

 identificação da saída ( qual a resposta desejada?)


 1 número inteiro representando a diferença entre os 2 números obtidos na entrada

 descrição do algoritmo
 Que ações devem ser realizadas para obter os valores necessários e transformá-los nas
respostas desejadas

Um algoritmo computacional opera sobre um conjunto de


entradas (valores) de modo a gerar uma saída que seja
útil
Desenvolvendo a Solução(2/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

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)

1 - Dizer “Qual a quantidade comprada ? “ e “memorizar” o valor do


número fornecido pelo usuário
2 - Dizer “Qual a quantidade consumida ? “ e “memorizar” o valor do
número fornecido pelo usuário

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

1. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,


memorizando o primeiro número inteiro fornecido pelo usuário,
2. Comunicar ao usuário a frase: “Quantidade consumida?”,
memorizando o segundo número inteiro fornecido pelo usuário,
3. Calcular a subtração do primeiro número pelo segundo número
memorizando o resultado
4. Comunicar o resultado da operação de subtração
Desenvolvendo a Solução(8/19)

1. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,


memorizando o primeiro número inteiro fornecido pelo usuário,
2. Comunicar ao usuário a frase: “Quantidade consumida?”,
memorizando o segundo número inteiro fornecido pelo usuário,
3. Calcular a subtração do primeiro número pelo segundo número
memorizando o resultado
4. Comunicar o resultado da operação de subtração

Quantidade
comprada?

Usuário
Executor
Desenvolvendo a Solução(9/19)

1. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,


memorizando o primeiro número inteiro fornecido pelo usuário,
2. Comunicar ao usuário a frase: “Quantidade consumida?”,
memorizando o segundo número inteiro fornecido pelo usuário,
3. Calcular a subtração do primeiro número pelo segundo número
memorizando o resultado
4. Comunicar o resultado da operação de subtração

Quantidade comprada?

Usuário
Executor

Problema: Como “memorizar” ???? O executor não “registra” o que faz!


Quando muda para a instrução seguinte, esquece tudo o que fez antes....
Desenvolvendo a Solução(10/19)

1. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,


memorizando o primeiro número inteiro fornecido pelo usuário,
2. Comunicar ao usuário a frase: “Quantidade consumida?”,
memorizando o segundo número inteiro fornecido pelo usuário,
3. Calcular a subtração do primeiro número pelo segundo número
memorizando o resultado
4. Comunicar o resultado da operação de subtração

Quantidade comprada?

Usuário
Executor

Problema: Como “memorizar” ????


Quando muda para a instrução seguinte, esquece tudo o que fez antes....
Desenvolvendo a Solução(11/19)
 Problema:
– Como memorizar valores fornecidos pelo usuário?

 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)

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra
Desenvolvendo a Solução(14/19)

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
Locais criados para escrevendo o número fornecido na caixa comprado
guardar valores e 3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
identificados por um escrevendo o número fornecido na caixa consumido
nome ( “caixas” ) 4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
são chamados de
6. Comunicar ao usuário o número guardado na caixa chamada sobra
VARIÁVEIS
comprado consumido sobra
Desenvolvendo a Solução(15/19)
Quantidade comprada?

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra

comprado consumido sobra


Desenvolvendo a Solução(15/19)
Quantidade comprada? 24

24

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra

comprado consumido sobra

24
Quantidade comprada? 24
Desenvolvendo a Solução(16/19)
Quantidade consumida?

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra

comprado consumido sobra

24
Desenvolvendo a Solução(16/19)
Quantidade comprada? 24

Quantidade consumida? 19

19

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra

comprado consumido sobra

24 19
Desenvolvendo a Solução(17/19)
Quantidade comprada? 24

Quantidade consumida? 19

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra

comprado consumido sobra

24 19 5
Quantidade comprada? 24
Desenvolvendo a Solução(18/19)
Quantidade consumida? 19
Quantidade de caixas
restantes:

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra

comprado consumido sobra

24 19 5
Quantidade comprada? 24
Desenvolvendo a Solução(19/19)
Quantidade consumida? 19
Quantidade de caixas
restantes: 5

1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra


2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”,
escrevendo o número fornecido na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”,
escrevendo o número fornecido na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra

comprado consumido sobra

24 19 5
Exemplo 2
 Faça um algoritmo para mostrar o número de disciplinas que falta
para um aluno se formar nrdisc

  precisa responder números inteiros 2

 Faça um algoritmo para mostrar o CR atual de um aluno


  pode responder um número real cr

2 0

 Valores manipulados por estes algoritmos são numéricos mas de tipos


diferentes.
 Por isso, na criação de uma variável deve ser determinado o tipo de valor que
irá armazenar
Passos da solução
 identificação da entrada de dados :
valores que o usuário deve fornecer ao executor para que ele
possa resolver o problema
locais para guardá-los (identificados)

 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

 Perguntar um valor do usuário ( meio externo) armazenando-o em uma variável:


 Text: prompt for <..> with message <...>
 Variables/ set to
 Realizar uma operação aritmética armazenando o resultado em uma variável (atribuição)
 Math: <var> op < var>
 Variables/ set to

 Comunicar o valor armazenado em uma variável


Text: print <....>

 Comunicar ao usuário uma mensagem


“Quantidade comprada?”>>saida
Solução do Exemplo 1
1. Desenhar 3“caixas” e chamá-las de comprado, consumido, sobra
2. Comunicar ( dizer) ao usuário a frase: “Quantidade comprada?”, escrevendo o número fornecido
na caixa comprado
3. Comunicar ( dizer) ao usuário a frase: “Quantidade consumida?”, escrevendo o número fornecido
na caixa consumido
4. sobra comprado- consumido
5. Comunicar ao usuário “Quantidade de caixas restantes:”
6. Comunicar ao usuário o número guardado na caixa chamada sobra
Exercício 2
Faça um programa que capture o peso, em gramas, de um pacote
e exiba na tela o valor equivalente em Kg. O peso em gramas é
fornecido pelo usuário via teclado
identificação da entrada de dados :
valores que o usuário deve fornecer ao executor para que ele possa
resolver o problema
peso em gramas (inteiro)

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)

descrição do algoritmo: Como fazer (que sequência de cálculos deve ser


realizada) para que os valores de entrada sejam transformados nos valores
de saída
Lembre-se que os valores precisam ser guardados em locais identificados
adequados ao tipo do valor (VARIÁVEIS)
Desenvolvendo a solução

Valores de entrada (E) : peso em gramas (inteiro)


Valores de saída (S) : 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

identificação da entrada de dados ( a partir de que valores?)


2 números reais ( altura e comprimento)

identificação da saída (qual a resposta desejada?)


1 número real representando a área

descrição do algoritmo (ES)


usar a fórmula da área
Uma Solução
Exercício 4
Faça um algoritmo que transforme uma temperatura na escala Celsius (C)
para a correspondente em Fahrenheit (F).

E: Temperatura em Celsius ( nº real)


S: Temperatura em fahrenheit ( nº real)
Como? Fórmula de conversão: F = 9/5 * C + 32
Exercício 5
Faça um algoritmo para calcular quantos metros de madeira serão
necessários e o preço a pagar para emoldurar um quadro cujas dimensões
são fornecidas pelo usuário. Sabe-se que o preço do metro da madeira custa
R$ 5,00

E: dimensões do quadro ( alt e compr)


S: metragem e preço a pagar
Como? Achar o perímetro p/ metragem e multiplicar pelo custo para o preço a
pagar
Exercícios
1. Faça um programa que leia as duas notas de um aluno, calcule e imprima a
sua média sabendo que a primeira nota tem peso 3 e a segunda nota tem
peso 7.
2. Faça um programa para calcular a quantos metros de madeira serão
necessários para emoldurar um quadro cujas dimensões são fornecidas pelo
usuário
3. Faça um programa que obtenha o dia de retirada e o dia da entrega de um
livro da biblioteca (ambos no mesmo mês) e informe quantos dias o livro
ficou emprestado
4. Faça um algoritmo em pseudolinguagem que calcule o desempenho de um
carro em uma viagem. A distância percorrida e a quantidade de litros
colocados serão informados pelo usuário.
Exercícios
6. Faça um algoritmo em pseudolinguagem que mostre o sucessor de um
número fornecido pelo usuário
7. Faça um algoritmo em pseudolinguagem que mostre o sucessor e o
antecessor de um número fornecido pelo usuário
8. Faça um algoritmo em pseudolinguagem que calcule e mostre a área de uma
sala retangular cujas medidas reais são fornecidas pelo usuário
9. Faça um algoritmo em pseudolinguagem que calcule e mostre a área e o
perímetro de uma sala retangular cujas medidas reais são fornecidas pelo
usuário
10. Faça um programa que mostre o valor da entrada e de cada parcela a ser
paga por uma pessoa. O total comprado e o número de parcelas será
fornecido pelo usuário. A loja só parcela 70% do montante

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.

Vous aimerez peut-être aussi