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:

  1. Compreender o funcionamento do Laço Determinístico (para).
  2. Dominar a sintaxe: para variavel de inicio ate fim [passo x] faca ... fimpara.
  3. Utilizar o modificador passo para saltos progressivos (passo 10) e contagens regressivas (passo -1).
  4. Gerar Tabelas Progressivas de Custos e relatórios tabulares automatizados.

📥 Material de Apoio e Código-Fonte da Aula:


🏢 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:#fff

2. A Sintaxe Completa no VisuAlg

1
2
3
para variavel_controle de valor_inicial ate valor_final [passo incremento] faca
   // Bloco de instruções
fimpara
  • passo 1 (Padrão): Se você omitir a palavra passo, 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

LinguagemSintaxe do Laço For
VisuAlgpara i de 1 ate 10 passo 2 faca ... fimpara
Pythonfor i in range(1, 11, 2):
C / C++ / Javafor (int i = 1; i <= 10; i += 2) { ... }
JavaScriptfor (let i = 1; i <= 10; i += 2) { ... }

📖 Exemplo Guiado: Gerador da Tabela de Fretes 2026

Código do Algoritmo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
algoritmo "Tabela_Fretes_2026"
var
   km : inteiro
   tarifaPorKm, taxaDespacho, custoTotal : real

inicio
   tarifaPorKm <- 3.80
   taxaDespacho <- 85.00

   escreval("==================================================")
   escreval("       FASTLOG - TABELA DE FRETES REGIONAIS       ")
   escreval("==================================================")
   escreval(" DISTÂNCIA (KM) | TARIFA BASE  |  TOTAL A COBRAR  ")
   escreval("----------------+--------------+------------------")

   // Laço Determinístico de 100 até 1000 com salto de 100 em 100
   para km de 100 ate 1000 passo 100 faca
      custoTotal <- taxaDespacho + (km * tarifaPorKm)
      escreval("    ", km:4, " km     |   R$ ", (km * tarifaPorKm):7:2, "  |   R$ ", custoTotal:8:2)
   fimpara

   escreval("==================================================")
   escreval("Tabela válida para o ano fiscal vigente.")
fimalgoritmo

✅ Exemplo de Execução no Console (F9):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
==================================================
       FASTLOG - TABELA DE FRETES REGIONAIS       
==================================================
 DISTÂNCIA (KM) | TARIFA BASE  |  TOTAL A COBRAR  
----------------+--------------+------------------
     100 km     |   R$  380.00  |   R$   465.00
     200 km     |   R$  760.00  |   R$   845.00
     300 km     |   R$ 1140.00  |   R$  1225.00
     400 km     |   R$ 1520.00  |   R$  1605.00
     500 km     |   R$ 1900.00  |   R$  1985.00
     600 km     |   R$ 2280.00  |   R$  2365.00
     700 km     |   R$ 2660.00  |   R$  2745.00
     800 km     |   R$ 3040.00  |   R$  3125.00
     900 km     |   R$ 3420.00  |   R$  3505.00
    1000 km     |   R$ 3800.00  |   R$  3885.00
==================================================
Tabela válida para o ano fiscal vigente.

🛠️ 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):

1
2
3
4
5
6
Inspeção concluída. Partida em:
10 segundos...
9 segundos...
...
1 segundos...
[LIBERADO] Cancela aberta! Caminhão em trânsito.

🛠️ 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:

  1. Acumular o faturamento total da rede.
  2. Calcular e exibir a média de faturamento por filial ao final.

✅ Resultado Esperado (Prática 2):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
=== CONSOLIDAÇÃO DE VENDAS POR FILIAL ===
Faturamento da Filial [1] R$: 82000.00
Faturamento da Filial [2] R$: 95000.00
Faturamento da Filial [3] R$: 71000.00
Faturamento da Filial [4] R$: 88000.00
Faturamento da Filial [5] R$: 104000.00

=========================================
FATURAMENTO TOTAL DA REDE: R$ 440000.00
MÉDIA POR UNIDADE        : R$  88000.00
=========================================

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_SeuNome_SeuSobrenome.alg.
  2. Execute o código no VisuAlg e verifique a precisão do cabeçalho do laço para.
  3. No Microsoft Teams, envie na tarefa “VisuAlg Cap 11 - Laço Para”.
  4. 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:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
algoritmo "Contagem_Regressiva"
var
   segundos : inteiro
inicio
   escreval("Inspeção concluída. Partida em:")
   escreval("-------------------------------")

   para segundos de 10 ate 1 passo -1 faca
      escreval(segundos, " segundos...")
   fimpara

   escreval("-------------------------------")
   escreval("[LIBERADO] Cancela aberta! Caminhão em trânsito.")
fimalgoritmo

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
algoritmo "Faturamento_Filiais"
var
   filial : inteiro
   valorFilial, totalRede, mediaPorFilial : real
inicio
   totalRede <- 0.0

   escreval("=== CONSOLIDAÇÃO DE VENDAS POR FILIAL ===")
   para filial de 1 ate 5 faca
      escreva("Faturamento da Filial [", filial, "] R$: ")
      leia(valorFilial)
      totalRede <- totalRede + valorFilial
   fimpara

   mediaPorFilial <- totalRede / 5

   escreval("")
   escreval("=========================================")
   escreval("FATURAMENTO TOTAL DA REDE: R$ ", totalRede:9:2)
   escreval("MÉDIA POR UNIDADE        : R$ ", mediaPorFilial:9:2)
   escreval("=========================================")
fimalgoritmo

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
algoritmo "Juros_Compostos"
var
   mes : inteiro
   saldo, taxa : real
inicio
   saldo <- 10000.00
   taxa <- 0.01 // 1% ao mês

   escreval("=== EVOLUÇÃO PATRIMONIAL FASTLOG (1 ANO) ===")
   escreval("Saldo Inicial: R$ ", saldo:9:2)
   escreval("--------------------------------------------")

   para mes de 1 ate 12 faca
      saldo <- saldo * (1.0 + taxa)
      escreval("Mês ", mes:2, " | Saldo Atualizado: R$ ", saldo:9:2)
   fimpara

   escreval("============================================")
   escreval("Saldo Final Consolidado: R$ ", saldo:9:2)
fimalgoritmo

📝 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.

  1. Qual é a principal diferença entre o laço para e o laço enquanto em relação à criação, ao teste e ao incremento da variável de controle?
  2. Escreva a sintaxe completa do comando para no VisuAlg, indicando qual parte do cabeçalho é opcional.
  3. O que acontece com o incremento da variável de controle se a palavra passo for omitida do cabeçalho do laço para?
  4. Qual modificador deve ser usado no cabeçalho do para para realizar uma contagem regressiva (de trás para frente)?
  5. 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?
  6. No algoritmo Tabela_Fretes_2026, de qual distância até qual distância o laço para percorre, e de quanto em quanto ele avança (passo)?
  7. 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?
  8. 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?
  9. 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?
  10. Segundo a tabela comparativa de sintaxe, como o laço para i de 1 ate 10 passo 2 faca ... fimpara do VisuAlg seria escrito em Python e em C/C++/Java?