Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Comando while
  2. Comando repeat-until
  3. Comando for
  4. Comandos break
  5. Loop infinito
  6. Loop infinito com goto
  7. A aninhamento de comandos

Lua possui os comandos while, repeat until e for. Diferente dos comandos de decisão, o comando do e end são utilizados para definição do corpo dos comandos de repetição.

Os comandos de repetição nos auxiliam na execução de trechos de código de forma repetida.

No comando while uma condição é verificada. Se a condição for verdadeira, o trecho de código contido no corpo do comando while será executado.

Fig. 1: Fluxograma Comando while
Sintaxe
while(condicao) do
	--trecho de código executado caso condicao == true
end
Onde
condicao: expressão que retorna um boolean
Exemplo 1
local x = 0

while ( x < 5) do
  print(x)
  x = x + 1
end
Saída
0
1
2
3
4

A condição entre ( e ) pode ser composta de várias expressões utilizando os operadores relacionais e lógicos já estudados.

Quando não temos conhecimento da quantidade de vezes que um trecho de código deve ser executado, utilizamos o comando while.

No comando repeat until, um trecho de código é executado inicialmente e por último uma condição é verificada. Se a condição for verdadeira(true), o trecho de código definido no corpo do comando é executado.

Fig. 2: FLuxograma Comando repeat-until
Sintaxe
repeat
    --trecho de código executa na primeira vez 
    --e quando condicao for igual a true
until(condicao)
Onde
condicao: expressão que retorna um boolean
Exemplo 2
local x = 0
repeat
  print(x)
  x = x + 1
until ( x > 4)
Saída
0
1
2
3
4

A condição entre ( e ) pode ser composta de várias expressões utilizando os operadores relacionais e lógicos já estudados.

Para fazermos executar trechos de forma repetida e quando sabemos a quantidade de vezes, utilizamos o comando for que possui o fluxograma e a sintaxe abaixo:

Fig. 3: Comando for
Sintaxe
for nome_variavel = limite, <tvalor_mim_max> , incremento do
    --corpo do comando
end
Onde
valor_inicial: valor inicial para o repetição
<limitee>: valor mínimo ou máximo para finalizar comando. Incluído ao ser validado como limite.
incremento: o número de incremento/decremento em que as repetições irão avançar/retroceder.
Exemplo 3
local x
for x=0,3,1 do
  print(x)
end
Saída
0
1
2
3
Exemplo 4
local x
for x=3,0,-1 do
  print(x)
end
Saída
3
2
1
0

Nos comandos de repetição estudados acima, executam trechos de código de acordo com as condições impostas em sua declaração. Porém, há momentos que precisamos encerrar o laço atual. Para isso utilizamos o comando break.

Sintaxe
break
Exemplo 5
local x
for x=0,4,1 do
  print(x)
  if ( x ==2 ) then
    break
  end
end
Saída
0
1
2
Exemplo 6
local x = 0

while ( x < 5) do
  print(x)
  if ( x ==2 ) then
    break
  end
  x = x + 1
end
Saída
0
1
2
Exemplo 7
local x = 0
repeat
  print(x)
  if ( x ==2 ) then
    break
  end
  x = x + 1
until ( x > 4)
Saída
0
1
2

Os comandos while e repeat de Lua nos permitem declarar loops infinito em que suas condições de verificação contenham os valores true e false respectivamente para o comando while e repeat.

Sintaxe: while
while true do
 --corpo
end
Sintaxe: repeat
repeat
--corpo
until false
Exemplo 6: while
while true do
  nome = io.read("*l")
  print(nome)
  if nome == "quit" then
    print("saindo do programa")
    break
  end 
end
Saída
joao
quit
Saída
joao
joao
quit
quit
saindo do programa
Exemplo 7: repeat
repeat
    nome = io.read("*l")
    print(nome)
    if nome == "quit" then
        print("saindo do programa")
        break
    end 
until false
Saída
joao
quit
Saída
joao
joao
quit
quit
saindo do programa

Fazendo uso do comando goto e labels, o exemplo utilizando o comando while ou repeat pode ser visto no exemplo a seguir:

Sintaxe: goto
goto nome_label
Sintaxe: label
::nome_label::
Exemplo 8: while
::inicio_loop::
    nome = io.read("*l")
    print(nome)
    if nome == "quit" then
        print("saindo do programa")
        goto fim_loop
    end 
    goto inicio_loop
::fim_loop::
Saída
joao
quit
Saída
joao
joao
quit
quit
saindo do programa

Assim como os comandos de decisão, os comandos de repetição também podem ser declarados de forma aninhada.

Exemplo 9
for x,4,1 do
--trecho de codigo 
    for y,4,1 do
    --trecho de código
    end
end
Saída
-
Exemplo 8
local x = 0
repeat
    --(..)
    repeat
      --(...)
    until (y > 4)
until ( x > 4)
Saída
-
  1. 11/12/2025 - revisão 5 - Adição: loop infinito e loop infinito com goto
  2. 15/09/2025 - revisão 4 - Ajustes: pontuais, sintaxes, objetivos, target de links; Adição: Ex. 4
  3. 12/09/2024 - revisão 3 - Ajustes gramaticais, remoção de texto introdução e aninhamento
  4. 30/08/2024 - revisão 2 - Correção em links de objetivos
  5. 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais e adição de fluxogramas
  6. 26/05/2023 - versão inicial