Ficha 03 · Estruturas repetitivas
- Distinguir PARA, ENQUANTO e REPETIR-ATÉ
- Escrever algoritmos com contadores e acumuladores
- Identificar ciclos infinitos
- Converter entre tipos de ciclo
Parte I · Compreensão
Exercício 1 · Qual ciclo escolher?
Para cada situação, indique o ciclo mais adequado (PARA, ENQUANTO ou REPETIR-ATÉ) e justifique brevemente:
a) Imprimir a tabuada do 7. ___
b) Ler números até aparecer o valor 0, sem saber quantos serão. ___
c) Pedir a password ao utilizador até ele acertar. ___
d) Calcular a soma dos primeiros 100 números pares. ___
e) Mostrar todos os ficheiros de uma pasta, um a um. ___
a) PARA — número de iterações conhecido (1 a 10).
b) ENQUANTO — número desconhecido; possivelmente zero iterações (se o primeiro número for já 0).
c) REPETIR-ATÉ — pede-se sempre pelo menos uma vez; só se sai quando acerta.
d) PARA — número conhecido (100).
e) PARA (cada ficheiro / for each) — número conhecido após listar a pasta.
Exercício 2 · Trace de um ciclo PARA
Considere o seguinte algoritmo:
soma ← 0
PARA i DE 1 ATÉ 5 FAÇA
soma ← soma + i
FIM PARA
ESCREVER soma
Preencha a trace table:
| Iteração | i |
soma (depois da soma) |
|---|---|---|
| Inicial | — | 0 |
| 1 | 1 | |
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | |
| 5 | 5 |
Saída: ESCREVER ____
| Iteração | i |
soma |
|---|---|---|
| Inicial | — | 0 |
| 1 | 1 | 1 |
| 2 | 2 | 3 |
| 3 | 3 | 6 |
| 4 | 4 | 10 |
| 5 | 5 | 15 |
Saída: 15
Este é o padrão acumulador-soma aplicado aos números 1 a 5. Em geral, a soma dos primeiros N inteiros é N×(N+1)/2 = 5×6/2 = 15.
Exercício 3 · Identificar ciclo infinito
Algum dos seguintes algoritmos contém um ciclo infinito? Identifique-os e indique como corrigir.
(a)
i ← 1
ENQUANTO i <= 10 FAÇA
ESCREVER i
i ← i + 1
FIM ENQUANTO
(b)
i ← 1
ENQUANTO i <= 10 FAÇA
ESCREVER i
FIM ENQUANTO
(c)
i ← 10
ENQUANTO i > 0 FAÇA
ESCREVER i
i ← i + 1
FIM ENQUANTO
(d)
i ← 10
ENQUANTO i > 0 FAÇA
ESCREVER i
i ← i - 1
FIM ENQUANTO
(a) Correcto. Imprime 1 a 10.
(b) Ciclo infinito. A variável i nunca muda — a condição i ≤ 10 mantém-se sempre verdadeira. Corrigir acrescentando i ← i + 1 no corpo.
(c) Ciclo infinito. i começa em 10 e é incrementado a cada iteração; a condição i > 0 mantém-se sempre verdadeira (e cada vez mais!). Corrigir trocando i ← i + 1 por i ← i - 1.
(d) Correcto. Imprime 10, 9, 8, …, 1 (contagem decrescente).
Parte II · Construção
Exercício 4 · Tabuada interactiva
Escreva um algoritmo que leia um número inteiro n e imprima a sua tabuada de 1 a 10, no formato n × i = n*i.
INICIO
LER n
PARA i DE 1 ATÉ 10 FAÇA
ESCREVER n, " x ", i, " = ", n * i
FIM PARA
FIM
Saída exemplo (n = 7):
7 x 1 = 7
7 x 2 = 14
...
7 x 10 = 70
Exercício 5 · Soma de N números lidos
Escreva um algoritmo que:
- Leia um número inteiro
n; - Leia em seguida
nnúmeros reais; - Imprima a sua soma.
INICIO
LER n
soma ← 0
PARA i DE 1 ATÉ n FAÇA
LER valor
soma ← soma + valor
FIM PARA
ESCREVER "Soma: ", soma
FIM
Padrões usados: iteração PARA, acumulador-soma. Note-se a inicialização soma ← 0 antes do ciclo.
Exercício 6 · Contar até obter um valor
Escreva um algoritmo que peça repetidamente um número ao utilizador até ele inserir o número 0. No fim, indique quantos números foram lidos (não contando o 0 final).
INICIO
contador ← 0
LER num
ENQUANTO num ≠ 0 FAÇA
contador ← contador + 1
LER num
FIM ENQUANTO
ESCREVER "Foram lidos ", contador, " números (sem contar o 0)"
FIM
Padrões usados: sentinela (0), contador, iteração ENQUANTO com leitura antecipada + leitura no corpo.
Variante: poderia usar-se REPETIR-ATÉ, mas seria necessário cuidado para não contar o 0:
contador ← 0
REPETIR
LER num
SE num ≠ 0 ENTÃO
contador ← contador + 1
FIM SE
ATÉ num = 0
Exercício 7 · Tabela de Fahrenheit
Escreva um algoritmo que mostre uma tabela de conversão de graus Celsius para Fahrenheit, de 0 °C a 100 °C, em passos de 10 °C.
Fórmula: F = C × 9/5 + 32.
INICIO
ESCREVER "Celsius Fahrenheit"
PARA c DE 0 ATÉ 100 PASSO 10 FAÇA
f ← c * 9 / 5 + 32
ESCREVER c, " ", f
FIM PARA
FIM
Se o pseudocódigo adoptado não suportar PASSO, equivalente com ENQUANTO:
c ← 0
ENQUANTO c <= 100 FAÇA
f ← c * 9 / 5 + 32
ESCREVER c, " ", f
c ← c + 10
FIM ENQUANTO
Parte III · Conversão de ciclos
Exercício 8 · PARA → ENQUANTO
Converta o seguinte ciclo PARA num ciclo ENQUANTO equivalente:
PARA i DE 5 ATÉ 20 FAÇA
ESCREVER i * i
FIM PARA
i ← 5
ENQUANTO i <= 20 FAÇA
ESCREVER i * i
i ← i + 1
FIM ENQUANTO
Três pontos: inicialização (i ← 5), condição (i ≤ 20), incremento (i ← i + 1). O PARA esconde estes três pontos; o ENQUANTO torna-os explícitos.
Exercício 9 · Ciclos aninhados
O seguinte algoritmo usa um ciclo dentro de outro. Indique o que é escrito:
PARA i DE 1 ATÉ 3 FAÇA
PARA j DE 1 ATÉ 2 FAÇA
ESCREVER i, ",", j
FIM PARA
FIM PARA
Saída:
1,1
1,2
2,1
2,2
3,1
3,2
Funcionamento: para cada valor de i, o ciclo interno percorre todos os valores de j. Total: 3 × 2 = 6 iterações.
Aplicação típica: matrizes (linhas × colunas), tabuadas completas (i × j), comparações par-a-par.