36
COLÉGIO ESTADUAL ULYSSES GUIMARÃES CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA ERINALDO SANCHES NASCIMENTO ESTRUTURAS DE REPETIÇÃO FOZ DO IGUAÇU 2013

ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

COLÉGIO ESTADUAL ULYSSES GUIMARÃES

CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA

ERINALDO SANCHES NASCIMENTO

ESTRUTURAS DE REPETIÇÃO

FOZ DO IGUAÇU

2013

Page 2: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

SUMÁRIO

5. ESTRUTURAS DE REPETIÇÃO ................................................................... 2

5.1. OPERADORES DE INCREMENTO E DECREMENTO ................................................ 2

5.1.1. Operadores de Atribuição Compostos...................................................... 4

5.2. ESTRUTURA DE REPETIÇÃO COM VARIÁVEL DE CONTROLE .................................. 5

5.2.1. Pseudocódigo ........................................................................................... 5

5.2.2. Fluxograma .............................................................................................. 7

5.2.3. Instrução de Repetição FOR .................................................................... 7

5.2.3.1. Componentes do Cabeçalho ................................................................. 9

5.3. ESTRUTURA DE REPETIÇÃO COM TESTE NO INÍCIO ........................................... 10

5.3.1 Pseudocódigo .......................................................................................... 10

5.3.2 Fluxograma ............................................................................................. 12

5.3.3 A instrução de repetição WHILE ............................................................. 13

5.4 ESTRUTURA DE REPETIÇÃO COM TESTE NO FIM ................................................ 15

5.4.1 Pseudocódigo .......................................................................................... 16

5.4.2 Fluxograma ............................................................................................. 17

5.4.3 A estrutura de repetição DO...WHILE...................................................... 18

5.5 EXERCÍCIOS.................................................................................................. 19

5.6 TRABALHOS PRÁTICOS ................................................................................... 31

5.7 REFERÊNCIA BIBLIOGRAFIA ............................................................................ 34

Page 3: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

2

5. ESTRUTURAS DE REPETIÇÃO

O conceito de repetição (looping) é utilizando quando se deseja repetir

certo trecho de instruções por um número de vezes. O número de repetições

pode ser conhecido antes ou não, mas, necessariamente, precisa ser finito.

A realização da repetição controlada por contador requer:

1. Uma variável de controle (ou contador de loop).

2. O valor inicial da variável de controle.

3. O incremento (ou decremento) pelo qual a variável de controle é modificada

a cada passagem pelo loop (iteração do loop).

4. A condição de continuação do loop que determina se o loop deve continuar.

5.1. OPERADORES DE INCREMENTO E DECREMENTO

Java fornece dois operadores unários para a adição de 1 ou subtração

de 1 a partir do valor de uma variável numérica.

O operador de incremento ++ adiciona um ao valor de uma variável. O

operador de decremento -- subtrai um do valor de uma variável. Eles são

geralmente usados com variáveis do tipo int, mas podem ser utilizados com

qualquer tipo numérico.

Se n é uma variável de um tipo numérico, então n++ aumenta o valor

de n por um, e n-- diminui o valor de n por um. Por exemplo, as declarações

int n = 1, m = 7;

n++;

System.out.println("O valor de n foi alterado para " + n);

m−−;

System.out.println("O valor de m foi alterado para " + m);

produzir o seguinte resultado:

O valor de n foi alterado para 2

O valor de m foi alterado para 6

Page 4: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

3

Um operador de incremento ou decremento que é colocado depois

uma variável é referido como o incremento pós-fixado ou operador de

decremento pós-fixado, respectivamente. Usando o operador de incremento

(ou decremento) pós-fixado para adicionar (ou subtrair) 1 de uma variável é

conhecido como pós-incremento (ou pós-decremento). Isso faz com que o valor

atual da variável seja utilizado na expressão em que se insere, em seguida, o

valor da variável é incrementado (ou decrementado) por 1.

Exemplo:

int n = 2;

int valorProduzido = 2*(n++);

System.out.println(valorProduzido);

System.out.println(n);

Esse código produz o seguinte resultado:

4

3

Usando o operador incremento (ou decremento) prefixo para adicionar

(ou subtrair) 1 de uma variável é conhecido como pré-incremento (ou pré-

decremento). Isto faz com que a variável a ser incrementado (decrementado)

por 1, terá o novo valor da variável utilizado na expressão em que aparece.

Exemplo:

int n = 2;

int valorProduzido = 2*(++n);

System.out.println(valorProduzido);

System.out.println(n);

Este código é o mesmo que o pedaço de código anterior, exceto que o

++ é antes da variável, de modo que este código produzirá o seguinte

resultado:

6

3

Page 5: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

4

Nome do

Operador Expressão Descriçao

Incremento

prefixado

++a Incrementar a por um e, em seguida, usa o novo

valor de a na expressão em que reside.

Incremento

pós-fixado

a++ Usa o valor atual de a na expressão em que

reside, depois incrementa a por um.

Decremento

prefixado

--b Decrementa b por 1 e, em seguida, usa o novo

valor de b na expressão em que b reside.

Decremento

pós-fixado

b-- Usa o valor corrente de b na expressão em que

b reside e, então decrementa b por 1.

5.1.1. Operadores de Atribuição Compostos

Os operadores de atribuição compostos abreviam expressões de

atribuição. Declarações como

variável = variável operador expressão;

onde o operador é um dos operadores binários +, -, *, / ou% pode ser escrita

na forma

variável operador= expressão;

É possível abreviar a declaração

c = c + 3;

com o operador de atribuição de adição composto, + =, como

c += 3;

Abaixo estão alguns exemplos:

cont = cont + 2;

total = total – desconto;

bonus = bonus * 2;

tempo = tempo / fatorArremetida;

conversao = conversão % 100;

montante = montante * (cont1 + cont2);

cont += 2;

total -= desconto;

bonus *= 2;

tempo /= fatorArremetida;

conversao %= 100;

montante *= cont1 + cont2;

Page 6: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

5

A tabela abaixo mostra os operadores aritméticos de atribuição

compostos, expressões de exemplo usando os operadores e explicações sobre

o que as operadoras fazem.

Operador de atribuição Expressão de exemplo Explicação Atribui

Suponha: int c = 3, d = 5, e = 4, f = 6, g = 12;

+= c+=7; c = c + 7; 10 para c

-= d -= 4; d = d – 4; 1 para d

*= e *= 5; e = e * 5; 20 para e

/= f /= 3; f = f / 3; 2 para f

%= g %= 9; g = g % 9 3 para g

5.2. ESTRUTURA DE REPETIÇÃO COM VARIÁVEL DE CONTROLE

Essa estrutura de repetição é utilizada quando se sabe o número de

vezes em que um trecho do algoritmo deve ser repetido.

Ela utiliza variáveis de controle que definem exatamente o número de

vezes que a sequência de instruções será executada. Na própria sintaxe da

estrutura de repetição a variável de controle é inicializada, o seu valor máximo

e o incremento que deverá sofrer também são estabelecidos.

5.2.1. Pseudocódigo

PARA i ← valor_inicial ATÉ valor_final FAÇA

Comando1;

O comando1 será executado utilizando a variável i como controle, cujo

conteúdo vai variar do valor_inicial até o valor_final, de 1 em 1, incrementando

automaticamente.

PARA j ← valor inicial ATÉ valor final FAÇA

{

Comando1;

Page 7: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

6

Comando2;

}

Os comando1 e comando2 serão executados utilizando a variável

j como controle, cujo conteúdo vai variar do valor_inicial até o valor_final, de 1

em 1, incrementando automaticamente.

PARA i ← 1 ATÉ 10 FAÇA

Comando1;

O comando1 será executado dez vezes.

Exemplo: ler 8 números fornecidos pelo usuário, calcular e exibir a

média entre eles.

ALGORITMO EX_PARA {

DECLARE

SOMA, NUM, MEDIA : REAL;

CONT : INTEIRO;

SOMA ← 0;

PARA CONT ← 1 ATÉ 8 FAÇA

{

LEIA(NUM);

SOMA ← SOMA + NUM;

}

MEDIA ← SOMA / CONT;

ESCREVA(“MÉDIA = ”, MEDIA);

}

CONT – variável de controle (contador);

1 – valor inicial da variável de controle

8 – valor final da variável de controle (o contador variará de 1 até 8, ou

seja, cont >= 1 e cont <= 8);

O incremento acrescerá a variável de controle cada vez que o loop

acontecer.

Page 8: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

7

5.2.2. Fluxograma

5.2.3. Instrução de Repetição FOR

O Java fornece a instrução de repetição for, que especifica os detalhes

da repetição controlada por contador em uma única linha de código.

Exemplo: ler 8 números fornecidos pelo usuário, calcular e exibir a

média entre eles.

import java.util.Scanner;

//classe (o nome do programa ex1_for.java)

public class ex1_for {

//método principal onde inicia a execução do programa

public static void main(String args[]){

//declaração de variáveis

float soma, num, media;

int cont;

Scanner leia = new Scanner(System.in);

//incializa a variável

soma = 0;

Início

SOMA ← 0

CONT ← 1,

8

NUM

SOMA ← SOMA + NUM

MEDIA ← SOMA / NUM

“MÉDIA = ”, MEDIA

Fim

Page 9: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

8

/*

* para cont começando com 1;

* até cont menor ou igual a 8;

* incremente cont de 1 em 1

*/

for (cont = 1; cont <= 8; cont++){

/*

* a variável leia armazena o valor digitado pelo usuário

* esse valor é atribuído à num

*/

num = leia.nextFloat();

//soma armazena o valor de soma + o valor de num

soma+=num; //soma = soma + num

} //fim do loop

/*

* calcula a média

* o valor de soma dividido pelo número de iterações

*/

media = soma / cont;

//exibe a média dos números digitados

System.out.println("Média ="+media);

}

}

As variáveis quando declaradas não possuem valores, seu conteúdo é

nulo e operações aritméticas que envolvem nulos sempre resultam em nulos.

Às vezes também será necessário acumular valores, isto é, calcular o

somatório de um conjunto de valores. Para isso, também será necessário

utilizar uma variável de apoio, que pode ser do tipo inteiro ou real, de acordo

com os valores que serão acumulados.

acumulador = 0;

acumulador = acumulador + valor;

Page 10: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

9

5.2.3.1. Componentes do Cabeçalho

for ( int cont = 1; cont <= 10; cont++ )

Em geral as instruções for são utilizadas para repetição controlada por

contador. Se a expressão inicialização no cabeçalho for declara a variável de

controle, a variável de controle pode ser utilizada somente nessa instrução for –

ela não existirá fora da instrução for.

Essa utilização restrita do nome da variável de controle é conhecida

como o escopo da variável. O escopo de uma variável define onde ela pode ser

utilizada em um programa.

Todas as três expressões em um cabeçalho for são opcionais. Se a

condição de continuação do loop for omitida, o Java assume que a condição de

continuação do loop é sempre verdadeira, criando um loop infinito.

A expressão incremento pode ser omitida se o programa calcular o

incremento com instruções no corpo do loop ou se nenhum incremento for

necessário. A expressão incremento em uma instrução for atua como se ela

fosse uma instrução independente no fim do corpo do for.

Palavra

chave

Variável

de controle

Valor inicial

da variável

de controle

Condição de

continuação do loop

Incremento da

variável de controle

Separador

ponto-e-vírgula

Separador

ponto-e-vírgula

Page 11: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

10

5.3. ESTRUTURA DE REPETIÇÃO COM TESTE NO INÍCIO

Essa estrutura de repetição é utilizada quando não se sabe o número

de vezes em que um trecho do algoritmo deve ser repetido, embora também

possa ser utilizada quando se sabe esse número, e deve repetir uma ação

enquanto alguma condição permanecer verdadeira.

Na estrutura enquanto (while), a condição de repetição é verificada

antes de entrar no laço, isto é, uma condição é testada inicialmente e, se o

resultado for verdadeiro, o bloco de instruções será executado.

5.3.1 Pseudocódigo

ENQUANTO condição FAÇA

Comando1;

Enquanto a condição for verdadeira, o comando1 será executado.

ENQUANTO condição FAÇA

{

Comando1;

Comando2;

Comando3;

}

Enquanto a condição for verdadeira, os comando1, comando2 e

comando3 serão executados.

Exemplo 1:

X ← 1;

Y ← 5;

ENQUANTO X < Y FAÇA

Page 12: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

11

INÍCIO

X ← X + 2;

Y ← Y + 1;

FIM;

Simulação:

X Y

1 5 Valores iniciais

3

5

7

9

6

7

8

9

Valores obtidos dentro da estrutura de

repetição

No trecho do algoritmo anterior, os comandos que se localizam

dentro da estrutura de repetição serão repetidos quatro vezes.

Exemplo 2: Ler 8 números fornecidos pelo usuário, calcular e exibir a

média entre eles.

ALGORITMO EX_ENQUANTO {

DECLARE

SOMA, NUM, MEDIA : REAL;

CONT : INTEIRO;

{

SOMA ← 0;

CONT ← 0;

ENQUANTO (CONT < 850) FAÇA

{

LEIA(NUM);

SOMA ← SOMA + NUM;

CONT ← CONT + 1;

}

MEDIA ← SOMA / CONT;

ESCREVA(“MÉDIA = ”, MEDIA);

}

}

Page 13: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

12

Exemplo 3: a cada iteração pergunta-se ao usuário se deseja

continuar. Com base na resposta, a condição estabelecida é testada.

FAÇA ENQUANTO (RESPOSTA = “SIM”)

INÍCIO

<instruções>;

ESCREVA(“DESEJA CONTINUAR?”);

LEIA(RESPOSTA);

FIM;

É importante padronizar a leitura da resposta, pois sim é diferente de

SIM, ou seja, existe diferenciação entre maiúsculas e minúsculas.

A variável cont tem a função de contar o número de vezes que as

instruções dentro do laço serão repetidas. A variável soma tem a função de

acumular todos os valores atribuídos à variável num.

5.3.2 Fluxograma

.F.

.V.

Início

SOMA ← 0 CONT ← 0

CONT < 8

NUM

SOMA ← SOMA + NUM

CONT ← CONT+1

MEDIA ← SOMA / NUM

“MÉDIA = ”, MEDIA

Fim

Page 14: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

13

Simulação:

Volta SOMA CONT NUM SOMA = SOMA +

NUM

CONT = CONT

+ 1

1 0 0 3 0 + 3 = 3 0 +1 = 1

2 3 1 1 3 + 1 = 4 1 + 1 = 2

3 4 2 13 4 + 13 = 17 2 + 1 = 3

4 17 3 77 17 + 77 = 94 3 + 1 = 4

5.3.3 A instrução de repetição WHILE

Uma instrução de repetição permite ao programador especificar que

um programa deve repetir uma ação enquanto alguma condição permanecer

verdadeira.

A(s) instrução(ões) contida(s) na instrução de repetição while

constitui(em) o corpo da instrução de repetição while, que pode ser uma única

instrução ou um bloco. Por fim, a condição se tornaria falsa. Nesse ponto a

repetição termina e a primeira instrução depois da instrução de repetição é

executada.

Exemplo 1: ler 8 números fornecidos pelo usuário, calcular e exibir a

média entre eles.

import java.util.Scanner;

//classe

public class ex2_while {

//método principal

public static void main(String args[]){

//declaração de variáveis

float soma, num, media;

int cont;

Scanner leia = new Scanner(System.in);

//inicialização de variáveis

soma = 0;

Page 15: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

14

cont = 0;

//enquanto a variável cont for menor que 8

while (cont < 8){ //inicia o loop

//armazena na variável num o valor digitado via teclado

num = leia.nextFloat();

//a variável soma acula a soma com num

soma+=num;

//incrementa o contador cont

cont++;

}//fim do loop

//calcula a média dos números somados

media = soma / cont;

//exibe (escreve) a média

System.out.println("Média = "+media);

} // fim do método principal

} //fim da classe

Exemplo 4: a cada iteração pergunta-se ao usuário se deseja

continuar. Com base na resposta, a condição estabelecida é testada.

import java.util.Scanner;

public class ex4_while {

public static void main(String args[]){

//declaração e inicialização de variáveis

float soma=0, num, media;

int cont = 0;

char resposta='S';

Scanner leia = new Scanner(System.in);

/*

* enquanto a variável respostar

* for igual a 'S' ou 's' faça

*/

while (resposta == 'S' || resposta == 's'){//início do loop

//armazena em num o valor digitado pelo usuário via teclado

Page 16: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

15

num = leia.nextFloat();

//acumula a soma dos números digitados

soma+=num;

//acumula um contador de quantos números foram digitados

cont++;

//exibe a mensagem se o usuário quer continuar

System.out.println("Deseja continuar?");

//armazena em resposta o caractere digitado pelo usuário

resposta = leia.next().charAt(0);

}//fim do loop

//calcula a média da soma dos números digitados

media = soma / cont;

//exibe a média

System.out.println("Média = "+media);

}//fim do método principal

}//fim da classe

5.4 ESTRUTURA DE REPETIÇÃO COM TESTE NO FIM

Essa estrutura de repetição é utilizada quando não se sabe o número

de vezes em que um trecho do algoritmo deve ser repetido, embora também

possa ser utilizada quando se sabe esse número.

A instrução REPITA... ATÉ ou FAÇA... ENQUANTO (do... while) é

semelhante à instrução ENQUANTO (while). A diferença entre elas é que na

estrutura REPITA os comandos serão repetidos pelo menos uma vez, já que a

condição se encontra no final.

A estrutura de repetição com teste no fim permite que um ou mais

comandos sejam executados repetidamente até uma condição específica

tornar-se verdadeira.

Page 17: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

16

5.4.1 Pseudocódigo

REPITA

Comandos;

ATÉ condição;

Repita os comandos até a condição se tornar verdadeira.

Exemplo 1:

X ← 1;

Y ← 5;

REPITA

X ← X + 2;

Y ← Y + 1;

ATÉ X >= Y;

Simulação:

X Y

1 5 Valores iniciais

3

5

7

9

6

7

8

9

Valores obtidos dentro da estrutura de

repetição

Exemplo 2: Ler 8 números fornecidos pelo usuário, calcular e exibir a

média entre eles.

ALGORITMO EX_REPITA {

DECLARE

SOMA, NUM, MEDIA : REAL;

CONT : INTEIRO;

{

Page 18: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

17

SOMA ← 0;

CONT ← 0;

REPITA

LEIA (NUM);

SOMA ← SOMA + NUM;

CONT ← CONT + 1;

ATÉ CONT >= 850;

MEDIA ← SOMA / CONT;

ESCREVA (“MÉDIA = ”, MEDIA);

}

}

5.4.2 Fluxograma

.F.

.V.

Início

SOMA ← 0 CONT ← 0

CONT >= 850

NUM

SOMA ← SOMA + NUM

CONT ← CONT+1

MEDIA ← SOMA / NUM

“MÉDIA = ”, MEDIA

Fim

Page 19: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

18

5.4.3 A estrutura de repetição DO...WHILE

Na instrução while o programa testa a condição de continuação do loop

no começo do loop antes de executar o corpo do loop. Se a condição for falsa,

o corpo nunca é executado. A instrução do... while testa a condição de

continuação do loop depois de executar o corpo do loop, portanto, o corpo

sempre é executado pelo menos uma vez. Quando uma instrução do... while

termina a execução continua com a próxima instrução na sequência.

Exemplo: ler 8 números fornecidos pelo usuário, calcular e exibir a

média entre eles.

import java.util.Scanner;

public class ex3_do_while {

//método principal

public static void main(String args[]){

//declaração de variáveis

float soma, num, media;

int cont;

Scanner leia = new Scanner(System.in);

//inicialização de variáveis

soma = 0;

cont = 0;

//faça (repita)

do{

//armazene em num o valor digitado pelo usuário

num = leia.nextFloat();

//acumula a soma dos números digitados

soma+=num;

//incrementa o contador

cont++;

}while (cont < 8);//enquanto (até) cont ser menor que 8

//calcula a média dos números digitados

media = soma / cont;

//exibe a média

Page 20: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

19

System.out.println("Média = "+media);

}//fim do método principal

}//fim da classe ex3_do_while

5.5 EXERCÍCIOS

1. Qual é a saída produzida pelas seguintes linhas de código do programa?

a) int n = ( int)3.9;

System.out.println("n == " + n);

b) int n = 3;

n++;

System.out.println("n == " + n);

n−−;

System.out.println("n == " + n);

c) int c;

c = 5;

System.out.println( c );

System.out.println( c++ );

System.out.println( c );

System.out.println( ++c );

System.out.println( c );

d) int n = 10;

do

{

System.out.println(n);

n = n - 3;

} while (n > 0);

e) int n = 10;

do

{

System.out.println(n);

n = n - 3;

} while (n < 0);

f) int n = -42;

do

{

System.out.println(n);

n = n - 3;

} while (n > 0);

g) int number = 10;

while (number > 0)

{

System.out.println(number);

number = number + 3;

}

h) int n, limit = 10;

Page 21: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

20

for (n = 1; n < limit; n++)

{

System.out.println("n == "

+n);

System.out.println("limit == "+

limit);

limit = n + 2;

}

i) int number = 10;

while (number > 0)

{

number = number - 2;

if (number == 4)

break ;

System.out.println(number);

}

System.out.println("The end.");

j) int number = 10;

while (number > 0)

{

number = number - 2;

if (number == 4)

continue ;

System.out.println(number);

}

System.out.println("The end.");

2. Complete a tabela abaixo:

int a = 1, b = 2, c = 3;

Expressão Expressão completa Resultado

a +=5; a =

b *= 4; b =

c += a * b; c =

c %= 6; c =

3. (SPTrans – 2012) Considere o código Java apresentado a seguir.

public class ExemploOperadorUnario{

puclic sstatic void main(String args[]){

int varl = 10;

int var2 = 20;

int res = 0;

res = var1 + var2;

System.out.println("res; " + res);

Page 22: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

21

res = var1++ + var2;

System.out.println("res: " + res);

res = var1 + var2;

System.out.println("res; " + res);

res = var1+ ––var2;

System.out.println("res: " + res);

}

}

Assinale a alternativa que contém o resultado correto da execução do

código.

a) res: 29

res: 29

res: 30

res: 29

b) res: 32

res: 32

res: 32

res: 32

c) res: 28

res: 28

res: 29

res: 28

d) res: 30

res: 30

res: 31

res: 30

e) res: 31

res: 31

res: 30

res: 31

4. (TCE-AM – 2012) Considere o código Java a seguir:

import javax.swing.JOptionPane;

public class Classe1{

public static void main(String [] args) {

int n, c, r, s;

n = Integer.parseInt(JOptionPane.showInputDialog(null,

“Digite um valor inteiro: “));

r = 0;

s = -1;

for (c = 1; c <= n; c++) {

if (c % 2 == 0) {

r = r + c * s;

} else {

r = r + c;

}

Page 23: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

22

}

JOptionPane.showMessageDialog(null, r);

}

}

Se o valor digitado e armazenado na variável n for 10, será exibido na tela o

valor

a) 8 b) 3 c) 12 d) -5 e) 6

5. (CGU – 2012) O comando break tem a função de

a) interromper a execução de um loop.

b) condicionar a execução de um comando de atribuição a um operador

lógico.

c) segmentar a execução de um loop em duas ou mais partes aninhadas.

d) estabelecer um intervalo de depuração durante a execução de um loop.

e) impossibilitar o aninhamento de loops não lógicos.

6. (Receita Federal – 2012) Em programação Java, o comando while

a) executa um bloco exclusivamente de comandos de atribuição.

b) executa um bloco de comandos enquanto sua condição for verdadeira.

c) executa um bloco de comandos até que sua condição seja verdadeira.

d) equivale ao comando what-if.

e) é idêntico ao comando do while.

7. (TST – 2012) Considere o programa abaixo escrito em linguagem Java:

public class Programa {

public static void main (String args[]) {

for (int i = 3; i < 20; i += 2) {

System.out.print((i % 3) + “ ”);

}

}

}

O resultado a ser informado ao usuário após a execução do programa

acima é:

a) 0 0 1 0 0 1 0 0 1

b) 0 1 2 0 1 2 0 1 2

c) 0 1 0 1 0 1 0 1 0

Page 24: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

23

d) 1 2 1 2 1 2 1 2 1

e) 0 2 1 0 2 1 0 2 1

8. (Chesf – 2012) Considere o trecho de código que corresponde ao método

principal de uma classe em linguagem Java.

public static void main(String [] args) {

int n = 1;

int x = 0;

int i;

while (n < 10) {

if (n % 2 != 0) {

for (i = 3; i * i <= n; i += 2) {

if (n % i == 0)

break;

}

if (i < n) {

x++;

}

}

n++;

}

System.out.println(x);

}

Qual o resultado produzido por esse método quando ele é corretamente

executado?

a) 0 b) 1 c) 2 d) 3 e) 5

9. (DETRAN-RN – 2010) Assinale a alternativa que contém o resultado correto

da execução do programa em linguagem Java:

public class Soma {

public static void main (String args[]) {

int total = 0;

for (int conta = 2; conta <= 20; conta += 2)

total += conta;

System.out.printf(“Resultado %d\n”, total);

Page 25: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

24

}

}

a) 108 b) 90 c) 130 d) 100 e) 110

10. (UEPB – 2012) Em Java, um bloco de código é:

a) Tudo que está entre ( )

b) Tudo que está entre { }

c) Tudo que está entre [ ]

d) Tudo que está entre < >

e) Tudo que está no mesmo nível de indentação

11. (MPE-PE – 2012) Analise o código Java a seguir:

public class Classe1{

public static void main (String[] args){

int n = 6, r = 0, c = 1, s = -1;

while (c <= n) {

if (c % 2 == 0) {

r = r + c * s;

} else {

r = r + c;

}

c++;

}

System.out.println(r);

}

}

Ao compilar e executar a Classe1, os valores finais nas variáveis r e c serão

respectivamente:

a) 3 e 6. b) -3 e 7. c) -2 e 7. d) 4 e 6. e) -3 e 6.

12. (TRE-CE – 2012) Considere a estrutura de repetição seguinte:

public static void main(String [] args){

int cont = 1, r = 0;

do {

r = r + cont;

cont += 4;

Page 26: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

25

} while (cont <= 5);

System.out.println(r);

System.out.println(cont);

}

A saída na tela será

a) 15 e 6. b) 1 e 5. c) 0 e 1. d) 6 e 9. e) 9 e 7.

13. Dados os fluxogramas que resolvem os problemas abaixo, escreva os

códigos em linguagem Java:

a) Leia um valor n inteiro e positivo e calcule e escreva o fatorial de n(n!).

INÍCIO

FAT 1

I 1 ATÉ N

FAT FAT * J

SOMA

FIM

N

NUM

J 1 ATÉ NUM

Page 27: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

26

b) Leia dez conjuntos de dois valores, o primeiro representando o número

do aluno e o segundo representando a sua altura em centímetros.

Encontre o aluno mais alto e o mais baixo. Mostre o número do aluno

mais alto e o número do mais baixo, junto com suas alturas.

V

F

V

INÍCIO

CONT 1 ATÉ 10

MAIOR ALT

NUM_MAIOR NUM

MAIOR, NUM_MAIOR

FIM

NUM, ALT

CONT = 1

MENOR ALT

NUM_MENOR NUM

SE ALT > MAIOR

MAIOR ALT

NUM_MAIOR NUM

SE ALT > MAIOR

MENOR ALT

NUM_MENOR NUM

MENOR, NUM_MENOR

Page 28: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

27

c) Calcule a soma dos primeiros 50 números pares. Esse programa não

recebe valor do teclado. Os primeiros números pares são: 2, 4, 6, ...

14. Dados os pseudocódigos que resolvem os problemas abaixo, escreva os

códigos em linguagem Java:

a) Monte os oito primeiros termos da sequência de Fibonacci.

0 – 1 – 1 2 – 3 – 5 – 8 – 13 – 21 – 34 – 55 - ...

ALGORITMO {

DECLARE CONT, NUM1, NUM2, RES : NUMERO;

NUM1 0;

NUM2 1;

ESCREVA (NUM1);

ESCREVA (NUM2);

PARA CONT 3 ATÉ 8 FAÇA {

RES NUM1 + NUM2;

ESCREVA (RES);

NUM1 NUM2;

NUM2 RES;

}

}

INÍCIO

SOMA 0

NUM 2

QTDE 1 ATÉ 50

SOMA SOMA + NUM

NUM NUM + 2

SOMA FIM

Page 29: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

28

b) Leia o número de termos, determine e mostre os valores de acordo com

a série abaixo:

Série = 2, 7, 3, 4, 21, 12, 8, 63, 48, 16, 189, 192, 32, 567, 768,64, ...

ALGORITMO {

DECLARE I, NUM_TERMOS, NUM1, NUM2, NUM3 : NUMERO;

LEIA NUM_TERMOS;

NUM1 2;

NUM2 7;

NUM3 3;

ESCREVA (NUM1);

ESCRAVA (NUM2);

ESCREVA (NUM3);

I 4;

ENQUANTO I <> NUM_TERMOS FAÇA {

NUM1 NUM1 * 2;

ESCREVA (NUM1);

I I + 1;

SE I <> NUM_TERMOS {

NUM3 NUM3 * 4;

ESCREVA (NUM3);

I I + 1;

}

}

}

c) A conversão de graus Fahrenheit para Celsius é obtida por C = 5 / 9 (F –

32). Calcule e escreva uma tabela de graus Celsius e graus Fahrenheit,

cujos graus variem de 50 a 65 de 1 em 1.

ALGORITMO {

DECLARE CELS, FAREN : NUMERICO;

PARA FAREN 50 ATÉ 65 FAÇA {

ESCREVA (FAREN);

CELS 5 / 9 * (FAREN – 32);

ESCREVA (CELS);

}

}

Page 30: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

29

d) Receba um número inteiro maior que 1 e verifique se o número fornecido

é primo ou não. Mostrar mensagem de número primo ou de número não

primo.

OBS.: um número é primo quando é divisível apenas pelo número um e por ele mesmo.

ALGORITMO {

DECLARE I, NUM, QTDE : NUMERO;

LEIA NUM;

QTDE 0;

PARA I 1 ATÉ NUM FAÇA {

SE RESTO(NUM / I) = 0

QTDE QTDE + 1;

}

SE QTDE > 2

ESCREVA (“NÚMERO NÃO PRIMO”);

SENÃO

ESCREVA (“NÚMERO PRIMO”);

}

15. Dada uma faixa d valores, cujo valor inicial e o valor final deverão ser

fornecidos pelo usuário, identifique;

a) A quantidade de números inteiros e positivos;

b) A quantidade de números pares;

c) A quantidade de números ímpares;

d) A quantidade de números ímpares divisíveis por 3 e 4 ao mesmo tempo;

e) A respectiva média para cada um dos itens.

16. Mostre os conceitos finais dos alunos de uma classe de 75 pessoas,

considerando a tabela a seguir.

Nota Conceito

de 0 a 2,9 E

de 3,0 a 4,9 D

de 5,0 a 6,9 C

de 7, a 8,9 B

de 9,0 a 10,0 A

Para isso, a nota final e o código do aluno deverão ser fornecidos pelo

usuário. Ao final do programa, apresente a quantidade de alunos e a média

de nota alcançada para cada conceito.

Page 31: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

30

17. Um funcionário de uma empresa recebe aumento salarial anualmente.

Sabe-se que:

a) Esse funcionário foi contratado em 2005, com salário inicial de R$

1.000,00;

b) Em 2006 recebeu aumento de 1,5% sobre seu salário inicial;

c) A partir de 2007 (inclusive) os aumentos salariais sempre correspondem

ao dobro do percentual do ano anterior.

Determine o salário atual desse funcionário.

18. Tem-se um conjunto de dados contendo a altura e o sexo (M ou F) de 15

pessoas. Calcule e mostre:

A maior e a menor altura do grupo.

A média de altura das mulheres.

O número de homens.

O sexo da pessoa mais alta.

19. Receba duas notas de seis alunos, calcule e mostre:

A média aritmética das duas notas de cada aluno.

A mensagem que está na tabela a seguir:

Média aritmética Mensagem

Até 3,0 Reprovado

Entre 3,0 e 7,0 Exame

Acima de 7,0 Aprovado

O total de alunos aprovados.

O total de alunos de exame.

O total de alunos reprovados.

A média da classe.

20. Receba o valor de uma dívida e mostre uma tabela com os seguintes

dados: valor da dívida, valor dos juros, quantidade de parcelas e valor da

parcela.

Os juros e a quantidade de parcelas seguem a tabela abaixo:

Quantidade

de parcelas

% de juros sobre o

valor inicial da dívida

1 0

3 10

Page 32: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

31

6 15

9 20

12 25

Exemplos de saída:

Valor da dívida Valor dos juros Quantidade

de parcelas Valor da parcela

R$ 1.000,00 0 1 R$ 1.000,00

R$ 1.100,00 100 3 R$ 366,67

R$ 1.150,00 150 6 R$ 191,67

5.6 TRABALHOS PRÁTICOS

1. A empresa JS Recrutamento e Seleção Ltda. faz recrutamento e seleção de

funcionários para várias empresas em diversos ramos de atuação. Atende

em média 30 candidatos por dia, mas esse valor aumento quando faz

divulgação de vagas. Para facilitar o trabalho de identificação do perfil dos

candidatos que se inscrevem para as vagas, resolveu fazer um programa

para registrar alguns dados para obter as informações a seguir:

a) Número de candidatos do sexo feminino;

b) Número de candidatos do sexo masculino;

c) Idade média dos homens;

d) Idade média das mulheres com experiência;

e) Porcentagem dos homens entre 35 e 45 anos entre o total dos homens;

f) Menor idade entre as mulheres que já têm experiência no serviço;

g) Nível de escolaridade dos candidatos entre: ensino fundamental, ensino

médio, graduação e pós-graduação.

Calcule as informações solicitadas anteriormente, sabendo que a cada

iteração deverá ser perguntado ao usuário se deseja cadastrar outro

candidato. Quando a resposta for negativa, os resultados deverão ser

apresentados.

Page 33: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

32

2. A empresa PowerSoftware Ltda. possuía 32 funcionários até o ano

passado, e a sua folha de pagamento era calculada anualmente. Ocorre

que neste ano a empresa teve um grande crescimento e saltou para 58

funcionários com previsão de novas contratações. Dessa maneira, fazer a

folha de pagamento manualmente tornou-se inviável. Para cada funcionário

deverá ser lido seu salário e calculados os descontos de imposto de renda e

INSS que são variantes de acordo com a tabela a seguir e uma

porcentagem fixa correspondente ao plano de saúde que é de 4,5% do

valor do salário.

a) Calcule o valor total da folha de pagamento.

b) Calcule o valor do salário líquido de cada um dos 58 funcionários.

c) Calcule o valor total do imposto de renda que a empresa deverá

recolher.

Veja as informações disponíveis no site da Receita da Fazenda, a tabela de

alíquotas do IRRF para o ano corrente e o desconto do INSS.

A entrada de dados deve terminar quando for lido um número negativo.

3. Foi realizada uma pesquisa de algumas características físicas da população

de certa região, a qual coletou os seguintes dados referentes a cada

habitante para serem analisados:

a) Sexo (masculino e feminino);

b) Cor dos olhos (azuis, verdes ou castanhos);

c) Cor dos cabelos (louros, castanhos, pretos);

d) Idade;

e) Altura;

f) Peso.

Apresente a média da idade dos participantes, a média do peso e da altura

de seus habitantes, a porcentagem de pessoas do sexo feminino e a

porcentagem de pessoas do masculino. Quantas pessoas possuem olhos

verdes e cabelos louros? A cada iteração deverá ser perguntado ao usuário

se deseja continuar ou não. Os resultados deverão ser apresentados

quando o usuário não desejar mais inserir dados.

4. Uma empresa possui dez funcionários com as seguintes características:

código, número de horas trabalhadas no mês, turno de trabalho (M –

Page 34: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

33

Matutino, V – Vespertino ou N – Noturno), categoria (O – Operário ou G –

Gerente), valor da hora trabalhada. Sabendo-se que essa empresa deseja

informatizar sua folha de pagamento, faça um programa que:

a) Leia as informações dos funcionários, exceto o valor da hora trabalhada,

não permitindo que sejam informados turnos nem categorias

inexistentes. Trabalhar sempre com a digitar de letras em maiúsculas.

b) Calcule o valor da hora trabalhada, conforme a tabela a seguir:

Categoria Turno Valor da hora trabalhada

G N 18% do salário mínimo

G M ou V 15% do salário mínimo

O N 13% do salário mínimo

O M ou V 10% do salário mínimo

c) Adote o valor corrente do salário mínimo.

d) Calcule o salário inicial dos funcionários com base no valor da hora

trabalhada e no número de horas trabalhadas.

e) Calcule o valor do auxílio-alimentação recebido por funcionário de

acordo com o seu salário inicial, conforme a tabela a seguir:

Salário inicial Auxílio-alimentação

Até R$ 1080,00 20% do salário

inicial

Entre R$ 1080,00 e R$

2160,00

15% do salário

inicial

Acima de R$ 2160,00 5% do salário inicial

Mostre o código, número de horas trabalhadas, valor da hora trabalhada,

salário inicial, auxílio-alimentação e o salário final (salário inicial + auxílio-

alimentação).

5. Uma grande empresa para seu pessoal de vendas com base em

comissões. O pessoal de vendas recebe R$ 200,00 por semana mais 9%

de suas vendas brutas durante essa semana. Por exemplo, um vendedor

que realiza um total de vendas de mercadorias de R$ 5.000,00 em uma

semana, recebe R$ 200,0 mais 9% de R$ 5.000,00 ou um total de R$

650,00. Foi-lhe fornecida uma lista dos itens vendidos por cada vendedor.

Os valores desses itens são:

Page 35: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

34

Item Valor

1 R$ 239,99

2 R$ 129,75

3 R$ 99,95

4 R$ 350,89

Desenvolva um programa que receba a entrada de itens vendidos por um

vendedor durante a última semana, calcule e exiba os rendimentos do

vendedor. Não há limites quanto ao número de itens podem ser vendidos

por um mesmo vendedor.

5.7 REFERÊNCIA BIBLIOGRAFIA

ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi.

Fundamentos da Programação de Computadores. São Paulo: Pearson

Prentice Hall

PUGA, Sandra; RISSETTI, Gerson. Lógica de programação e estrutura de

dados, com aplicações em Java. São Paulo: Pearson Prentice Hall, 2009

SAVITCH, Walter. Absolute Java, 5ª ed. New Jersey: Pearson Education,

2012

DEITEL, Paul; DEITEL, Harvey. Java for Programmers. 2nd Ed. Boston:

Pearson Education, Inc., 2012

Page 36: ESTRUTURAS DE REPETIÇÃO · vezes em que um trecho do algoritmo deve ser repetido. Ela utiliza variáveis de controle que definem exatamente o número de vezes que a sequência de

35