Módulo 1 · Lógica de Programação — Capítulo 05

Estruturas de Decisão

Decisão é o que dá "inteligência" a um algoritmo: a capacidade de seguir caminhos diferentes dependendo dos dados. Aqui você aprende SE/ENTÃO/SENÃO, decisões encadeadas e a estrutura de múltipla escolha.

1. A estrutura SE / ENTÃO

A forma mais simples de decisão testa uma condição e executa um bloco de passos apenas se ela for verdadeira. Se a condição for falsa, o bloco inteiro é simplesmente ignorado.

PSEUDOCÓDIGO se-simples.txt
INÍCIO
    LEIA idade

    SE idade >= 18 ENTÃO
        ESCREVA "Você é maior de idade."
    FIM SE

    ESCREVA "Fim do programa."
FIM

Repare: se idade for 15, a linha ESCREVA "Você é maior de idade." nunca executa, mas o programa continua normalmente depois do FIM SE e chega em "Fim do programa." de qualquer forma.

2. SE / ENTÃO / SENÃO

Na prática, quase sempre você quer definir também o que fazer quando a condição é falsa. É para isso que existe o SENÃO: ele define um segundo caminho, que roda exatamente quando o primeiro não roda. Os dois caminhos são mutuamente exclusivos — só um deles executa por vez.

PSEUDOCÓDIGO se-senao.txt
INÍCIO
    LEIA nota

    SE nota >= 6 ENTÃO
        ESCREVA "Aprovado."
    SENÃO
        ESCREVA "Reprovado."
    FIM SE
FIM

Veja o mesmo algoritmo como fluxograma — o losango é o único ponto onde o caminho se divide, e os dois ramos nunca executam ao mesmo tempo:

INÍCIO LEIA nota nota >= 6? sim Aprovado não Reprovado FIM

Fig. 1 — SE/ENTÃO/SENÃO: o fluxo se divide em dois ramos exclusivos e volta a se juntar antes do fim.

3. Decisões encadeadas: SENÃO SE

Quando existem mais de duas possibilidades, encadeamos vários testes com SENÃO SE. Cada condição só é testada se todas as anteriores foram falsas — e assim que uma bate, as demais nem são avaliadas.

PSEUDOCÓDIGO senao-se.txt
INÍCIO
    LEIA nota

    SE nota >= 9 ENTÃO
        ESCREVA "Conceito A"
    SENÃO SE nota >= 7 ENTÃO
        ESCREVA "Conceito B"
    SENÃO SE nota >= 5 ENTÃO
        ESCREVA "Conceito C"
    SENÃO
        ESCREVA "Conceito D"
    FIM SE
FIM

Repare a ordem: os testes vão do mais restritivo para o mais amplo (>= 9 antes de >= 7). Se invertêssemos a ordem, uma nota 9.5 cairia no primeiro teste >= 5 e nunca chegaria a ser avaliada como Conceito A — um erro de lógica muito comum ao encadear decisões.

Atenção

Em um encadeamento SENÃO SE, apenas um bloco executa, mesmo que a condição de mais de um deles seja verdadeira — vale sempre a primeira que bater. Isso é diferente de escrever vários SE separados e independentes, onde cada um seria testado e poderia executar, ainda que os outros também tenham executado.

4. Decisões aninhadas

É possível colocar um SE inteiro dentro do bloco de outro SE — isso se chama aninhamento. Use quando uma segunda decisão só faz sentido depois que a primeira já foi confirmada.

PSEUDOCÓDIGO aninhado.txt
INÍCIO
    LEIA idade
    LEIA temCarteira

    SE idade >= 18 ENTÃO
        SE temCarteira ENTÃO
            ESCREVA "Pode dirigir."
        SENÃO
            ESCREVA "Maior de idade, mas sem carteira."
        FIM SE
    SENÃO
        ESCREVA "Menor de idade, não pode dirigir."
    FIM SE
FIM
Comparando com o que você já sabe

O exemplo acima poderia ser reescrito sem aninhamento, usando E: SE idade >= 18 E temCarteira. Ambas as formas são válidas — aninhamento fica melhor quando cada nível de decisão tem uma mensagem ou ação diferente para cada caso; operador E fica melhor quando o resultado final é o mesmo independente de qual condição falhou. Esse mesmo trade-off existe em JS, C#, Python — é uma decisão de legibilidade, não de sintaxe.

5. Múltipla escolha

Quando uma mesma variável é comparada contra vários valores possíveis, encadear SENÃO SE repetidamente fica repetitivo. Para esse caso, muitas linguagens oferecem uma estrutura de múltipla escolha, que em pseudocódigo vamos chamar de ESCOLHA:

PSEUDOCÓDIGO escolha.txt
INÍCIO
    LEIA diaDaSemana

    ESCOLHA diaDaSemana
        CASO 1: ESCREVA "Domingo"
        CASO 2: ESCREVA "Segunda-feira"
        CASO 3: ESCREVA "Terça-feira"
        CASO 4: ESCREVA "Quarta-feira"
        CASO 5: ESCREVA "Quinta-feira"
        CASO 6: ESCREVA "Sexta-feira"
        CASO 7: ESCREVA "Sábado"
        SENÃO: ESCREVA "Dia inválido"
    FIM ESCOLHA
FIM

Essa estrutura existe, com nomes diferentes, na maioria das linguagens populares: switch em JavaScript, C#, Java e C; match em Python e Rust. Todas resolvem o mesmo problema: comparar uma única variável contra uma lista de valores possíveis, de forma mais legível que uma cadeia longa de SENÃO SE.

Nota

ESCOLHA normalmente só compara igualdade exata (a variável é igual a este valor?). Para condições mais ricas — faixas de valores, combinações de variáveis — você continua precisando de SE / SENÃO SE.

📌 Resumo do capítulo

  • SE / ENTÃO executa um bloco apenas quando a condição é verdadeira; se for falsa, o bloco é ignorado.
  • SENÃO define um segundo caminho, mutuamente exclusivo com o primeiro.
  • SENÃO SE encadeia vários testes; apenas o primeiro que bater executa.
  • A ordem dos testes em um encadeamento importa — vá do mais restritivo para o mais amplo.
  • Decisões podem ser aninhadas (uma dentro da outra) quando a segunda só faz sentido após a primeira ser confirmada.
  • ESCOLHA / CASO é uma forma mais legível de comparar uma variável contra vários valores possíveis, equivalente ao switch de várias linguagens.

✏️ Praticando

  1. Escreva um algoritmo que leia um número e escreva se ele é positivo, negativo ou zero (dica: precisa de SENÃO SE).
  2. Escreva um algoritmo com decisões aninhadas que leia peso e altura, calcule o IMC (peso / altura²), e escreva a classificação (abaixo do peso, peso normal, sobrepeso).
  3. Reescreva o exercício anterior sem aninhamento, usando apenas SENÃO SE encadeados. Compare qual versão ficou mais legível.
  4. Escreva um algoritmo usando ESCOLHA que leia um número de 1 a 3 representando o método de pagamento (1-dinheiro, 2-cartão, 3-pix) e escreva o nome correspondente.
  5. Desenhe o fluxograma de um dos exercícios acima usando losango, retângulos e óvalos, seguindo o padrão do Capítulo 2.