A aula apresenta diferentes tipos de laços de repetição em programação, como while, do while e for. Os laços permitem repetir trechos de código de forma automática e são úteis para resolver problemas que envolvem sequências ou repetições. Exemplos de código são fornecidos para mostrar como imprimir sequências numéricas usando cada tipo de laço.
1. Tecnologia em Sistemas para Internet - IFMS
Aula Extra – Laços de Repetição
Tópicos em Programação
Prof.º Msc. Sidney Roberto de Sousa
2. Tec. em Sistemas para Internet - IFMS 2
O que veremos nesta aula?
● Porquê utilizar laços de repetição?
● O laço de repetição while
● O laço de repetição do while
● O laço de repetição for
3. Tec. em Sistemas para Internet - IFMS 3
Problema
● Imagine que devemos resolver o seguinte
problema:
Escreva um programa para imprimir na tela a
sequência de 1 até 4 em uma mesma linha.
● Parece simples!
4. Tec. em Sistemas para Internet - IFMS 4
Solução
System.out.println(“1 2 3 4”);
5. Tec. em Sistemas para Internet - IFMS 5
Problema
● Agora, vamos redefinir o nosso problema:
Escreva um programa que leia do usuário um
valor inteiro positivo n e imprima na tela a
sequência de 1 até n em uma mesma linha.
● Vamos tentar resolver este problema
utilizando a mesma “estratégia” da solução
anterior (que eu batizei de solução “não muito
inteligente”...)
6. Tec. em Sistemas para Internet - IFMS 6
Solução “não muito inteligente”
System.out.println("Digite um numero inteiro positivo:");
Scanner leitor = new Scanner(System.in);
int n = leitor.nextInt();
// Garantindo que o valor de n seja positivo...
if (n < 0) {
n = n * -1;
} else if (n == 0) {
n = 1;
}
// E lá vamos nós...
if (n == 1) {
System.out.println("1");
} else if (n == 2) {
System.out.println("1 2");
} else if (n == 3) {
System.out.println("1 2 3");
} else if (n == 4) {
System.out.println("1 2 3 4");
} else if (n == 5) {
System.out.println("1 2 3 4 5");
} else if (n == 6) {
System.out.println("1 2 3 4 5 6");
}
// .. continua... até quando?
7. Tec. em Sistemas para Internet - IFMS 7
Analisando a solução anterior
● Bem, como dito, a solução anterior não é muito inteligente:
– Sabemos qual número o usuário irá digitar?
– Quantas condições lógicas são necessárias para solucionar o
problema para qualquer número positivo que o usuário digitar?
● Precisamos escrever um código que seja capaz de imprimir todos os
números da sequência, porém utilizando um número fixo e mínimo de
linhas de código
● Para tanto, precisamos de alguma forma escrever um código que repita
a impressão dos números de forma categórica e estratégica
● Solução inteligente: utilizar um laço de repetição!
8. Tec. em Sistemas para Internet - IFMS 8
Solução utilizando o laço while
Classe ExemploWhile
(abaixo no blog)
9. Tec. em Sistemas para Internet - IFMS 9
Analisando a solução com o laço while
int contador = 1;
while (contador <= n) {
System.out.print(contador + " ");
contador++;
}
10. Tec. em Sistemas para Internet - IFMS 10
Analisando a solução com o laço while
int contador = 1;
while (contador <= n) {
System.out.print(contador + " ");
contador++;
}
Enquanto...
11. Tec. em Sistemas para Internet - IFMS 11
Analisando a solução com o laço while
int contador = 1;
while (contador <= n) {
System.out.print(contador + " ");
contador++;
}
Enquanto o valor da variável contador for
menor ou igual ao valor da variável n...
12. Tec. em Sistemas para Internet - IFMS 12
Analisando a solução com o laço while
int contador = 1;
while (contador <= n) {
System.out.print(contador + " ");
contador++;
}
Enquanto o valor da variável contador for
menor ou igual ao valor da variável n, repita a
execução do código localizado entre as chaves.
13. Tec. em Sistemas para Internet - IFMS 13
Analisando a solução com o laço while
int contador = 1;
while (contador <= n) {
System.out.print(contador + " ");
contador++;
}
A variável contador é inicializada com o valor
1, que é o primeiro valor que o nosso programa
deve imprimir...
14. Tec. em Sistemas para Internet - IFMS 14
Analisando a solução com o laço while
int contador = 1;
while (contador <= n) {
System.out.print(contador + " ");
contador++;
}
A cada iteração, o valor da variável contador é
impresso. Logo em seguida, o valor da variável
contador é incrementado em uma unidade.
Assim, na próxima iteração, o valor a ser
impresso é uma unidade maior que o valor atual.
15. Tec. em Sistemas para Internet - IFMS 15
Sobre o laço while...
● O laço while só é executado se e somente se
a sua condição lógica de manutenção for
satisfeita
● Assim, para que um laço while execute ao
menos uma iteração, a sua condição lógica de
manutenção deve ser satisfeita ao menos
uma vez
16. Tec. em Sistemas para Internet - IFMS 16
Solução utilizando o laço do while
Classe ExemploDoWhile
(abaixo no blog)
17. Tec. em Sistemas para Internet - IFMS 17
Analisando a solução com o laço do while
int contador = 0;
do {
contador++;
System.out.print(contador + " ");
} while (contador < n);
18. Tec. em Sistemas para Internet - IFMS 18
Analisando a solução com o laço do while
int contador = 0;
do {
contador++;
System.out.print(contador + " ");
} while (contador < n);
Repita...
19. Tec. em Sistemas para Internet - IFMS 19
Analisando a solução com o laço do while
int contador = 0;
do {
contador++;
System.out.print(contador + " ");
} while (contador < n);
Repita a execução do trecho de código localizado
entre as chaves...
20. Tec. em Sistemas para Internet - IFMS 20
Analisando a solução com o laço do while
int contador = 0;
do {
contador++;
System.out.print(contador + " ");
} while (contador < n);
Repita a execução do trecho de código localizado
entre as chaves enquanto o valor da variável
contador for menor que o valor da variável n.
21. Tec. em Sistemas para Internet - IFMS 21
Analisando a solução com o laço do while
int contador = 0;
do {
contador++;
System.out.print(contador + " ");
} while (contador < n);
A variável contador é inicializada com o valor 0.
Este não é o valor correto do primeiro valor a
ser impresso, porém...
22. Tec. em Sistemas para Internet - IFMS 22
Analisando a solução com o laço do while
int contador = 0;
do {
contador++;
System.out.print(contador + " ");
} while (contador < n);
… no início de cada iteração, o valor da variável
contador é incrementado em uma unidade.
Logo em seguida, o valor correto é impresso na
tela.
23. Tec. em Sistemas para Internet - IFMS 23
Analisando a solução com o laço do while
int contador = 0;
do {
contador++;
System.out.print(contador + " ");
} while (contador < n);
O laço é executado até que o valor da variável contador
seja menor que o valor da variável n. Isto parece um tanto
anti-intuitivo no início mas, se você analisar o código acima,
você verá que esta condição se deve ao fato de que o
incremento do valor da variável contador é realizado antes
de que este seja impresso na tela.
24. Tec. em Sistemas para Internet - IFMS 24
Sobre o laço do while...
● O laço do while sempre executa ao menos
uma iteração
● Assim, para que um laço do while execute
após a primeira iteração, a sua condição
lógica de manutenção deve ser satisfeita ao
menos uma vez
25. Tec. em Sistemas para Internet - IFMS 25
Solução utilizando o laço for
Classe ExemploFor
(abaixo no blog)
26. Tec. em Sistemas para Internet - IFMS 26
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
27. Tec. em Sistemas para Internet - IFMS 27
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
Para...
28. Tec. em Sistemas para Internet - IFMS 28
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
Para o valor de contador partindo de 1...
29. Tec. em Sistemas para Internet - IFMS 29
Analisando a solução com o laço for
for(int contador = 1; contador <= n; i++) {
System.out.print(contador + " ");
}
Para o valor de contador partindo de 1 até atingir
o valor de n..
30. Tec. em Sistemas para Internet - IFMS 30
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
Para o valor de contador partindo de 1 até atingir o
valor de n, incrementando o valor de contador em
uma unidade a cada iteração...
31. Tec. em Sistemas para Internet - IFMS 31
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
Para o valor de contador partindo de 1 até atingir o
valor de n, incrementando o valor de contador em
uma unidade a cada iteração, repita o trecho de código
entre as chaves.
32. Tec. em Sistemas para Internet - IFMS 32
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
O primeiro argumento de um laço for contém as
inicializações desejadas para o laço. No caso, a
variável contador é inicializada com o valor 1. Esta
inicialização é executada somente uma vez, antes
mesmo da execução da primeira iteração do laço.
33. Tec. em Sistemas para Internet - IFMS 33
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
O segundo argumento de um laço for é a condição
lógica de manutenção do laço. Ou seja, é o teste lógico
realizado antes de cada iteração para avaliar se a
iteração deve ser executada ou se o laço deve parar de
executar iterações. No caso, o laço executará enquanto
o valor da variável contador for menor ou igual ao valor
da variável n.
34. Tec. em Sistemas para Internet - IFMS 34
Analisando a solução com o laço for
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
O terceiro e último argumento de um laço for contém o
código a ser executado no final de cada iteração. No
caso, após o valor da variável contador ser exibido, ele
é incrementado em uma unidade.
35. Tec. em Sistemas para Internet - IFMS 35
Ordem de execução
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
Executado somente uma vez, antes do laço for
começar a executar a primeira iteração.
36. Tec. em Sistemas para Internet - IFMS 36
Ordem de execução
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
Executado sempre, antes da execução de cada
iteração.
37. Tec. em Sistemas para Internet - IFMS 37
Ordem de execução
for(int contador = 1; contador <= n; contador++) {
System.out.print(contador + " ");
}
Executado sempre, após a execução de cada
iteração.
38. Tec. em Sistemas para Internet - IFMS 38
Exemplo laço for
Para um exemplo mais complexo, veja a
classe ExemploFor2
(abaixo no blog)
39. Tec. em Sistemas para Internet - IFMS 39
That's all, folks!
Quaisquer dúvidas, chore fale comigo em sala
de aula ou me mande um e-mail:
sidney.sousa@ifms.edu.br