Escolar Documentos
Profissional Documentos
Cultura Documentos
3
Estruturas Condicionais,
de Exceção e Repetição
42
if (<Condição>) {
<Instruções para condição verdadeira>
} else {
<Instruções para condição falsa>
}
A Figura 3.1 traz uma representação gráfica para ajudar o leitor a entender o funcionamento dessa
estrutura. Cada losango pode ser considerado uma instrução if que contém uma expressão lógica (con-
dição). Veja que dependendo do resultado da condição (verdadeira ou falsa) será executado um bloco
diferente (1 ou 2) de instruções. É importante entender também que toda estrutura if possui um início
e um final, nos quais os dois caminhos se encerram.
Início
[verdadeira] [falsa]
condição
bloco 1 bloco 2
Fim
Assim como a maioria das instruções em Java, o conjunto if-else deve ser utilizado com minúscu-
las e, caso haja apenas uma instrução a ser executada, tanto no if como no else, o uso das chaves é
desnecessário. Lembre-se de que as chaves são utilizadas quando um bloco de instruções precisa ser
executado, isto é, mais do que uma instrução.
A estrutura if-else apresentada não é a única válida, pois existem outras maneiras diferentes de se
criar essa estrutura: if sem o else, if com o else e if com o else aninhado. Compare as representações
gráficas dessas variações na Figura 3.2.
if sem else
Início Início
Fim Fim
Início
43
[verdadeira] [falsa]
condição
ERJ_Java_8.indb 43 31/03/2015 16:40:52
Java 8 – Ensino Didático: Desenvolvimento e Implementação de Aplicações
if com else
[verdadeira] [verdadeira]
[falsa] [falsa]
[verdadeira] [verdadeira]
[falsa] [falsa]
condição condição condição condição
Início Início
[verdadeira] [verdadeira]
[falsa] [falsa]
bloco 1 bloco 1 condição condição
[verdadeira] [verdadeira]
[falsa] [falsa]
bloco 2 bloco 2 condição condição
Fim Fim
44
45
ff Linhas 13 a 15: a instrução if verifica se o conteúdo da variável resp é igual a “Masculino” e mostra
a mensagem de “Você é homem”.
ff Linhas 16 a 18: a instrução if verifica se o conteúdo da variável resp é igual a “Feminino” e mostra
a mensagem de “Você é mulher”.
ff Linha 19: encerra a aplicação.
A Figura 3.3 ilustra a execução do Exemplo 3.1.
O Exemplo 3.2 mostra um uso prático do if-else para validar a entrada do usuário. São realizadas
três validações: em primeiro lugar, verifica se o usuário realmente entrou com um valor na caixa de diá-
logo, depois verifica se o valor digitado é numérico, logo a seguir verifica se esse valor está entre 1 e 12
(a faixa de valores possíveis, uma vez que um mês deve assumir apenas valores entre 1 e 12).
Exemplo 3.2 – Listagem da classe IfComElse
46
mensagem negativa (linha 12). Observe que no interior dos parênteses da instrução if existem
duas comparações unidas pelo operador lógico e (&&).
ff Dessa forma, quando o usuário fornecer um valor inteiro entre 1 e 12 aparecerá a mensagem in-
dicando que o mês é válido, caso contrário aparecerá a mensagem indicando que o mês é inválido.
A Figura 3.4 ilustra a execução do Exemplo 3.2.
O Exemplo 3.3 mostra como é possível criar uma estrutura em que cada instrução else realiza a
abertura de um novo if. Ao analisar essa estrutura, podemos notar que existe um (ou mais) if dentro de
um else.
Exemplo 3.3 – Listagem da classe IfComElseAninhado
47
switch (<expressão>){
case 1: instruções; break;
case 2: instruções; break;
case 3: instruções; break;
default: instruções;
}
Na primeira linha do switch é avaliado o resultado da expressão, que é comparado nas diretivas
case, executando o bloco de instruções quando a expressão coincidir com o valor colocado ao lado di-
reito do case. Em outras palavras, supondo que o valor da expressão seja igual a 2, serão executadas as
instruções localizadas entre case 2: e break. A cada case o programa compara o valor da expressão
com o valor colocado no case. Caso os valores sejam iguais, todas as instruções são executadas até que
se encontre uma instrução break, que encerra o switch e faz a execução do programa desviar para o
48
ponto após a chave de encerramento do switch. O programa percorre todas as diretivas case até que
uma delas seja igual à expressão inserida no switch. Caso nenhuma diretiva case possua o valor corres-
pondente da expressão, serão executadas as instruções localizadas na diretiva default que é opcional.
Veja a representação gráfica da estrutura do switch-case na Figura 3.5.
Início
<Expressão>
[verdadeira]
condição Instruções
[falsa]
[verdadeira]
condição Instruções
[falsa]
[verdadeira]
condição Instruções
[falsa]
Fim
O Exemplo 3.5 demonstra de forma clara a utilização da estrutura switch-case, simulando os meses
do ano, em que o usuário entra com um número e o programa retorna o mês correspondente por extenso.
Funcionalidades comentadas do Exemplo 3.5:
ff Linha 6: verifica se o usuário pressionou a tecla Cancel. Como você já sabe, se o usuário pressionar
esse botão a variável mes receberá o valor null.
ff Linha 7: switch (mes) significa: procure nas instruções case envolvidas pelas chaves se existe o
conteúdo armazenado na variável mes.
ff Observe que toda linha do case necessita da instrução break em seu final. Essa instrução faz com
que a execução da classe seja transferida para o final da estrutura switch (no caso a linha 21).
ff Caso nenhuma condição seja satisfeita, isto é, se o usuário entrou com um número diferente de 1
a 12, então a instrução default é executada (linha 18).
Observação
Uma questão importante para esse exemplo se refere ao uso do tipo String associado ao switch. Essa
funcionalidade tornou-se possível apenas a partir da versão 7 do Java. Isso significa que caso o Exemplo
3.4 seja executado numa versão inferior ocorrerá erro de compilação, pois a estrutura não será reconhe-
cida. Para tornar o exemplo compatível com a versão 6 ou inferiores, o conteúdo da variável mes deve ser
convertido para um tipo inteiro e armazenado em uma outra variável que será inserida no switch.
49
50