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.
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.
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:
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.
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.
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.
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
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:
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.
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.