Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] trabalhando com condicionnais - exercicio

Bom dia galera, sou iniciante na programaçao e nao consegui compreender esse exercicio:

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.

let porcentagemDesconto = 0;

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

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

dá onde saiu essa variavel porcentagemDesconto que nao esta no código? e por que que no if ela esta recebendo o seu proprio valor + 10, isso é permitido?

1 resposta
solução!

Oi, Marcos, tudo bem?

A variável porcentagemDesconto é uma variável que está sendo usada para armazenar o valor do desconto que será aplicado. Ela começa com o valor 0 e é alterada conforme a quantidade de milhas.

Quando você vê essa linha porcentagemDesconto = porcentagemDesconto + 10;, isso significa que o valor atual de porcentagemDesconto está sendo somado a 10 e o resultado dessa soma está sendo armazenado de volta na variável porcentagemDesconto. Isso é completamente permitido e é uma prática comum em programação.

No entanto, o código apresentado no enunciado do exercício tem um problema. Se a quantidade de milhas for maior que 30.000, primeiro a porcentagemDesconto será aumentada em 10 (devido ao primeiro if) e depois em mais 20 (devido ao segundo if), resultando em um desconto de 30%, o que não está correto segundo as regras de negócio.

A resposta correta para o exercício seria a opção D, onde primeiro é verificado se a quantidade de milhas é maior ou igual a 30.000. Se for, aplica-se um desconto de 20%. Se não for, então é verificado se a quantidade de milhas é maior que 5.000. Se for, aplica-se um desconto de 10%. Dessa forma, os descontos não são somados erroneamente.

Aqui está como ficaria o código corrigido:

let porcentagemDesconto = 0;

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

Espero ter ajudado. Caso tenha dúvidas, conte com o fórum. Abraços!

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

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software