Decisões: IF / THEN / ELSE
Programas que sempre fazem a mesma coisa são chatos. Vamos ensinar o seu a decidir.
A forma mais simples
Quando você quer que um trecho de código rode só se uma condição for verdadeira, use IF:
IF condicao THEN
... comandos ...
END IF
DIGITE E VEJA
Programa 6.1 — Você é maior de idade?
Mude o valor de idade e rode várias vezes.
USES SCREEN 1
SCREEN 1
CLS
DIM idade AS BYTE = 17
PRINT "IDADE = ", idade
IF idade >= 18 THEN
PRINT "MAIOR DE IDADE."
END IF
PRINT "FIM."
Adicionando o caminho alternativo: ELSE
Para fazer uma coisa quando verdadeiro e outra coisa quando falso, use ELSE:
IF idade >= 18 THEN
PRINT "MAIOR DE IDADE."
ELSE
PRINT "MENOR DE IDADE."
END IF
DICA
Endentação importa (para você)
O compilador não liga se você endenta ou não. Mas você é humano, então endente sempre o conteúdo dentro de IF/THEN, FOR/NEXT, WHILE/WEND. Dois espaços bastam.
Várias condições em cadeia: ELSEIF
Quando há mais de duas alternativas, encadeie com ELSEIF:
DIGITE E VEJA
Programa 6.2 — Conceito da nota
Programa que classifica uma nota em A, B, C ou Reprovado.
USES SCREEN 1
SCREEN 1
CLS
DIM nota AS BYTE = 75
IF nota >= 90 THEN
PRINT "CONCEITO A"
ELSEIF nota >= 80 THEN
PRINT "CONCEITO B"
ELSEIF nota >= 70 THEN
PRINT "CONCEITO C"
ELSE
PRINT "REPROVADO"
END IF
ATENÇÃO
Coloque o caso mais específico primeiro
Se a primeira condição é mais ampla que as seguintes, as outras nunca rodam. Se você escrevesse IF nota >= 70 antes do IF nota >= 90, uma nota 95 cairia no primeiro IF e nunca chegaria a ser classificada como A.
IF aninhado dentro de outro IF
Você pode colocar um IF dentro de outro:
IF tem_chave THEN
IF porta_trancada THEN
PRINT "DESTRANCANDO..."
ELSE
PRINT "PORTA JA ABERTA."
END IF
ELSE
PRINT "VOCE NAO TEM A CHAVE."
END IF
DICA
Combine condições em vez de aninhar
Em muitos casos, aninhar dois IFs equivale a usar AND: IF tem_chave AND porta_trancada THEN PRINT "DESTRANCANDO" fica mais legível e roda mais rápido.
Exercícios
- 6.1 — Programa que lê um número e mostra PAR se for par, IMPAR se for ímpar (Dica: n MOD 2).
- 6.2 — Dado um valor de
idade, mostre: BEBE (0-2), CRIANCA (3-12), JOVEM (13-17), ADULTO (18-64), IDOSO (65+). - 6.3 — Reescreva o exercício 6.2 sem usar ELSEIF, só com IFs separados. Compare a legibilidade.
Resumo do capítulo
- IF condicao THEN ... END IF executa só se verdadeiro.
- ELSE dá um caminho alternativo quando a condição é falsa.
- ELSEIF encadeia múltiplas condições em ordem.
- Endente sempre — seu cérebro vai agradecer.
- Prefira AND a aninhar IFs sempre que possível.