Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Calcular frete

function calcularFrete(distancia) {
    if (distancia <= 5) {
        return 5;
    } else if (distancia > 5 && distancia <= 20) {
        return distancia * 0.50;
    } else {
        return 20;
    }
}
console.log(calcularFrete(3));
console.log(calcularFrete(10));
console.log(calcularFrete(25));
1 resposta

Olá, Alan. Como vai?

Sua implementação da função para calcular o frete está muito boa e resolve perfeitamente o problema proposto na atividade! Você estruturou as condicionais de forma lógica, cobrindo todas as faixas de distância exigidas. Os testes no console.log() também foram ótimos para validar que as regras de negócio estão funcionando conforme o esperado.

Para te ajudar a evoluir na programação e agregar ainda mais valor ao seu aprendizado em JavaScript, gostaria de compartilhar duas sugestões de melhorias e boas práticas com base no seu código:

  • Simplificação de Condições (Código Limpo): No seu else if (distancia > 5 && distancia <= 20), a primeira verificação distancia > 5 é tecnicamente redundante. Como o código roda de cima para baixo, se a distância chegou até o else if, nós já temos a certeza absoluta de que ela é maior do que 5 (caso contrário, ela teria entrado e parado no primeiro if). Remover essa parte deixa o código mais limpo e fácil de ler.
  • Formatação Visual do Console: Ao testar códigos que retornam valores financeiros, uma boa prática é formatar a saída para que ela se pareça com dinheiro real, utilizando o método .toFixed(2) para fixar duas casas decimais após a vírgula.

Para ilustrar como aplicar essas melhorias práticas mantendo a mesma lógica do seu exercício, veja o exemplo abaixo:

function calcularFrete(distancia) {
    if (distancia <= 5) {
        return 5;
    } else if (distancia <= 20) { // Simplificado: não precisa testar se é > 5
        return distancia * 0.50;
    } else {
        return 20;
    }
}

// Testando e formatando a saída com duas casas decimais
console.log("Frete para 3km: R$ " + calcularFrete(3).toFixed(2));  // Retorna R$ 5.00
console.log("Frete para 10km: R$ " + calcularFrete(10).toFixed(2)); // Retorna R$ 5.00
console.log("Frete para 25km: R$ " + calcularFrete(25).toFixed(2)); // Retorna R$ 20.00

Dominar essa leitura fluida das estruturas condicionais é um passo fundamental para escrever códigos cada vez mais elegantes e fáceis de dar manutenção no ecossistema Front-end. Parabéns pela dedicação e pelo resultado do desafio!

Espero que possa ter lhe ajudado!