7/24/2019 Estrutura de deciso
1/31
Estruturas de Deciso
Programao em Java
Prof. Maurcio Braga
7/24/2019 Estrutura de deciso
2/31
2/31
Estruturas de deciso
Existem situaes em que desejamos que nem todos oscomandos includos em um programa sejamexecutados.
Nestas situaes, ensinamos o computador a tomardecises, optando ou no por executar determinadoscomandos.
Como os computadores no tomam decises sozinhos,devemos instru-lo a seguir um determinado caminho noprograma. Para isto necessrio o teste do resultado de uma expresso
lgica.
7/24/2019 Estrutura de deciso
3/31
3/31
Comando SE
Estrutura de deciso bsica em algoritmos
Sintaxe:
se ento ;
se ento seno;
ou
Apenas um dos dois
comandos executado
ComandoV executado
se expr_lgica avaliar
para Verdadeiro
7/24/2019 Estrutura de deciso
4/31
4/31
Comando SE em Java
if(condio) // onde condio pode ser uma expresso
{
Declaraes ou blocos}
else// caso a condio anterior no seja satisfeita
{
Declaraes ou blocos}
7/24/2019 Estrutura de deciso
5/31
5/31
Exemplo SE em Java
int x = 5, y = 10;
if(x >= y) {System.out.println(X maior ou igual a Y.);
}else {System.out.println(X menor que Y.);}
7/24/2019 Estrutura de deciso
6/31
6/31
Exemplo Comando SE com SENO
Fazer um programa que solicite ao usurio a sua idadee imprimir a mensagem Voc maior de idade se ela
tiver 18 anos ou mais, ou Voc menor de idade caso
contrrio.
7/24/2019 Estrutura de deciso
7/31
7/31
Exemplo SE com SENO em Javapublic static void main(String[] args) {
// declarao de variveisint idade=0;
System.out.println(Digite a sua idade:");Scanner s = new Scanner (System.in);idade=s.nextInt();
if (idade >=18) {System.out.println(Voc maior de idade.);
}else {System.out.println(Voc menor de idade.);
}}
7/24/2019 Estrutura de deciso
8/31
8/31
Comando SE
Exerccio: Faa um programa em Java que leia um nmero inteiro
informado pelo usurio e diga se ele par ou mpar.
Sugesto: Use o % (resto da diviso inteira) para saber se onmero par ou mpar.
7/24/2019 Estrutura de deciso
9/31
9/31
Soluopublic static void main(String[] args) {
// declarao de variveisint numero=0;
System.out.println(Fornea o nmero:");
Scanner s = new Scanner (System.in);numero=s.nextInt();
if (numero %2 == 0) {System.out.println(O nmero par.);
}else {System.out.println(O nmero mpar.);
}}
7/24/2019 Estrutura de deciso
10/31
10/31
Testes encadeados
Em determinadas situaes necessria a realizaode testes dentro de outros testes.
Normalmente esta necessidade surge da combinaode decises a serem tomadas.
Este tipo de estrutura chamado de encadeamento ouaninhamento.
Quando ocorre um encadeamento de testes, o programapossui um comando de deciso dentro de outro. Este comando mais interno pode estar localizado junto ao
ENTO ou junto ao SENO.
7/24/2019 Estrutura de deciso
11/31
11/31
Testes encadeados
Exemplos de encadeamento
seA > B ento
se K > M entoC = K
seno
C = M;...
se X < Y ento
S = X + Ysenose X < A + B
A = C;seno
B = C;
7/24/2019 Estrutura de deciso
12/31
12/31
Instrues de seleo
Problema do elseoscilante
int x = 8;
int y = 4;
if(x > 5)
if (y > 5)
System.out.println("x e y so > 5");
else
System.out.println("x
7/24/2019 Estrutura de deciso
13/31
13/31
Instrues de seleo
Problema do elseoscilante (cont.)
int x = 8;
int y = 4;
if(x > 5) {
if (y > 5)
System.out.println("x e y so > 5");
}else
System.out.println("x
7/24/2019 Estrutura de deciso
14/31
14/31
Instrues de seleo
Cuidado com blocos
if(media >= 7)
System.out.println("Aprovado");
else
System.out.println(Prova final necessria");
System.out.println(Verificar data na secretaria");
No funciona
como deveria
{
}Agora
est
correto
7/24/2019 Estrutura de deciso
15/31
15/31
Testes encadeados
Exemplo 4: Um quiosque de sorvetes vende casquinhas somente nos
sabores Chocolate (sabor = 1) e Morango (sabor = 2), no
permitindo misturar os sabores num mesmo sorvete. Faa umprograma para imprimir uma mensagem nas seguintessituaes: Sorvete de chocolate com mais de trs bolas: desconto de 10%;
Sorvete de chocolate com 3 ou menos bolas: desconto de 5%;
Sorvete de morango com qualquer quantidade de bolas: sorvetesem desconto.
7/24/2019 Estrutura de deciso
16/31
16/31
Testes encadeados
Para imprimir a mensagem correta, o programa precisasaber dois dados: o sabor do sorvete e a quantidade debolas.
Imprimir a mensagem correta requer testar as variveisde entrada.
7/24/2019 Estrutura de deciso
17/31
17/31
Testes encadeados Soluo (cont.)
O corpo do algoritmo ficaria assim:
Variveis
sabor : inteiro;
bolas : inteiro;Incio
escrever Entre com o sabor (1 ou 2): ;
lersabor;escrever Entre com a quantidade de bolas: ;ler bolas;se sabor = 1 ento
se bolas > 3 entoescrever Desconto de 10%seno
escrever Desconto de 5%;seno
escreverSorvete sem desconto;Fim
7/24/2019 Estrutura de deciso
18/31
18/31
Soluopublic static void main(String[] args) {
// declarao de variveisint sabor=0, qtd_bolas = 0;
System.out.println(Digite o sabor:");Scanner s = new Scanner (System.in);sabor=s.nextInt();System.out.println(Digite a quantidade:");qtd_bolas=s.nextInt();if (sabor == 1) {
if (qtd_bolas > 3)System.out.println(Desconto 10%.);
elseSystem.out.println(Desconto 5%.);
}else
System.out.println(Sorvete sem desconto.);
}
7/24/2019 Estrutura de deciso
19/31
19/31
Comando CASO
O comando caso til em situaes onde h necessidade de setestar uma mesma varivel (ou expresso) que possa conterdiversos valores
Cada valor exige a execuo de comandos diferentes. Uma expresso comparada a diversos valores de acordo com a
ordem definida.
Ao encontrar uma ocorrncia do valor correto, o comando relativo executado e o algoritmo segue para o fim do CASO.
Se nenhum dos valores for igual ao contedo da varivel, poderser executado um outro comando atravs do complemento SENO.
7/24/2019 Estrutura de deciso
20/31
20/31
Comando CASO
Sintaxe:
caso seja
: ; : ; : ;... : ;seno;
fimcaso;
7/24/2019 Estrutura de deciso
21/31
21/31
Comando CASO em Java
A sintaxe do switch:
switch(expresso)
{ caseconstante1:expresses;break;
caseconstante2:expresses;
break;default:expresses;
}
7/24/2019 Estrutura de deciso
22/31
22/31
Comando CASO
Exemplo: Dado o nmero de matrcula de um scio do clube Boa Social,
fornecido pelo usurio, faa um programa que imprima o ms de
pagamento da anuidade, de acordo com as condies abaixo. Final 0Pagamento em Janeiro;
Final 1Pagamento em Fevereiro;
Final 2Pagamento em Maro;
Final 3Pagamento em Abril;
Outro finalPagamento em Maio.
7/24/2019 Estrutura de deciso
23/31
23/31
Comando CASO
Soluo: Teremos que receber o nmero de matrcula do usurio e
identificar o ltimo dgito. Para isto podemos utilizar o resto da
diviso do nmero de matrcula por 10. Utilizar uma estrutura de deciso para imprimir corretamente o
ms de pagamento da anuidade. Podem ser utilizados o comando SE ou o comando CASO.
7/24/2019 Estrutura de deciso
24/31
24/31
Exemplo Caso em Javapublic static void main(String[] args) {
// declarao de variveisint matricula = 0, final_numero =0;
System.out.println("Fornea o nmero da matrcula:");Scanner s = new Scanner (System.in);matricula=s.nextInt();
final_numero = matricula % 10;
switch (final_numero) {
case 0:
System.out.println("Pagamento em Janeiro.");break;
case 1:
System.out.println("Pagamento em Fevereiro.");
break;
7/24/2019 Estrutura de deciso
25/31
25/31
Exemplo Caso em Java
case 2:System.out.println("Pagamento em Maro.");
break;
case 3:
System.out.println("Pagamento em Abril.");break;
default:
System.out.println("Pagamento em Maio.");
break;
}
}
7/24/2019 Estrutura de deciso
26/31
26/31
Comando CASO
Exerccio: Ler o nmero referente a um dia da semana e
imprimir a mensagem dia til ou fim-de-semana,considerando que 1 = domingo, 2 = segunda-feira,etc.
7/24/2019 Estrutura de deciso
27/31
27/31
Comando CASO
Soluo Para este programa, iremos utilizar algumas
facilidades providas pelo comando CASO. Usaremos o mesmo cdigo para dois ou mais valores da
varivel de controle do comando Caso.
7/24/2019 Estrutura de deciso
28/31
28/31
Exerccio Caso em Javapublic static void main(String[] args) {
// declarao de variveisint cod_dia = 0;
System.out.println("Entre com o cdigo do dia:");
Scanner s = new Scanner (System.in);cod_dia=s.nextInt();
switch (cod_dia) {
case 1:
case 7:
System.out.println("Fim de semana.");break;
7/24/2019 Estrutura de deciso
29/31
29/31
Exerccio Caso em Java
case 2:
case 3:case 4:
case 5:
case 6:
System.out.println("Dia til.");break;
default:
System.out.println("Cdigo invlido.");
}
}
7/24/2019 Estrutura de deciso
30/31
30/31
Comando CASO
Limitaes do comando CASO S pode ser usado para comparao de valores diretos e que
sejam inteiros.
No possvel comparar com nmeros fracionrios. possvel comparar com caracteres, que estaro entre aspas
simples (ex.: a, b, etc.).
Permite apenas comparaes de igualdade, no permitindo asdemais comparaes relacionais (maior que, menor que, etc.).
Compara apenas uma nica varivel ou expresso.
7/24/2019 Estrutura de deciso
31/31
Estruturas de Deciso
Programao em Java
Prof. Maurcio Braga