seguindo o raciocínio de otimização com curto-circuito e separação de responsabilidades:
Algoritmo em linguagem natural — versão otimizada
Solicitar a distância da entrega (em km)
Solicitar se está chovendo (sim / não)
Determinar a taxa base:
Se distância ≤ 5 → taxa base = R$ 5,00 — encerra busca
Se distância ≤ 10 → taxa base = R$ 8,00 — encerra busca
Caso contrário → taxa base = R$ 10,00
Se chuva = verdadeiro → taxa final = taxa base + R$ 2,00
Caso contrário → taxa final = taxa base
Exibir o valor final da entrega
O ponto-chave da otimização aqui está na separação de responsabilidades em duas fases independentes:
Na primeira, descubro a taxa base pela distância , assim que a condição ≤ 5 km for verdadeira, já tenho minha resposta e pulo tudo o que vem depois. Na segunda fase, simplesmente pergunto se está chovendo e, se sim, somo R$ 2,00 por cima do que já calculei.
O que quis evitar foi a solução mais óbvia, que seria combinar cada distância com cada situação de chuva — "até 5 km com chuva → R$ 7,00", "até 5 km sem chuva → R$ 5,00", e assim por diante — chegando a 6 combinações para resolver algo que, separado em fases, precisa de apenas 3 decisões. Além de mais limpo, esse modelo é mais fácil de manter: se amanhã a taxa de chuva mudar de R$ 2,00 para R$ 3,00, altero em um único lugar, sem precisar revisar cada combinação.