Capítulo 11: Laço Determinístico e Contadores (PARA / For Loop)

🎯 Objetivo da Aula

Quando você já sabe de antemão quantas vezes uma repetição deve acontecer (como calcular o frete para 10 faixas de distância ou emitir 12 parcelas mensais), o laço para (For Loop) é a estrutura mais concisa, 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 C/Java: para (inicializacao; condicao; incremento) { ... }.
  3. Utilizar contagens progressivas (i++, i += 50) e regressivas (i--).
  4. Gerar Tabelas Progressivas de Custos e relatórios tabulares no console.

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


🏢 O Cenário Prático (Seu Desafio)

Situação: O setor comercial da FastLog precisa gerar a Tabela de Frete Fracionado 2026. A tabela deve listar os custos de frete para rotas de 100 km até 1.000 km, de 100 em 100 km, aplicando uma tarifa de R$ 3,80/km mais uma taxa de despacho de R$ 85,00.

Missão: Você deve construir um programa que utilize o laço para com incremento de 100 em 100 (km += 100) para tabular todas as faixas automaticamente.


🧠 Fundamentos: A Mecânica do Laço para

1. Os Três Pilares do Cabeçalho para

graph LR
    P1["1. Inicialização<br/>inteiro km = 100"] --> P2["2. Condição de Teste<br/>km <= 1000"]
    P2 -->|Verdadeiro| P3["3. Executa Bloco { }<br/>Calcula e imprime frete"]
    P3 --> P4["4. Incremento<br/>km += 100"]
    P4 --> P2
    P2 -->|Falso| P5[5. Sai do Laço]
    
    style P1 fill:#8e44ad,stroke:#fff,color:#fff
    style P2 fill:#f39c12,stroke:#fff,color:#fff
    style P3 fill:#2980b9,stroke:#fff,color:#fff
    style P4 fill:#27ae60,stroke:#fff,color:#fff
    style P5 fill:#c0392b,stroke:#fff,color:#fff
1
2
3
4
para (inteiro i = 1; i <= 10; i++) 
{
	escreva("Contagem: ", i, "\n")
}

2. Quadro Comparativo do Laço For

LinguagemSintaxe do Laço For
Portugol Studiopara (inteiro i = 0; i < 10; i++) { ... }
C / C++for (int i = 0; i < 10; i++) { ... }
Java / C#for (int i = 0; i < 10; i++) { ... }
JavaScriptfor (let i = 0; i < 10; i++) { ... }
Pythonfor i in range(0, 10):

📖 Exemplo Guiado: Gerador da Tabela de Fretes 2026

Código do Programa:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
programa 
{
	funcao inicio() 
	{
		real tarifaPorKm = 3.80
		real taxaDespacho = 85.00
		real custoTotal

		escreva("==================================================\n")
		escreva("       FASTLOG - TABELA DE FRETES REGIONAIS       \n")
		escreva("==================================================\n")
		escreva(" DISTÂNCIA (KM) |\tTARIFA BASE\t|\tTOTAL A COBRAR\n")
		escreva("----------------+-------------------+-------------\n")

		// Laço de 100 a 1000 com salto de 100 em 100
		para (inteiro km = 100; km <= 1000; km += 100) 
		{
			custoTotal = taxaDespacho + (km * tarifaPorKm)
			escreva("     ", km, " km\t|\tR$ ", (km * tarifaPorKm), "\t\t|\tR$ ", custoTotal, "\n")
		}

		escreva("==================================================\n")
		escreva("Tabela válida para o ano fiscal vigente.\n")
	}
}

✅ Exemplo de Execução no Console (Shift + F6):

 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.0		|	R$ 465.0
     200 km	|	R$ 760.0		|	R$ 845.0
     300 km	|	R$ 1140.0		|	R$ 1225.0
     400 km	|	R$ 1520.0		|	R$ 1605.0
     500 km	|	R$ 1900.0		|	R$ 1985.0
     600 km	|	R$ 2280.0		|	R$ 2365.0
     700 km	|	R$ 2660.0		|	R$ 2745.0
     800 km	|	R$ 3040.0		|	R$ 3125.0
     900 km	|	R$ 3420.0		|	R$ 3505.0
    1000 km	|	R$ 3800.0		|	R$ 3885.0
==================================================
Tabela válida para o ano fiscal vigente.

🛠️ Prática Obrigatória 1: Contagem Regressiva de Despacho (i--)

Passo 1: O Desafio

O semáforo da cancela precisa emitir uma contagem regressiva de 10 até 1 segundo, finalizando com: "[LIBERADO] Cancela aberta! Caminhão em trânsito.". Crie um programa contagem_regressiva.por utilizando i--.

✅ Resultado Esperado (Prática 1):

1
2
3
4
5
6
Partida do comboio em:
10 segundos...
9 segundos...
...
1 segundo...
[LIBERADO] Cancela aberta! Caminhão em trânsito.

🛠️ Prática Obrigatória 2: Somatório de Faturamento de 5 Filiais

Crie um programa faturamento_filiais.por que utilize um laço para de 1 até 5 para ler o faturamento de cada uma das 5 filiais da FastLog. Ao final, exiba:

  1. O faturamento total acumulado da rede.
  2. A média de faturamento por filial.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_SeuNome_SeuSobrenome.por.
  2. Verifique a sintaxe com ponto e vírgula nos 3 blocos do para.
  3. No Microsoft Teams, envie na tarefa “Portugol Cap 11 - Laço Para”.
  4. Clique em Entregar (Turn In).

💡 Checkpoint de Lógica & Engenharia de Software

Você acabou de aplicar a base dos Iteradores Modernos. Em linguagens como TypeScript e Python, o laço determinístico é o motor por trás de métodos de transformação de dados como .map(), .filter() e .reduce().


🔥 Desafio de Fixação: Simulador de Juros Compostos

Crie um programa que receba um investimento inicial (R$ 10.000,00) e uma taxa de juros de 1% ao mês (taxa = 0.01). Use um laço para de 1 até 12 para calcular e exibir a evolução do patrimônio 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
programa {
	funcao inicio() {
		escreva("Partida do comboio em:\n")
		escreva("----------------------\n")

		para (inteiro s = 10; s >= 1; s--) {
			escreva(s, " segundos...\n")
		}

		escreva("----------------------\n")
		escreva("[LIBERADO] Cancela aberta! Caminhão em trânsito.\n")
	}
}

Prática 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
programa {
	funcao inicio() {
		real valorFilial, totalRede = 0.0, mediaPorFilial

		escreva("=== CONSOLIDAÇÃO DE VENDAS (5 FILIAIS) ===\n")
		para (inteiro f = 1; f <= 5; f++) {
			escreva("Faturamento Filial [", f, "] R$: ")
			leia(valorFilial)
			totalRede += valorFilial
		}

		mediaPorFilial = totalRede / 5.0

		escreva("\n=========================================\n")
		escreva("FATURAMENTO TOTAL DA REDE: R$ ", totalRede, "\n")
		escreva("MÉDIA POR UNIDADE        : R$ ", mediaPorFilial, "\n")
		escreva("=========================================\n")
	}
}

Desafio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
programa {
	inclua biblioteca Matematica --> mat

	funcao inicio() {
		real saldo = 10000.00
		real taxa = 0.01 // 1% ao mês

		escreva("=== EVOLUÇÃO PATRIMONIAL (1 ANO) ===\n")
		escreva("Saldo Inicial: R$ ", saldo, "\n")
		escreva("------------------------------------\n")

		para (inteiro mes = 1; mes <= 12; mes++) {
			saldo = saldo * (1.0 + taxa)
			escreva("Mês ", mes, " | Saldo: R$ ", mat.arredondar(saldo, 2), "\n")
		}

		escreva("====================================\n")
		escreva("Saldo Final Consolidado: R$ ", mat.arredondar(saldo, 2), "\n")
	}
}

📝 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. Quais são os três componentes (pilares) do cabeçalho do laço para em Portugol, e qual a função de cada um?
  2. Escreva a sintaxe genérica do laço para em Portugol, no padrão C/Java.
  3. No laço para (inteiro km = 100; km <= 1000; km += 100), qual é o valor inicial de km, qual a condição de parada e de quanto em quanto km é incrementado?
  4. No Exemplo Guiado da Tabela de Fretes da FastLog, qual é o valor da tarifa por km e da taxa de despacho fixa utilizados no cálculo?
  5. Como se escreve, em Portugol, um laço para que realiza uma contagem regressiva (decrescente), e qual operador substitui o i++ nesse caso?
  6. Na Prática Obrigatória 2 (Somatório de Faturamento de 5 Filiais), quantas vezes o laço se repete e quais dois valores devem ser exibidos ao final do programa?
  7. Segundo o quadro comparativo do capítulo, como o laço for é escrito em Python, e em que ele difere da sintaxe usada em Portugol/C/Java?
  8. De acordo com o Checkpoint de Lógica & Engenharia de Software, o laço determinístico é descrito como o motor por trás de quais métodos de transformação de dados em linguagens como TypeScript e Python?
  9. Segundo o diagrama da mecânica do laço para, o que acontece quando a Condição de Teste é avaliada como Falsa?
  10. Dê um exemplo do dia a dia (fora da programação) em que você sabe de antemão quantas vezes uma tarefa deve se repetir, de forma parecida com o cenário de gerar a tabela de fretes da FastLog.