{"product_id":"mapa-linguagem-de-programacao-54-2025","title":"MAPA - LINGUAGEM DE PROGRAMAÇÃO 54_2025","description":"\u003cbr\u003e\u003ca href=\"https:\/\/wa.me\/5518981218965?text=Ol%C3%A1!%20Quero%20saber%20mais%20sobre%20esta%20atividade:%20%0A%0A*MAPA%20-%20LINGUAGEM%20DE%20PROGRAMA%C3%87%C3%83O*\" target=\"_blank\" style=\"display: inline-block; background: #25D366; color: #fff; padding: 12px 20px; border-radius: 5px; text-decoration: none; font-weight: bold; margin-top: 15px;width:100%;text-align:center\"\u003eClique Aqui e Compre pelo Whatsapp\u003c\/a\u003e\u003cbr\u003e\u003cbr\u003e\u003cp style=\"text-align:justify\"\u003eEstudante, nesta atividade, você é convidado a verificar como a disciplina em questão pode contribuir para a sua experiência e formação profissional. Por esse motivo, você é instigado a solucionar um problema voltado à sua área de formação. A importância da prática consiste em colocar em execução os conteúdos vistos na teoria, momento em que se verifica se os objetivos traçados foram, de fato, alcançados.\u003cbr\u003e\r\n\u003cbr\u003e\r\nA Loja Ágil, um e-commerce nacional, processa em média 10 a 15 mil pedidos por dia. Um script legado em Python é executado por agendamento noturno (cron) para gerar três relatórios operacionais:\u003cbr\u003e\r\n(i) faturamento diário,\u003cbr\u003e\r\n(ii) taxa de aprovação de pedidos, e\u003cbr\u003e\r\n(iii) previsão de ocupação do centro de distribuição.\u003cbr\u003e\r\n\u003cbr\u003e\r\nNas últimas semanas, os relatórios passaram a apresentar divergências — o total faturado está abaixo do esperado, e a contagem de embalagens “altas” (≥ 50 cm) parece subestimada. Em alguns dias, o processo fica preso por horas, consumindo 100% da CPU.\u003cbr\u003e\r\n\u003cbr\u003e\r\nA equipe de TI identificou que dois laços de repetição concentram a regra de negócio:\u003cbr\u003e\r\n(a) um laço while, que percorre a lista de pedidos para somar o valor de pedidos elegíveis (apenas os com status “pago” e não cancelados, respeitando um limite mínimo antifraude); e\u003cbr\u003e\r\n(b) um laço for com range, que conta quantas embalagens têm altura ≥ 50 cm - métrica utilizada na tarifação do frete e planejamento de espaço.\u003cbr\u003e\r\nAs listas podem não estar ordenadas por status (pago\/pendente\/cancelado) e podem conter mistura de estados na mesma execução. A hipótese é que erros no controle dos laços (condições de parada, atualização de índice e limites do range) estejam causando travamentos e subcontagem nos relatórios.\u003cbr\u003e\r\n\u003cbr\u003e\r\n\u003cstrong\u003eRegras de negócio relevantes\u003c\/strong\u003e\u003cbr\u003e\r\n\u003cbr\u003e\r\n• Pedido 'válido' para faturamento: status == 'pago' e cancelado == False; pedidos cujo o valor esjeta abaixo do limite mínimo (limite) não são incluídos no total.\u003cbr\u003e\r\n• Os pedidos podem chegar fora de ordem (ex.: um 'pendente' entre dois 'pago'); a varredura não deve interromper-se ao encontrar um status diferente.\u003cbr\u003e\r\n• A contagem de embalagens altas (altura ≥ 50 cm) é usada para prever custo de frete e para alocar docas\/estantes; a subcontagem gera rupturas logística.\u003cbr\u003e\r\n• Os laços devem assegurar progresso (evitar loops infinitos) e percorrer todos os elementos das coleções, incluindo o índice 0, lembrando que o limite superior do intervalo (range) é exclusivo.\u003cbr\u003e\r\n• Restrição: não alterar a estrutura de dados; corrija apenas as condições e as atualizações dos laços, fornecendo justificativa técnica para cada alteração.\u003cbr\u003e\r\n\u003cbr\u003e\r\n\u003cstrong\u003eExemplo de parâmetros operacionais.\u003c\/strong\u003e\u003cbr\u003e\r\n\u003cbr\u003e\r\n• limite = 100.0 (valor mínimo para entrar no faturamento)\u003cbr\u003e\r\n• Altura mínima considerada 'alta' = 50 cm\u003cbr\u003e\r\n\u003cbr\u003e\r\nBase de dados (exemplo mínimo para teste)\u003c\/p\u003e\r\n\r\n\u003cp style=\"text-align:justify\"\u003epedidos = [\u003cbr\u003e\r\n    {\"id\": 101, \"status\": \"pago\", \"valor\": 120.0, \"cancelado\": False},\u003cbr\u003e\r\n    {\"id\": 102, \"status\": \"pago\", \"valor\": 80.0,  \"cancelado\": True},\u003cbr\u003e\r\n    {\"id\": 103, \"status\": \"pendente\", \"valor\": 50.0, \"cancelado\": False},\u003cbr\u003e\r\n    {\"id\": 104, \"status\": \"pago\", \"valor\": 40.0,  \"cancelado\": False},\u003cbr\u003e\r\n]\u003cbr\u003e\r\nalturas = [55, 48, 50, 39, 72]  # em centímetros\u003cbr\u003e\r\n\u003cbr\u003e\r\nTrecho do código a ser auditado\u003cbr\u003e\r\nParte A (while) — consolidação de pedidos “pagos”:\u003c\/p\u003e\r\n\r\n\u003cp\u003ei = 0\u003cbr\u003e\r\ntotal = 0.0\u003cbr\u003e\r\nvalidos = 0\u003cbr\u003e\r\n\u003cbr\u003e\r\n# Enquanto houver pedido \"pago\", somar total e contar válidos\u003cbr\u003e\r\nwhile i \u0026lt; len(pedidos) and pedidos[i][\"status\"] == \"pago\":\u003cbr\u003e\r\n    total += pedidos[i][\"valor\"]\u003cbr\u003e\r\n    if not pedidos[i][\"cancelado\"]:\u003cbr\u003e\r\n        validos += 1\u003cbr\u003e\r\n    # (intencionalmente sem i += 1)\u003c\/p\u003e\r\n\r\n\u003cp style=\"text-align:justify\"\u003e\u003cbr\u003e\r\nParte B (for) — contagem de embalagens “altas” (≥ 50 cm):\u003cbr\u003e\r\n\u003cbr\u003e\r\ncontagem_altos = 0\u003cbr\u003e\r\n# Conta quantas alturas são \u0026gt;= 50\u003cbr\u003e\r\nfor j in range(1, len(alturas)):\u003cbr\u003e\r\n    if alturas[j] \u0026gt;= 50:\u003cbr\u003e\r\n        contagem_altos += 1\u003c\/p\u003e\r\n\r\n\u003cp\u003e \u003c\/p\u003e\r\n\r\n\u003cp style=\"text-align:justify\"\u003e\u003cstrong\u003eO que você deve entregar:\u003c\/strong\u003e\u003cbr\u003e\r\n\u003cbr\u003e\r\n1) Classificação e propósito dos laços:\u003cbr\u003e\r\n\u003cbr\u003e\r\n• Explique, utilizando linguagem técnica, o propósito da Parte A (while) e da Parte B (for).\u003cbr\u003e\r\n• Classifique cada laço como condicional ou contado, justificando com base no material:\u003cbr\u003e\r\n          • Laços condicionais dependem de uma condição booleana (while);\u003cbr\u003e\r\n          • Laços contados executam um número conhecido de vezes, definido por meio de um range (for).\u003cbr\u003e\r\n\u003cbr\u003e\r\n2) Achados de auditoria — problemas e riscos:\u003cbr\u003e\r\n\u003cbr\u003e\r\nLocalize e descreva pelo menos 03 (três) problemas no comportamento do código, incluindo obrigatoriamente:\u003cbr\u003e\r\n• (a) Risco de loop infinito na Parte A e o motivo.\u003cbr\u003e\r\nDica: em laços while, a atualização da variável de controle é imprescindível para garantir progresso e evitar repetição indefinida.\u003cbr\u003e\r\n\u003cbr\u003e\r\n• (b) Perda de dados na Parte B devido aos limites do range: o índice 0 fica de fora quando o laço se inicia em 1, e o limite superior do range é exclusivo.\u003cbr\u003e\r\nMostre o impacto desso comportamento na variável contagem_altos, utilizando o exemplo fornecido.\u003cbr\u003e\r\n\u003cbr\u003e\r\n3) Correções propostas (escreva o código):\u003cbr\u003e\r\n\u003cbr\u003e\r\nReescreva apenas as condições e as atualizações necessárias dos laços, preservando o resto do script, de forma a garantir:\u003cbr\u003e\r\n• (i) Término correto do laço da Parte A (sem risco de loop infinito).\u003cbr\u003e\r\n• (ii) A cobertura completa dos dados na Parte B, incluindo o índice 0 e respeitando o fato de quem o que o fim do range é exclusivo.\u003cbr\u003e\r\n\u003cbr\u003e\r\nFormato esperado (substitua pelos seus ajustes):\u003cbr\u003e\r\n\u003cbr\u003e\r\n# Parte A (ajustada)\u003cbr\u003e\r\nwhile \u003ccondicao_corrigida\u003e:\u003cbr\u003e\r\n    ...\u003cbr\u003e\r\n    i += 1\u003cbr\u003e\r\n\u003cbr\u003e\r\n# Parte B (ajustada)\u003cbr\u003e\r\nfor j in range(\u003cinicio_corrigido\u003e, \u003cfim_corrigido\u003e):\u003cbr\u003e\r\n    ...\u003cbr\u003e\r\n\u003cbr\u003e\r\n4) Critérios de escolha: while × for:\u003cbr\u003e\r\n\u003cbr\u003e\r\nArgumente sobre a preferência pelo uso de laço de repetição while (critério de parada por condição, iterações desconhecidas) e quando preferir for com range (iterações conhecidas por contagem), fundamentando tecnicamente.\u003c\/fim_corrigido\u003e\u003c\/inicio_corrigido\u003e\u003c\/condicao_corrigida\u003e\u003c\/p\u003e\r\n\r\n\u003cp\u003e \u003c\/p\u003e\r\n\r\n\u003cp style=\"text-align:justify\"\u003e\u003cstrong\u003eIMPORTANTE:\u003c\/strong\u003e\u003cbr\u003e\r\n\u003cbr\u003e\r\nAcesse o link do vídeo que o professor da disciplina gravou com orientações para ajudá-lo nesse processo de criação e desenvolvimento. O acesso deverá ser realizado em: \u003cstrong\u003eMaterial da Disciplina\u003c\/strong\u003e.\u003cbr\u003e\r\n\u003cbr\u003e\r\nResponda à atividade seguindo como roteiro os tópicos elencados anteriormente.\u003cbr\u003e\r\nA entrega deve ser feita exclusivamente por meio do Formulário de entrega da atividade MAPA disponível no material da disciplina.\u003cbr\u003e\r\nAntes de enviar sua atividade, certifique-se de que respondeu a todas as perguntas e realize uma cuidadosa correção ortográfica.\u003cbr\u003e\r\nApós o envio, não são permitidas alterações ou modificações. Logo, você tem apenas uma chance de enviar o arquivo corretamente. Revise bem antes de enviar!\u003cbr\u003e\r\nLembre-se de que evidências de cópias de materiais, incluindo de outros estudantes, sem devidas referências, serão inquestionavelmente zeradas. As citações e referências, mesmo que do livro da disciplina, devem ser realizadas conforme normas da Instituição de Ensino.\u003cbr\u003e\r\nNão são permitidas correções parciais no decorrer do módulo, ou seja, o famoso: “Professor, veja se minha atividade está certa?”. Isso invalida seu processo avaliativo. Lembre-se de que a interpretação da atividade também faz parte da avaliação.\u003cbr\u003e\r\nProcure sanar suas dúvidas junto à mediação em tempo hábil sobre o conteúdo exigido na atividade, de modo que consiga realizar sua participação.\u003cbr\u003e\r\nAtenção ao prazo de entrega. Evite enviar a atividade em cima do prazo. Você pode ter algum problema com internet, computador, software, etc., e os prazos não serão flexibilizados, mesmo em caso de comprovação.\u003cbr\u003e\r\n\u003cbr\u003e\r\n\u003cstrong\u003eBons estudos!\u003c\/strong\u003e\u003cbr\u003e\r\nEm caso de dúvidas, encaminhar mensagem ao seu professor mediador.\u003c\/p\u003e\r\n​\u003cbr\u003e\u003cbr\u003e\u003ca href=\"https:\/\/wa.me\/5518981218965?text=Ol%C3%A1!%20Quero%20saber%20mais%20sobre%20esta%20atividade:%20%0A%0A*MAPA%20-%20LINGUAGEM%20DE%20PROGRAMA%C3%87%C3%83O*\" target=\"_blank\" style=\"display: inline-block; background: #25D366; color: #fff; padding: 12px 20px; border-radius: 5px; text-decoration: none; font-weight: bold; margin-top: 15px;width:100%;text-align:center\"\u003eClique Aqui e Compre pelo Whatsapp\u003c\/a\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e","brand":"Loja Papiron","offers":[{"title":"Default Title","offer_id":47592552825055,"sku":"mw7F7GS7b6KXgCE866V2jf","price":49.9,"currency_code":"BRL","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0747\/5891\/4271\/files\/Logo_Unicesumar_d6bc5c80-8401-48e2-bea9-d15bfa087bb8.png?v=1763301269","url":"https:\/\/www.lojapapiron.com.br\/products\/mapa-linguagem-de-programacao-54-2025","provider":"Loja Papiron","version":"1.0","type":"link"}