Como funciona if e else
Aprenda como if e else selecionam caminhos de execução, delimitam blocos e conduzem o fluxo a uma continuação comum.

if faz uma pergunta; else trata a alternativa
if e else controlam qual bloco de instruções será executado. O if avalia uma condição. Se o resultado for verdadeiro, seu bloco executa. Quando existe um else, o bloco alternativo executa se a mesma condição for falsa.
Considere uma regra de frete:
SE valorPedido >= 200 ENTÃO
frete <- 0
SENÃO
frete <- 20
FIM SE
Para valorPedido = 250, o algoritmo atribui 0 a frete. Para valorPedido = 120, atribui 20. Em uma única passagem, apenas um dos dois blocos executa.
A aula anterior explicou o que são estruturas condicionais. Agora vamos transformar esse modelo mental em uma construção que pode ser lida, escrita e testada.
Como ler uma estrutura if/else
Leia a estrutura em quatro partes:
- condição: a pergunta depois de
if; - bloco verdadeiro: instruções controladas por
if; - bloco falso: instruções controladas por
else, quando ele existe; - continuação: instruções posteriores à estrutura.
SE valorPedido >= 200 ENTÃO // condição
frete <- 0 // bloco verdadeiro
SENÃO
frete <- 20 // bloco falso
FIM SE
total <- valorPedido + frete // continuação
O else não avalia outra pergunta. Ele significa “caso contrário”: reúne todos os casos em que a condição do if resultou em falso.
Como funciona if sem else
O else é opcional. Use somente if quando existe uma ação especial para o resultado verdadeiro e nenhuma ação alternativa é necessária:
SE clientePrimeiraCompra ENTÃO
exibir mensagem de boas-vindas
FIM SE
exibir resumo do pedido
Se clientePrimeiraCompra for verdadeiro, a mensagem aparece e o algoritmo continua. Se for falso, a mensagem é ignorada e o algoritmo vai diretamente para o resumo.
Uma condição falsa não encerra automaticamente a função nem interrompe o programa. Ela apenas impede a execução do bloco controlado pelo if. O que acontece depois depende das próximas instruções.
Como funciona if com else
Use if/else quando os dois resultados exigem comportamentos diferentes:
SE valorPedido >= 200 ENTÃO
frete <- 0
SENÃO
frete <- 20
FIM SE
A execução segue esta ordem:
- lê o valor atual de
valorPedido; - avalia
valorPedido >= 200; - escolhe o bloco de
ifse o resultado for verdadeiro; - escolhe o bloco de
elsese o resultado for falso; - continua depois de
FIM SE.
Os blocos são mutuamente exclusivos nessa avaliação: executar o primeiro impede a execução do segundo. Na próxima vez em que a estrutura for alcançada, os dados podem ser diferentes e outro caminho pode ser escolhido.
if simples pode apenas ignorar uma ação; if/else sempre seleciona uma das duas alternativas.Construa a regra antes de escolher a sintaxe
Antes de escrever if, expresse a regra em linguagem direta:
Pedidos de R$ 200 ou mais têm frete grátis. Pedidos abaixo desse valor recebem frete de R$ 20.
Separe os elementos:
| Elemento | Definição |
|---|---|
| dado de entrada | valorPedido |
| pergunta | o valor é maior ou igual a 200? |
| ação verdadeira | atribuir 0 a frete |
| ação falsa | atribuir 20 a frete |
| continuação | calcular o total |
A condição nasce de uma comparação. Se ainda houver dúvida sobre símbolos como >=, revise os operadores relacionais.
Observe o limite: a expressão usa >=, não >. Um pedido exatamente igual a 200 deve receber frete grátis. Transformar a frase “R$ 200 ou mais” em uma condição inclusiva faz parte da correção da regra.
A mesma decisão em linguagens diferentes
A lógica permanece igual, mas cada linguagem possui sua forma de delimitar condições e blocos.
Pseudocódigo
SE valorPedido >= 200 ENTÃO
frete <- 0
SENÃO
frete <- 20
FIM SE
O pseudocódigo prioriza a comunicação da solução e não depende de uma sintaxe executável específica. Nomes informativos e alinhamento consistente ajudam a produzir um pseudocódigo claro.
Python
if valor_pedido >= 200:
frete = 0
else:
frete = 20
Python encerra a linha da condição com : e usa a indentação para delimitar os blocos. As instruções alinhadas sob if pertencem ao primeiro caminho; as alinhadas sob else, ao segundo.
JavaScript
if (valorPedido >= 200) {
frete = 0;
} else {
frete = 20;
}
JavaScript coloca a condição entre parênteses e usa chaves para agrupar instruções. Embora alguns blocos de uma única instrução possam omitir chaves, mantê-las torna a fronteira explícita e reduz erros quando novas instruções são adicionadas.
C#
if (valorPedido >= 200)
{
frete = 0;
}
else
{
frete = 20;
}
C# também usa parênteses e chaves, mas exige que a condição seja uma expressão booleana. Não presuma que valores numéricos ou textos serão convertidos implicitamente em verdadeiro ou falso como ocorre em algumas outras linguagens.
As quatro versões representam a mesma relação. Palavras, pontuação e delimitadores mudam; a pergunta, os dois resultados e a continuação permanecem.
O bloco define o que depende da condição
Considere esta versão:
SE valorPedido >= 200 ENTÃO
frete <- 0
mensagem <- "Frete grátis"
SENÃO
frete <- 20
mensagem <- "Frete calculado"
FIM SE
total <- valorPedido + frete
exibir mensagem
exibir total
As atribuições de frete e mensagem dependem da condição. O cálculo e as exibições estão depois da estrutura e acontecem em ambos os casos.
Um erro de indentação ou uma chave no lugar errado pode alterar essa fronteira. Formatação não é apenas aparência: em Python ela faz parte da sintaxe; em linguagens com chaves, ela permite que pessoas enxerguem a estrutura que o compilador interpreta.
Também confirme que as variáveis usadas depois da decisão recebem valor em todos os caminhos. Como frete é atribuído tanto no if quanto no else, o cálculo posterior possui um valor definido em qualquer resultado.
E quando existem mais de duas alternativas?
Uma sequência pode testar condições em ordem:
SE valorPedido >= 200 ENTÃO
frete <- 0
SENÃO SE valorPedido >= 100 ENTÃO
frete <- 10
SENÃO
frete <- 20
FIM SE
O algoritmo escolhe o primeiro ramo cuja condição seja verdadeira. Para valorPedido = 250, a segunda comparação nem precisa definir o resultado, pois o primeiro ramo já foi escolhido.
Python escreve esse trecho com elif; JavaScript e C# usam else if. A ordem e a sobreposição entre condições merecem uma análise própria, que será feita na aula sobre estruturas encadeadas e aninhadas. Por enquanto, guarde que um else if acrescenta outra pergunta entre o primeiro if e o else final.
Teste cada caminho e a fronteira
Para verificar a regra de frete, não basta testar um pedido qualquer. Escolha valores que cubram os dois caminhos e o limite de 200:
> e >=.valorPedido | valorPedido >= 200 | bloco executado | frete | total |
|---|---|---|---|---|
| 199 | falso | else | 20 | 219 |
| 200 | verdadeiro | if | 0 | 200 |
| 201 | verdadeiro | if | 0 | 201 |
Faça um teste manual do algoritmo registrando a condição, o bloco selecionado e os valores depois da decisão. Esse rastreamento confirma não apenas o resultado, mas o caminho que o produziu.
Erros comuns com if e else
Confundir atribuição com comparação
Em várias linguagens, = atribui e == compara. Escrever uma atribuição na condição pode causar erro ou comportamento inesperado. Confira o operador exigido pela linguagem.
Acreditar que os dois blocos executam
Um único if/else escolhe apenas um bloco por avaliação. Se duas ações devem ocorrer juntas, elas precisam estar no mesmo bloco ou em estruturas independentes.
Usar else quando não há ação alternativa
Um bloco vazio ou um comentário no else normalmente indica que ele não é necessário. Um if simples comunica melhor “faça isto somente quando a condição for verdadeira”.
Esconder a continuação dentro de um ramo
Se uma instrução deve ocorrer nos dois casos, colocá-la depois da estrutura evita duplicação. Mantenha dentro dos blocos apenas o que realmente varia.
Esquecer um caminho sem valor definido
Se o restante do algoritmo usa uma variável, confirme que todos os caminhos relevantes a inicializam ou preservam um valor válido.
Testar somente o caso verdadeiro
Uma condição pode parecer correta até receber o valor-limite ou percorrer o else. Cubra verdadeiro, falso e fronteiras.
Pratique com aprovação de acesso
Uma área permite acesso quando a pessoa possui idade >= 18. Caso contrário, deve exibir que o acesso foi negado. Depois da decisão, o sistema sempre registra a tentativa.
Escreva o pseudocódigo e teste as idades 17, 18 e 19. Sua solução deve deixar o registro fora dos dois blocos:
SE idade >= 18 ENTÃO
exibir "Acesso permitido"
SENÃO
exibir "Acesso negado"
FIM SE
registrar tentativa
Verifique três pontos: 18 percorre o if, 17 percorre o else e registrar tentativa executa em todos os casos.
O que você deve guardar
if avalia uma condição e controla o bloco verdadeiro. else é opcional e controla a alternativa falsa sem fazer uma nova pergunta. Depois do bloco escolhido, o fluxo normalmente continua nas instruções posteriores à estrutura.
Escreva primeiro a regra, identifique condição, ações e continuação, só então adapte a sintaxe à linguagem. Delimite blocos com clareza e teste os dois caminhos, especialmente o valor-limite. O próximo passo é aprender a criar condições compostas com operadores lógicos.
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. - MDN Web Docs —
if...else. Acesso em 10 set. 2026. - Oracle — Java Language Specification: The
ifStatement. Acesso em 10 set. 2026.