
Este texto-base aborda os seguintes temas:

Até agora, trabalhamos somente com programas que efetuam tarefas simples, como a realização de entrada e saída de dados e pequenos cálculos matemáticos. Você deve ter percebido que os algoritmos criados até aqui não possuem poder de decisão.
Em outras palavras, eles sempre executam as mesmas tarefas, independentemente dos resultados obtidos. Mas, na vida real precisamos tomar decisões que muitas vezes são difíceis e que podem alterar o rumo de nossas vidas. Quando falamos de programas, ocorre a mesma coisa.
Em programação, chamamos essas decisões de Estrutura de Decisão. No Java, chamamos de comando If. Estruturas de Decisão if (Se... Fim.)
As Estruturas de Decisão ou Testes Condicionais nos permitem executar um conjunto diferente de comandos dependendo do resultado de um teste utilizando operadores relacionais. Este resultado pode ser verdadeiro ou falso conforme indicado na tabela a seguir:
PSEUDOCÓDIGO | FLUXOGRAMA | JAVA |
---|---|---|
SE (condição) Então {comando(s)} Fim-Se |
![]() |
if (condição){ {comando(s)}; } |
Exemplificando...

Imagine que em um determinado trecho de um programa precisamos tomar uma decisão para saber se uma pessoa é maior de idade. O programa codificado é apresentado a seguir:
PSEUDOCÓDIGO | FLUXOGRAMA | JAVA |
---|---|---|
SE (idade >=18) Então Escreva (“Maior de idade”) Fim-Se |
![]() |
if (idade >=18){ JOptionPane.showMessageDialog(null, “Maior de idade”); } |
O comando condicional SE testa a condição idade >=18. Ou seja, se a idade for maior ou igual a 18 anos ENTÃO a condição é verdadeira (segue-se o caminho “sim”). Desse modo, será executado o comando Escreva (“Maior de idade”). Caso contrário (se a idade for menor que 18 anos), nada será feito (Fim-Se). Observando o fluxograma, você compreenderá com mais facilidade o que ocorre.
Você deve ter reparado, com base na sintaxe apresentada na tabela acima, que na programação Java a palavra SE é substituída pelo if e que a palavra Então é substituída por { . O comando Escreva é substituído por JOptionPane.showMessageDialog e, finalmente, o Fim-Se é substituído por }.
Agora, veja a codificação em Java de um programa completo:
import javax.swing.JOptionPane;
public class IfSimples {
public static void main(String[] args) {
//declaraçao de variáveis
int idade; // armazena a idade
String aux; //variável auxiliar
//entrada de dados
aux = JOptionPane.showInputDialog('Entre com a sua idade');
//conversão de tipos
idade = Integer.parseInt(aux);
//Decisão
if (idade >=18) {
JOptionPane.showMessageDialog(null, 'Maior de Idade');
}//fim do if
}//fim do main
}//fim da classe
Explicando a Estrutura de Decisão presente na linha 16, o comando de decisão if (idade >=18) irá executar o que estiver dentro das chaves até a linha 18, se e somente se o valor da idade for maior ou igual a 18. Caso contrário, não executará nenhum comando adicional e o programa será encerrado.
Se, ao executarmos o programa, digitarmos a idade de 18 anos, por exemplo:

Teremos o seguinte retorno:

Note que se a condição for falsa (Não) nenhum comando é executado.
(Se... Senão... Fim-se)
Você acabou de conhecer uma Estrutura de Decisão que realiza somente uma ação distinta caso o teste condicional seja verdadeiro. Contudo, em geral também costuma ser necessário que alguma ação seja realizada caso o teste condicional seja falso. Para isso, temos o comando if-else:
PSEUDOCÓDIGO | FLUXOGRAMA | JAVA |
---|---|---|
SE (condição) Então {comando(s) condição verdadeira} Senão {Comando(s) condição falsa} Fim-Se |
![]() |
if (condição){ {comando(s) condição verdadeira}; } else { {comando(s) condição falsa}; } |
Observando a tabela acima, você pode notar que, caso o teste lógico condicional falhe (ou seja, caso a condição não seja atendida), temos um comando ou grupo de comandos a serem executados: os comandos indicados após o Senão.

Considere o programa que analisava se uma pessoa era ou não maior de idade. Agora, porém, ele conta com comandos que serão executados se o teste condicional for falso.
PSEUDOCÓDIGO | FLUXOGRAMA | JAVA |
---|---|---|
SE (idade >=18) Então Escreva (“Maior de idade”) Senão Escreva (“Menor de idade”) Fim-Se |
![]() |
if (idade >=18){ JOptionPane.showMessageDialog (null, “Maior de idade”); } else { JOptionPane.showMessageDialog (null, “Menor de idade”); } |
Perceba que o exemplo é praticamente idêntico ao caso anterior, porém, se o teste condicional falhar (caso o resultado seja falso, seguindo a resposta “não” do fluxograma), executamos um comando que exibe a mensagem “menor de idade” para o usuário. Isso é feito por meio da utilização da cláusula Senão, no Pseudocódigo, e else, no Java.
Agora, veja o programa completo codificado em Java:
import javax.swing.JOptionPane;
public class ifComposto {
public static void main(String[] args) {
//declaraçao de variáveis
int idade; // armazena a idade
String aux; //variável auxiliar
//entrada de dados
aux = JOptionPane.showInputDialog("Entre com a sua idade");
//conversão de tipos
idade = Integer.parseInt(aux);
//Decisão
if (idade >=18) {
//comandos se a condição for verdadeira
JOptionPane.showMessageDialog(null, "Maior de Idade");
} else {
//comandos se a condição for falsa
JOptionPane.showMessageDialog(null, "Menor de Idade");
} // fim do if
}//fim do main
}//fim da classe
Se digitarmos 17 na caixa de diálogo, o resultado será:
O que aconteceria se precisássemos de mais de duas alternativas para resolver um problema?
Talvez você tenha reparado que em uma Estrutura de Decisão podemos ter somente duas saídas: verdadeiro ou falso. Mas o que ocorre quando necessitamos de uma saída com mais de duas alternativas simultaneamente? Essa situação é bastante comum e, para isso, usamos as Estruturas de Decisão Aninhadas, que consistem em utilizar um comando SE encadeado no interior de outro.
Pensando no software que analisa a maioridade de um indivíduo, suponha que você também queira verificar se a idade é igual a 18 anos. Veja como ficaria a codificação do programa:
PSEUDOCÓDIGO | FLUXOGRAMA | JAVA |
---|---|---|
SE (idade >=18) Então SE (idade = 18) Então Escreva (“Igual a 18”) Senão Escreva (“Maior de 18”) Fim-Se Senão Escreva (“Menor de idade”) Fim-Se |
![]() |
if (idade >=18){ if (idade==18){ JOptionPane.showMessageDialog (null, “igual a 18”); } else { JOptionPane.showMessageDialog (null, “Maior de 18”); } } else { JOptionPane.showMessageDialog (null, “Menor de idade”); } |
Note que ao executar a primeira tomada de decisão SE (idade>=18), em caso verdadeiro, sabe-se somente que a idade é maior ou igual a 18. Para saber se a idade é igual a 18, é necessária a execução de outra Estrutura de Decisão SE (idade=18). Em caso afirmativo, sabemos que é igual e em caso negativo, sabemos que é maior de 18. É isso que chamamos de Estrutura de Decisão Aninhada.
Agora, veja o programa completo codificado em Java:
import javax.swing.JOptionPane;
public class ifAninhado {
public static void main(String[] args) {
//declaraçao de variáveis
int idade; // armazena a idade
String aux; //variável auxiliar
//entrada de dados
aux = JOptionPane.showInputDialog("Entre com a sua idade");
//conversão de tipos
idade = Integer.parseInt(aux);
//Decisão
if (idade >=18) { // primeiro if
//comandos se a condição for verdadeira
if (idade == 18) { // segundo if
JOptionPane.showMessageDialog(null, "igual a 18");
}else {
JOptionPane.showMessageDialog(null, "Maior de 18");
}//fim do segundo if
} else {
//comandos se a condição for falsa
JOptionPane.showMessageDialog(null, "Menor de Idade");
} // fim do primeiro if
}//fim do main
}//fim da classe
Agora, veja esse segundo exemplo: suponha que você precise fazer um programa em que o usuário insira um número de 1 a 7 e o programa apresente qual é o dia da semana correspondente. Você sabe que domingo é o início da semana, correspondendo ao número 1 e assim sucessivamente.
Como você poderia resolver esse programa?
1. Primeiramente, você deve pensar nas variáveis necessárias:
Como o usuário deverá inserir um número de 1 a 7, é preciso que exista uma variável que vamos chamar de entrada.
Qual seria o tipo da variável entrada?
Se você pensou “inteiro”, acertou, pois a variável irá armazenar somente números inteiros.
Será que mais alguma variável é necessária?
A resposta é não, porque vamos fazer a saída diretamente imprimindo na tela.
2. Em seguida, pense no fluxograma, pois é mais fácil de entender e visualizar:

Você pode também optar por escrever o pseudocódigo. Escolha entre o fluxograma ou pseudocódigo, aquele que você preferir para simbolizar a sequência lógica do seu programa.
Programa Semana Declare dia como inteiro Início Escreva(“Digite um Número de 1 a 7”) Leia(dia) Se (dia = 1) Então Escreva (“Você escolheu domingo”) senão Se (dia = 2) Então Escreva (“Você escolheu segunda”) senão Se (dia = 3) Então Escreva (“Você escolheu terça”) senão Se (dia = 4) Então Escreva (“Você escolheu quarta”) senão Se (dia = 5) Então Escreva (“Você escolheu quinta”) senão Se (dia = 6) Então Escreva (“Você escolheu sexta”) senão Se (dia = 7) Então Escreva (“Você escolheu sábado”) senão Escreva(“Número Inválido”) Fim-Se Fim-Se Fim-Se Fim-Se Fim-se Fim-Se Fim-Se Fim.
3. Agora que você já pensou no problema na sua linguagem, fica mais fácil de traduzir para a linguagem Java. Veja:
import javax.swing.JOptionPane;
public class ifAninhadoSemana {
public static void main(String[] args) {
//declaração de variáveis
int dia; // variável para armazenamento da semana
//entrada de dados com conversão de tipos juntas
dia = Integer.parseInt(JOptionPane.showInputDialog("Entre com um número de 1 a 7"));
//processamento
if (dia == 1) { //if 1
JOptionPane.showMessageDialog(null, "Você escolheu Domingo");
} else {
if (dia == 2) { //if 2
JOptionPane.showMessageDialog(null, "Você escolheu Segunda");
} else {
if (dia == 3) { //if 3
JOptionPane.showMessageDialog(null, "Você escolheu Terça");
} else {
if (dia == 4) { //if 4
JOptionPane.showMessageDialog(null, "Você escolheu Quarta");
} else {
if (dia == 5) { //if 5
JOptionPane.showMessageDialog(null, "Você escolheu Quinta");
} else {
if (dia == 6) { //if 6
JOptionPane.showMessageDialog(null, "Você escolheu Sexta");
} else {
if (dia == 7) { //if 7
JOptionPane.showMessageDialog(null, "Você escolheu Sábado");
} else {
JOptionPane.showMessageDialog(null, "Número Inválido");
} // fim do if 7
} // fim do if 6
} // fim do if 5
} // fim do if 4
} // fim do if 3
} // fim do if 2
} // fim do if 1
} // fim do método main
} // fim da classe
Após observar os exemplos sobre Estruturas de Decisão Aninhadas, você deve estar se perguntando:
Existe alguma relação entre o número de alternativas e o número necessário de comparações a serem efetuadas?
Pare e reflita! Se você acredita que sim, você acertou! Existe sim uma relação. O número de comparações necessárias em um programa é o número de alternativas menos uma unidade. Ou seja, se temos 6 alternativas, teremos 5 comparações em nosso programa.
Até agora você viu como as Estruturas de Decisão se aplicam a situações que envolvem tipos numéricos, mas já pensou como poderíamos realizar comparações com uma sequência de caracteres em Java? Seria da mesma forma?
Na verdade, não. Para realizarmos uma comparação de um conteúdo de uma variável com uma String – sequência de caracteres – no Java, temos que utilizar um método especial: o .equals().
Mas como utilizamos o .equals()? Vejamos o exemplo abaixo:
import javax.swing.JOptionPane;
public class IfEquals {
public static void main(String[] args) {
//declaração de variáveis
String nome;
//entrada de dados
nome = JOptionPane.showInputDialog("Entre com um nome");
//Processamento e saída
if (nome.equals("Jose")) {
JOptionPane.showMessageDialog(null,"O Nome Digitado é Jose");
} else {
JOptionPane.showMessageDialog(null, "O nome digitado foi " + nome);
}
}
}
Note que na linha 14 utilizamos a expressão nome.equals(“Jose”), ou seja, estamos comparando se o valor armazenado na variável nome é igual a Jose. Se o usuário digitar qualquer outro nome, ou inclusive jose ou José o resultado da comparação é falso.
Então o .equals() é utilizado como:
<nomedavariável> .equals (valor a comparar)

Já sabemos que a lógica de programação possui mecanismos que nos permitem tomar decisões dentro de um algoritmo. Sabemos também que esses mecanismos são denominados “Estruturas de Decisão”. A novidade é que essas estruturas não se restringem a apenas o “se... senão...fim_se”.
E se tivéssemos uma decisão a ser tomada entre dez opções? Será que o “se...senão...fim_se” seria a solução mais apropriada para essa situação? Será que existe alguma outra estrutura mais adequada para esse tipo de ocorrência?
Existe sim! Essa estrutura é chamada de Selecione...caso...senão...fim_selecione e sua função principal é facilitar a escrita do algoritmo quando se tem muitos caminhos a serem seguidos a partir de uma decisão. Assim como a estrutura “se...senão...fim_se”, é necessário saber quando e como utilizar o “selecione...caso...senão...fim_selecione”.
A estrutura “selecione...caso...senão...fim_selecione” do pseudocódigo corresponde à estrutura switch-case do Java. Elas permitem que a seleção correta seja feita a partir da comparação entre o valor do conteúdo da variável e uma lista definida durante a programação. Ao encontrar a correspondência correta, os respectivos comandos são executados e as demais opções ignoradas.
PSEUDOCÓDIGO | FLUXOGRAMA | JAVA |
---|---|---|
Selecione Caso {variável} Caso condição 01 {comando(s)} Caso condição 02 {comando(s)} Caso condição 03 {comando(s)} ... Senão {comando(s)} Fim-Selecione |
![]() |
switch (variável){ case condição 01: {comando(s)}; break; case condição 02: {comando(s)}; break; case condição 03: {comando(s)}; break; ... default: {comando(s)}; } |
Se recapitularmos o último exemplo de Estrutura de Decisão Aninhada do tópico anterior, no qual o programa exibia o dia da semana de acordo com o número digitado pelo usuário, notamos que o código do programa fica relativamente confuso devido à grande quantidade de comandos de seleção (se). A tendência dessa confusão é aumentar conforme o número de comandos de decisão aninhados for crescendo. Isso, é claro, levando em conta que estamos realizando a comparação sempre com a mesma variável.
Para essas situações podemos utilizar a estrutura “selecione caso...senão...fim_selecione” do pseudocódigo ou a estrutura switch-case do Java.
Tanto as sintaxes em pseudocódigo quanto em Java são semelhantes como temos a seguir:
PSEUDOCÓDIGO | FLUXOGRAMA |
---|---|
Programa semana Declare dia como inteiro Início Escreva (“Digite um Número de 1 a 7”) Leia(dia) Selecione Caso (dia) Caso 1 Escreva (“Você Escolheu Domingo”) Caso 2 Escreva (“Você Escolheu Segunda”) Caso 3 Escreva (“Você Escolheu Terça”) Caso 4 Escreva (“Você Escolheu Quarta”) Caso 5 Escreva (“Você Escolheu Quinta”) Caso 6 Escreva (“Você Escolheu Sexta”) Caso 7 Escreva (“Você Escolheu Sábado”) Senão Escreva(“Número Inválido”) Fim-Selecione Fim. |
![]() |
Agora, veja o código em Java:
import javax.swing.JOptionPane;
public class caseDiaSemana {
public static void main(String[] args) {
//declaração de variáveis
int dia; // variável para armazenamento da semana
//entrada de dados com conversão de tipos juntas
dia = Integer.parseInt(JOptionPane.showInputDialog("Entre com um número de 1 a 7"));
//processamento
switch (dia) {
case 1:
JOptionPane.showMessageDialog(null, "Você escolheu Domingo");
break;
case 2:
JOptionPane.showMessageDialog(null, "Você escolheu Segunda");
break;
case 3:
JOptionPane.showMessageDialog(null, "Você escolheu Terça");
break;
case 4:
JOptionPane.showMessageDialog(null, "Você escolheu Quarta");
break;
case 5:
JOptionPane.showMessageDialog(null, "Você escolheu Quinta");
break;
case 6:
JOptionPane.showMessageDialog(null, "Você escolheu Sexta");
break;
case 7:
JOptionPane.showMessageDialog(null, "Você escolheu Sábado");
default:
JOptionPane.showMessageDialog(null, "Número inválido");
break;
}//fim do switch-case
} // fim do método main
} // fim da classe
Você percebeu que esse código corresponde ao utilizado no exemplo anterior, utilizando a Estrutura de Decisão “se”? Ambos têm o mesmo efeito prático, mas com a estrutura "caso", o código foi escrito de maneira mais elegante e o fluxograma permaneceu o mesmo sem alteração nenhuma.
Agora que você já estudou o conteúdo da unidade, assista ao vídeo do professor Sandro Valérius, preparado para o curso técnico de Informática, Módulo I - Agenda 13.