SkillsTecnológicas
Menu
Conteúdo da trilha

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.

Conteúdo 21 de 39

Trilho desenhado a lápis entra em uma decisão, percorre uma entre duas ações e volta a um caminho comum verificado

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:

  1. estado de entrada: dados disponíveis antes da escolha;
  2. condição: pergunta avaliada pelo algoritmo;
  3. ramos: saídas possíveis dessa pergunta;
  4. blocos: instruções controladas por cada ramo;
  5. continuação: ponto para o qual o fluxo segue após o bloco selecionado.
Fluxo parte dos dados, avalia se a quantidade solicitada cabe no estoque, segue pelo ramo verdadeiro para reservar ou pelo ramo falso para informar indisponibilidade e depois continua
A condição seleciona um ramo; depois da ação correspondente, o algoritmo pode voltar a um fluxo comum.

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.

Três pequenos fluxos comparam uma decisão simples que pode executar um bloco, uma decisão dupla que escolhe entre dois blocos e uma cadeia que seleciona a primeira entre três alternativas
O formato deve refletir quantos resultados são mutuamente exclusivos e quais ações cada um exige.

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: quantidadeSolicitada e estoque;
  • 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:

Três casos testam solicitação de quatro, cinco e seis unidades com estoque cinco, mostrando os caminhos verdadeiro, verdadeiro no limite e falso acima do limite
Valores abaixo, exatamente no limite e acima do limite revelam se a comparação e os ramos estão corretos.
SolicitaçãoEstoqueCondiçãoCaminho esperado
45verdadeirocriar reserva
55verdadeirocriar reserva e zerar estoque
65falsoinformar 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