- Aula
- Revisão
- Editor
- Desafio 1
- Desafio 2
Considere o seguinte problema:
Sabemos resolver esse problema? Certamente. Podemos usar três variáveis diferentes e ler da entrada os três números, atribuindo cada número a uma variável.
Então, para cada variável, verificamos se o número termina com 1234.
Mas e se ao invés de três, tivermos uma lista com três milhões de números? Bem, podemos usar três milhões de variáveis diferentes, até funcionaria, mas iria faltar espaço na tela do nosso computador para escrever o programa!
Será que não tem uma maneira melhor?
Bloco Repita
O bloco Repita permite que especifiquemos quantas vezes queremos repetir bloco ou grupo de blocos.
O bloco Repita pode ser encontrado no menu Laços da Barra de Ferramentas (em programação, chamamos a repetição de um grupo de comandos de um laço)
O bloco repita tem um espaço vago para inserirmos um valor inteiro, o número de vezes que os comandos encaixados na abertura com rótulo execute devem ser repetidos.
Por exemplo, podemos usar um bloco Número para especificar o número de repetições. O comando a ser repetido vai ser escrever na saída a cadeia de caracteres Não conversar na aula:
Podemos também usar uma variável para especificar o número de repetições:
Nesse caso, o número de vezes que os comandos encaixados no bloco Repita são repetidos depende do valor corrente da variável num.
Para ilustrar o uso do bloco Repita vamos resolver um problema:
Problema Cofrinho
Lisa está guardando dinheiro para comprar uma bicicleta. Sempre que consegue economizar algum valor ela guarda no cofrinho e anota numa caderneta.
A nossa tarefa é, dada a lista dos valores anotados na caderneta da Liza, escrever um programa para calcular o total de dinheiro no cofrinho.
Entrada
A primeira linha da entrada contém um inteiro N o número de valores na caderneta de Lisa. Cada uma das N linhas seguintes contém um valor inteiro que foi anotado na caderneta de Lisa.
Saída
O programa deve produzir uma única linha na saída, contendo um único inteiro, o valor total no cofrinho de Lisa.
Exemplo
Entrada
3 12 7 5 |
Saída
24 |
Aqui está uma solução em Blockly para o problema:
Veja esse programa na linguagem Python:
total = 0 N = int(input()) for i in range(int(N)): x = int(input()) total = total + x print(total)
Campeã de streaming
Lucas conseguiu na Internet a lista das N músicas mais escutadas em aplicativos de streaming, com o número de vezes que cada música foi escutada. Lucas ficou curioso: quantas vezes foi escutada a música mais escutada? Em outras palavras, qual o maior número de vezes que uma música foi escutada?
Mas a lista não está ordenada e o número de músicas é muito grande. Você pode ajudá-lo?
Dada uma lista com o número de vezes que cada música foi escutada, escreva um programa para determinar qual o maior número de vezes que uma música foi escutada.
Entrada
A primeira linha da entrada contém um número inteiro N, o número de músicas na lista. Cada uma das N linhas seguintes contém um número inteiro Xi, o maior número de vezes que uma música foi escutada.
Saída
Seu programa deve escrever uma única linha na saída, contendo um único número inteiro, o maior número de vezes que uma música foi escutada.
Restrições
- 1 ≤ N ≤ 100
- 1 ≤ Xi ≤ 100000, para 1 ≤ i ≤ N
Exemplos
Entrada
3 4000 5000 4500 |
Saída
5000 |
Entrada
4 345 3000 1234 3000 |
Saída
3000 |
Solução
Aqui você encontra um exemplo de solução para o desafio. Mas antes de ver a solução tente resolvê-lo, criando a sua própria solução.
Solução do DesafioVamos usar uma variável, com o nome maisTocada, para armazenar o número de vezes que a música mais escutada foi escutada. Usamos um bloco Repita para ler o número de vezes que cada música foi escutada. Em cada passo do do laço de repetição, comparamos o número lido com o valor da variável maisTocada. Se o número lido é maior, encontramos uma música que foi mais escutada do que a que conhecemos até então, portanto atualizamos o valor da variável maisTocada com o número lido. Ao final das repetições, a variável maisTocada tem o resultado.
Blockly
|
Python# Solução do Desafio da Aula 10 maisTocada = 0 N = int(input()) for i in range(N): num = int(input()) if num > maisTocada: maisTocada = num print(maisTocada) |
Saldo do Vovô
Vovô João vai ao banco todos os dias, realizar um depósito ou uma retirada de dinheiro, resultado diário da operação de sua banca de jornais.
Dada a movimentação diária da conta do banco do Vovô João, você deve escrever um programa que calcule o menor saldo da conta, no período dado.
Entrada
A primeira linha da entrada contém um número inteiro N que indica o número de dias do período de interesse. A segunda linha da entrada contém um número inteiro S que indica o saldo da conta no início do período. Cada uma das N linhas seguintes contém um número inteiro indicando a movimentação de um dia (valor positivo no caso de depósito, valor negativo no caso de retirada). A movimentação é dada para um período de N dias consecutivos: a primeira das N linhas corresponde ao primeiro dia do período de interesse, a segunda linha corresponde ao segundo dia, e assim por diante.
Saída
Seu programa deve imprimir uma única linha, contendo um único número inteiro, o menor valor de saldo da conta no período dado.
Restrições
- 1 ≤ N ≤ 30
- -1000 ≤ S ≤ 1000
- -1000 ≤ cada movimentação ≤ 1000
Exemplos
Entrada
3 1000 100 -800 50 |
Saída
300 |
Entrada
6 -200 -100 -1000 1000 100 -50 1000 |
Saída
-300 |
Solução
Aqui você encontra um exemplo de solução para o desafio. Mas antes de ver a solução tente resolvê-lo, criando a sua própria solução.
Solução do DesafioVamos usar uma variável para armazenar o saldo corrente (vamos chamá-la 'saldo') e uma variável para armazenar o menor saldo que conhecemos (vamos chamá-la de 'menor_saldo'). O valor inicial para essas duas variáveis é o valor do saldo inicial, lido da entrada.
Vamos ler da entrada o número de movimentações (cada movimentação é um depósito ou uma retirada). Para isso, usamos uma variável de nome 'N'. Para ler o valor de cada movimentação usamos um bloco Repita (com a variável N como número de repetições). Em cada passo do do laço de repetição, lemos uma movimentação da entrada, atualizamos o valor do saldo (que passa a valer saldo mais o valor da movimentação lida) e comparamos o saldo resultante com o valor da variável menor_saldo. Se o saldo resultante é menor, temos um saldo menor do que o que conhecemos até então, portanto devemos atualizar o valor da variável menor_saldo com o saldo atual. Ao final do laço, a variável menor_saldo tem o resultado.
Blockly
|
Python# Solução do Desafio 2 da Aula 10 N = int(input()) saldo = int(input()) menor_saldo = saldo for count in range(int(N)): x = int(input()) saldo = saldo + x if saldo < menor_saldo: menor_saldo = saldo print(menor_saldo) |