Condicionais no pseudocódigo essencial: SE, SENÃO SE, SENÃO e casos limites

Capítulo 7

Tempo estimado de leitura: 8 minutos

+ Exercício

O que são condicionais e por que elas importam

Condicionais permitem que o algoritmo escolha caminhos diferentes conforme uma condição seja verdadeira ou falsa. Em pseudocódigo essencial, a meta é deixar explícito: (1) qual condição está sendo testada, (2) quais ações acontecem em cada caso, e (3) que todos os caminhos relevantes foram considerados, inclusive casos limites.

Estrutura padronizada: SE, SENÃO SE, SENÃO

Forma básica (dois caminhos)

SE condicao ENTÃO    // bloco verdadeiroSENÃO    // bloco falsoFIMSE

Regras práticas para manter a leitura previsível:

  • Use ENTÃO, SENÃO e FIMSE para delimitar blocos.
  • Coloque uma única ideia por condição (evite “condições-monstro”).
  • Garanta que cada bloco tenha ações coerentes com o teste (não misture responsabilidades).

Encadeamento (múltiplos caminhos) com SENÃO SE

SE condicao1 ENTÃO    // caminho 1SENÃO SE condicao2 ENTÃO    // caminho 2SENÃO SE condicao3 ENTÃO    // caminho 3SENÃO    // caminho padrão (fallback)FIMSE

Como interpretar: o algoritmo testa condicao1; se for falsa, testa condicao2; e assim por diante. O primeiro teste verdadeiro “vence” e os demais não são avaliados.

Passo a passo: construindo um encadeamento a partir de requisitos

Requisito textual: “Se a nota for maior ou igual a 7, o aluno está aprovado. Se for maior ou igual a 5, está em recuperação. Caso contrário, reprovado.”

Passo 1: identifique as faixas e a ordem correta (do mais restritivo/alto para o mais baixo).

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

Passo 2: escreva as condições sem sobreposição ambígua.

SE nota >= 7 ENTÃO    status <- "APROVADO"SENÃO SE nota >= 5 ENTÃO    status <- "RECUPERAÇÃO"SENÃO    status <- "REPROVADO"FIMSE

Note que não é necessário escrever nota < 7 no segundo teste, porque o fluxo só chega nele se o primeiro falhar.

Condições compostas: E, OU e agrupamento

Condições compostas combinam testes simples. Para evitar dúvidas de precedência, use parênteses quando houver mistura de operadores.

Exemplo: elegibilidade com múltiplos critérios

Requisito: “Conceder desconto se (for estudante e tiver menos de 25 anos) ou se for idoso (60+).”

SE (ehEstudante E idade < 25) OU (idade >= 60) ENTÃO    temDesconto <- VERDADEIROSENÃO    temDesconto <- FALSOFIMSE

Boas práticas para legibilidade em condições compostas

  • Prefira condições nomeadas para reduzir complexidade visual.
  • Evite negações duplas (ex.: NÃO (NÃO autorizado)), pois aumentam erros de interpretação.
  • Use parênteses para deixar explícito o agrupamento, mesmo quando você “acha” que a precedência é óbvia.

Refatoração com condições nomeadas (passo a passo)

Antes (difícil de ler):

SE (NÃO bloqueado) E ((tipo = "VIP") OU (pontos >= 1000 E NÃO inadimplente)) ENTÃO    liberarAcesso()SENÃO    negarAcesso()FIMSE

Passo 1: extraia subcondições com nomes que expressem intenção.

podeSerVIP <- (tipo = "VIP")temPontuacaoBoa <- (pontos >= 1000)estaRegular <- (NÃO inadimplente)criterioDeValor <- podeSerVIP OU (temPontuacaoBoa E estaRegular)contaAtiva <- (NÃO bloqueado)

Passo 2: use as condições nomeadas no SE.

SE contaAtiva E criterioDeValor ENTÃO    liberarAcesso()SENÃO    negarAcesso()FIMSE

O comportamento permanece o mesmo, mas a leitura fica mais próxima do requisito.

Casos limites: como pensar e como cobrir todos os caminhos

O que são casos limites

Casos limites são valores “na borda” de uma regra: exatamente no limite, logo abaixo, logo acima, ou valores especiais (zero, vazio, mínimo/máximo permitido). Eles são fontes comuns de bugs em condicionais por causa de comparações como > vs >= e por faixas que se sobrepõem ou deixam lacunas.

Checklist de cobertura de caminhos

  • Exaustividade: existe um caminho para todo valor possível? Se não, inclua SENÃO ou valide antes.
  • Não sobreposição: dois ramos podem ser verdadeiros ao mesmo tempo? Se sim, a ordem importa e pode esconder um erro.
  • Limites inclusivos/exclusivos: confirme se o limite deve ser >= ou >, <= ou <.
  • Valores especiais: zero, negativo, vazio, nulo (se aplicável), máximo permitido.
  • Fallback explícito: use SENÃO para capturar o inesperado e tratar/registrar.

Exemplo clássico: faixas numéricas sem lacunas

Requisito: “Frete: até 5 kg custa 10; acima de 5 e até 20 kg custa 25; acima de 20 kg custa 60.”

Uma implementação correta deve cobrir: 5, 5.01, 20, 20.01, e também pesos inválidos (0 ou negativos) se puderem ocorrer.

SE peso <= 0 ENTÃO    ESCREVA "Peso inválido"SENÃO SE peso <= 5 ENTÃO    frete <- 10SENÃO SE peso <= 20 ENTÃO    frete <- 25SENÃO    frete <- 60FIMSE

Observe como os testes usam apenas <= em sequência, evitando buracos entre faixas.

Garantindo que todos os caminhos relevantes foram cobertos (passo a passo)

1) Liste as categorias de entrada (faixas, tipos, estados). 2) Para cada categoria, escreva um exemplo “típico” e dois limites (na borda e logo após). 3) Verifique se cada exemplo cai em exatamente um ramo. 4) Se algum exemplo não cair em ramo nenhum, adicione validação ou um SENÃO. 5) Se algum exemplo cair em mais de um ramo, ajuste a ordem ou refine as condições para ficarem mutuamente exclusivas.

Padrões úteis e armadilhas comuns

1) Evitar “SE” aninhado demais

Aninhamento profundo dificulta enxergar caminhos e casos limites. Quando possível, use SENÃO SE para faixas e categorias, ou extraia condições nomeadas.

Antes (aninhado):

SE clienteAtivo ENTÃO    SE saldo >= 0 ENTÃO        aprovar()    SENÃO        negar()    FIMSESENÃO    negar()FIMSE

Depois (mais direto):

SE (NÃO clienteAtivo) OU (saldo < 0) ENTÃO    negar()SENÃO    aprovar()FIMSE

Se essa forma ficar difícil de ler por causa da negação, prefira condições nomeadas:

clienteElegivel <- clienteAtivo E (saldo >= 0)SE clienteElegivel ENTÃO    aprovar()SENÃO    negar()FIMSE

2) Ordem dos testes em SENÃO SE

Quando condições se sobrepõem, a ordem define o resultado. Exemplo:

SE idade >= 18 ENTÃO    categoria <- "ADULTO"SENÃO SE idade >= 60 ENTÃO    categoria <- "IDOSO"SENÃO    categoria <- "MENOR"FIMSE

Esse código nunca classificará alguém como “IDOSO”, porque idade >= 18 captura antes. A ordem correta é testar primeiro o caso mais específico/alto:

SE idade >= 60 ENTÃO    categoria <- "IDOSO"SENÃO SE idade >= 18 ENTÃO    categoria <- "ADULTO"SENÃO    categoria <- "MENOR"FIMSE

3) “SENÃO” como proteção contra o inesperado

Quando há estados enumerados (ex.: tipo de usuário), use SENÃO para capturar valores desconhecidos. Isso ajuda a não deixar o algoritmo em silêncio em casos não previstos.

SE tipo = "ADMIN" ENTÃO    permissao <- "TOTAL"SENÃO SE tipo = "EDITOR" ENTÃO    permissao <- "PARCIAL"SENÃO SE tipo = "LEITOR" ENTÃO    permissao <- "BÁSICA"SENÃO    ESCREVA "Tipo desconhecido"FIMSE

Exercícios

Exercício 1: transformar requisitos textuais em condicionais

Escreva o pseudocódigo usando SE, SENÃO SE e SENÃO, cobrindo casos limites.

  • a) “Se a temperatura for menor que 0, exibir ‘congelando’. Se estiver entre 0 e 25 (inclusive), exibir ‘amena’. Se for maior que 25, exibir ‘quente’.”
  • b) “A senha é válida se tiver pelo menos 8 caracteres e contiver pelo menos um número. Caso contrário, é inválida.”
  • c) “Um pedido pode ser enviado se estiver pago e o endereço estiver completo. Se não estiver pago, exibir ‘aguardando pagamento’. Se o endereço estiver incompleto, exibir ‘corrigir endereço’.” (Garanta que o algoritmo trate o caso em que ambos os problemas acontecem.)

Exercício 2: refatorar uma árvore de decisão confusa

Refatore para melhorar legibilidade, reduzir aninhamento e evitar negações duplas. Extraia condições nomeadas quando ajudar.

SE NÃO (NÃO cadastrado) ENTÃO    SE (idade > 17 E idade < 60) OU (idade >= 60 E NÃO (NÃO documentoOk)) ENTÃO        SE NÃO bloqueado ENTÃO            ESCREVA "Acesso liberado"        SENÃO            ESCREVA "Conta bloqueada"        FIMSE    SENÃO        ESCREVA "Não elegível"    FIMSESENÃO    ESCREVA "Precisa cadastrar"FIMSE

Tarefas:

  • a) Reescreva removendo negações duplas (ex.: NÃO (NÃO x)).
  • b) Extraia condições como estaCadastrado, documentoValido, faixaEtariaOk, contaAtiva.
  • c) Garanta que os ramos sejam mutuamente compreensíveis e que exista um caminho para cada situação relevante.

Exercício 3: checagem de casos limites

Para o requisito do frete (até 5, até 20, acima de 20), liste pelo menos 8 valores de teste incluindo limites e inválidos, e indique em qual ramo cada um cai.

Valor de entradaRamo esperado
peso = 5...
peso = 5.01...
peso = 20...
peso = 20.01...
peso = 0...
peso = -1...
peso = 1...
peso = 100...

Agora responda o exercício sobre o conteúdo:

Ao escrever um encadeamento com SE, SENÃO SE e SENÃO para faixas numéricas (por exemplo, nota ou peso), qual prática ajuda a evitar lacunas e ambiguidades nos casos limites?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Comparações consistentes em sequência (ex.: usando apenas <=) evitam buracos entre faixas. Começar pelo caso mais específico reduz sobreposição, e o SENÃO cobre o inesperado, garantindo exaustividade.

Próximo capitúlo

Laços no pseudocódigo essencial: ENQUANTO, REPITA ATÉ e PARA

Arrow Right Icon
Capa do Ebook gratuito Pseudocódigo Essencial: Um Padrão Simples para Descrever Soluções
47%

Pseudocódigo Essencial: Um Padrão Simples para Descrever Soluções

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.