estrutura condicional - Profº Erinaldo Sanches Nascimento

Propaganda
COLÉGIO ESTADUAL ULYSSES GUIMARÃES
CURSO TÉCNICO PROFISSIONALIZANTE EM INFORMÁTICA
ERINALDO SANCHES NASCIMENTO
ESTRUTURA CONDICIONAL
FOZ DO IGUAÇU
2013
LISTA DE QUADROS
QUADRO 1 – PSEUDOCÓDIGO PARA VERIFICAR SE UM NÚMERO É ÍMPAR ...... 7
QUADRO 2 – CLASSE JAVA QUE VERIFICA SE UM NÚMERO É ÍMPAR ................. 7
QUADRO 3 – PSEUDOCÓDIGO PARA DETERMINAR O MAIOR DE DOIS
NÚMEROS USANDO VARIÁVEL ......................................................................... 8
QUADRO 4 – CLASSE JAVA QUE DETERMINA O MAIOR DE DOIS NÚMEROS
USANDO VARIÁVEL ............................................................................................ 9
QUADRO 5 – PSEUDOCÓDIGO COM ALGORITMO QUE ORDENA OS
CONTEÚDOS DAS VARIÁVEIS X E Y................................................................ 10
QUADRO 6 – CLASSE JAVA QUE ORDENA OS CONTEÚDOS DE DUAS
VARIÁVEIS, NA ORDEM X E Y .......................................................................... 10
QUADRO 7 – PSEUDOCÓDIGO COM O ALGORITMO PARA CALCULAR O VALOR
DO BÔNUS ......................................................................................................... 13
QUADRO 8 – CLASSE JAVA QUE CALCULA E EXIBE O VALOR DO BÔNUS ........ 13
QUADRO 9 – PSEUDOCÓDIGO PARA CALCULAR A ÁREA DO TRIÂNGULO ....... 14
QUADRO 10 – CLASSE JAVA QUE CALCULA A ÁREA DO TRIÂNGULO ............... 15
QUADRO 11 – CLASSE JAVA USANDO OPERADOR CONDICIONAL TERNÁRIO 17
QUADRO 12 – PSEUDOCÓDIGO QUE VERIFICA E CLASSIFICA UMA TRIÂNGULO
VÁLIDO............................................................................................................... 18
QUADRO 13 – CLASSE JAVA QUE VERIFICA E CLASSIFICA UM TRIÂNGULO
VÁLIDO............................................................................................................... 19
QUADRO 14 – PSEUDOCÓDIGO QUE ENCONTRA AS RAÍZES DE UMA
EQUAÇÃO DO SEGUNDO GRAU ...................................................................... 21
QUADRO 15 – APLICATIVO JAVA QUE CALCULA E EXIBE AS RAÍZES DE UMA
EQUAÇÃO DO SEGUNDO GRAU ...................................................................... 22
QUADRO 16 – PSEUDOCÓDIGO PARA RETORNAR DADOS DE UMA TABELA ... 25
QUADRO 17 – APLICATIVO JAVA QUE RETORNA DADOS DE UMA TABELA COM
SELEÇÃO MÚLTIPLA......................................................................................... 26
LISTA DE TABELAS
TABELA 1 – OPERADORES RELACIONAIS UTILIZADO EM PSEUDOCÓDIGO. ..... 2
TABELA 2 – OPERADORES RELACIONAIS EM JAVA. ............................................. 2
TABELA 3 – OPERADORES LÓGICOS UTILIZADOS EM PSEUDOCÓDIGO............ 3
TABELA 4 – TABELA-VERDADE COM OS OPERADORES LÓGICOS E, OU E NÃO.
.............................................................................................................................. 3
TABELA 5 – OPERADORES LÓGICOS EM JAVA. ..................................................... 4
TABELA 6 – EXEMPLOS DE OPERAÇÕES LÓGICAS. .............................................. 4
TABELA 7 – ORDEM DE PRECEDÊNCIA DOS OPERADORES. ............................... 5
LISTA DE FIGURAS
FIGURA 1 – FLUXOGRAMA DE UMA ESTRUTURA CONDICIONAL SIMPLES. ....... 6
FIGURA 2 – FLUXOGRAMA PARA ESTRUTURA DE SELEÇÃO COMPOSTA........ 12
FIGURA 3 – FLUXOGRAMA PARA ESTRUTURA CONDICIONAL ENCADEADA. ... 18
FIGURA 4 – FLUXOGRAMA DA ESTRUTURA CONDICIONAL DE MÚLTIPLA
ESCOLHA........................................................................................................... 25
SUMÁRIO
4 ESTRUTURA CONDICIONAL.................................................................................. 1
4.1 EXPRESSÕES BOOLEANA.................................................................................. 1
4.1.1 Operadores Relacionais ..................................................................................... 2
4.1.2 Operadores Lógicos ........................................................................................... 3
4.1.3 Precedência dos Operadores ............................................................................. 4
4.2 ESTRUTURAS DE SELEÇÃO ............................................................................... 5
4.2.1 Estrutura Condicional Simples ........................................................................... 6
4.2.2 Estrutura Condicional Composta ...................................................................... 12
4.2.2.1 Operador Condicional.................................................................................... 16
4.2.3 Estruturas Condicionais Endadeadas .............................................................. 17
4.2.4 Estruturas Condicionais de Múltipla Escolha .................................................... 23
4.3 EXERCÍCIOS ...................................................................................................... 27
4.4 TRABALHOS PRÁTICOS .................................................................................... 35
4.5 REFERÊNCIA BIBLIOGRÁFICA ......................................................................... 38
1
4 ESTRUTURA CONDICIONAL
Normalmente, as instruções de um programa são executadas uma após a
outra, na ordem em que são escritas. Esse processo é chamado de execução
sequencial. Várias declarações Java permitem especificar que a próxima instrução a
ser executada não seja necessariamente a próxima na sequência. Isto é chamado
de transferência de controle.
A ordem em que os comandos são executados em um programa em
execução é chamada de fluxo de controle. Como na maioria das linguagens de
programação, Java lida com o fluxo de controle com declarações de ramificação e
looping.
O Java contém três tipos de instruções de seleção. A instrução if realiza uma
ação se uma condição for verdadeira ou pula a ação se a condição for falsa. A
instrução if-else realiza uma ação se uma condição for verdadeira e realiza uma
ação diferente se a condição for falsa. A instrução de seleção switch realiza uma de
muitas ações diferentes, dependendo do valor de uma expressão.
A instrução if é uma instrução de uma única seleção porque seleciona ou
ignora uma única ação (ou um único grupo de ações). A instrução if-else é chamada
instrução de seleção dupla porque seleciona entre duas ações diferentes (ou grupos
de ações). A instrução switch é chamada de instrução de seleção múltipla uma vez
que seleciona entre muitas ações diferentes (ou grupos de ações).
4.1 EXPRESSÕES BOOLEANA
As declarações condicionais em Java permitem ao programador decidir qual
instrução será executada em seguida.
Cada decisão é baseada em uma expressão booleana, também chamada de
condição, no qual uma expressão é avaliada como verdadeira ou falsa. O resultado
da expressão determina que instrução será executada em seguida.
Todos os condicionais são baseados em expressões booleanas, que utilizam
operadores relacionais e lógicos para tomar decisões.
2
4.1.1 Operadores Relacionais
A tabela 1 apresenta os operadores relacionais utilizados em pseudocódigo
para estabelecer uma relação de comparação entre valores ou expressões. O
resultado dessa comparação é sempre um valor lógico (booleano) verdadeiro ou
falso.
Operador
Representação
Maior
>
Maior ou igual
>=
Menor
<
Menor ou igual <=
Igual a
=
Diferente de
<>
Tabela 1 – Operadores relacionais utilizado em pseudocódigo.
Java também tem vários operadores relacionais que permitem ao orograma
decidir a ordenação relativa entre dois valores. A tabela 2 mostra os operadores
relacionais utilizado em Java.
Operador
Representação
Maior que
>
Maior ou igual a
>=
Menor que
<
Menor ou igual a
<=
Igual a
==
Não igual a
!=
Tabela 2 – Operadores relacionais em Java.
Qualquer tipo em Java podem ser comparados usando o teste de igualdade
(==) e desigualdade (! =). Somente os tipos numéricos (inteiro, ponto flutuante e
operandos de caracteres) podem ser comparados com os operadores de ordenação.
Os operadores relacionais têm menor precedência que os operadores
aritméticos. Portanto, as operações aritméticas são avaliadas em primeiro lugar,
3
seguidas pelas operações de igualdade e relacionais. Como sempre, os parênteses
podem ser usados para especificar explicitamente a ordem de avaliação.
4.1.2 Operadores Lógicos
A tabela 3 apresenta os operadores lógicos utilizados em pseudocódigo para
concatenar ou associar expressões que estabelecem uma relação de comparação
entre valores. O resultado dessas expressões é sempre um valor lógico (booleano)
verdadeiro ou falso.
Operador
Representação
e
.e.
ou
.ou.
não
.não.
Tabela 3 – Operadores lógicos utilizados em pseudocódigo.
A avaliação das expressões nas quais são utilizados os operadores lógicos
está resumida na tabela-verdade apresentada na tabela 4.
Operador
.e.
.ou.
.não
Expressão
A=5
B<>9
A = 5 .e. B < > 9
A = 5 .ou. B < > 9
.não. A = 5
Resultados
.v.
.v.
.v.
.v.
.f.
.v.
.f.
.f.
.v.
.f.
.f.
.v.
.f.
.v.
.v.
.f.
.f.
.f.
.f.
.v.
possíveis
Tabela 4 – Tabela-verdade com os operadores lógicos E, OU e NÃO.
Os operadores lógicos booleanos mostrados na tabela 5 operam apenas em
operandos booleanos. Todos os operadores lógicos binários combinam dois valores
booleanos para formar um valor booleano resultante.
Operador
Representação
&
E lógico
|
OU lógico
4
Operador
Representação
^
XOR lógico (OU exclusivo)
||
OU
&&
E
!
Unário NÃO lógico
&=
Atribuição E
|=
Atribuição OU
^=
Atribuição XOR
Tabela 5 – Operadores lógicos em Java.
A tabela 6 mostra o efeito de cada operação lógica:
A
B
A|B
A&B
A^B
False
False
False
False
False
True
False
True
False
True
Fase
True
True
False
True
True
True
True
True
False
Tabela 6 – Exemplos de operações lógicas.
4.1.3 Precedência dos Operadores
Quando, em um algoritmo ou programa, uma expressão envolve mais de um
operador, a ordem da avaliação das expressões segue a precedência deles. A
precedência dos operadores define a ordem para execução das operações.
Para as operações aritméticas temos a seguinte ordem, que deve ser
avaliada sempre da esquerda para a direita.
1. São calculados os fatoriais.
2. São calculadas as funções, potência e raiz quadrada.
3. São calculadas as multiplicações e divisões.
4. São calculadas as adições e subtrações.
Exemplo:
5
Considerando B ← 5 e A ← 2. Substituindo as variáveis pelos valores
atribuídos:
.
1. As expressões
se
tem a mesma precedência. Então, calcula-
, obtém-se o valor 4 e em seguida 10mod3 e obtém-se 1, reconstruindo
a expressão com os valores obtidos: K ← 2 + 5 * 4 – 1.
2. Calcula-se 5 * 4 = 20, reconstruindo a expressão, tem-se K ← 2 + 20 – 1.
3. Todas as operações resultantes têm a mesma precedência. Dessa maneira
calculando da esquerda para a direta o resultado final é: K ← 21.
A tabela 7 mostra a ordem de precedência dos operadores, da mais alta
para a mais baixa. Os parênteses são usados para alterar a precedência de uma
operação. Em operações lógicas o operador .e. tem prioridade sobre o operador
.ou..
Operador
Função realizada
( ), [ ]
Parênteses e colchetes são usados para agrupar expressões,
determinando precedência.
^ ou **
Operador aritmético de potenciação.
*, /
Operadores aritméticos de multiplicação e divisão.
+, –
Operadores aritméticos de adição e subtração.
←
Operador de atribuição.
=, <, >, <=, >=, < >
Operadores relacionais.
.não.
Operador lógico de negação.
.e.
Operador lógico e
.ou.
Operador lógico ou
Tabela 7 – Ordem de precedência dos operadores.
4.2 ESTRUTURAS DE SELEÇÃO
As estruturas de seleção ou decisão são utilizadas quando existe a
necessidade de verificar condições para a realização de uma instrução ou de uma
sequência de instruções. Os testes de seleção também podem ser utilizados para
verificar opções de escolha.
6
A verificação de que uma condição é satisfeita e, a partir daí, a decisão em
relação à execução ou não de uma determinada sequência de comandos é
chamada de estrutura de seleção, estrutura de decisão ou comando de seleção.
Exemplo: supondo que uma pessoa esteja jogando um jogo de computador,
para que o jogador passe de uma fase (etapa) para outra, é necessário verificar se
ele atingiu a pontuação exigida. Assim, existe uma condição para a realização de
uma sequência de instruções para liberar o acesso à próxima fase do jogo.
Ao final do jogo, uma pergunta é feita: “Deseja continuar jogando?”. O
jogador poderá escolher entre as respostas sim ou não.
Uma decisão é o resultado da avaliação de uma expressão booleana. Toda
condição pode ser encarada como uma pergunta que pode ter a resposta verdadeiro
(.v.) ou falso (.f.).
As estruturas de seleção podem ser do tipo simples, composto ou
encadeado.
4.2.1 Estrutura Condicional Simples
São utilizadas para verificar se dada condição é atendida. Se for, um
conjunto de instruções deverá ser executado. Se não for, o fluxo de execução do
algoritmo seguirá após o fim do bloco de decisão.
A sintaxe básica da decisão unidirecional é:
se (condição) então [inicio do bloco de decisão]
conjunto de instruções
fim-se [fim do bloco de decisão]
O conjunto de instruções só será executado se a condição for verdadeira. A
figura 1 apresenta o fluxograma de uma estrutura condicional simples. Uma
condição é uma comparação que possui dois valores possíveis, verdadeiro ou falso.
condição
.V
.
Conjunto de
instruções
Fim
.F
.
Figura 1 – Fluxograma de uma estrutura condicional simples.
7
A instrução if é uma instrução de controle de uma única entrada e uma única
saída. A instrução if de uma única seleção realiza uma ação indicada somente
quando a condição é true; caso contrário, a ação é pulada.
Exemplo 1: Desenvolvimento de um algoritmo e programa Java que verifique
se um número fornecido pelo usuário é ímpar. Se for, exibir a mensagem “O número
_____ informado é ímpar”.
O quadro 1 apresenta o pseudocódigo para a solução do problema descrito
no exemplo 1.
Quadro 1 – Pseudocódigo para verificar se um número é ímpar
1
ALGORITMO N_IMPAR
2
DECLARE
3
NUMERO : INTEIRO
4
LEIA (NUMERO)
5
SE (NUMERO MOD 2 = 1) ENTÃO
6
ESCREVA (“O número informado é impar”)
7
FIM-SE
8
FIM Nº_IMPAR
O quadro 2 apresenta a classe Java que utiliza caixas de diálogo para
receber o número do usuário e devolver a mensagem informando se o número é
ímpar.
Quadro 2 – Classe Java que verifica se um número é ímpar
1
import javax.swing.JOptionPane;
2
public class impar {
3
public static void main(String args[]){
4
int numero;
5
numero = Integer.parseInt(JOptionPane.showInputDialog
6
("Digite um número"));
7
/*avalia se o número é impar
8
* ao verificar se o resto da divsão por 2
9
* é igual a 1
8
10
*/
11
if (numero % 2 == 1){
12
JOptionPane.showMessageDialog(null,
13
"O número "+numero+" é ímpar");
14
}
15
}
16
}
Exemplo 2: Desenvolvimento de um algoritimo e programa Java que
determine o maior de dois números dados. Suponha que o primeiro deles é o maior,
armazenando-o em uma variável MAIOR e depois, compare se o maior procurado é
o segundo dos números dados, neste caso o conteúdo da variável MAIOR deve ser
alterado.
O quadro 3 apresenta o pseudocódigo que representa o algoritmo para
resolver o problema enunciado acima.
Quadro 3 – Pseudocódigo para determinar o maior de dois números usando variável
1
ALGORITMO MAIOR_DE_DOIS
2
DECLARE
3
A, B, MAIOR : INTEIRO
4
ESCREVA (“Digite dois números: ”)
5
LEIA (A, B)
6
MAIOR ← A
7
SE (B > A) ENTÃO
8
MAIOR ← B
9
FIM-SE
10
ESCREVA (“O maior dos números”, A, “e”, B, “é”, MAIOR)
11
FIM MAIOR_DE_DOIS
O quadro 4 apresenta a classe Java que determina o maior de dois números
recebidos via console.
9
Quadro 4 – Classe Java que determina o maior de dois números usando variável
1
//importa para utilizar a classe Scanner
2
import java.util.*;
3
//o nome da nova classe
4
public class maior_de_dois {
5
//a função principal
6
public static void main(String args[]){
7
//declara entrada como Scanner, para ler do teclado
8
Scanner entrada = new Scanner(System.in);
9
//declara as três variáveis
10
int a, b, maior;
11
//exibe uma mensagem solicitando a digitação dos números
12
System.out.println("Digite dois números inteiros: ");
13
//armazena os números em a e b
14
a = entrada.nextInt();
15
b = entrada.nextInt();
16
//atribui a para maior
17
maior = a;
18
//verifica se b é maior que a
19
if (b > a){
20
//se for, atribui b para maior
21
maior = b;
22
}
23
//exibe a mensagem com os dois valores digitados e o valor de
maior
24
System.out.printf("O maior dos números %d e %d é %d",
a,b,maior);
25
26
}
}
Exemplo 3: Desenvolvimento de um algoritmo e programa que ordene os
conteúdos das variáveis X e Y. Só há necessidade de se realizar alguma ação se o
10
conteúdo de Y for maior que o conteúdo de X. Neste caso, deve-se fazer a permuta
dos conteúdos de X e de Y.
O quadro 5 apresenta o pseudocódigo para o problema descrito acima.
Quadro 5 – Pseudocódigo com algoritmo que ordena os conteúdos das variáveis X e Y
1
ALGORITMO ORDENA
2
DECLARE
3
X, Y, AUX : INTEIRO
4
ESCREVA (“Digite dois números: ”)
5
LEIA (X, Y)
6
ESCREVA (“Números digitados: X= ”, X, “ Y= ”, Y)
7
SE (X > Y) ENTÃO
8
AUX = X
9
X=Y
10
Y = AUX
11
FIM-SE
12
ESCREVA (“Números ordenados: X= ”, X, “Y= ”, Y);
13
FIM ORDENA
O quadro 6 apresenta a classe Java que faz a permuta dos conteúdos de X
e Y caso o conteúdo de Y seja maior que o de X.
Quadro 6 – Classe Java que ordena os conteúdos de duas variáveis, na ordem X e Y
1
//para usar a classe Graphics
2
import java.awt.*;
3
//para usar a classe JApplet e JOptionPane
4
import javax.swing.*;
5
//classe principal
6
public class ordena extends JApplet{
7
//declaração de variáveis de instância
8
int X, Y;
9
//método para receber informações
11
10
public void init(){
11
//variáveis que receberão dados digitados pelo usuário
12
String num1, num2;
13
//variável auxiliar para ordenação
14
int AUX;
15
//atribui o valor digitado para num1 e num2
16
num1 = JOptionPane.showInputDialog(
17
"Digite o valor de X");
18
num2 = JOptionPane.showInputDialog(
19
"Digite o valor de Y");
20
//atribui num1 e num2 para X e Y
21
X = Integer.parseInt(num1);
22
Y = Integer.parseInt(num2);
23
//mostra os valores de X e Y na ordem que foram digitados
24
JOptionPane.showMessageDialog(null,
25
"Números digitados: X "+X
26
+" Y "+Y);
27
//verifica se X é maior que Y
28
if (X > Y){//se for
29
//atribui X para a variável auxiliar
30
AUX = X;
31
//atribui Y para X
32
X = Y;
33
/*Y receberá o valor de X
34
* que ficou armazenado
35
* na variável auxiliar
36
*/
37
Y = AUX;
38
}
39
}
40
public void paint(Graphics g){
41
super.paint(g);
42
//desenha um retângulo
12
43
g.drawRect(10, 10, 200, 30);
44
//escreve os valores ordenados de X e Y
45
g.drawString("Números ordenados: X "+X
46
+" Y "+Y, 20, 30);
47
48
}
}
4.2.2 Estrutura Condicional Composta
A estrutura de seleção composta prevê dois conjuntos de instruções para
serem realizados de acordo com a avaliação da condição: um conjunto de instruções
que será realizado quando a condição resultar verdadeiro e um conjunto de
instruções para resultado falso.
se (condição) então
conjunto de instruções A
senão
conjunto de instruções B
fim-se
A figura 2 apresenta o fluxograma para estrutura de seleção composta. Se a
condição for verdadeira, será executado o conjunto de instruções A; caso contrário,
se a condição for falsa, será executado o conjunto de instruções B.
condição
.V.
.F.
Conjunto de
instruções A
Conjunto de
instruções B
Figura 2 – Fluxograma para estrutura de seleção composta.
Fim
13
A instrução de seleção dupla if-else permite que o programa especifique
uma ação a realizar quando a condição é verdadeira e uma ação diferente quando a
condição é falsa.
Exemplo 4: A empresa XSoftwares concedeu um bônus de 20% do valor do
salário a todos os funcionários com tempo de trabalho na empresa igual ou superior
a cinco anos, e 10% aos demais. O quadro 7 e o quadro 8 apresentam o
pseudocódigo e uma classe Java capaz de calcular e exibir o valor do bônus. Para
resolver o problema é necessário conhecer o valor do salário e o tempo de serviço
do funcionário.
Quadro 7 – Pseudocódigo com o algoritmo para calcular o valor do bônus
1
ALGORITMO PREMIO
2
DECLARE
3
SALARIO, BONUS : REAL
4
TEMPO : INTEIRO
5
LER (SALARIO)
6
LER (TEMPO)
7
SE (TEMPO >= 5) ENTÃO
BONUS ← SALARIO * 0.20
8
9
SENÃO
BONUS ← SALARIO * 0.10
10
11
FIM-SE
12
ESCREVA (“O valor do bônus é ”, BONUS)
13
FIM PREMIO
Quadro 8 – Classe Java que calcula e exibe o valor do bônus
1
import javax.swing.JOptionPane;
2
public class bonus {
3
public static void main(String args[]){
4
//declaração das variáveis necessárias para a resolução do
problema
5
float salario, premio;
6
int tempo;
14
7
//leitura (entrada) dos valores com as conversões adequadas
8
salario = Float.parseFloat(JOptionPane.showInputDialog(
9
"Salário"));
10
tempo = Integer.parseInt(JOptionPane.showInputDialog(
11
"Tempo de empresa"));
12
//avalia a condição:
13
14
if (tempo >= 5){
15
//se o resultado for verdadeiro
16
premio = salario * 0.20f;
17
}
18
else{
19
//se o resultado for falso
20
premio = salario * 0.10f;
21
}
22
JOptionPane.showMessageDialog(null, "O valor do bônus é:
"+premio);
23
24
}
}
Exemplo 5: Desenvolvimento do algoritmo e programa Java que calcule a
área de um triângulo, dados os comprimentos dos seus lados. Para os números
serem comprimentos dos lados de um triângulo, cada um deles precisa ser menor
que a soma dos outros dois.
O quadro 9 apresenta o pseudocódigo com o algoritmo que calcula a área
do triângulo a partir do comprimento dos seus lados.
Quadro 9 – Pseudocódigo para calcular a área do triângulo
1
ALGORITMO AREA_TRIANGULO
2
DECLARE
3
X, Y, Z, AREA, SEMIPER : REAL
4
ESCREVA (“Digite os comprimentos dos lados do triângulo: ”)
5
LEIA (X, Y, Z);
15
6
SE (X < Y + Z) .E. (Y < X + Z) .E. (Z < X + Y) ENTÃO
7
SEMIPER ← (X + Y + Z) / 2
8
AREA ←
9
ESCREVA (“A área do triângulo é:”,AREA:0:2);
10
11
SENÃO
ESCREVA (“Os valores não podem ser comprimentos dos lados de um
triângulo”);
12
FIM-SE
13
FIM AREA_TRIANGULO
O quadro 10 mostra a classe Java que calcula a área do triângulo. Essa
classe usa caixas de diálogos para receber os valores dos lados do triângulo. O
resultado da área do triângulo é exibido no formato com 3 casas decimais.
Quadro 10 – Classe Java que calcula a área do triângulo
1
//para usar a classe JOptionPane
2
import javax.swing.*;
3
//para formatar números reais
4
import java.text.DecimalFormat;
5
//classe principal
6
public class area_triangulo {
7
//função principal
8
public static void main(String args[]){
9
//num_real recebe o formato de número decimal
10
DecimalFormat num_real = new DecimalFormat ("0.000");
11
//declaração das variáveis
12
float x, y, z, area, semiper;
13
//atribuição dos valores para x, y e z
14
x = Float.parseFloat(JOptionPane.showInputDialog(
15
"Digite o primeiro lado: "));
16
y = Float.parseFloat(JOptionPane.showInputDialog(
17
"Digite o segundo lado: "));
16
18
z = Float.parseFloat(JOptionPane.showInputDialog(
19
"Digite o terceiro lado: "));
20
//verifica se cada lado é menor que a soma dos outros dois
21
if ((x < y+z) && (y < x+z) && (z < x+y)){//se for
22
//acha o semiperímetro
23
semiper = (x + y + z)/2;
24
//calcula a área
25
area = (float)Math.sqrt(semiper*
26
(semiper-x)*(semiper-y)*(semiper-z));
27
//exibe a área no formato de num_real
28
JOptionPane.showMessageDialog(null,
29
"A
área
do
triângulo
é:
"+num_real.format(area));
30
}
31
else{//caso a verificação seja falsa
32
//exibe a mensagem informando que não é um triângulo
33
JOptionPane.showMessageDialog(null,
34
"Os valores não podem ser comprimentos
dos lados de um triângulo");
35
}
36
37
}
}
4.2.2.1 Operador Condicional
O Java fornece o operador condicional ?:, que pode ser utilizado no lugar de
uma instrução if-else. Esse é o único operador ternário1 do Java. Juntos, os
operandos e o símbolo ?: formam uma expressão condicional.
O primeiro operando (à esquerda do ?) é uma expressão booleana, o
segundo operando (entre o ? e :) é o valor da expressão condicional se a expressão
1
Significa que ele recebe três operandos.
17
booleana for true, e o terceiro operando (à direita do :) é o valor da expressão
condicional se a expressão booleana for avaliada como false.
Exemplo 6: O quadro 11 apresenta uma classe Java que imprime ‘Aprovado’
se a média do aluno for maior ou igual a 60, mas imprime ‘Reprovado’ se for menor
que 60.
Quadro 11 – Classe Java usando operador condicional ternário
1
import java.util.Scanner;
2
public class mediaaluno {
3
public static void main(String args[]){
4
Scanner entrada = new Scanner(System.in);
5
float media;
6
System.out.print("Digite a média do aluno: ");
7
media = entrada.nextFloat();
8
System.out.println(media>=60 ? "Aprovado" : "Reprovado");
9
10
}
}
4.2.3 Estruturas Condicionais Endadeadas
Uma estrutura de seleção encadeada é uma sequência de testes de
seleção, os quais serão executados ou não de acordo com o resultado das
condições e com o encadeamento dos testes.
Um teste de seleção pode ter dois conjuntos de instruções, um para
resultado verdadeiro e outro para falso, porém esses conjuntos de instruções podem
conter outros testes de seleção, que, por sua vez, também podem conter outros, e
assim por diante.
se (condição_1) então
se (condição_2) então
conjunto de instruções A
senão
conjunto de instruções B
18
fim-se
senão
conjunto de instruções C
fim-se
Se a condição_1 resultar verdadeiro, então será realizado o teste da
condição_2; se esse teste resultar verdadeiro, será realizado o conjunto de
instruções A; se resultar falso, será realizado o conjunto de instruções B. Se o teste
da condição_1 resultar falso, será realizado o conjunto de instruções C.
A figura 3 apresenta o fluxograma que representa a descrição acima.
.V.
Condição
_1
Condição
_2
.F.
.V.
.F.
Conjunto de
instruções A
Fim
Conjunto de
instruções B
Conjunto de
instruções C
Figura 3 – Fluxograma para estrutura condicional encadeada.
Um programa Java pode testar múltiplos casos colocando instruções if-else
dentro de outras instruções if-else criando instruções if-else aninhadas.
Exemplo 7: Desenvolvimento de um algoritmo e programa que recebe três
valores fornecidos pelo usuário, que representam os lados de um triângulo. Verificase, então, se os valores formam um triângulo, classificando-o como:
a) equilátero: três lados iguais;
b) isósceles: dois lados iguais;
c) escaleno: três lados diferentes
Deve-se lembrar que, para formar um triângulo, nenhum dos lados pode ser
igual a zero, um lado não pode ser maior que a soma dos outros dois. O quadro 12
representa o pseudocódigo para resolver o exemplo, e o quadro 13 apresenta a
classe Java que verifica e classifica um triângulo válido.
Quadro 12 – Pseudocódigo que verifica e classifica uma triângulo válido
19
1
ALGORITMO TRIANGULO
2
DECLARE
3
A, B, C : INTEIRO
4
LER (A, B, C)
5
SE (A <> 0) .E. (B <> 0) .E. (C <> 0) ENTÃO
6
SE (A + B > C) .E. (A + C > B) .E. (B + C > A) ENTÃO
7
SE (A <> B) .E. (A <> C) .E. (B <> C) ENTÃO
8
ESCREVA (“É um triângulo escaleno”)
9
SENÃO
10
SE (A = B) .OU. (B = C) ENTÃO
ESCREVA (“É um triângulo equilátero”)
11
12
SENÃO
ESCREVA (“É um triângulo isósceles”)
13
14
FIM-SE
15
16
FIM-SE
SENÃO
ESCREVA (“Os valores não formam um triângulo”)
17
18
FIM-SE
19
ESCREVA (“Os valores não formam um triângulo”)
20
FIM-SE
21
FIM TRIANGULO
Quadro 13 – Classe Java que verifica e classifica um triângulo válido
1
import javax.swing.*;
2
public class triangulo {
3
public static void main (String args[]){
4
//declara as variáveis A, B e C
5
int A, B, C;
6
//inicializa as variáveis
7
A = Integer.parseInt(JOptionPane.showInputDialog("Lado A"));
8
B = Integer.parseInt(JOptionPane.showInputDialog("Lado B"));
9
C = Integer.parseInt(JOptionPane.showInputDialog("Lado C"));
20
10
//verifica se os lados não são iguais a zero
11
if (A != 0 && B != 0 && C != 0){
12
//verifica se um lado não é maior que a soma dos outros
dois
13
if (A+B > C && A+C>B && B+C > A){
14
//verifica se todos os lados são diferentes
15
if (A != B && A != C && B != C){
16
JOptionPane.showMessageDialog(null,
"Escaleno");
17
}
18
//caso não sejam todos diferentes
19
else{
20
//verifica se todos os lados são iguais
21
if (A == B && B == C){
22
JOptionPane.showMessageDialog(null,
"Equilátero");
23
}
24
//caso não sejam todos iguais
25
else{
26
JOptionPane.showMessageDialog(null,
"Isósceles");
27
}
28
}
29
}
30
//caso a soma de dois lados não seja maior que um dos
lados
31
else{
32
JOptionPane.showMessageDialog(null, "Não forma
um triângulo");
33
}
34
}
35
//caso algum dos lados seja igual a zero
36
else{
21
37
JOptionPane.showMessageDialog(null, "Não forma um
triângulo");
38
}
39
40
}
}
Exemplo 8: Desenvolvimento de um algoritmo e aplicativo Java que
determina as raízes de uma equação do segundo grau. Sabendo que uma equação
ax2 + bx + c = 0 só tem raízes reais se b2 – 4ac
do segundo grau, deve-se ter a
0. Além disso, para que ela seja
0.
No quadro 14 é apresentado o pseudocódigo que resolve o problema do
exemplo acima. O quadro 15 cria o aplicativo Java que executa o algoritmo.
Quadro 14 – Pseudocódigo que encontra as raízes de uma equação do segundo grau
1
ALGORITMO EQ_GRAU2
2
DECLARE
3
A, B, C, X1, X2, DELTA : REAL;
4
LEIA (A, B, C)
5
SE (A <> 0) ENTÃO
6
DELTA ←
7
SE DELTA >= 0 ENTÃO
8
X1 ←
9
X2 ←
ESCREVA (“Raízes da equação: ”, X1, “e ”, X2)
10
11
SENÃO
ESCREVA (“A equação dada não tem raízes reais”)
12
13
14
15
FIM-SE
SENÃO
ESCREVA (“A equação não é do segundo grau”)
16
FIM-SE
17
FIM EQ_GRAU2
22
Quadro 15 – Aplicativo Java que calcula e exibe as raízes de uma equação do segundo grau
1
//para ler do teclado
2
import java.util.Scanner;
3
//para formatar número decimal
4
import java.text.DecimalFormat;
5
//programa
6
public class eqgrau2 {
7
//principal
8
public static void main(String args[]){
9
//declara entrada para ler do teclado
10
Scanner entrada = new Scanner(System.in);
11
//declara num_real para números decimais
12
DecimalFormat num_real = new DecimalFormat("0.0");
13
//declaração de variáveis
14
float a, b, c, x1, x2, delta;
15
//recebe os valores da equação
16
System.out.println("Digite os valores de a, b e c: ");
17
//atribui os valores às variáveis
18
a = entrada.nextFloat();
19
b = entrada.nextFloat();
20
c = entrada.nextFloat();
21
//verifica se o valor de a é diferende de 0
22
if (a != 0){//se for diferente de 0
23
//calcula o valor de delta
24
delta = (float)Math.pow(b, 2)-4*a*c;
25
//verifica se delta é maior ou igual a 0
26
if (delta >= 0){//se for
27
//calcula as raízes
28
x1 = (-b+(float)Math.sqrt(delta))/2*a;
23
29
x2 = (-b-(float)Math.sqrt(delta))/2*a;
30
//exibe o valor das raízes
31
System.out.println("Raízes da equação: "+
32
num_real.format(x1)+" e "+
33
num_real.format(x2));
34
}
35
//se delta não for maior ou igual a 0
36
else{
37
//exibe a mensagem
38
System.out.println("A equação dada não tem raízes
reais");
39
}
40
}
41
//se a for igual a 0
42
else{
43
//exibe a mensagem
44
System.out.println("A equação não é do segundo grau");
45
}
46
47
}
}
4.2.4 Estruturas Condicionais de Múltipla Escolha
Uma estrutura de seleção de múltipla escolha (ou estrutura de seleção
homogênea) funciona como um conjunto de opções para escolha. Existem duas
maneiras para representá-la:
Utilizando a estrutura condicional encadeada da instrução if;
se (variável = tal_coisa_1) então
faça conjunto de instruções A
senão
se (variável = tal_coisa_2) então
24
faça conjunto de instruções B
senão
se (variável = tal_coisa3) então
faça conjunto de instruções C
senão
faça conjunto de instruções D
fim-se
fim-se
fim-se
Utilizando a estrutura com seleção de múltipla escolha da instrução
switch case.
escolha variável
caso tal_coisa_1:
faça conjunto de instruções A
caso tal_coisa_2
faça conjunto de instruções B
caso tal_coisa_3
faça conjunto de instruções C
caso contrário
faça conjunto de instruções D
fim-escolha
A segunda opção é a mais indicada. Cada rótulo da estrutura possui o
próprio bloco e é separado dele pela marca : (dois pontos). Todos os rótulos são
dispostos um nível de indentação2 acima no nível onde está a palavra chave escolha
(switch). Blocos de instruções dispõem-se um nível de indentação acima daquele
onde estão os rótulos.
Após a avaliação da expressão (ou variável) de controle um valor inteiro é
obtido, o rótulo com este valor selecionado e por fim o bloco executado. Quando a
execução encerra, ocorre um desvio para fora da estrutura para que outros blocos
não sejam executados. A figura 4 mostra a representação do fluxograma para a
estrutura condicional de múltipla escolha.
2
Espaço entre a margem e o início do texto em um parágrafo.
25
O Java oferece a instrução de múltipla seleção switch para realizar
diferentes ações baseadas nos possíveis valores de uma variável de inteiro ou
expressão. Cada ação está associada com o valor de uma expressão integral
constante (byte, short, int ou char) que a variável ou expressão em que a switch é
baseada pode assumir.
Tal_coisa_
1
Conjunto
de instruções A
...
Tal_coisa_
2
Conjunto
de instruções A
...
Tal_coisa_
3
Conjunto
de instruções A
...
Conjunto
de instruções D
Figura 4 – Fluxograma da estrutura condicional de múltipla escolha.
Exemplo 9: Desenvolvimento de um algoritmo e aplicativo Java que leia o
código de um produto e exiba seu nome de acordo com a tabela abaixo:
Código do produto Nome do produto
1
Caderno
2
Lápis
3
Borracha
Qualquer outro
Diversos
O quadro 16 apresenta o pseudocódigo que cria o algoritmo sugerido
usando seleção múltipla, e o quadro 17 apresenta o aplicativo Java que executa o
algoritmo.
Quadro 16 – Pseudocódigo para retornar dados de uma tabela
1
ALGORITMO PRODUTO
2
DECLARE
3
CODIGO : INTEIRO
4
LEIA (CODIGO)
5
ESCOLHA CODIGO
26
6
CASO 1 :
ESCREVA (“O produto é caderno”)
7
CASO 2 :
ESCREVA (“O produto é lápis”)
8
CASO 3 :
ESCREVA (“O produto é borracha”)
9
CASO CONTRÁRIO :
10
FIM-ESCOLHA
11
FIM PRODUTO
ESCREVA (“Diversos”)
Quadro 17 – Aplicativo Java que retorna dados de uma tabela com seleção múltipla
1
//para mostrar caixas de diálogo
2
import javax.swing.JOptionPane;
3
//programa
4
public class exibeproduto {
5
//principal
6
public static void main(String args[]){
7
//declaração de variáveis
8
int codigo;
9
String texto;
10
//atribuição do valor do código do produto
11
codigo = Integer.parseInt(JOptionPane.showInputDialog
12
("Digite o código do produto"));
13
//verifica o valor do código
14
switch (codigo){
15
//caso seja 1
16
case 1 :
17
//atribui a string à variável texto
18
texto = "O produto é caderno";
19
//interrompe o fluxo
20
break;
21
//caso seja 2
22
case 2:
23
//atribui a string à variável texto
24
texto = "O produto é lápis";
25
//interrompe o fluxo
27
26
break;
27
//caso seja 3
28
case 3:
29
//atribui a string à variável texto
30
texto = "O produto é borracha";
31
//interrompe o fluxo
32
break;
33
//caso o código não seja 1, 2 ou 3
34
default :
35
//atribui a string à variável texto
36
texto = "Diversos";
37
}
38
//exibe o conteúdo da variável texto
39
JOptionPane.showMessageDialog(null, texto);
40
41
}
}
O Java fornece a instrução break para alterar o fluxo de controle. A instrução
break ocasiona sua saída imediata da instrução. A execução continua com a
primeira instrução depois da instrução de controle.
4.3 EXERCÍCIOS
1. Dadas as expressões a seguir, identifique o resultado verdadeiro ou falso que
cada uma delas retornaria, em função dos valores dados.
A ← 2; B ← 7;
a) A = 3 .e. B = 7
d) A <= 2 .e. B = 7
b) A = 2 .e. B = 5
e) .não. A = 2 .e. B = 7
c) A < 3 .ou. B < > 7
f)
A < 5 .e. B > 2 .ou. B < > 7
2. Complete a tabela-verdade a seguir:
Operador
28
Expressão
A=4
B<>5
.e.
.ou.
.não.
A = 4 .e. B < > 5
A = 4 .ou. B < > 5
.não. A = 4
Resultados
possíveis
3. Preencha as lacunas:
a) A instrução __________ é utilizada para executar uma ação quando uma
condição for verdadeira e outra quando essa condição for falsa.
b) O Java requer que todas as variáveis tenham um __________.
c) A instrução __________ seleciona entre múltiplas ações com base nos
possíveis valores de uma variável ou expressão integrais.
d) O operador __________ pode ser utilizado para assegurar que duas
condições são verdadeiras antes de escolher certo caminho de execução.
4. Determine se cada uma das seguintes afirmações é verdadeira ou falsa. Se
falso, explique por que.
a) Um algoritmo é um procedimento para resolver um problema em termos das
ações a serem executadas e a ordem em que essas ações são executas.
b) Um conjunto de instruções dentro de um par de parênteses é chamado bloco.
c) Uma instrução de seleção especifica que uma ação deve ser repetida
enquanto algumas condições permanecem verdadeiras.
d) O pseudocódigo ajuda um programador a pensar sobre um programa antes
de tentar escrevê-lo em uma linguagem de programação.
e) O caso default é requerido na instrução de seleção switch.
f)
A instrução break é necessária no último caso de uma instrução de seleção
switch.
g) A expressão ((x>y)&&(a<b)) é verdadeira se x>y for verdadeira ou a<b for
verdadeira.
h) Uma expressão contendo o operador || é verdadeira se um ou ambos de seus
operandos forem verdadeiros.
i)
Para testar uma série de valores em uma instrução switch, utilize um hífen (–)
entre os valores inicial e final da série em um rótulo case.
29
5. Suponha que n1 e n2 são duas variáveis int que foram dadas valores. Adicione
uma expressão booleana que retorna verdadeiro se o valor de n1 é maior ou
igual ao valor de n2, caso contrário, ele deve voltar falso.
6. Suponha que n1 e n2 são duas variáveis int que foram dadas valores. Escreva
uma declaração if-else que exiba "n1" se n1 é maior ou igual a n2, e escreva "n2"
de outra forma.
7. Suponha var1 e var2 duas variáveis que receberam valores. Como teste se eles
são iguais quando as variáveis são do tipo int? Como testar se são iguais quando
as variáveis são do tipo String?
8. Suponha que proximaPalavra é uma variável String que recebeu um valor de
String que consiste inteiramente em letras. Escreva um código Java que exibe a
mensagem "Primeira metade do alfabeto", desde que proximaPalavra precede
"N" em ordem alfabética. Se proximaPalavra não preceder "N" em ordem
alfabética, o código deve emitir "Segunda metade do alfabeto". (Note-se que "N"
usa aspas para produzir um valor String, em vez de usar aspas simples para
produzir um valor de char).
9. Escreva uma instrução if-else que exiba como saída a palavra "passou" desde
que o valor da variável exame seja maior do que ou igual a 6,0 e também o valor
da variável programaConcluido seja maior do que ou igual a 1,0. Caso contrário,
a declaração if-else deve imprimir a palavra "falhou".
10. Escreva uma instrução if-else que exiba como saída a palavra "emergência"
desde que o valor da variável de pressao seja maior do que 160 ou o valor da
variável de temperatura seja maior do que ou igual a 40. Caso contrário, a
declaração if-else deve imprimir a palavra "OK".
11. Determine o valor verdadeiro ou falso, de cada uma das expressões booleanas
abaixo, assumindo que o valor da variável de contagem é 0 e o valor da variável
limite é 10.
a) (contagem == 0) && (limite < 20)
b) contagem == 0 && limite < 20
c) (limite > 20) || (contagem < 5)
d) !(contagem == 12)
e) (contagem == 1) && (x < y)
f)
(contagem < 10) || (x < y)
g) !( ((contagem < 10) || (x < y)) && (count >= 0) )
30
h) ((limite/contagem) > 7) || (limite < 20)
i)
(limite < 20) || ((limite/contagem) > 7)
j)
((limite/contagem) > 7) && (limite < 0)
k) (limite < 0) && ((limite/contagem) > 7)
12. A seguinte sequência produz uma divisão por zero?
int j = -1;
if ((j > 0) && (1/(j+1) > 10))
System.out.println(i);
13. O que está errado com o seguinte fragmento de código? Reescreva-o para que
ele produza uma saída correta.
if (total == MAX)
if (total < soma)
System.out.println ("total == MAX and < soma");
else
System.out.println ("total is not equal to MAX");
14. O que está errado com o seguinte fragmento de código? Este código compilará
se for parte de um programa? Explique.
if (tamanho = MIN_TAMANHO)
System.out.println ("O tamanho é mínimo.");
15. Qual saída é produzida pelos seguintes fragmentos de códigos?
a) int num = 87, max = 25;
if (num >= max*2)
System.out.println ("maçã");
System.out.println ("laranja");
System.out.println ("pêra");
b) int limit = 100, num1 = 15, num2 = 40;
if (limit <= limit)
{
if (num1 == num2)
System.out.println ("lemon");
System.out.println ("lime");
}
System.out.println ("grape");
16. Considere o seguinte trecho de código:
31
if(i == 10.0)
System.out.println("verdadeiro");
Qual das seguintes declarações da variável i irá compilar sem erros e imprimir
verdadeiro quando o programa é executado?
a) int i = 012;
b) int i = 10.0F;
c) int i = 10L;
d) int i = 10,0;
17. Considere o seguinte segmento de código:
Boolean b = null;
System.out.println(b ? true : false);
Qual das seguintes opções descreve corretamente o comportamento deste
segmento de código?
a) Este código irá resultar num erro do compilador, uma vez que um tipo de
referência (de tipo booleano) não pode ser usado como parte de expressão, para
verificação de estado.
b) Este código irá resultar em lançar um NullPointerException.
c) Este código irá imprimir verdade no console.
d) Este código irá imprimir falso no console.
18. Considere o seguinte programa:
class PrintlnTest {
public static void main(String[] args) {
String dois = "2";
System.out.println("1 + 2 + 3 + 4 = "
+ 1 + Integer.parseInt(dois) + 3 + 4); // ANALISE
}
}
Qual das seguintes opções descreve corretamente o comportamento desse
programa?
a) Quando compilado, este programa vai dar um erro do compilador em linha
marcada com comentários ANALISE por falta de um manipulador catch para
NumberFormatException.
b) Quando executado, o programa imprime o seguinte: 1 + 2 + 3 + 4 = 1234.
c) Quando executado, o programa exibe o seguinte: 1 + 2 + 3 + 4 = 10.
32
d) Quando executado, o programa imprime o seguinte: 1 + 2 + 3 + 4 = 127.
e) Quando executado, o programa imprime o seguinte: 1 + 2 + 3 + 4 = 19.
f) Quando executado, o programa lança um NumberFormatException na linha
marcada com comentário ANALISE.
19. Considere o seguinte programa e prever o resultado:
class Test {
public static void main(String []args) {
int a = 7, b = 10;
System.out.printf("no:%2$s and %1$s", a, b);
System.out.printf("\nno:2$s and 1$s", a, b);
}
}
a) no: 10 e 7
no: 2$s e 1$s
b) no: 7 e 10
no: 2$s e 1$s
c) no: 10 e 7
no: 10 e 7
d) no: 7 e 10
no: 7 e 10
e) Este programa irá resultar em erro do compilador (s).
20. Assinale V para verdadeiro ou F para falso:
(
)
Nas estruturas de controle, tais como as estruturas de seleção simples,
compostas ou encadeadas, é necessário verificar as condições para a
realização de uma instrução ou sequência de instruções.
(
)
A instrução de desvio incondicional realiza a transferência do controle da
execução para um lugar especificado no programa.
(
)
As instruções de seleção bidirecional e as construções de seleção
múltipla são tipos de instruções iterativas.
(
)
Seleção bidirecional e n-direcional ou múltipla são tipos de instruções de
seleção.
21. Verifique se um número fornecido pelo usuário é par ou impar. Apresente uma
mensagem mostrando o número digitado e o resultado do teste.
33
22. Um aluno realizou três provas de uma disciplina. Considerando o critério abaixo
faça um programa que mostre se ele ficou para exame. Em caso positivo, leia a
nota do exame e verifique se conseguiu a aprovação ou não.
Media = (prova1 + prova2 + prova3)/3
A média deve ser maior ou igual a 7,0. Se não conseguir, a nova média deve ser:
Final = (Media + Exame)/2
Nesse caso, a média final deve ser maior ou igual a 5,0.
23. A nota final de um estudante é calculada a partir de três notas atribuídas
respectivamente a um trabalho de laboratório, a uma avaliação semestral e a um
exame final. A média das três notas mencionadas anteriormente obedece aos
pesos a seguir:
Nota
Peso
Trabalho de laboratório
2
Avaliação semestral
3
Exame final
5
Faça um programa que receba as três notas, calcule e mostre a média
ponderada e o conceito que segue a tabela abaixo:
Média ponderada
Conceito
8,0 a 10,0
A
7,0 a 8,0
B
6,0 a 7,0
C
5,0 a 6,0
D
0,0 a 5,0
E
24. Faça um programa que recebe três notas de um aluno, calcule e mostre a média
aritmética e a mensagem que segue a tabela abaixo. Para alunos de exame,
calcule e mostre a nota que deverá ser tirada no exame para aprovação,
considerando que a média no exame é 6,0.
Média aritmética
Mensagem
0,0 a 3,0
Reprovado
3,0 a 7,0
Exame
7,0 a 10,0
Aprovado
25. Usando o operador condicional faça um programa que receba dois números e
mostre o maior.
34
26. Faça um programa que receba três números e mostre-os em ordem crescente.
27. Faça um programa que mostre o menu de opções a seguir, receba a opção do
usuário e os dados necessários para executar cada operação.
Menu de opções:
1. Somar dois números
2. Raiz quadrada de um número
Digite a opção desejada:
28. Faça um programa que receba o código corresponde ao cargo de um funcionário
e seu salário atual e mostre o cargo, o valor do aumento e seu novo salário. Os
cargos estão na tabela a seguir.
Código
Cargo
Percentual
1
Escriturário
5%
2
Secretário
3,5%
3
Caixa
20%
4
Gerente
10%
5
Diretor
Não tem aumento
29. Faça um programa que receba dois números e execute as operações listadas a
seguir de acordo com a escolha do usuário.
Escolha do usuário
Operação
1
Média entre os números digitados
2
Diferença do maior pelo menor
3
Produto entre os números digitados
4
Divisão do primeiro pelo segundo
Se a opção digitada for inválida, mostrar uma mensagem de erro e terminar a
execução do programa.
Lembre-se: na operação 4 o segundo número deve ser diferente de zero.
30. Uma agência bancária possui dois tipos de investimentos, conforme o quadro a
seguir. Faça um programa que receba o tipo de investimento e o valor do
investimento e que calcule e mostre o valor corrigido de acordo com o tipo de
investimento.
Tipo
Descrição
Rendimento mensal
1
Poupança
3%
2
Fundos de renda fixa
4%
35
4.4 TRABALHOS PRÁTICOS
1. Elabore um algoritmo para validação do CPF (cadastro de pessoa física). O
número do CPF é composto de 11 dígitos, sendo que os dois últimos são os
dígitos verificadores. A validação do CPF é feita por meio de cálculos com base
nos 9 primeiros dígitos. As etapas desse cálculo são descritas a seguir. Para isso
utilize o CPF exemplo ABC.DEF.GHI-XY.
Calculo do X
Multiplicar o dígito A por 10, o dígito B por 9, o dígito C por 8 e assim
sucessivamente. Até o dígito I, que deverá ser multiplicado por 2.
Calcular a soma entre todos os valores calculados no passo 1.
Dividir o valor obtido no passo 2 por 11. Essa divisão deve ser por inteiro.
Se o resto da divisão for menor que 2, o primeiro dígito verificador será 0.
Caso contrário, subtrai-se de 11 o valor obtido.
Calculo do Y
Multiplicar o dígito A por 11, o dígito B por 10, o dígito C por 9, e assim
sucessivamente até o dígito Y, que deverá ser multiplicado por 2.
Calcular a soma entre todos os valores calculados no passo 1.
Dividir o valor obtido no passo 2 por 11. Essa divisão deve ser por inteiros.
Se o resto da divisão for menor que 2, o primeiro dígito verificador será 0.
Caso contrário, subtrai-se de 11 o valor obtido.
2. Faça um programa que receba:
O código de um produto comprado, supondo que a digitação do código do
produto seja sempre válida (um número inteiro entre 1 e 10);
O peso do produto em quilos;
O código do país de origem, supondo que a digitação do código do país seja
sempre válida (um número inteiro entre 1 e 3).
Código do país de origem
Imposto
1
0%
2
15%
36
3
25%
Código do produto
Preço por grama
1a4
10
5a7
25
8 a 10
35
Calcule e mostre:
O peso do produto convertido em gramas;
O preço total do produto comprado;
O valor do imposto, sabendo-se que o imposto é cobrado sobre o preço total
do produto comprado e que depende do país de origem.
O valor total, preço total do produto mais imposto.
3. Faça um programa que receba o valor do salário mínimo, o número de horas
trabalhadas, o número de dependentes do funcionário e a quantidade de horas
extras trabalhadas. Calcule e mostre o salário a receber do funcionário de acordo
com as regras a seguir:
O valor da hora trabalhada é igual a 1/5 do salário mínimo;
O salário do mês é igual ao número de horas trabalhadas multiplicado pelo
valor da hora trabalhada;
Para cada dependente acrescentar R$ 27,24;
Para cada hora extra trabalhada calcular o valor da hora trabalhada acrescida
de 50%;
O salário bruto é igual ao salário do mês mais o valor dos dependentes mais
o valor das horas extras;
Calcular o valor do imposto de renda retido na fonte de acordo com a tabela a
seguir:
Salário bruto
IRRF
Isento
Até
1.499,15
de
R$
1.499,16
até
R$ 7,5%
2.246,76
até
R$ 15%
2.246,75
de
R$
2.995,70
R$
37
de
R$
2.995,71
até
R$ 22,5%
3.743,19
acima de R$ 3.743,19
27,5%
O salário líquido é igual ao salário bruto menos IRRF;
A gratificação de acordo com a tabela a seguir:
Salário líquido
Gratificação
até R$ 650,00
R$ 100,00
acima
de
R$ R$ 50,00
650,00
O salário a receber do funcionário é igual ao salário líquido mais gratificação.
4. Faça um programa que apresente o menu de opções a seguir:
Menu de opções:
1. Imposto
2. Novo salário
3. Classificação
Digite a opção desejada:
Permita ao usuário escolher a opção desejada, receba os dados necessários
para executar a operação e mostre o resultado. Verifique a possibilidade de
opção inválida e não se preocupe com restrições como salário negativo
Opção 1: receber o salário de um funcionário, calcular e mostrar o valor do
imposto usando as regras a seguir:
Salários
Percentual de imposto
até R$ 1.106,90
8%
de R$ 1.106,91 a R$ 1.844,83
9%
de R$ 1.844,84 a R$ 3.689,66
11%
Opção 2: receber o salário de um funcionário, calcular e mostrar o valor do novo
salário, usando as regras a seguir:
Salário
Aumento
Maiores que R$ 1.500,00
R$ 25,00
De R$ 750,00 (inclusive) até R$ 1.500 (inclusive)
R$ 50,00
De R$ 450,00 (inclusive) a R$ 750,00
R$ 75,00
Menores que R$ 450,00
R$ 100,00
38
Opção 3: receber o salário de um funcionário e mostrar sua classificação usando
a tabela a seguir:
Salário
Classificação
Até R$ 700,00 (inclusive)
Mal remunerado
Maiores que R$ 700,00
Bem remunerado
5. Considere a situação em que um cliente faz uma determinada compra em uma
loja. Ao realizar o pagamento, são-lhe oferecidas as seguintes condições para
pagamento:
Pagamento à vista: 15% de desconto sobre o valor total da compra.
Pagamento com cheque pré-datado para 30 dias: 10% de desconto sobre o
valor total da compra.
Pagamento parcelado em 3 vezes: 5% de desconto sobre o valor total da
compra.
Pagamento parcelado em 6 vezes: não tem desconto.
Pagamento parcelado em 12 vezes: 8% de acréscimo sobre o valor total da
compra.
De acordo com o valor total da compra, verifique a opção de pagamento do
cliente, calcule o valor final da compra e, se a escolha for por pagamento
parcelado, calcule também o valor das parcelas.
Apresente ao usuário uma mensagem com o valor total da compra, o valor final
da compra, a diferença entre os dois, identifique como desconto se a diferença
for positiva, como juros se for negativa, mostre, também, a quantidade e o valor
das parcelas.
4.5 REFERÊNCIA BIBLIOGRÁFICA
ASCENCIO, Ana F. G.; CAMPOS, Edilene A. V. Fundamentos da Programação de
Computadores. São Paulo: Pearson Prentice Hall.
DEITEL, Paul; DEITEL, Harvey. Java for Programmers, 2nd ed. Boston: Pearson
Education, 2012.
39
LEWIS, John; DEPASQUALE, Peter J.; CHASE, Joseph. Java Foundations:
Introduction to program design & data structures, 2nd ed. Boston: AddisonWesley, 2011
SAVITCH, Walter. Absolute Java, 5th Ed. Boston: Pearson, 2013.
SCHIDT, Herbert. Java: The Complete Reference, 7th Ed. New York: Mc Graw Hill,
2007.
Download