As estruturas repetitivas, também conhecidas como laços ou loops, são um pilar da programação. Elas permitem que um bloco de comandos seja executado várias vezes, seja por um número definido de vezes ou enquanto uma determinada condição for atendida. Vamos explorar as três estruturas principais: “enquanto”, “para” e “repita-até”.
[cite_start]A estrutura “enquanto” é um laço de repetição que executa um bloco de comandos continuamente enquanto uma condição específica for verdadeira[cite: 616].
[cite_start]É a escolha ideal quando não se sabe previamente a quantidade exata de repetições que o programa precisará executar[cite: 617]. A repetição depende de um evento externo, como a digitação de um valor específico pelo usuário (conhecido como valor de sentinela).
Fazer um programa que lê números inteiros até que um zero seja lido. Ao final, o programa deve mostrar a soma de todos os números digitados (exceto o zero).
Digite um numero: 10
Digite outro numero: 7
Digite outro numero: 3
Digite outro numero: 0
SOMA = 20
enquanto <condição> faca
// bloco de comandos
fimenquanto
<condição> é testada.
fimenquanto[cite: 626].algoritmo "SomaComEnquanto"
var
x, soma: inteiro
inicio
soma <- 0
escreva("Digite um numero: ")
leia(x)
enquanto x <> 0 faca
soma <- soma + x
escreva("Digite outro numero: ")
leia(x)
fimenquanto
escreval("SOMA = ", soma)
fimalgoritmo
[cite_start]A estrutura “para” é um laço de repetição projetado para executar um bloco de comandos por um intervalo de valores predefinido ou um número específico de vezes[cite: 744].
[cite_start]É recomendada quando se sabe de antemão a quantidade de repetições necessárias[cite: 745]. É perfeita para tarefas baseadas em contagem.
Fazer um programa que primeiro lê um valor inteiro N e, depois, lê N números inteiros. Ao final, mostra a soma dos N números lidos.
Quantos numeros serao digitados? 4
Digite um numero: 10
Digite um numero: 8
Digite um numero: -3
Digite um numero: 5
SOMA = 20
para <variável> de <valor_inicial> ate <valor_final> [passo <incremento>] faca
// bloco de comandos
fimpara
<variável> de controle recebe o <valor_inicial> na primeira vez[cite: 756].<variável> não ultrapassou o <valor_final>, o bloco executa[cite: 758]. Caso contrário, o laço termina.<variável> é incrementada em 1 (ou pelo valor definido em passo)[cite: 759].Contagem Progressiva
para i de 1 ate 3 faca
escreval("Valor de i: ", i)
fimpara
Saída:
Valor de i: 1
Valor de i: 2
Valor de i: 3
Contagem Regressiva
para i de 3 ate 1 passo -1 faca
escreval("Valor de i: ", i)
fimpara
Saída:
Valor de i: 3
Valor de i: 2
Valor de i: 1
[cite_start]A estrutura “repita-até” é um laço de repetição que executa o bloco de comandos pelo menos uma vez, pois a condição de parada só é verificada no final[cite: 879].
É menos comum, mas muito útil em situações onde a ação deve ocorrer ao menos uma vez, como em menus interativos onde se pergunta ao usuário se ele deseja realizar a operação novamente.
Fazer um programa para ler uma temperatura em Celsius e mostrar o equivalente em Fahrenheit. Ao final, perguntar se o usuário deseja repetir (s/n). Caso digite “s”, o programa repete.
Digite a temperatura em Celsius: 25.0
Equivalente em Fahrenheit: 77.0
Deseja repetir (s/n)? s
Digite a temperatura em Celsius: 0.0
Equivalente em Fahrenheit: 32.0
Deseja repetir (s/n)? s
Digite a temperatura em Celsius: -5.0
Equivalente em Fahrenheit: 23.0
Deseja repetir (s/n)? n
repita
// bloco de comandos
ate <condição>
<condição> é testada.
enquanto).algoritmo "ConversorDeTemperatura"
var
C, F: real
resp: caractere
inicio
repita
escreva("Digite a temperatura em Celsius: ")
leia(C)
F <- 9.0 * C / 5.0 + 32.0
escreval("Equivalente em Fahrenheit: ", F:4:1)
escreva("Deseja repetir (s/n)? ")
leia(resp)
ate resp = "n"
fimalgoritmo