2
respostas

[Bug] Exercício valor das milhas, importante correção a ser feita na resposta.

Antes vou mostrar todo o contexto do exercício para depois especificar onde está o erro!


Você é uma pessoa recém-chegada à equipe de desenvolvimento do Jornada Milhas, um site de compra de pacotes de viagens para os principais destinos do mundo.

Como primeira tarefa, sua liderança pediu para que você corrigisse um bug que tem acontecido quando uma pessoa cliente do site tenta utilizar suas milhas do cartão de crédito para obter desconto nos pacotes de viagem. Para isso, foi apresentado o seguinte código:

let porcentagemDesconto = 0;

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

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

Para te ajudar a compreender a origem do bug, sua liderança explicou a regra de negócio utilizada para compras de pacotes de viagens com milhas:

Pessoas com uma quantidade de milhas inferior a 5.000 não recebem desconto.
Pessoas com uma quantidade de milhas igual ou superior a 30.000 recebem 20% de desconto.
Pessoas com uma quantidade de milhas superior a 5.000, mas inferior a 30.000, recebem 10% de desconto.
Mas, segundo relatos de clientes, ao tentar utilizar o desconto referente a 5.000 milhas, não ocorre nenhum desconto. Já clientes com mais de 30.000 milhas estão recebendo desconto excedente ao que deveriam receber.

Como você poderia modificar o código para que ele funcione corretamente? Selecione a opção correta:


O código de resposta que melhor atende a resolução do exercício é este:


Fazendo a utilização de um bloco if dentro do bloco else, como:

let porcentagemDesconto = 0;

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


Porém no exercício está claro que o desconto de 20% são para pessoas com quantidade de milhas acima de 5000 e até a 29999 e não a partir de 5000. Portanto, observando as especificações do próprio exercício, o código que é dado como correto, está errado nesta parte que citei. Pois se na empresa é dito como regra tais especificações, se caso fizer de forma diferente, a empresa levaria prejuízo. Segue abaixo uma mudança no mesmo código, onde irei trocar o sinal ">=" por ">", observe na linha 5, em negrito.

let porcentagemDesconto = 0;

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

Dado tal correção, espero que tenham entendido. Não procurei citar outros erros no código pois acredito não ser necessário!

Deixo aberto aqui a perguntas e discussão sobre isso.
Obrigado!

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
2 respostas

Olá Matheus! Como vai?

Entendo sua preocupação com a precisão das regras de negócio no código. No entanto, a opção D, que você mencionou, está correta conforme as especificações fornecidas no exercício.

A regra de negócio menciona que pessoas com milhas superiores a 5.000 e inferiores a 30.000 recebem 10% de desconto. Portanto, o uso de >= 5000 é apropriado para incluir aqueles que têm exatamente 5.000 milhas, garantindo que eles também recebam o desconto de 10%.

No caso de milhas iguais ou superiores a 30.000, o desconto correto é de 20%, e o uso de >= 30000 assegura que essa regra seja aplicada corretamente.

Espero ter esclarecido e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá Armano,

Identifiquei um erro na linha 5 do código:

let porcentagemDesconto = 0;

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

O problema está no operador utilizado na segunda condição (>= 5000).
De acordo com a regra de negócio “superiores a 5.000”, a comparação deve ser estritamente maior que 5.000, e não maior ou igual.

Portanto, o código correto seria:

let porcentagemDesconto = 0;

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