Parte deste material foi adaptado dos
conteúdos originais dos Professores Fábio Tirelo, Silvio Jamil e Theldo Cruz.
Material de Profa. Dulcinéia da Penha
1.
Estruturas de Decisão
à
Permite que os programas realizem um teste e depois executem comandos com base
no resultado do teste
à Condicional simples
se <condição > então
| <bloco de comandos 1>
fim se
Se a condição for verdadeira, o bloco de comandos é
executado. Se for falsa, nenhum comando do bloco será executado.
O próximo comando a ser executado será aquele após o
“fim se”.
à o comando if
if (condição_for_verdadeira){
<comandos>;
}
Se tiver apenas um comando, não precisa das chaves para
determinar o bloco de comandos.
Exemplo: Algoritmo para avaliar alunos
public class Exemplo01{
public static void main (String args[]){ int nota_final;
nota_final = 95;
if (nota_ final >= 60)
System.out.println (“O aluno foi aprovado.”);
if (nota_ final < 60)
System.out.println (“O aluno foi reprovado.”);
}//fim main
}//fim classe
Alternativas para
condições falsas em estruturas condicionais (if).
se
<condição > então
| <bloco de comandos 1> senão
| <bloco de comandos 2> fim
se
Primeiro avalia-se a condição. Se for verdadeira, apenas o
primeira bloco de comandos será executado; se for falsa, somente o segundo
bloco de comandos será executado.
O próximo comando a ser executado será aquele após o
“fim se”.
à o comando else
Executa o else se a condição_for_verdadeira for falsa
if (condição_for_verdadeira)
| comando1; else
| comando2;
ou
if (condição_for_verdadeira){
| lista_de_comandos1;
}
else{
| lista_de_comandos2;
}
a) Algoritmo para determinar se um número lido é menor que zero, está entre 10 e 100 ou é maior que 100.
public class Exemplo02{
public static void main (String args[]){
int num;
num = Integer.parseInt(JOptionPane.showInputDialog(“Digite um numero: “));
if (número < 0)
System.out.println ( “número menor que zero”);
else
System.out.println ( “número menor que zero”);
if (número < 10)
System.out.println ( “número > 0 e < 10”);
else
if (número < 100)
System.out.println ( “número > 10 e < 100”);
else
System.out.println (“número >= 100”);
}
}
b) Algoritmo para ler dois valores e determinar o maior
public class Exemplo03{
public static void main (String args[]){
int A, B;
A = Integer.parseInt(JOptionPane.showInputDialog(“Digite o primeiro numero: “)); B = Integer.parseInt(JOptionPane.showInputDialog(“Digite o segundo numero: “));
if (A > B)
System.out.println (“A é o maior”);
else
System.out.println (“B é o maior”);
}//fim main
}//fim classe
Quando
o programa Exemplo03 for executado, o usuário informará dois números e o
sistema informa qual dos dois é maior. O que acontecerá durante a execução
deste programa quando o usuário digitar A = 2 e B = 2?
Neste
caso, o programa imprimirá a mensagem “B é maior do que A”. Essa mensagem não é
correta, uma vez que os dois números são iguais. O que é necessário alterar
neste programa para que a mensagem correta seja impressa?
Observe o
programa Exemplo04.
c) Algoritmo para ler dois valores e escrever se o primeiro é maior do que o segundo, se o segundo é maior do que o primeiro, ou se os dois números são iguais.
public class Exemplo04{
public static void main (String args[]){
int A, B;
A = Integer.parseInt(JOptionPane.showInputDialog(“Digite o primeiro numero: “)); B = Integer.parseInt(JOptionPane.showInputDialog(“Digite o segundo numero: “));
if (A > B)
System.out.println(“O primeiro número é maior que o segundo”);
if (A < B)
System.out.println (“O segundo número é maior que o primeiro”);
else
System.out.println (“Os números são iguais”);
}//fim main
}//fim classe
Este programa está correto? Qual será a saída do programa
quando o usuário informar A = 2 e B = 5? O programa testará o primeiro if, a condição é falsa, então ele não escreve
a mensagem na tela. Então
o programa testará
o segundo if, como A é menor do que B, a condição é verdadeira e o programa
exibirá a mensagem “O segundo número é maior do que o primeiro”. Observe que
para este caso, o resultado do programa está
correto.
Por outro lado, qual será a saída do programa quando o
usuário informar A = 2 e B = 2? No primeiro if, a condição é falsa, então o programa não exibe a mensagem. No segundo
if, a condição também é falsa, e, como
este if tem um else correspondente (é executado quando a condição do if não for satisfeita), a mensagem do else é exibida, ou seja, o programa imprime na tela: “Os números são
iguais”. Para este caso, o resultado do programa também está correto.
No entanto, qual será a saída do programa quando o usuário
informar A = 5 e B = 2? A condição do primeiro if é satisfeita (verdadeira), então o programa imprime
na tela: “O primeiro
número é maior do que o segundo”.
Então o programa segue o seu
fluxo e testa se “A < B” no segundo if. O que acontecerá neste ponto do programa? A condição do if não é satisfeita, uma vez que A não é menor
que B. No entanto este if possui um else correspondente. O else é executado
sempre que a condição do if não for satisfeita, o que é o caso deste exemplo.
Deste modo, o programa
exibirá em seguida:
“Os números são iguais”.
Observe que a saída deste programa está incorreta para todos
os casos em que o primeiro número é
maior do que o segundo, uma vez que será impresso na tela:
“O primeiro número é
maior do que o segundo” “Os números
são iguais”
Observe agora o programa
Exemplo05. Qual será a saída exibida por este programa para os casos em que A
> B, B > A e A = B?
d) Algoritmo para ler dois valores e escrever se o primeiro
é maior do que o segundo, se o segundo é
maior do que o primeiro,
ou se os dois números são iguais.
public class Exemplo05{
public static void main (String args[]){
int A, B;
A = Integer.parseInt(JOptionPane.showInputDialog(“Digite o primeiro numero: “)); B = Integer.parseInt(JOptionPane.showInputDialog(“Digite o segundo numero: “));
if (A > B)
System.out.println(“O primeiro número é maior do que o segundo”);
else
if (A < B)
System.out.println(“O segundo número é maior do que o primeiro”);
else
System.out.println(“Os números são iguais”);
}//fim main
}//fim classe
à if aninhados
if (condição 1)
instrução;
else
if (condição 2)
instrução;
else
if (condicao 3) ...
à Como o computador decide de qual if o else pertence?
Quando
z = b será executado? else é sempre associado ao if mais interno (mais próximo)
Comentários