🧩 Exercícios - Cap 05: Decisões e Ranks (if/when)

📖 Ver Cap 05

🎯 Antes de começar

No Cap 05 você criou o “Juiz de Rank” com when (nivel) { in 1..10 -> "Bronze" ... } e, nas Práticas Obrigatórias, usou if/else (GAME OVER) e when comparando String (classe do personagem). Depois de completar as duas Práticas, faça o exercício extra abaixo para conhecer o when sem argumento — uma forma de organizar várias condições, como uma cadeia de if/else if.


💪 Exercício Extra 1: Bônus de Combo com when sem Argumento (15 min)

Objetivo: Praticar when { condição -> resultado } (sem when (variavel)), entendendo que ele funciona como uma cadeia de if/else if/else.

Passos:

  1. No Kotlin Playground, crie val combo: Int = 7.
  2. Use um when sem argumento para decidir a mensagem de bônus:
    val mensagem = when {
        combo >= 10 -> "Combo Lendário! +50% de dano"
        combo >= 5 -> "Combo Bom! +20% de dano"
        else -> "Sem bônus de combo"
    }
    println(mensagem)
    
  3. Teste trocando combo para 12, depois para 2, rodando de novo a cada troca.

✅ Resultado Esperado


🆘 Resolução de Problemas Comuns

Erro Causa Solução
combo = 12 mostra "Combo Bom!" em vez de "Combo Lendário!" A condição combo >= 5 foi colocada antes de combo >= 10 — o when para na primeira condição verdadeira Sempre coloque a condição mais específica/restritiva primeiro (>= 10 antes de >= 5)
Erro de compilação 'when' expression must be exhaustive Faltou o else -> no when usado como expressão (atribuído a val mensagem) Sempre inclua um else -> quando o when é usado para gerar um valor
Erro de sintaxe perto de -> Usou = ou : em vez de -> entre a condição e o resultado A seta -> é obrigatória em cada ramo do when

⬅️ Voltar para Exercícios