Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch ....

8

Click here to load reader

Transcript of Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch ....

Page 1: Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch . extends. JApplet {int. escolha; //opção do usuário quanto a forma de

A estrutura switch trata uma série de condições nas quais uma variável ou expressão particular é comparada com valores que ela pode assumir e diferentes ações são tomadas.Na maioria dos programas, é necessário incluir uma instrução break depois das instruções para cada case.Para fazer com que diversos cases executem as mesmas instruções, basta listar os rótulos de case juntos, antes das instruções.A estrutura switch só pode comparar com expressões constantes integrais.

SwitchA estrutura if de seleção única, a estrutura if / else de seleção dupla. Outra maneira de

indicar uma condição é através de uma declaração switch. A construção switch permite que uma única variável inteira tenha múltiplas possibilidades de finalização.

O algoritmo conterá uma série de decisões em que o algoritmo testa uma variável ou expressão separadamente para cada um dos vários valores integrais constantes (valores do tipo byte, short, int e char) que a variável ou expressão pode assumir e toma ações diferentes com base nesses valores. A estrutura de seleção múltipla switch trata uma tomada de decisão como está.

A declaração switch possui a seguinte forma:switch (variável_inteira) {case valor1:

instrução1;instrução2;...break;

case valor2:instrução1;instrução2;...break;

default:instrução1;instrução2;...break;

}Onde, variável_inteira é uma variável do tipo byte, short, char ou int. valor1, valor2, e

assim por diante, são valores constantes que esta variável pode assumir.Quando a declaração switch é encontrada, o fluxo de controla avalia inicialmente a

variável_inteira e segue para o case que possui o valor igual ao da variável. O programa executa todas as instruções a partir deste ponto, mesmo as do próximo case, até encontrar uma instrução break, que interromperá a execução do switch.

Se nenhum dos valores case for satisfeito, o bloco default será executado. Este é um bloco opcional. O bloco default não é obrigatório na declaração switch.

Ao contrário da declaração if, múltiplas instruções são executadas sem a necessidade das chaves que determinam o início e término de bloco {}.

Quando um case for selecionado, todas as instruções vinculadas ao case serão executadas. Além disso, as instruções dos case seguintes também serão executadas. Para previnir que o programa execute instruções dos outros case subsequentes, utilizamos a declaração break após a última instrução de cada case.

A decisão de usar uma declaração if ou switch é subjetiva. O programador pode decidir com base na facilidade de entendimento do código, entre outros fatores.

Page 2: Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch . extends. JApplet {int. escolha; //opção do usuário quanto a forma de

verdadeiro

verdadeiro

verdadeiro

falso

falso

falso

Uma declaração if pode ser usada para decisões relacionadas a conjuntos, escalas de variáveis ou condições, enquanto que a declaração switch pode ser utilizada para situações que envolvam variável do tipo inteiro. Também é necessários que o valor de cada cláusula case seja único.

Fluxograma da estrutura de seleção múltipla switch.

Exemplo 1: o applet abaixo demonstra o desenho de linhas, retângulos ou elipses com base em um inteiro que o usuário digita em uma caixa de diálogo de entrada.//pacotes do núcleo de Javaimport java.awt.Graphics;//pacotes de extensão de Javaimport javax.swing.*;

public class TesteSwitch extends JApplet {

int escolha; //opção do usuário quanto a forma de desenhar//inicializa o applet obtendo a escolha do usuáriopublic void init(){

String entrada; //valor digitado pelo usuário//obtém a opção do usuárioentrada = JOptionPane.showInputDialog(

"Digite 1 para desenhar linhas\n" +"Digite 2 para desenhar retângulos\n" +"Digite 3 para desenhar elipses\n");

//converte o que o usuário digitou em um intescolha = Integer.parseInt(entrada);

}//desenha formas no fundo do appletpublic void paint(Graphics g){

//chama a versão herdade do método paintsuper.paint(g);//repete 10 vezes, contando de 0 a 9for (int i = 0; i < 10; i++){

= valor1

Instruções bloco1

break

= valor2

Instruções bloco2

= valor3

Instruções bloco3

bloco default

break

break

Page 3: Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch . extends. JApplet {int. escolha; //opção do usuário quanto a forma de

//determina a forma a desenhar com base na opção do usuário

switch(escolha){case 1:

g.drawLine(10, 10, 250, 10 + i * 10);break; //fim do processamento do case

case 2:g.drawRect(10 + i * 10, 10 + i * 10,

50 + i * 10, 50 + i * 10);break; //fim do processamento do case

case 3:g.drawOval(10 + i * 10, 10 + i * 10,

50 + i * 10, 50 + i * 10);break;

default:g.drawString("Entrada de valor inválido",

10, 20 + i * 15);} //fim da estrutura switch

} // fim da estrutura for} // fim do método paint

} // fim da classe TesteSwitch

Entendendo o código: A variável escolha armazenará os dados de entrada do usuário

que determinam que tipo de forma desenhar em paint. O método init declara a variável local entrada do tipo String,

que armazenará o String que o usuário digita na caixa de diálogo de entrada.

o Se o usuário digitar 1 desenha linhas;o 2 desenha retângulos;o 3 desenha elipses.

Os dados de entrada são convertidos para um int e atribui o resultado a escolha. O método paint contém uma estrutura for que executa o laço 10 vezes.

Page 4: Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch . extends. JApplet {int. escolha; //opção do usuário quanto a forma de

Os valores de i para as 10 iterações do laço são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, o laço termina quando o valor de i se torna 10.

Aninhada no corpo da estrutura for há uma estrutura switch que desenha formas com base na leitura de um inteiro digitado pelo usuário no método init.

Quando o fluxo de controle alcança a estrutura switch, o programa avalia a expressão de controle (escolha) com cada rótulo case.

o Se o usuário digitar o inteiro 2, o programa compara o 2 com cada case no switch, se ocorrer uma coincidência o programa executa as instrução para aquele case.

o A estrutura switch encerra imediatamente com a instrução break. O programa incrementa a variável contador na estrutura for e reavalia a condição de

continuação do laço para determinar se deve executar outra iteração do laço.Exemplo 2: O programa solicita ao usuário que digite uma nota entre 80, 90 ou 100. Dependendo da nota digitada o programa exibe uma mensagem diferente, caso digite uma nota fora dessas aparece uma mensagem de falha.//chamada ao pacote que contém a classe Scannerimport java.util.Scanner;//define a classe e o método mainpublic class Nota {

public static void main(String args[]){//define a variável nota, que será criada a partir da

Classe Scanner e direciona para a entrada padrãoScanner nota = new Scanner(System.in);//mostra uma mensagem solicitando informação do usuárioSystem.out.println("Digite sua nota (100, 90 ou 80): ");//a variável nota chama o método que fará o recebimento do

dado digitado, transformando-o em um número inteiroint valNota = nota.nextInt();//recebe o valor da nota switch (valNota){//verifica se a nota é 100case 100:

//exibe a mensagemSystem.out.println("Excelente!");//interrompe a execução do switchbreak;

//verifica se a nota é 90case 90:

//exibe a mensagemSystem.out.println("Bom trabalho!");//interrompe a execução do switchbreak;

//verifica se a nota é 80case 80:

//exibe a mensagemSystem.out.println("Estude mais!");//interrompe a execução do switchbreak;

//se foi digitado outra notadefault:

//exibe a mensagemSystem.out.println("Desculpe, você não conseguiu.");

}//fim do switch}//fim do método main

}//fim da classeEntendendo o código:

A classe Scanner engloba diversos métodos para facilitar a entrada de dados através do teclado. Os principais métodos que podemos utilizar, neste caso, são:

Método Finalidade

Page 5: Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch . extends. JApplet {int. escolha; //opção do usuário quanto a forma de

next() Aguarda uma entrada em formato StringnextInt() Aguarda uma entrada em formato inteironextByte() Aguarda uma entrada em formato inteironextLong() Aguarda uma entrada em formato inteiro longonextFloat() Aguarda uma entrada em formato número fracionárionextDouble() Aguarda uma entrada em formato número fracionário

Exercícios:1. Obtenha do usuário três notas de exame e calcule a média dessas notas. Reproduza a média

dos três exames. Junto com a média mostre um :) no resultado se a média for maior ou igual a 60; caso contrário mostre :-(Faça duas versões deste programa:a) Use a classe Scanner para obter as notas do usuário, e System.out para mostrar o

resultado.b) Use JOptionPane para obter as notas do usuário e para mostrar o resultado.

2. Solicite ao usuário para digitar um número, e mostre-o por extenso. Este número deverá variar entre 1 e 10. Se o usuário introduzir um número que não está neste intervalo, mostre a mensagem: “Número inválido”.Faça duas versões deste programa:a) Use uma declaração if-else-if para resolver este problema.b) Use uma declaração switch para resolver este problema.

3. Localize o erro em cada um dos seguintes segmentos de código e explique como corrigi-los:a) switch (n) {

case 1:System.out.println(“O número é 1”);

case 2:System.out.println(“O número é 2”);break;

default:System.out.println(“O número não é 1 nem 2”);break;

}b) O código a seguir deve imprimir se o inteiro valor é par ou impar:

switch (valor % 2){case 0:

System.out.println (“Inteiro par”);case 1:

System.out.println (“Inteiro ímpar);}

4. Uma empresa de pedidos pelo correio vende cinco produtos diferentes cujos preços de varejo são:

Produto 1, R$ 2,98 Produto 2, R$ 4,50 Produto 3, R$ 9,98 Produto 4, R$ 4,49 Produto 5, R$ 6,87

Escreva um aplicativo que leia uma série de pares de números como segue:a) Número do produto;b) Quantidade vendida em um dia.O programa deve utilizar uma estrutura switch para ajudar a determinar o preço de varejo de cada produto. Ele deve calcular e exibir o valor total no varejo de todos os produtos vendidos na semana passada. Utilize um TextField para ler o número de produto digitado pelo usuário. Utilize um laço controlado por sentinela quando o programa deve parar de repetir o laço e exibir os resultados finais.

Page 6: Web view//pacotes de extensão de Java. import. javax.swing.*; public. class. TesteSwitch . extends. JApplet {int. escolha; //opção do usuário quanto a forma de

5. O que faz o seguinte programa?public class Imprimindo {

public static void main (String args[]){for (int i = 1; i <= 10; i++){

for (int j = 1; j <= 5; j++)System.out.print('*');

System.out.println();}

}}