O que são estruturas condicionais
Entenda como uma condição seleciona caminhos de execução e aprenda a reconhecer, representar e testar decisões simples, duplas e de múltiplas alternativas.

O que são estruturas condicionais
Estruturas condicionais são mecanismos de controle de fluxo que fazem um algoritmo escolher quais instruções executar. A escolha depende do resultado de uma condição.
Considere uma reserva de produto:
SE quantidadeSolicitada <= estoque ENTÃO
reservar produto
SENÃO
informar indisponibilidade
FIM SE
A comparação quantidadeSolicitada <= estoque produz verdadeiro ou falso. A estrutura condicional usa essa resposta para selecionar um caminho. Assim, o algoritmo deixa de executar sempre a mesma sequência e passa a reagir aos dados recebidos.
Condição e estrutura condicional não são a mesma coisa
Uma condição é uma expressão interpretada como verdadeira ou falsa:
quantidadeSolicitada <= estoque
Uma estrutura condicional contém essa condição e controla instruções:
SE quantidadeSolicitada <= estoque ENTÃO
estoque <- estoque - quantidadeSolicitada
FIM SE
A primeira apenas responde “há estoque suficiente?”. A segunda transforma a resposta em comportamento: reduzir o estoque quando a resposta for verdadeira.
As condições costumam nascer de operadores relacionais e podem combinar critérios com operadores lógicos. A estrutura condicional é a etapa seguinte: decidir o que fazer com esse resultado.
Anatomia de uma decisão
Uma estrutura condicional possui cinco partes conceituais:
- estado de entrada: dados disponíveis antes da escolha;
- condição: pergunta avaliada pelo algoritmo;
- ramos: saídas possíveis dessa pergunta;
- blocos: instruções controladas por cada ramo;
- continuação: ponto para o qual o fluxo segue após o bloco selecionado.
Somente as instruções dentro do bloco escolhido são executadas. Instruções posicionadas depois da estrutura ficam no fluxo comum, salvo quando o ramo encerra ou desvia a execução com mecanismos como retorno, interrupção ou erro.
Decisão simples: agir somente quando necessário
Uma decisão simples possui um bloco controlado e nenhum bloco alternativo:
SE temperatura > 30 ENTÃO
exibir alerta de calor
FIM SE
exibir previsão do dia
Se a condição for verdadeira, o alerta é exibido. Se for falsa, o bloco é ignorado. Nos dois casos, a previsão é exibida depois.
O caminho falso não desaparece; ele significa não executar a ação condicional e continuar. Use esse formato quando não houver comportamento alternativo necessário.
Decisão de dois caminhos: escolher entre alternativas
Quando cada resultado exige uma ação diferente, existe uma alternativa explícita:
SE saldo >= valorCompra ENTÃO
aprovar compra
SENÃO
recusar compra
FIM SE
Em uma estrutura desse tipo, exatamente um dos dois blocos é selecionado: aprovação quando a condição é verdadeira ou recusa quando é falsa.
O SENÃO não possui uma nova condição. Ele representa todos os casos que não satisfizeram a pergunta anterior. Por isso, a condição deve corresponder exatamente à divisão desejada.
Decisão de múltiplos caminhos: testar alternativas em ordem
Alguns problemas possuem mais de dois resultados:
SE nota >= 90 ENTÃO
conceito <- "A"
SENÃO SE nota >= 70 ENTÃO
conceito <- "B"
SENÃO
conceito <- "C"
FIM SE
Uma cadeia avalia as condições em ordem e seleciona o primeiro bloco aplicável. Com nota = 95, tanto nota >= 90 quanto nota >= 70 são verdadeiros isoladamente, mas o primeiro ramo já define o resultado.
A ordem, portanto, faz parte da regra. Se nota >= 70 viesse primeiro, notas acima de 90 nunca alcançariam o ramo A.
Cadeia condicional não é igual a decisões independentes
Compare uma cadeia:
SE possuiErroGrave ENTÃO
prioridade <- "urgente"
SENÃO SE possuiAviso ENTÃO
prioridade <- "atenção"
FIM SE
com duas decisões independentes:
SE possuiErroGrave ENTÃO
registrar erro
FIM SE
SE possuiAviso ENTÃO
registrar aviso
FIM SE
Na cadeia, no máximo um bloco é escolhido. Nas decisões independentes, ambos podem executar quando as duas condições são verdadeiras.
Pergunte: os resultados competem entre si ou podem ocorrer juntos? Se competem, uma cadeia costuma representar melhor a exclusividade. Se podem coexistir, decisões independentes podem ser necessárias.
Blocos mostram o que a condição controla
O bloco reúne as instruções pertencentes a um ramo:
SE reservaPermitida ENTÃO
estoque <- estoque - quantidadeSolicitada
criar reserva
enviar confirmação
FIM SE
Linguagens delimitam blocos de maneiras diferentes. Python usa indentação; JavaScript e C# normalmente usam chaves; pseudocódigos podem usar FIM SE. Em todas elas, a fronteira do bloco define o que depende da condição.
Indentação consistente e delimitadores explícitos evitam que uma ação pareça condicional quando, na execução, está fora do bloco. Uma boa regra visual é alinhar instruções que pertencem ao mesmo nível de decisão.
Como construir uma decisão passo a passo
Volte ao problema da reserva. A regra é:
Reservar apenas uma quantidade positiva que não ultrapasse o estoque atual; caso contrário, explicar que a solicitação não pode ser atendida.
1. Identifique entradas e ações
- entradas:
quantidadeSolicitadaeestoque; - ação verdadeira: reduzir estoque e criar reserva;
- ação falsa: informar que a reserva não foi criada.
2. Formule perguntas menores
quantidadeValida <- quantidadeSolicitada > 0
haEstoque <- quantidadeSolicitada <= estoque
3. Combine a condição
reservaPermitida <- quantidadeValida E haEstoque
4. Associe cada resultado ao comportamento
SE reservaPermitida ENTÃO
estoque <- estoque - quantidadeSolicitada
exibir "Reserva criada"
SENÃO
exibir "Não foi possível reservar"
FIM SE
5. Identifique a continuação
Depois da decisão, o algoritmo pode exibir o estoque atualizado ou encerrar o processo. Saber onde os ramos voltam a se encontrar ajuda a desenhar um fluxograma correto.
Condições devem expressar perguntas claras
Compare:
SE quantidadeSolicitada <= estoque ENTÃO
com:
SE verificarTudo() ENTÃO
A primeira revela a regra. A segunda esconde quais dados e critérios decidem o caminho. Funções podem encapsular detalhes, mas seus nomes ainda devem comunicar a pergunta, como reservaPodeSerCriada().
Também evite misturar a decisão com ações que alteram estado. Uma condição deve ser previsível ao ser lida e testada. Se avaliar a pergunta já cria uma reserva ou envia uma mensagem, acompanhar o fluxo se torna mais difícil.
Algumas linguagens exigem uma expressão booleana; outras interpretam números, textos, coleções e ausência como truthy ou falsy. Para regras de negócio, comparações explícitas costumam comunicar melhor a intenção e reduzem diferenças de portabilidade.
Teste os caminhos, não apenas a condição
Uma decisão precisa ser exercitada com entradas que percorram cada ramo. Para quantidadeSolicitada <= estoque, considere estoque igual a 5:
| Solicitação | Estoque | Condição | Caminho esperado |
|---|---|---|---|
| 4 | 5 | verdadeiro | criar reserva |
| 5 | 5 | verdadeiro | criar reserva e zerar estoque |
| 6 | 5 | falso | informar indisponibilidade |
Inclua ainda 0 e valores negativos para verificar quantidadeValida. Um teste manual deve registrar a condição avaliada, o ramo percorrido, as alterações de estado e a saída.
Testar apenas o resultado final pode esconder que o algoritmo percorreu o ramo errado e chegou ao valor esperado por coincidência.
Erros comuns
Escrever uma condição que não corresponde à regra
Se o limite é permitido, use uma comparação inclusiva. quantidade < estoque rejeitaria a solicitação exatamente igual ao estoque.
Tratar uma decisão simples como se tivesse alternativa
Sem SENÃO, o caminho falso apenas continua. Se o usuário precisa receber uma explicação, ela deve ser modelada explicitamente.
Usar decisões independentes para resultados exclusivos
Duas condições sobrepostas podem executar dois blocos e sobrescrever resultados. Use uma cadeia quando apenas uma classificação deve prevalecer.
Colocar condições gerais antes das específicas
Em uma cadeia de notas, nota >= 70 antes de nota >= 90 torna o ramo mais específico inalcançável.
Perder a fronteira do bloco
Indentação ou delimitadores incorretos podem deixar instruções fora do controle esperado.
Alterar estado dentro da pergunta
Condições com efeitos colaterais dificultam repetição, diagnóstico e teste. Separe consulta de ação sempre que possível.
Checklist de uma estrutura condicional
- A condição pode ser lida como uma pergunta objetiva?
- Os tipos e operadores usados são compatíveis?
- Os caminhos verdadeiro e falso estão identificados?
SENÃOé necessário ou o fluxo deve apenas continuar?- Os resultados são exclusivos ou podem coexistir?
- Condições de uma cadeia estão na ordem correta?
- Os limites dos blocos estão visíveis?
- Todos os ramos modificam apenas o estado esperado?
- Existe uma continuação clara depois da decisão?
- Há pelo menos um teste para cada caminho e para os limites?
Pratique com uma política de atendimento
Uma fila classifica solicitações assim:
- urgência igual a
3: atendimento prioritário; - urgência igual a
2: atendimento normal; - qualquer outro valor: encaminhar para revisão.
Represente a regra com uma cadeia condicional. Depois teste 3, 2, 1 e um valor inválido como 8. Registre qual condição foi avaliada e qual bloco executou.
Uma solução possível é:
SE urgencia = 3 ENTÃO
fila <- "prioritária"
SENÃO SE urgencia = 2 ENTÃO
fila <- "normal"
SENÃO
fila <- "revisão"
FIM SE
O último ramo também recebe valores inválidos. Em um sistema real, talvez seja melhor separar “baixa urgência” de “entrada inválida”. Essa escolha depende da regra de domínio, não da estrutura condicional em si.
O que você deve guardar
Uma condição produz uma resposta lógica. A estrutura condicional transforma essa resposta em um caminho de execução. Ramos, blocos e continuação deixam claro o que acontece em cada alternativa.
Decisões simples podem ignorar uma ação; decisões duplas escolhem entre dois blocos; cadeias selecionam a primeira alternativa aplicável; decisões independentes podem executar mais de um bloco. Modele a relação correta e teste todos os caminhos. Em seguida, veja como if e else transformam essa escolha em blocos executáveis.
Referências
- Microsoft Learn — C# Language Specification: the
ifstatement. Acesso em 10 set. 2026. - Python Documentation — A instrução
if. Acesso em 10 set. 2026. - Python Documentation — Instruções compostas e blocos. Acesso em 10 set. 2026.
- MDN Web Docs — Tomando decisões no seu código: condicionais. Acesso em 10 set. 2026.