Loops
Repetições
As estruturas de repetição permitem fazer com que um ou mais comandos em um programa sejam
executados várias vezes.
Essas estruturas, também denominadas laços de repetição ou loops, complementam a programação
sequencial e a programação condicional, vistas nas mentorias anteriores.
Exemplo:
● Quando analisamos o funcionamento geral de um programa instalado em um terminal de caixa eletrônico,
notamos que algumas ações ocorrem de forma sequencial, como solicitar a identificação do cliente e ler a sua
senha.
● Outras ficam vinculadas a uma condição: se o cliente informou a senha correta, se o valor informado é múltiplo
de 10, se há saldo suficiente na conta...
● E por fim, precisamos de estruturas que permitam fazer com que algumas ações sejam executadas diversas vezes
no programa, como solicitar novamente a senha, pagar várias contas ou exibir todas as movimentações
financeiras do cliente em um intervalo de datas.
Repetições
É muito importante ressaltar que essas repetições necessitam de um ponto de interrupção, que pode
ocorrer a partir de:
● Uma ação do usuário.
● A partir de uma configuração do sistema, como por exemplo a indicação de um limite para a
digitação de senhas incorretas.
Caso essa interrupção não
ocorra, as estruturas de repetição
deixarão o programa em loop
infinito, não executando de forma
que se esperava.
Repetições
As estruturas de repetição são muito utilizadas para
manipular listas de dados, como a lista de produtos em
promoção em um site de comércio eletrônico: Com um laço de repetição,
o processo se torna muito
● Monta-se o layout de apresentação de cada
produto, com imagem, descrição, marca e preço,
mais simples!!
e, a partir de um laço de repetição, percorrem-se
todos os itens para exibi-los no site.
Outro exemplo de uso dos loops é a apresentação
dos valores das parcelas de um financiamento de um
imóvel.
● Imagine calcular e exibir no programa o valor e a
data de vencimento das 360 parcelas do
financiamento...
Repetições
○ No contexto do desenvolvimento de interfaces para páginas web, o uso das estruturas de
repetição é igualmente imprescindível.
○ Para construir as estruturas de repetição em um programa, a linguagem JavaScript dispõe dos
comandos for, while e do... while.
○ Pequenas particularidades fazem com que o uso de cada um deles seja mais adequado para uma
ou outra situação.
Repetição com variável de controle: laço for
A sintaxe do comando for é composta de três instruções, que o definem:
1) o valor inicial da variável de controle;
2) a condição que determina se a repetição deve ou não continuar;
3) o incremento ou decremento da variável de controle.
Sintaxe do comando for com o significado de cada parte.
● Entre as chaves {} devem ser inseridos os comandos que serão executados repetidas vezes.
● O incremento i= i + 1 pode ser abreviado por i++.
● A repetição é controlada por uma variável, que, no exemplo da imagem anterior, inicia em 1 e
aumenta até 10.
● Outros valores, porém, podem ser indicados, como a variável de controle iniciar em 10 e
decrescer até 1.
● Nesse último caso, utiliza-se i = i - 1, ou i - -, na terceira instrução.
Ao entender a sequência de execução das partes que compõem o comando for, podemos montar
diversas variações de valores para a variável de controle.
Sintaxe do comando for com o significado de cada parte.
Exemplo:
var numeros = “”
for (var i = 1; i < 4; i = i + 1) {
numeros = numeros + i + ” ”
}
[Link] = numeros;
Sintaxe do comando for com o significado de cada parte.
Após a variável numeros ser declarada e inicializada, as seguintes operações são realizadas pelo laço for:
1. A variável i é declarada e recebe o valor 1.
2. O teste condicional é realizado (i < 4) e retorna verdadeiro.
3. Portanto, o comando do laço é executado: o valor de i (1) é atribuído à variável numeros, que recebe ela mesmo + i, ou seja, numeros = "1 ".
4. Volta-se ao comando for e a terceira instrução é executada: i = i+1. Logo, i =2.
5. O teste condicional é novamente realizado (i < 4) e continua verdadeiro.
6. Assim o comando do laço é executado, o valor de i (2) é atribuído à variável numeros, que recebe ela mesmo + i : numeros = "1 2 ".
7. A terceira instrução do comando for é novamente executada, i = i + 1. Logo, i = 3.
8. O teste condicional é realizado (i < 4) e prossegue verdadeiro.
9. Mais uma vez, i (3) é atribuído a numeros, junto ao conteúdo anterior dessa variável. Agora, numeros = "123".
10. Volta-se à execução da terceira instrução do for : i = i + 1. Logo, i = 4.
11. O teste condicional é realizado (i < 4) e retorna falso. O laço é finalizado e se executa o comando após o for.
Repetição com variável de controle: laço for
➔ Poderíamos comparar o loop executado pelo comando for a um maratonista percorrendo as voltas de
uma pista de atletismo.
➔ Na execução do for, quando se realiza uma volta completa, o valor da variável é incrementado e essa
sequência de passos é repetida até o final.
➔ O maratonista realiza um processo semelhante, pois, ao passar pelo ponto de partida, tem o seu
número de voltas incrementado em 1.
➔ Os loops do for contêm, na sua variável i, o valor indicativo da volta sendo realizada neste exemplo.
Repetição com teste no início: laço while
Um laço de repetição também pode ser criado com o comando while, que realiza um teste condicional
logo no seu início, para verificar se os comandos do laço serão ou não executados.
A tradução da palavra while, que em português significa enquanto, define bem o seu funcionamento:
"enquanto a condição for verdadeira, execute".
Repetição com teste no início: laço while
As estruturas de repetição com teste no início, representadas pelo comando while, são utilizadas
principalmente em programas que manipulam arquivos, para repetir a leitura de uma linha enquanto não
atingir o final do arquivo.
Elas também podem ser utilizadas para realizar as operações desenvolvidas com o comando for.
Exemplo
Programa Números Decrescentes:
Como o teste é realizado no início, é
// declara e inicializa a variável i
possível que os comandos do while não sejam
var i = numero
// enquanto i maior que 0
executados.
while (i> 0) {
No exemplo ao lado, caso o usuário
// acumula em resposta os números em ordem decrescente
digite o número 0 (e o programa aceite esse
resposta = resposta + i + “,”
valor para o número), a condição já é falsa na
// subtrai 1 no valor da variável i ( i = i - 1)
primeira verificação e o programa não entra
i--
no laço de repetição.
}
Repetição com teste no final: laço do.. while
Outra forma de criar laços de repetição em um programa é com a utilização do
comando do.. While
➔ Uma sútil, porém importante, diferença entre as estruturas de repetição while e do.. while é a seguinte:
com o comando while, a condição é verificada no início; enquanto, com o comando do.. while, a
condição é verificada no final.
➔ Ou seja, com o do.. while, fica garantido que uma vez, no mínimo, os comandos que pertencem ao laço
serão executados.
➔ Geralmente optamos por utilizar os laços while e do.. while quando não soubermos previamente
quantas vezes a repetição vai ocorrer.
Repetição com teste no final: laço do.. while
Exemplo
Programa Números Pares
<script> // isola o primeiro par (para evitar última virgula)
// solicita o número e repete a leitura enquanto inválido if (num > 1) {
do { pares = pares + "2"
var num = Number(prompt("Número: ")); }
if (num == 0 || isNaN(num)) { // Laço para acumular pares (inicia em 4, pois o 2 já foi atribuído)
alert("Digite um número válido..."); for (var i = 4; i <= num; i= i + 2) {
} pares = pares + "," + i
} while (num == 0 || isNaN(num)); }
// declara e inicializa variável que irá exibir pares // exibe lista dos números pares
alert(pares);
var pares = "Pares entre 1 e " + num + " : " </script>
Diferença entre laço while e do.. while
Interrupções nos laços (break e continue)
As linguagens de programação dispõem de dois comandos especiais para serem
utilizados nas estruturas de repetição.
➔ São eles: break e continue.
➔ O break sai do laço de repetição, enquanto que o continue retorna ao início do laço.
➔ Estes comandos nos auxiliam no controle de execução dos comandos do loop.
Interrupções nos laços (break e continue)
Os comandos break e continue podem ser utilizados nas três estruturas de repetição disponíveis:
● For
● while
● do... while
Caso o comando continue seja executado em um laço for, o incremento ou decremento da variável de
controle ocorre normalmente, como se o laço tivesse sido executado até o seu final.
➔ Repare, no exemplo a seguir, que um novo método foi utilizado para solicitar a confirmação de
saída do programa.
➔ Trata-se do método confirm(), que exibe uma caixa de diálogo com os botões Ok e Cancelar.
➔ Ele retorna true (ok) ou false (cancelar) de acordo com a escolha do usuário.
Interrupções nos laços (break e continue)
<script> // se par, mostra o dobro; impar, mostra o triplo
alert("Digite 0 para sair"); if (num % 2 == 0) {
// inicio da repetição alert("O dobro de" + num + "é:" + num *
do { 2);
var num = Number(prompt("Número: ")); } else {
if (num == 0 || isNaN(num)) { alert("O triplo de" + num + "é:" + num * 3);
// solicita confirmação do usuário }
var sair = confirm("Confirma saida?"); } while (true); // enquanto verdade (só sai do
if (sair) { laço, pelo break)
break; // sai da repetição alert("Bye, bye...");
} else { </script>
continue; // volta ao inicio do laço
}
}
Contadores e acumuladores
➔ O uso de contadores e acumuladores em um programa permite a exibição de contagens e
totalizações.
➔ Essas operações são realizadas sobre os dados manipulados pelo programa.
➔ Os contadores ou acumuladores possuem duas características principais:
◆ A variável contadora ou acumuladora deve receber uma atribuição inicial (geralmente zero).
◆ A variável contadora ou acumuladora deve receber ela mesma mais algum valor.
➔ A diferença entre os contadores e os acumuladores é que o contador recebe ele mesmo mais 1 (ou
algum valor constante), enquanto o acumulador recebe ele mesmo mais uma variável.
Contadores e acumuladores
Para praticar!!
Para praticar, desenvolva estes exercícios com laço de repetição:
1. Imprima todos os números de 1 a 10.
2. Imprima todos os números pares de 1 a 20.
3. Calcule a soma dos números de 1 a 100.
4. Imprima apenas os números ímpares em uma lista de números digitados pelo usuários.
5. Imprima a média de uma lista de números.
6. Imprima todos os números ímpares de 1 a 10
Saiba mais
● [Link]
● [Link]