Olá, Lavinia. Como vai?
Sua dúvida é excelente e muito comum quando estamos aprendendo lógica de programação. Esse tipo de situação é o que chamamos de "condição de contorno" e é fundamental tratá-la corretamente para evitar ambiguidades ou os famosos bugs no sistema.
Quando um enunciado diz "até 5 km", na lógica de programação geralmente traduzimos isso como "menor ou igual a 5" (<= 5). Isso significa que os 5 km exatos estão inclusos nessa regra, e o valor cobrado será de 5,00.
Para a próxima faixa, "entre 5 e 10 km", precisamos garantir que ela só comece após os 5 km. Se colocarmos "maior ou igual a 5" (>= 5), o número 5 cairia nas duas regras, exatamente como você observou. A solução correta é usar apenas "maior que 5" (> 5) junto com "menor ou igual a 10" (<= 10).
Respondendo à sua pergunta sobre aplicar a regra a partir de 5,1 km: usar o operador lógico de "maior que" (> 5) é a melhor prática em vez de escrever 5.1 no código. Isso porque o > 5 cobre automaticamente o 5.1, o 5.01, o 5.0001 e assim por diante, tratando a distância de forma contínua e precisa.
Veja como essa lógica ficaria na prática usando uma estrutura de decisão condicional:
if (distancia <= 5) {
valorEntrega = 5.00;
} else if (distancia > 5 && distancia <= 10) {
valorEntrega = 8.00;
} else {
// Aqui entrariam as regras para distâncias maiores que 10 km
}
Neste exemplo:
- Se a distância for exatamente 5, o programa entra na primeira condição.
- Se a distância for 5.1, a primeira condição é avaliada como falsa e o programa passa para o
else if, onde a condição será verdadeira.
Utilizar o encadeamento com else if é uma ótima prática porque garante que, assim que o sistema encontra a faixa de valor correta, ele ignora as demais, poupando processamento e evitando que regras conflitantes sejam aplicadas simultaneamente.
Espero que possa ter lhe ajudado!