SkillsTecnológicas
Menu
Conteúdo da trilha

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.

Conteúdo 22 de 39

Uma decisão desenhada a lápis abre um portão em um caminho e mantém outro fechado antes de os dois fluxos voltarem a se encontrar

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:

  1. condição: a pergunta depois de if;
  2. bloco verdadeiro: instruções controladas por if;
  3. bloco falso: instruções controladas por else, quando ele existe;
  4. 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
Diagrama separa a condição, o bloco executado quando ela é verdadeira, o bloco alternativo e a continuação comum
A condição seleciona um bloco; depois dele, o fluxo chega à continuação comum.

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:

  1. lê o valor atual de valorPedido;
  2. avalia valorPedido >= 200;
  3. escolhe o bloco de if se o resultado for verdadeiro;
  4. escolhe o bloco de else se o resultado for falso;
  5. 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.

Dois fluxos comparam um if simples, que ignora a ação no caminho falso, e um if com else, que executa uma de duas ações
O 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:

ElementoDefinição
dado de entradavalorPedido
perguntao valor é maior ou igual a 200?
ação verdadeiraatribuir 0 a frete
ação falsaatribuir 20 a frete
continuaçãocalcular 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:

Três pedidos de 199, 200 e 201 reais percorrem os caminhos falso, verdadeiro no limite e verdadeiro acima do limite
O valor imediatamente abaixo, o próprio limite e o valor imediatamente acima expõem erros entre > e >=.
valorPedidovalorPedido >= 200bloco executadofretetotal
199falsoelse20219
200verdadeiroif0200
201verdadeiroif0201

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