Você está na página 1de 9

1 Linguagem de Programao

Estruturas de Repetio em Java


A realizao da repetio controlada por contador requer:
1. Uma varivel de controle (ou contador de loop).
2. O valor inicial da varivel de controle.
3. O incremento (ou decremento) pelo qual a varivel de controle modificada a cada
passagem pelo loop (iterao do loop).
4. A condio de continuao do loop que determina se o loop deve continuar.

Instruo de repetio FOR


O Java fornece a instruo de repetio for, que especifica os detalhes da
repetio controlada por contador em uma nica linha de cdigo.
Exemplo 1: ler 8 nmeros fornecidos pelo usurio, calcular e exibir a mdia entre eles.
/*
* o programa utiliza a classe Scanner
* para ler os nmeros digitados via teclado
* pelo usurio
*/
import java.util.Scanner;
//classe (o nome do programa ex1_for.java)
public class ex1_for {
//mtodo principal onde inicia a execuo do programa
public static void main(String args[]){
//declarao de variveis
float soma, num, media;
int cont;
Scanner leia = new Scanner(System.in);
//incializa a varivel
soma = 0;
/*
* para cont comeando com 1;
* at cont menor ou igual a 8;
* increment cont de 1 em 1
*/
for (cont = 1; cont <= 8; cont++){
/*
* a varivel leia armazena o valor digitado pelo usurio
* esse valor atribudo num
*/
num = leia.nextFloat();
//soma armazena o valor de soma + o valor de num
soma+=num; //soma = soma + num
} //fim do loop
/*
* calcula a mdia
* o valor de soma dividido pelo nmero de iteraes
*/
media = soma / cont;
//exibe a mdia dos nmeros digitados
System.out.println("Mdia ="+media);
}
}

http://erinaldosn.wordpress.com

Estrutura de Repetio 2

Em Java a expresso cont cont + 1 representada por cont++.


As variveis quando declaradas no possuem valores, seu contedo nulo e
operaes aritmticas que envolvem nulos sempre resultam em nulos. s vezes tambm
ser necessrio acumular valores, isto , calcular o somatrio de um conjunto de
valores. Para isso, tambm ser necessrio utilizar uma varivel de apoio, que pode ser
do tipo inteiro ou real, de acordo com os valores que sero acumulados
acumulador = 0;
acumulador = acumulador + valor;

Componentes de cabealho

Separador
ponto-e-vrgula

for (

Palavra
chave

int cont = 1;

Varivel
de controle

Separador
ponto-e-vrgula

cont <= 10;

Condio de
continuao do loop

cont++ )

Incremento da
varivel de controle

Valor inicial
da varivel
de controle
Em geral as instrues for so utilizadas para repetio controlada por
contador. Se a expresso inicializao no cabealho for declara a varivel de controle,
a varivel de controle pode ser utilizada somente nessa instruo for ela no existir
fora da instruo for.
Essa utilizao restrita do nome da varivel de controle conhecida como o
escopo da varivel. O escopo de uma varivel define onde ela pode ser utilizada em
um programa.
Todas as trs expresses em um cabealho for so opcionais. Se a condio de
continuao do loop for omitida, o Java assume que a condio de continuao do loop
sempre verdadeira, criando um loop infinito.
Voc poderia omitir a expresso incremento se o programa calcular o
incremento com instrues no corpo do loop ou se nenhum incremento for necessrio.
A expresso incremento em uma instruo for atua como se ela fosse uma instruo
independente no fim do corpo do for.

A instruo de repetio WHILE


Uma instruo de repetio permite ao programador especificar que um
programa deve repetir uma ao enquanto alguma condio permanecer verdadeira.

http://erinaldosn.wordpress.com

3 Linguagem de Programao

A(s) instruo(es) contida(s) na instruo de repetio while constitui(em) o


corpo da instruo de repetio while, que pode ser uma nica instruo ou um bloco.
Por fim, a condio se tornaria falsa. Nesse ponto a repetio termina e a primeira
instruo depois da instruo de repetio executada.
Exemplo 2: ler 8 nmeros fornecidos pelo usurio, calcular e exibir a mdia entre eles.
import java.util.Scanner;
//classe
public class ex2_while {
//mtodo principal
public static void main(String args[]){
//declarao de variveis
float soma, num, media;
int cont;
Scanner leia = new Scanner(System.in);
//inicializao de variveis
soma = 0;
cont = 0;
//enquanto a varivel cont for menor que 8
while (cont < 8){ //inicia o loop
//armazena na varivel num o valor digitado via teclado
num = leia.nextFloat();
//a varivel soma acula a soma com num
soma+=num;
//incrementa o contador cont
cont++;
}//fim do loop
//calcula a mdia dos nmeros somados
media = soma / cont;
//exibe (escreve) a mdia
System.out.println("Mdia = "+media);
} // fim do mtodo principal
} //fim da classe

A estrutura de repetio DO...WHILE


A instruo do... while semelhante instruo while. Em while o programa
testa a condio de continuao do loop no comeo do loop antes de executar o corpo
do loop. Se a condio for falsa, o corpo nunca executa. A instruo do... while testa a
condio de continuao do loop depos de executar o corpo do loop, portanto, o corpo
sempre executa pelo menos uma vez. Quando uma instruo do... while termina a
execuo continua cm a prxima instruo na sequncia.
Exerccio 3: ler 8 nmeros fornecidos pelo usurio, calcular e exibir a mdia entre eles.
import java.util.Scanner;
public class ex3_do_while {
//mtodo principal
public static void main(String args[]){
//declarao de variveis
float soma, num, media;
int cont;
Scanner leia = new Scanner(System.in);
//inicializao de variveis
soma = 0;
cont = 0;
//faa (repita)
do{
//armazene em num o valor digitado pelo usurio

http://erinaldosn.wordpress.com

Estrutura de Repetio 4
num = leia.nextFloat();
//acumula a soma dos nmeros digitados
soma+=num;
//incrementa o contador
cont++;
}while (cont < 8);//enquanto (at) cont ser menor que 8
//calcula a mdia dos nmeros digitados
media = soma / cont;
//exibe a mdia
System.out.println("Mdia = "+media);
}//fim do mtodo principal
}//fim da classe ex3_do_while

Exemplo 4: a cada iterao pergunta-se ao usurio se deseja continuar. Com base na


resposta, a condio estabelecida testada.
import java.util.Scanner;
public class ex4_while {
public static void main(String args[]){
//declarao e inicializao de variveis
float soma=0, num, media;
int cont = 0;
char resposta='S';
Scanner leia = new Scanner(System.in);
/*
* enquanto a varivel respostar
* for igual a 'S' ou 's' faa
*/
while (resposta == 'S' || resposta == 's'){//incio do loop
//armazena em num o valor digitado pelo usurio via teclado
num = leia.nextFloat();
//acumula a soma dos nmeros digitados
soma+=num;
//acumula um contador de quantos nmeros foram digitados
cont++;
//exibe a mensagem se o usurio quer continuar
System.out.println("Deseja continuar?");
//armazena em resposta o caractere digitado pelo usurio
resposta = leia.next().charAt(0);
}//fim do loop
//calcula a mdia da soma dos nmeros digitados
media = soma / cont;
//exibe a mdia
System.out.println("Mdia = "+media);
}//fim do mtodo principal
}//fim da classe

Operadores de atribuio compostos


O Java fornece vrios operadores de atribuio compostos para abreviar
expresses de atribuio. A tabela abaixo mostra os operadores de atribuio compostos
aritmticos, expresses de exemplo que utilizam os operadores e explicaes do que os
operadores fazem.
Operador de Expresso de exemplo
Explicao
Atribuies
atribuio
Suponha: int c = 3, d = 5, e = 4, f = 6, g = 12;
+=
c += 7
c=c+7
10 para c
=
d = 4
d=d4
1 para d
http://erinaldosn.wordpress.com

5 Linguagem de Programao

Operador de Expresso de exemplo


atribuio
*=
e *= 5
/=
f /= 3
%=
g %= 9

Explicao

Atribuies

e=e*5
f=f/3
g=g%9

20 para e
2 para f
3 para g

Operadores de incremento e decremento


O Java fornece dois operadores unrios para adicionar 1 ou subtrair 1 do valor
de uma varivel numrica. Um operador de incremento ou de decremento que
colocado antes de uma varivel chamado operador de pr-incremento ou operador de
pr-decremento, respectivamente. Um operador de incremento u decremento que
colocado depois de uma varivel chamado operador de ps-incremento ou operador de
ps-decremento, respectivamente.
Pr-incrementar (ou pr-decrementar) uma varivel faz com que a varivel seja
incrementada (decrementada) por 1 e ento o novo valor da varivel utilizado na
expresso em que aparece. Ps-incrementar (ps-decrementar) a varivel faz com que o
valor atual da varivel seja utilizado na expresso em que ela aparece e ento o valor da
varivel incrementado (decrementado) por 1.
Os operadores de incremento e decremento unrios devem ser colocados ao lado
de seus operandos sem espaos no meio.
A tabela abaixo demonstra os operadores de incremento e de decremento.
Operador Chamado
Expresso Explicao
de exemplo
Incrementa a por 1 e ento utiliza o novo
++
pr-incremento
++a
valor de a na expresso em que a reside.
Utiliza o valor atual de a na expresso
++
ps-incremento
a++
em que a reside, ento incrementa a por
1.
Decrementa b por 1 e ento utiliza o
-pr-decremento
--b
novo valor de b na expresso em que b
reside.
Utiliza o valor atual de b na expresso
-ps-decremento b-em que b reside, ento decrementa b por
1.

Exerccios
1. Identifique e corrija os erros em cada um dos seguintes conjuntos de cdigo:
a) while (c <= 5 )
{
produto *= c;
++c;
b) if (sexo == 1)
System.out.println(Mulher);
else;
System.out.println(Homem);
c) if (idade >= 65);
System.out.println(idade maior oi igual a);
else
http://erinaldosn.wordpress.com

Estrutura de Repetio 6

System.out.println(a idade menor que 65);


d) int x = 1, total;
while (x <= 10)
{
total += x;
++x;
}
e) while (x <= 100)
total += x;
++x;
f) while (y > 0)
{
System.out.println(y);
++y;
g) i = 1;
while (i <= 10);
i++;
}
h) for (k = 0.1; k != 1.0; k += 0.1)
System.out.println(k);
i) switch(n){
case 1:
System.out.println(O nmero 1);
case 2:
System.out.println(O nmero 2);
break;
default:
System.out.println(O nmero no 1 nem 2);
break;
}
j) for (i = 100, i >= 1, i++)
System.out.println(i);
k) switch (valor % 2){
case 0:
System.out.println(Inteiro par);
case 1:
System.out.println(Inteiro mpar);
}
2. O que h de errado com a instruo while a seguir?
while (z >= 0)
soma += z;
3. O que os seguintes programas imprimem?
public class prog4_16 {
public static void main(String args[]){
int y, x = 1, total = 0;
while (x <= 10){
y = x * x;
System.out.println(y);
total += y;
++x;
http://erinaldosn.wordpress.com

7 Linguagem de Programao

}
System.out.printf("O total %d\n", total);
}
}
public class prog4_17 {
public static void main(String args[]){
int i = 1;
while (i <= 10){
System.out.println(i % 2 == 1 ? "*****" :
"+++++");
++i;
}
}
}
public class prog4_18 {
public static void main(String args[]){
int linha = 10, coluna;
while (linha >= 1){
coluna = 1;
while (coluna <= 10){
System.out.print(linha % 2 == 1 ? "<" :
">");
++coluna;
}
--linha;
System.out.println();
}
}
}
public class prog4_19 {
public static void main(String args[]){
for (int i = 1; i <= 10; i++){
for (int j = 1; j <= 5; j++)
System.out.print('0');
System.out.println();
}
}
}
4. O que os seguintes segmentos de programas fazem?
for (i = 1; i <= 5; i++){
for (j = 1; j <= 3; j++){
for (k = 1; k <= 4; k++)
System.out.print(*);
System.out.println();
}
}
n = 1;
http://erinaldosn.wordpress.com

Estrutura de Repetio 8

while (n <= 10)


System.out.println(n++);
for (int i = 19; i >= 1; i -= 2)
System.out.println(i);
cont = 2;
do{
System.out.println(cont);
cont += 2;
} while (cont <= 100)
5. Um programa Java est todo misturado. Reorganize os trechos de cdigo para criar
o programa. Adicione as chaves necessrias.
if (x == 1) {
System.out.print(d);
x = x 1;
}
if (x == 2) {
System.out.print(b c);
}
class embaralha{
public static void main(String args[]){
if (x > 2) {
System.out.print(a);
}
int x = 3;
x = x 1;
System.out.print(-);
while (x > 0){
Esse programa produz a sada listada abaixo:

Bibliografia
Lgica de programao e estrutura de dados, com aplicaes em Java
Sandra Puga, Gerson Rissetti
So Paulo: Pearson Prentice Hall, 2009
Java: como programar
H. M. Deitel, P. J. Deitel
So Paulo: Pearson Prentice Hall, 2005
Estrutura de dados e algoritmos em Java
http://erinaldosn.wordpress.com

9 Linguagem de Programao

Michael Goodrich, Roberto Tamassia


Porto Alegre: Bookman, 2007
Use a cabea Java
Kathy Sierra e Bert Bates
Rio de Janeiro: Alta Books, 2005

http://erinaldosn.wordpress.com

Você também pode gostar