Capítulo 11: Laço Determinístico e Contadores (PARA-DE-ATE-FACA / For Loop)
🎯 Objetivo da Aula
Quando você já sabe exatamente quantas vezes uma tarefa precisa ser executada antes de começar (por exemplo: calcular o frete para 10 cidades, emitir 12 faturas mensais ou fazer uma contagem regressiva de 5 segundos para a partida de um caminhão), o comando para (For Loop) é a estrutura mais limpa, elegante e segura da programação.
Nesta aula, você aprenderá a:
- Compreender o funcionamento do Laço Determinístico (
para). - Dominar a sintaxe:
para variavel de inicio ate fim [passo x] faca ... fimpara. - Utilizar o modificador
passopara saltos progressivos (passo 10) e contagens regressivas (passo -1). - Gerar Tabelas Progressivas de Custos e relatórios tabulares automatizados.
📥 Material de Apoio e Código-Fonte da Aula:
- 📄 Arquivo Pronto (.alg): Baixar Capitulo_11.alg (abra diretamente no VisuAlg 3.0)
- 📦 Exercícios Separados (.zip): Baixar Capitulo_11.zip
🏢 O Cenário Prático (Seu Desafio)
Situação: O setor comercial da FastLog precisa de um material impresso para entregar aos clientes: a Tabela de Frete Fracionado 2026. A tabela deve listar os custos estimados de frete para faixas de distância que vão de 100 km até 1.000 km, de 100 em 100 km, aplicando uma tarifa de R$ 3,80 por km mais uma taxa de despacho de R$ 85,00.
Missão: Você deve construir um algoritmo que utilize o laço para com passo positivo para calcular e tabular todas as 10 faixas de distância automaticamente no console.
🧠 Fundamentos: A Mecânica do Laço para
1. A Estrutura de Contagem Fixa
Diferente do enquanto (onde você precisa criar a variável, testar no início e somar +1 manualmente dentro do bloco), o comando para faz tudo isso em uma única linha de cabeçalho:
graph TD
A["para km de 100 ate 1000 passo 100 faca"] --> B["1. Inicializa: km <- 100"]
B --> C{km <= 1000?}
C -- "Sim (Verdadeiro)" --> D["2. Executa Comandos:<br/>Calcula frete e imprime linha"]
D --> E["3. Incrementa Automático:<br/>km <- km + 100"]
E --> C
C -- "Não (Falso)" --> F[4. Sai do laço e vai para fimpara]
style A fill:#8e44ad,stroke:#fff,stroke-width:2px,color:#fff
style D fill:#2980b9,stroke:#fff,stroke-width:2px,color:#fff
style C fill:#f39c12,stroke:#fff,stroke-width:2px,color:#fff
style F fill:#217346,stroke:#fff,stroke-width:2px,color:#fff2. A Sintaxe Completa no VisuAlg
passo 1(Padrão): Se você omitir a palavrapasso, o VisuAlg incrementa de 1 em 1 automaticamente.passo N: Pula de N em N (ex:passo 5,passo 10).passo -1(Regressivo): Conta de trás para frente (ex: de 10 até 1).
3. Tabela Comparativa de Sintaxe entre Linguagens
| Linguagem | Sintaxe do Laço For |
|---|---|
| VisuAlg | para i de 1 ate 10 passo 2 faca ... fimpara |
| Python | for i in range(1, 11, 2): |
| C / C++ / Java | for (int i = 1; i <= 10; i += 2) { ... } |
| JavaScript | for (let i = 1; i <= 10; i += 2) { ... } |
📖 Exemplo Guiado: Gerador da Tabela de Fretes 2026
Código do Algoritmo:
✅ Exemplo de Execução no Console (F9):
🛠️ Prática Obrigatória 1: Contagem Regressiva de Despacho (passo -1)
Passo 1: O Desafio
O semáforo do túnel de inspeção precisa disparar um aviso sonoro e visual em contagem regressiva de 10 até 1 segundo, finalizando com a mensagem: "[LIBERADO] Cancela aberta! Caminhão em trânsito.".
Crie um algoritmo "Contagem_Regressiva" utilizando o modificador passo -1.
✅ Resultado Esperado (Prática 1):
🛠️ Prática Obrigatória 2: Somatório de Faturamento de 5 Filiais
Crie um algoritmo "Faturamento_Filiais" que utilize um laço para de 1 até 5 para perguntar o faturamento de cada uma das 5 filiais da FastLog.
O programa deve:
- Acumular o faturamento total da rede.
- Calcular e exibir a média de faturamento por filial ao final.
✅ Resultado Esperado (Prática 2):
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_SeuNome_SeuSobrenome.alg. - Execute o código no VisuAlg e verifique a precisão do cabeçalho do laço
para. - No Microsoft Teams, envie na tarefa “VisuAlg Cap 11 - Laço Para”.
- Clique em Entregar (Turn In).
💡 Checkpoint de Lógica & Engenharia de Software
Você acabou de dominar Iteradores Determinísticos. Na programação moderna, o laço para é a base das funções de alta ordem de processamento em lote, como .forEach(), .map() e .reduce() em JavaScript e List Comprehensions em Python.
🔥 Desafio de Fixação: Simulador de Juros Compostos
Crie um algoritmo que receba um investimento inicial (ex: R$ 10.000,00) e uma taxa de rendimento mensal (ex: 1% ou 0.01). Use um laço para de 1 até 12 para calcular e exibir o saldo acumulado mês a mês durante 1 ano.
🔑 Gabarito de Código Completo
Prática 1:
Prática 2:
Desafio:
📝 Atividade Extra: Questionário de Fixação (Caderno)
Instruções: Responda no caderno, de próprio punho, as 10 perguntas abaixo com base no que foi estudado neste capítulo. Ao concluir, leve o caderno até o professor para correção e visto.
- Qual é a principal diferença entre o laço
parae o laçoenquantoem relação à criação, ao teste e ao incremento da variável de controle? - Escreva a sintaxe completa do comando
parano VisuAlg, indicando qual parte do cabeçalho é opcional. - O que acontece com o incremento da variável de controle se a palavra
passofor omitida do cabeçalho do laçopara? - Qual modificador deve ser usado no cabeçalho do
parapara realizar uma contagem regressiva (de trás para frente)? - No Cenário Prático da FastLog, qual é a tarifa cobrada por km e qual é a taxa fixa de despacho usadas no cálculo do frete?
- No algoritmo
Tabela_Fretes_2026, de qual distância até qual distância o laçoparapercorre, e de quanto em quanto ele avança (passo)? - Na Prática Obrigatória 1, de que valor até que valor a contagem regressiva deve ir, e qual mensagem final deve ser exibida ao término do laço?
- Na Prática Obrigatória 2, quantas filiais são somadas pelo laço
para, e quais dois valores devem ser calculados e exibidos ao final do programa? - De acordo com o Checkpoint de Lógica, o laço
paraé a base de quais funções de alta ordem usadas em JavaScript, e de qual recurso equivalente do Python? - Segundo a tabela comparativa de sintaxe, como o laço
para i de 1 ate 10 passo 2 faca ... fimparado VisuAlg seria escrito em Python e em C/C++/Java?