Objetivos
Comandos de decisão
Lua possui os seguintes comandos de decisão: if, if-else e if-else-if.
Esses podem ser aninhados ou não. Diferente de outras linguagens no estilo-C, Lua utiliza
then e end para definição do corpo do comando.
if
No comando if uma condição é verificada retornando true ou false. Caso a
condição seja true, o bloco de código contido dentro do comando é executado.
Fig. 1: Fluxograma Comando if
 |
Sintaxe
if ( condicao ) then
-- código
end
Onde
condicao: expressão que retorna um boolean
Exemplo 1
local x = 10
local y = 5
if ( x > y) then
print(x)
end
Saída
10
A condição entre ( e ) pode ser composta de várias expressões, incluíndo chamadas à
funções, utilizando os operadores lógicos são estudados.
Exemplo 1.1: mais de uma condição
x = 1
y = "string"
z = true
if x == 1 or y == "string" and z == true then
print(x, y, z)
end
Saída
1 string true
Exemplo 1.2: função como argumeto
function funcao(parameto)
return parameto > 0
end
parametro = 10
if(funcao(parametro)) then
print(parametro)
end
Saída
10
No comando if-else uma condição é verificada retornando true ou false.
Caso a condição seja true, o bloco de código contido dentro do comando if
é executado. Caso contrário, o código contido no corpo do comando else é executado.
Fig. 2: Fluxograma Comando if-else
 |
Sintaxe
if (condicao) then
--declarações para condição true
else
--declarações para condição false
end
Onde
condicao: expressão que retorna um boolean
Exemplo 2
local x = 10
local y = 20
if ( x > y) then
print(x)
else
print(y)
end
Saída
20
A condição entre ( e ) pode ser composta de várias expressões utilizando os operadores
relacionais e
lógicos já estudados.
O comando if-else-if aninhado é a junção dos comando if e if/else estudados acima.
Utilizado quando é necessário realizarmos validações em cascata.
Fig. 3: Fluxograma Comando if-elseif
 |
Sintaxe
if ( condicao1) then
-- declarações p/ condicao1 == true
elseif ( condicao2) then
-- declarações p/ condicao2 == true
elseif ( condicao3) then
-- declarações p/ condicao3 == true
else
-- declarações quando condicao1, 2 e 3 == false
end
Onde
condicao1..3: expressão que retorna um boolean
Exemplo 3
local x = 15
if ( x == 0) then
print(0)
elseif (x == 5) then
print(5)
elseif (x == 10) then
print(10)
else
print("valor invalido")
end
Saída
valor invalido
A condição entre ( e ) pode ser composta de várias expressões utilizando os operadores
relacionais e
lógicos já estudados.
"if ternário"
Lua, diferente de linguagens estilo-C não fornece um operador if ternário (?:). A simulação
desse operador é feito como na sintaxe mostrada abaixo:
Sintaxe
nome_variavel = condicao and valor_se_true or <valor_se_falso>
Exemplo 4
local media = 5
res = media >= 5 and "aprovado" or "reprovado"
print(res)
Saída
aprovado
Retorno de operador
Em determinadas situações precisamos realizar atribuições simples com o comando if-else
em que os valores true ou false devem ser atribuídos.
Exemplo 5
b = 10
a = nil
if a == 10 then
a = true
else
a = false
end
print(a)
Saída
true
Como os operadores relacionais e lógicos de Lua retornam true ou false como resultado,
podemos declarar uma atribuição diretamente sem o uso do comando if-else:
Exemplo 6
b = 10
a = nil
a = b == 10
Saída
true
Como na maioria das linguagens, os comandos de decisão acimas podem ser declarados
de forma aninhada(Nested).
Exemplo 6
if (condicao) then
--declarações se condicao == true
if (condicao2) then
--declarações se condicao2 == true
else
--declarações se condicao2 == false
if (condicao3) then
--declarações se condicao3 == true
elseif (condicao4) then
--declarações se condicao4 == true
elseif (condicao5) then
--declarações se condicao5 == true
else
--declarações se condicao3,4 e 5 == false
end
end
end
Saída
-
Histórico de atualizações
- 11/12/2025 - revisão 4 - Adição: Ex 1.1, Ex.2, "if ternário" e retorno de operador
- 15/09/2025 - revisão 3 - Ajustes: pontuais, sintaxes, objetivos e target de links internos
- 12/09/2024 - revisão 2 - Ajustes gramaticais
- 03/10/2023 - revisão 1 - Correção em referências, erros gramaticais e adição de fluxogramas
- 26/05/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.