2. Laço de repetição: ENQUANTO e FAÇA, ENQUANTO
●
Para transformar dados em informações, um programa faz cálculos, manipula dados e toma decisões.
●
Para repetir instruções por um número de vezes desconhecido, todas as linguagens de alto nível possuem as
instruções ‘ENQUANTO’ e ‘FAÇA, ENQUANTO’.
<script>
var numero = 1;
while (numero != 0) {
numero = prompt(‘Digite um número:’);
alert(numero);
}
alert(‘FIM.’);
</script>
No código acima, o programa pedirá um número ao usuário e o mostrará em seguida, enquanto o número digitado
for diferente de 0. A mensagem ‘FIM’ será mostrada ao fim.
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
3. Laço de repetição: ENQUANTO
●
A instrução ENQUANTO possui:
○
Uma condição de execução - é o que define quando o laço deve continuar
○
Um bloco de instruções - é realizado a cada iteração
Condição de execução
while (i != 0) {
alert(i);
Instrução
Bloco de Instruções
alert(‘Você não digitou 0’);
i = prompt(‘Digite um número:’);
}
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
4. Laço de repetição: Faça, Enquanto
●
A instrução FAÇA, ENQUANTO possui:
○
Uma condição de execução - é o que define quando o laço deve continuar
○
Um bloco de instruções - é realizado antes da primeira iteração e a cada iteração
do {
i = prompt(‘Digite um número:’);
Instrução
Bloco de Instruções
alert(i);
} while (i != 0)
Condição de execução
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
5. Exercícios
1.
Faça um programa que receba números do usuário até que ele digite ‘0’ e então calcule a média aritimética.
2.
Faça um jogo onde um jogador digita um número e o outro deve tentar adivinhar. Enquanto o segundo jogador
não acertar o número, uma mensagem ‘Você errou!’ deve aparecer. Se o jogador acertar, uma mensagem
‘Você ganhou!’ deve aparecer.
3.
Faça um jogo onde um jogador digita um número e o outro deve tentar adivinhar. Enquanto o segundo jogador
não acertar o número, uma mensagem ‘Você errou!’ deve aparecer e também uma dica dizendo se o número
secreto é maior ou menor do que o digitado. Se o jogador acertar, uma mensagem ‘Você ganhou!’ deve
aparecer.
4.
Faça um jogo onde um jogador digita cinco números e o outro deve adivinhar a soma dos números ou três
deles. Enquanto o segundo jogador não acertar o número, uma mensagem ‘Você errou!’ deve aparecer. Se o
jogador acertar a soma ou três dos cinco números, uma mensagem ‘Você ganhou!’ deve aparecer.
5.
Faça um jogo onde um jogador digita cinco números e o outro deve adivinhar a soma dos números ou três
deles. Enquanto o segundo jogador não acertar o número, uma mensagem ‘Você errou!’ deve aparecer. Se o
jogador acertar a soma ou três dos cinco números, uma mensagem ‘Você ganhou!’ deve aparecer. Se o usuário
errar mais de 10 vezes, o programa deve mostrar uma mensagem com a resposta e o texto ‘Fim. Você perdeu’,
e terminar sua execução.
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
6. Laço de repetição: Para
●
Para transformar dados em informações, um programa faz cálculos, manipula dados e toma decisões.
●
Para repetir instruções por um número de vezes conhecido, todas as linguagens de alto nível possuem a
instrução ‘PARA’.
<script>
var numero = prompt(‘Digite o número para qual deseja ver a tabuada.’);
for (var i=1; i<=10; i++) {
alert(numero*i);
}
alert(‘FIM.’);
</script>
No código acima, se o usuário digitar ‘5’, por exemplo, o programa exibirá os números: 5, 10, 15, 20, 25, 30, 35, 40,
45, 50. A mensagem ‘FIM’ será mostrada ao fim.
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
7. Laço de repetição: Para
●
A instrução PARA possui:
○
Uma instrução de inicialização - acontece uma vez, antes das iterações
○
Uma condição de execução - é o que define quando o laço deve continuar
○
Uma instrução de pós-iteração - acontece ao final de cada iteração, após o bloco de instruções
○
Um bloco de instruções - é realizado a cada iteração
Inicialização
Condição de execução
Pós-iteração
for (var i=0; i<10; i++) {
alert(‘Iteração:’);
Instrução
Bloco de Instruções
alert(i);
alert(‘i aumentará ao final da repetição’);
}
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
8. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
9. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
10. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
11. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
12. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
13. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
14. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
6.
Aumenta ‘i’ para 2
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
15. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
6.
Aumenta ‘i’ para 2
7.
Verifica se a condição de execução ainda é verdadeira (2 < 5 = verdadeiro)
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
16. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
6.
Aumenta ‘i’ para 2
7.
Verifica se a condição de execução ainda é verdadeira (2 < 5 = verdadeiro)
8.
Mostra ‘2’
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
17. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
6.
Aumenta ‘i’ para 2
7.
Verifica se a condição de execução ainda é verdadeira (2 < 5 = verdadeiro)
8.
Mostra ‘2’
9.
Aumenta ‘i’ para 3
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
18. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
6.
Aumenta ‘i’ para 2
7.
Verifica se a condição de execução ainda é verdadeira (2 < 5 = verdadeiro)
8.
Mostra ‘2’
9.
Aumenta ‘i’ para 3
10.
Verifica se a condição de execução ainda é verdadeira (3 < 5 = verdadeiro)
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
19. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
6.
Aumenta ‘i’ para 2
7.
Verifica se a condição de execução ainda é verdadeira (2 < 5 = verdadeiro)
8.
Mostra ‘2’
9.
Aumenta ‘i’ para 3
10.
Verifica se a condição de execução ainda é verdadeira (3 < 5 = verdadeiro)
11.
Etc...
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
20. Laço de repetição: Para
for (var i=0; i<5; i++) {
alert(i);
}
1.
Cria a variável ‘i’, com o valor ‘0’
2.
Mostra ‘0’
3.
Aumenta ‘i’ para 1
4.
Verifica se a condição de execução ainda é verdadeira (1 < 5 = verdadeiro)
5.
Mostra ‘1’
6.
Aumenta ‘i’ para 2
7.
Verifica se a condição de execução ainda é verdadeira (2 < 5 = verdadeiro)
8.
Mostra ‘2’
9.
Aumenta ‘i’ para 3
10.
Verifica se a condição de execução ainda é verdadeira (3 < 5 = verdadeiro)
11.
Etc...
Aula #05 - Controle de fluxo: laço de repetição
número
Qual é o último
do?
que será mostra
Ramon Kayo - 2013/2014
21. Laço de repetição: QUEBRE
●
Você pode parar um laço de repetição antes de sua condição falhar com a instrução QUEBRE.
for (var i=0; i<5; i++) {
if (algoImportante) {
break; //sai do laço de repetição
}
}
while (true) {
if (algoImportante) {
break; //sai do laço de repetição
}
}
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
22. Exercícios
6.
Faça um algoritmo que dada uma entrada numérica do usuário, calcule a tabuada do número até 10.
7.
Faça um algoritmo que dadas duas entrada numéricas do usuário, x e y, calcule a tabuada do x até y.
8.
Faça um algoritmo que dada uma entrada numérica do usuário, mostre uma contagem regressiva até 0.
9.
Faça um algoritmo capaz de calcular o fatorial de um número.
10.
Sabendo que um tabuleiro de batalha naval possui colunas de 1 a 10 e linhas de 1 a 10, faça um algoritmo que
mostre todas as posições possíveis do tabuleiro, com exceção de 2-1, 2-2 e 2-3.
11.
Faça um algoritmo que mostre todos os números ímpares, com exceção do 5, de 1 até o número que o usuário
determinar pela entrada.
12.
Faça um programa que receba 10 valores do usuário e calcule a média aritimética dos valores, utilizando
somente 2 variáveis.
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014
23. Créditos
Alguns exercícios e exemplos foram retirados do livro ‘Estudo de Algoritmos: Soluções em C++ 1a Edição’ de Custódio
T. K. Martins e Milton Rodrigues.
Aula #05 - Controle de fluxo: laço de repetição
Ramon Kayo - 2013/2014