- Aula
- Revisão
- Editor
- Desafio
Contando quantas vezes um laço foi executado
Na aula anterior vimos o seguinte problema, que resolvemos com o bloco Repita:
E se ao invés de escrever na saída o número encontrado, quisermos escrever a posição do número encontrado na lista?
Ou seja, para a lista
1 | 3 | 7 | 13 | 5 | 29 | 22 | 12 | 22 | 35 | |
↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ||||
posição | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
ao encontrarmos o número 22, devemos escrever 7 na saída, significando que o primeiro par é o sétimo número da lista.
Para contar quantas vezes o laço foi executado podemos usar uma variável com valor inicial zero e somar um ao valor da variável no início de cada passo da repetição.
Veja este pequeno exemplo em Blockly:
A variável i, utilizada como contador de repetições, é chamada de variável de controle do laço. Quando esse trecho de programa é executado, ele escreve quatro linhas na saída:
1 2 3 fim
O uso de uma variável de controle de laço é tão frequente que existe um bloco específico para esse caso.
O bloco de repetição controlada por variável
O bloco de repetição controlada por variável é encontrado no menu Laços da Barra de Ferramentas:
O bloco de tem
- uma variável de controle, que pode ser alterada,
- um espaço vago para inserirmos o valor inicial da variável de controle e
- um espaço vago para inserirmos o valor final da variável de controle
Suponha que a variável de controle seja i, como no bloco acima. O bloco é executado:
- a primeira vez com i = valor inicial
- a segunda vez com i = valor inicial + 1
- a terceira vez com i = valor inicial + 2
- ...
- a terceira vez com i = valor final
Por exemplo, o trecho de programa
1 2 3 fimNote que os dois trechos de programa abaixo produzem exatamente a mesma saída. O bloco de repetição controlada por variável é apenas uma forma mais compacta, que consegue o mesmo resultado usando um número menor de blocos.
Veja esses dois trechos programa na linguagem Python (não precisa entender o programa em Python, o exemplo é apenas para você ter uma ideia da linguagem Python; mais adiante no curso vamos ver os comandos em Python em detalhes):
for i in range(1,4): print(i) print('fim') |
i = 0 for count in range(3): i = i + 1 print(i) print('fim') |
Premio do milhão
Alice e Bia criaram uma página na Internet com informações sobre o Macaco-prego-de-peito-amarelo, uma espécie em extinção. A página mostra como todos podem ajudar a manter o seu habitat natural para evitar que a espécie seja extinta.
Uma empresa gostou tanto da iniciativa de Alice e Bia que prometeu doar um prêmio para que as duas amigas possam realizar outras iniciativas semelhantes. A empresa decidiu que o prêmio seria dado quando a soma do número de acessos à página chegasse a um milhão.
Dada a lista de acessos diários que ocorreram à página de Alice e Bia, escreva um programa para determinar quantos dias foram necessários para a soma dos acessos chegar a 1 milhão e as amigas ganharem o prêmio.
Entrada
A primeira linha da entrada contém um número inteiro N, que indica o número de dias que a lista contém. Cada uma das linhas seguintes contém um único inteiro A, o número de acessos em um dia. O primeiro número dado indica o número de acessos no primeiro dia, o segundo número dado indica o número de acessos no segundo dia, e assim por diante.
Saída
Seu programa deve escrever na saída uma única linha, contendo um único número inteiro, o número de dias que foram necessários para a soma dos acessos à pagina de Alice e Bia chegar a um milhão.
Restrições
- 1 ≤ N ≤ 1.000 (um mil)
- 0 ≤ A ≤ 1.000.000 (um milhão)
- A soma de todos os valores A da lista é maior do que ou igual a um milhão (ou seja, Alice e Bia certamente ganham o prêmio).
Exemplos
Entrada
5 100 99900 400000 500000 600000 |
Saída
4 |
Entrada
1 1000000 |
Saída
1 |
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 soma para armazenar o número total de acessos e um bloco de repetição controlada por variável para ler as os acessos de cada dia. A cada passo da repetição, adicionamos o número de acessos daquele dia ao número total de acessos e verificamos se o número total de acessos é igual a ou maior do que um milhão; se for, interrompemos o laço. O resultado é o número de vezes que o laço foi executado, ou seja, o valor da variável de controle i.
Blockly
|
Python# Solução do Desafio da Aula 12 soma = 0 N = int(input()) for i in range(1,N+1): x = int(input()) soma = soma + x if soma >= 1000000: break print(i) |