considerei o tipo de produto e a frequencia que poderia ser aplicado desconto, não é o melhor modelo, mas tentei pensar como seria um fluxo fluído e considerando escalar masi incluir mais itens.
considerei o tipo de produto e a frequencia que poderia ser aplicado desconto, não é o melhor modelo, mas tentei pensar como seria um fluxo fluído e considerando escalar masi incluir mais itens.
Olá, Eduardo. Como vai?
Excelente contribuição! A sua modelagem usando um fluxograma ficou fantástica e demonstra uma ótima capacidade de Abstração e Algoritmos, que são pilares fundamentais do Pensamento Computacional.
Como Analista de Dados, você teve uma sensibilidade muito legal ao comentar que pensou em um fluxo fluído e estruturado para escala (permitindo a inclusão de novos itens no futuro). Mapear visualmente as decisões de negócio (o que foi comprado, cálculo de subtotais e aplicação de regras de desconto) antes de escrever qualquer linha de código é a melhor prática do mercado para evitar retrabalho e bugs estruturais.
Para enriquecer o seu projeto dentro do capítulo de Lógica de Programação, analisei a engenharia do seu diagrama e preparei alguns insights sobre a estrutura dele e como deixá-lo ainda mais escalável.
O seu diagrama está muito bem desenhado e utiliza a simbologia correta da lógica de programação (terminadores para início/fim, losangos para decisões e retângulos para processamento/atribuições). Note os pontos fortes da sua lógica:
Ham = 12,00, B.Frita = 7,00, Refri = 5,00), o que é uma excelente prática. Se amanhã o preço do hambúrguer mudar, você só altera o valor nessa caixinha inicial, e o resto de todo o algoritmo continua funcionando sozinho.Pedido = (Item1 + Item2 + Item3) consolida as variáveis de forma clara antes de passar para a régua de precificação final e descontos.Como o seu objetivo explícito foi pensar em escalar o sistema para incluir mais itens, vale a pena notar um pequeno "ponto cego" nas ramificações (linhas) de decisão atuais.
Se repararmos nas decisões de compra:
Item1 e desce diretamente para o Item2 (calculando a batata frita direto), pulando a pergunta se ele de fato queria ou não a batata.FIN sem passar pela soma e pelo desconto.Para que o seu sistema seja verdadeiramente escalável (permitindo adicionar 10, 50 ou 100 itens no cardápio sem que as linhas deem um nó), a melhor estratégia de lógica é usar Estruturas de Decisão Independentes e Sequenciais.
Em vez de conectar uma pergunta dentro do "Não" da outra, cada produto deve ser um bloco isolado que joga o cliente para o próximo produto, independentemente da escolha anterior. Veja a anatomia ideal dessa sequência:
[ INÍCIO ]
│
▼
[ Define Preços dos Itens ]
│
▼
Comprou Hambúrguer? ──(Sim)──► [ Item1 = qtd * 12.00 ]
│ (Não) │
▼◄────────────────────────────┘
Comprou B.Frita? ──(Sim)──► [ Item2 = qtd * 7.00 ]
│ (Não) │
▼◄────────────────────────────┘
Comprou Refrigerante?──(Sim)──► [ Item3 = qtd * 5.00 ]
│ (Não) │
▼◄────────────────────────────┘
[ Pedido = Item1 + Item2 + Item3 ]
│
▼
Terá Desconto? ──(Sim)──► [ T.Pagar = Pedido - Desconto ]
│ (Não) │
▼ ▼
[ T.Pagar = Pedido ] [ T.Pagar = Resultado ]
│ │
▼◄────────────────────────────┘
[ FIM ]
Por que essa estrutura escala melhor? Se o seu restaurante decidir adicionar um "Milkshake" ou um "Nuggets", basta você "recortar" o fluxo antes do cálculo do
Pedidoe encaixar mais um bloco idêntico de pergunta e cálculo. O fluxo continua reto, limpo e extremamente fácil de ser transformado em código (usando uma sequência deifs simples).
Parabéns pelo excelente trabalho de modelagem e pela iniciativa de compartilhar o seu raciocínio visual com o fórum! Ter essa visão analítica de processos é o diferencial de um grande Analista de Dados.
Espero que possa ter lhe ajudado!
Nossa é verdade, faltou revalidar a solução, gostei muito dos insights, ficou muito mais claro na minha cabeça agora, obrigado!