• Nenhum resultado encontrado

ESTRUTURAS DE REPETIÇÃO

N/A
N/A
Protected

Academic year: 2021

Share "ESTRUTURAS DE REPETIÇÃO"

Copied!
36
0
0

Texto

(1)

CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA

ERINALDO SANCHES NASCIMENTO

ESTRUTURAS DE REPETIÇÃO

FOZ DO IGUAÇU 2013

(2)

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.4ESTRUTURA 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.5EXERCÍCIOS... 19

5.6 TRABALHOS PRÁTICOS ... 31

(3)

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

(4)

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 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

(5)

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;

(6)

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 {

(7)

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.

(8)

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

(9)

/*

* 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;

(10)

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

(11)

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;

(12)

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); }

(13)

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

(14)

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

(15)

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

(16)

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.

(17)

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;

(18)

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

(19)

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

(20)

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;

(21)

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;

(22)

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; }

(23)

}

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

(24)

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;

(25)

} }

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;

(26)

} 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

(27)

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

(28)

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

(29)

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);

} }

(30)

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.

(31)

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

(32)

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.

(33)

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 –

(34)

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, 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:

(35)

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

(36)

Referências

Documentos relacionados

Faça um algoritmo em C++ que solicite ao usuário que ele digite um numero e enquanto o valor digitado estiver entre 2 e 15 imprima o quadrado do número digitado. Faça um algoritmo

 Exemplo 3: Construir um algoritmo que leia um número N, calcule e imprima o fatorial desse número...

Um funcionário de uma empresa recebe aumento salarial anualmente. Faça um programa que determine o salário atual desse funcionário. Faça um programa que leia um número N e que

Os candidatos aprovados no presente processo seletivo, obedecida a classificação final, serão convocados para a contratação por meio do Edital de Convocação publicado no quadro

e) Carteira de Trabalho e Previdência Social; f) Carteira Nacional de Habilitação, contendo foto. No ato da inscrição, o candidato deverá indicar sua opção de cargo, observado

Com relação à germinação das sementes armazenadas em câmara fria, aos três meses de armazenamento (Tabela 10), observou-se em sementes tratadas ou não com fungicidas e

ITEM Óleo do Motor A cada uso Primeira troca 20 horas A cada 3 meses ou 50 horas A cada 6 meses ou 100 horas A cada ano ou 300 horas Filtro de Ar Vela de Ignição Folga das

Os critérios clínicos para o diagnóstico de DII incluem: duração crônica (&gt; 3 semanas) de sinais gastrointestinais, incluindo vômitos, diarreia e perda de