estruturas de repetição - Profº Erinaldo Sanches Nascimento

Propaganda
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
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
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
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
4
Nome do
Operador
Expressão
Incremento
++a
a++
--b
Decrementa b por 1 e, em seguida, usa o novo
valor de b na expressão em que b reside.
prefixado
Decremento
Usa o valor atual de a na expressão em que
reside, depois incrementa a por um.
pós-fixado
Decremento
Incrementar a por um e, em seguida, usa o novo
valor de a na expressão em que reside.
prefixado
Incremento
Descriçao
b--
pós-fixado
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;
cont += 2;
total = total – desconto;
total -= desconto;
bonus = bonus * 2;
bonus *= 2;
tempo = tempo / fatorArremetida;
tempo /= fatorArremetida;
conversao = conversão % 100;
conversao %= 100;
montante = montante * (cont1 + cont2);
montante *= cont1 + cont2;
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;
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.
7
5.2.2. Fluxograma
Início
SOMA ← 0
CONT ← 1,
8
MEDIA ←
SOMA / NUM
“MÉDIA = ”,
MEDIA
Fim
NUM
SOMA ←
SOMA + NUM
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;
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;
9
5.2.3.1. Componentes do Cabeçalho
Separador
ponto-e-vírgula
for (
Palavra
chave
int cont = 1;
Variável
de controle
Separador
ponto-e-vírgula
cont <= 10;
Condição de
continuação do loop
cont++ )
Incremento da
variável de controle
Valor inicial
da variável
de controle
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.
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
11
INÍCIO
X ← X + 2;
Y ← Y + 1;
FIM;
Simulação:
X
Y
1
5
3
6
5
7
Valores obtidos dentro da estrutura de
7
8
repetição
9
9
Valores iniciais
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);
}
}
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
Início
SOMA ← 0
CONT ← 0
CONT < 8
.F.
MEDIA ←
SOMA / NUM
“MÉDIA = ”,
MEDIA
.V.
Fim
NUM
SOMA ← SOMA +
NUM
CONT ← CONT+1
13
Simulação:
Volta
SOMA
CONT
NUM
1
0
0
2
3
3
4
SOMA = SOMA + CONT = CONT
NUM
+1
3
0+3=3
0 +1 = 1
1
1
3+1=4
1+1=2
4
2
13
4 + 13 = 17
2+1=3
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;
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
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.
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
3
6
5
7
Valores obtidos dentro da estrutura de
7
8
repetição
9
9
Valores iniciais
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;
{
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
Início
SOMA ← 0
CONT ← 0
NUM
.F.
SOMA ← SOMA +
NUM
CONT ← CONT+1
CONT >=
850
.V.
MEDIA ←
SOMA / NUM
“MÉDIA = ”,
MEDIA
Fim
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
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;
d) int n = 10;
do
{
n++;
System.out.println(n);
System.out.println("n == " + n);
n = n - 3;
n−−;
System.out.println("n == " + n);
c) int c;
c = 5;
} while (n > 0);
e) int n = 10;
do
{
System.out.println( c );
System.out.println(n);
System.out.println( c++ );
n = n - 3;
System.out.println( c );
System.out.println( ++c );
System.out.println( c );
} 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;
20
for (n = 1; n < limit; n++)
i) int number = 10;
{
while (number > 0)
System.out.println("n
==
"
{
+n);
number = number - 2;
System.out.println("limit == "+
if (number == 4)
limit);
break ;
limit = n + 2;
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);
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
c) res: 28
e) res: 31
res: 29
res: 28
res: 31
res: 30
res: 29
res: 30
res: 29
res: 28
res: 31
b) res: 32
d) res: 30
res: 32
res: 30
res: 32
res: 31
res: 32
res: 30
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;
}
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
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);
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.
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;
e) -3 e 6.
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
N
I
1
ATÉ N
NUM
FAT
1
J
1
ATÉ NUM
FAT
SOMA
FIM
FAT * J
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.
INÍCIO
CONT
1
ATÉ 10
NUM, ALT
F
CONT = 1
SE ALT >
MAIOR
V
MAIOR
NUM_MAIOR
MENOR
V
ALT
NUM
MAIOR
ALT
NUM_MAIOR
NUM
ALT
SE ALT >
MAIOR
NUM_MENOR
NUM
MENOR
NUM_MENOR
ALT
NUM
MAIOR,
NUM_MAIOR
MENOR,
NUM_MENOR
FIM
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, ...
INÍCIO
SOMA
0
NUM
2
QTDE
1
ATÉ 50
SOMA
FIM
SOMA
SOMA + NUM
NUM
NUM + 2
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
RES
3 ATÉ 8 FAÇA {
NUM1 + NUM2;
ESCREVA (RES);
}
}
NUM1
NUM2;
NUM2
RES;
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);
}
}
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
PARA I
0;
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.
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 juros sobre o
de parcelas valor inicial da dívida
1
0
3
10
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.
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 –
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
do
salário
inicial
Entre
R$
1080,00
e
R$ 15%
2160,00
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ílioalimentaçã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:
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
35
Download