2
respostas

[SUGESTÃO] Explicação exercício Valor das milhas (Kelly Costa)

  • O problema original
    O código original faz isso:

let porcentagemDesconto = 0;

if (quantidadeMilhas > 5000) {
porcentagemDesconto = porcentagemDesconto + 10;
}

if (quantidadeMilhas >= 30000) {
porcentagemDesconto = porcentagemDesconto + 20;
} else {
porcentagemDesconto = 0;
}

  • O que está errado aqui?
    Quando a pessoa tem mais de 30.000 milhas, ela recebe 10% + 20% = 30%, o que não deveria acontecer.
    Pessoas com exatamente 5.000 milhas ou menos não recebem desconto, o que está certo, mas a lógica fica confusa.
    O else está zerando o desconto mesmo para quem deveria receber 10%.

  • Qual é a regra correta de negócio?
    Menos de 5.000 milhas: 0% de desconto
    Entre 5.001 e 29.999 milhas: 10% de desconto
    30.000 milhas ou mais: 20% de desconto

  • Como aplicar essa regra corretamente?
    Aqui está o código correto e claro:

let porcentagemDesconto = 0;

if (quantidadeMilhas >= 30000) {
porcentagemDesconto = 20;
} else {
if (quantidadeMilhas > 5000) {
porcentagemDesconto = 10;
}
}

  • Por que isso funciona?
    Primeiro, o código verifica se a pessoa tem 30.000 milhas ou mais. Se sim, ela ganha 20% de desconto.
    Se não tiver, ele vai para o else e verifica se tem mais de 5.000 milhas. Se sim, ganha 10%.
    Caso tenha 5.000 milhas ou menos, nenhuma das condições é verdadeira, então o desconto continua sendo 0% (valor inicial).
2 respostas

Oi, Kelly! Como vai?

Ficou muito claro como você analisou o problema e chegou à solução correta. A lógica ficou bem organizada e respeita exatamente as regras de negócio definidas, evitando a sobreposição de descontos.

Uma dica interessante para o futuro é usar o operador ternário para simplificar condições simples. Veja este exemplo:


let desconto = (milhas >= 30000) ? 20 : (milhas > 5000 ? 10 : 0);

Esse código faz o mesmo que sua estrutura condicional, mas em uma única linha. Ele avalia a quantidade de milhas e define o valor de desconto com base nas regras.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

De fato pela lógica do negócio mesmo o usuário da companhia acumulando 5.000 milhas ele ainda não insere dentro da regra dos 10% de desconto
mas caso houvesse uma mudança pra se inserir quem ganha exatos 5.000 milhas na regra dos 10% teríamos que acrescentar a comparação >= pra regrar se efetivar no cálculo. Que seria nesse código abaixo:

let quantidadeMilhas = parseInt(prompt('Digite a quantidade de milhas...:'));

let porcentagemDesconto = 0;
if (quantidadeMilhas >= 30000){
porcentagemDesconto = porcentagemDesconto + 20;
} else {
if (quantidadeMilhas >= 5000){ <-- AQUI SERIA A MUDANÇA PARA OS 5.000 receber os 10%
porcentagemDesconto = porcentagemDesconto + 10;
}
}

alert('O percentual de desconto é ' + porcentagemDesconto + '%');