Módulo 2 - Decisões que se ramificam

Decisões dentro de decisões

8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 08/07/2026

O que você vai aprender

  • Entender quando uma decisão deve ficar dentro de outra.
  • Ler o encaixe de SE dentro de SE acompanhando a indentação.
  • Diferenciar aninhamento (uma condição depende da outra) de escada (faixas do mesmo valor).
  • Perceber o custo do aninhamento profundo e a necessidade de domá-lo.

Perguntas que só fazem sentido em sequência

Pense no acesso a um aplicativo. A primeira pergunta é: esse usuário existe no sistema? Só se a resposta for sim é que a segunda pergunta faz sentido: a senha digitada está correta? Não adianta testar a senha de um usuário que não existe. As duas decisões estão em sequência, uma dependendo da outra, e é isso que o aninhamento representa: a segunda decisão mora dentro do bloco verdadeiro da primeira. Se o usuário não existe, o programa nem chega a olhar a senha, exatamente como na vida real.

se usuario_existe então
  se senha_correta então
    escreva("Bem-vindo")
  senão
    escreva("Senha errada")
  fim
senão
  escreva("Usuário não encontrado")
fim

A decisão da senha vive DENTRO do bloco do usuário existe. Repare no recuo que marca o encaixe.

Árvore de decisão com dois níveis. O primeiro losango pergunta usuário existe; pelo não, sai direto para usuário não encontrado. Pelo sim, chega a um segundo losango, senha correta, que se ramifica em bem-vindo (sim) e senha errada (não). O segundo losango está desenhado dentro de uma área recuada, mostrando o aninhamento.
A pergunta da senha só aparece no ramo em que o usuário existe. É o aninhamento desenhado.

Siga a indentação para não se perder

O maior risco do aninhamento não é a máquina se confundir, é você. Com dois, três, quatro níveis de SE dentro de SE, fica difícil enxergar qual senão pertence a qual se. A ferramenta que salva é a indentação: cada nível mais interno recua um pouco mais para a direita. Quando bater a dúvida sobre a que decisão um senão pertence, alinhe o dedo na vertical: o senão pertence ao se que está no mesmo recuo. Ler pseudocódigo aninhado é, em boa parte, ler o desenho que a indentação forma.

🎮 Jogo da aula

Siga o encaixe

Duas decisões aninhadas decidem se a viagem sai. Acompanhe os dois níveis com os valores dados e escolha a saída.

tem_passagem <- verdadeiro
tem_bagagem_ok <- falso
se tem_passagem então
  se tem_bagagem_ok então
    escreva("Embarque liberado")
  senão
    escreva("Resolva a bagagem")
  fim
senão
  escreva("Compre a passagem")
fim

Vale distinguir aninhamento de escada, porque parecem primos mas resolvem coisas diferentes. A escada senão-se testa o MESMO valor contra várias faixas (a nota é A, B ou C). O aninhamento testa condições DIFERENTES que dependem uma da outra (o usuário existe e, se existe, a senha bate). Uma dica rápida: se as condições são independentes e do mesmo assunto, provavelmente é escada; se uma só faz sentido depois da outra, é aninhamento. Confundir os dois costuma gerar código mais embolado do que o necessário.

O custo do aninhamento profundo

Aninhar é natural e útil, mas tem um preço quando exagera. Cada nível novo empurra o código mais para a direita e adiciona um par se/fim para a sua cabeça rastrear. Três níveis ainda se leem bem. A partir de quatro ou cinco, o pseudocódigo vira uma seta apontando para o canto da tela, e a chance de ligar um senão ao se errado dispara. Programadores chamam isso, com humor, de código flecha, pela forma de ponta que a indentação desenha. A boa notícia é que existe um antídoto elegante, a cláusula de guarda, que você aprende na última aula deste módulo.

Aninhamento saudável

  • Um ou dois níveis, cada um com motivo claro.
  • A indentação cabe na largura da tela.
  • Fácil dizer a que se cada senão pertence.

Aninhamento exagerado

  • Quatro, cinco níveis empilhados.
  • O código escorrega para o canto direito (código flecha).
  • Alto risco de ligar um senão ao se errado.

Teste rápido

Você precisa decidir: se o cliente é VIP, e SÓ nesse caso, verificar se ele tem cupom para dar desconto extra. Qual estrutura representa melhor essa lógica?

Perguntas frequentes

Quando devo aninhar em vez de usar duas condições com E?
Se as duas condições precisam ser verdadeiras e você quer a mesma resposta para qualquer falha, um único SE com E resolve e fica mais simples. Aninhe quando cada nível precisa de um tratamento diferente ao falhar: usuário inexistente dá uma mensagem, senha errada dá outra. Aí o aninhamento separa bem os casos.
Como sei a que SE um senão pertence?
Pela indentação: o senão pertence ao se que está no mesmo nível de recuo. Alinhe o dedo na vertical entre o senão e o se acima que compartilha o mesmo recuo. É por isso que manter a indentação arrumada não é firula, é o que torna o código legível.
Aninhamento deixa o programa mais lento?
Praticamente nada. O custo do aninhamento é para o ser humano que lê, não para a máquina que executa. O problema do aninhamento profundo é a legibilidade e a chance de erro de quem escreve e mantém, não a velocidade. Por isso o antídoto (cláusula de guarda) é sobre clareza, não desempenho.
Qual a diferença prática entre aninhamento e escada senão-se?
A escada testa o mesmo valor contra faixas que se excluem (nota A, B, C). O aninhamento testa condições diferentes e dependentes, uma dentro do resultado da outra (existe o usuário e, então, a senha confere). Se uma condição só faz sentido depois da outra, é aninhamento.
Existe um limite de níveis de aninhamento?
A linguagem costuma permitir bastante, mas a legibilidade impõe o limite real. A recomendação prática é evitar passar de dois ou três níveis. Quando o código começa a escorregar para o canto direito da tela, é hora de refatorar com cláusulas de guarda ou separar parte da lógica numa função.
Posso misturar escada e aninhamento?
Pode, e é comum. Dentro do ramo verdadeiro de uma decisão pode morar uma escada senão-se, e dentro de um degrau da escada pode morar outra decisão. O importante é manter a indentação clara para que a estrutura continue legível conforme ela cresce.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.