Partilhar: WhatsApp
aulify
UC UC00245 · T. Desenv. Software, T. Multimédia, T. Inform. Gestão

Ficha 03 · Estruturas repetitivas

Ciclos PARA, ENQUANTO e REPETIR-ATÉ
Versão · Aluno
Tempo · 60 minutos
Cotação · 100 pontos
Aluno(a)
Turma
Data
Objectivos da ficha

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:

  1. Leia um número inteiro n;
  2. Leia em seguida n números reais;
  3. 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.