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

[Projeto] Algoritimo para calcular a taxa de entrega

endereco
previsao tempo
total

se endereco <= 5
entrega = 5,00
se endereco <= 10
entrega = 8,00
senao
entrega = 10,00

se previsao == TRUE
total = entrega + 2,00
"Houve acrécimo de R$2,00 , Valor total:" total
senao
total = entrega
"Distância:" endereco ", valor cobrado: R$" total


Minha ideia aqui seria que, tanto o endereço, quanto a previsão do tempo, seria automático, os usuários ao realizar o cadastro, já teria colocado seu endereço.
E referente a previsão, seria pego direto de um site de clima, evitando que o usuário colocasse se está chuvendo ou não.


1 resposta
solução!

Olá, Pedro! Como vai?

O seu algoritmo ficou excelente e a sua visão de negócio para o aplicativo de entregas é sensacional! Esse é o tipo de pensamento que diferencia um programador focado em linhas de código de um verdadeiro desenvolvedor de soluções.

A sua ideia de automatizar as entradas (capturando a distância do cadastro e o clima de uma API de previsão do tempo em tempo real, sem alugar o cliente com perguntas) é o padrão ouro de usabilidade e experiência do usuário (UX) no mercado de aplicativos hoje.

Analisando a estrutura do seu pseudocódigo, você aplicou muito bem os pilares do Pensamento Computacional, desenhando as estruturas condicionais (se/senao) para ramificar as regras de cobrança. Contudo, há um detalhe lógico sutil no seu primeiro bloco de testes que pode fazer o seu sistema cobrar o valor errado de alguns clientes. Vamos analisar juntos?

O "Efeito Cascata" nas Condicionais

Dê uma olhada em como as duas primeiras condições foram escritas:

se endereco <= 5
    entrega = 5,00
se endereco <= 10
    entrega = 8,00

Imagine que um cliente peça uma entrega e o endereço dele fique a 3 km de distância.

  1. O seu sistema vai testar a primeira linha: 3 é menor ou igual a 5? Sim! A taxa de entrega vira 5,00.
  2. Como a segunda linha é um novo se independente, o sistema vai testar de novo: 3 é menor ou igual a 10? Sim também! A taxa de entrega é sobrescritada e vira 8,00.

Ou seja, quem mora perto acabaria pagando mais caro porque o segundo teste ignora que o primeiro já deu verdadeiro!

Como corrigir usando o "Senão Se" (senao se)

Para resolver essa sobreposição, precisamos encadear as condições. Assim, o sistema só testa a regra dos 10 km se o endereço for maior do que 5 km. Veja como a lógica fica perfeita e blindada:

se endereco <= 5
    entrega = 5,00
senao se endereco <= 10    // Só entra aqui se for maior que 5 e menor/igual a 10
    entrega = 8,00
senao
    entrega = 10,00

Uma pequena melhoria na exibição final

No segundo bloco, onde você checa o clima, repare que se estiver chovendo (previsao == TRUE), você calcula o total com acréscimo, mas a mensagem que exibe o resultado final com a distância e o preço atualizado ficou apenas dentro do senao:

se previsao == TRUE
    total = entrega + 2,00
    "Houve acréscimo de R$2,00 , Valor total:" total // Boa prática: mostrar o resumo aqui também!
senao
    total = entrega
    "Distância:" endereco ", valor cobrado: R$" total

Ajustando esse fluxo para que ambos os caminhos mostrem o relatório completo da corrida, o seu algoritmo fica 100% pronto para ser codificado em qualquer linguagem, como Python ou JavaScript.

Parabéns pela excelente iniciativa, pela sacada de integrar dados automatizados de clima e pela ótima estrutura lógica trazida para o fórum!

Espero que possa ter lhe ajudado!