Expressões e operadores
Para declararmos expressões em qualquer linguagem de programação precisamos utilizar os operadores. Os conceitos
de expressões e operadores já foram vistos em
Tutorial Portugol: Operadores e
Tutorial C: Operadores. Em caso de dúvida é recomendado a leitura.
Nesta parte do tutorial vamos estudar os operadores fornecidos pela linguagem Lua.
Objetivos
Operadores de atribuição
Os seguintes operadores de atribuição estão disponível na linguagem Lua:
Tab. 1: Operadores de Atribuição
Operador |
Significado |
Exemplo |
= |
Atribuição |
a = b |
Exemplo 1
local x = 10
local y = 0
x = y
Saída
10
0
Diferente dos operadores utilizados na linguagem C, Lua não possui os operadores acumulativos +=, -= e etc.
Tab. 2: Operadores de Aritméticos
Operador |
Significado |
Exemplo |
+ |
Adição |
a+b |
- |
Subtração |
a-b |
* |
Multiplicação |
a*b |
/ |
Divisão |
a/b |
// |
Divisão inteira |
a//b |
% |
Módulo |
a%b |
^ |
Divisão |
a/b |
- |
Unário de negação |
-a |
Sintaxe
valor1 operador valor2
Exemplo 2
local x = 4
local y = 2
local z = 0
z = x&y
print(z)
z = x|y
print(z)
z = x>>y
print(z)
z = x<<y
print(z)
z = ~x
print(z)
Saída
0
6
1
16
-5
Lua não possui os operadores de incremento e decremento -- e ++ como em outras linguagens com C/C++ e Java.
Os seguintes operadores relacionais estão disponíveis na linguagem Lua. Os operadores abaixo retornam valores true ou false.
Os operadores relacionais podem ser vistos em Tutorial Portugol: Operadores aritméticos como funcionam.
Tab. 3: Operadores Relacionais
Operador |
Significado |
Exemplo |
== |
Igual |
a == b |
>= |
Maior ou igual |
a >= b |
<= |
Maior ou igual |
a <= b |
~= |
Diferente |
a ~=b |
// |
Maior |
a>b |
< |
Menor |
a<b |
Sintaxe
valor1 operador valor2
Exemplo 3
local x = 40
local y = 20
local z = 0
z = x == y
print(z)
z = x >= y
print(z)
z = x <= y
print(z)
z = x > y
print(z)
z = x < y
print(z)
z = x~=y
print(z)
Saída
false
true
false
true
false
true
Os seguintes operadores lógicos estão disponíveis na linguagem Lua. Os operadores abaixo retornam
valores true ou false.
Operadores e tabelas verdades foram visto em
Tutorial Portugol: Operadores Lógicos.
Tab. 4: Operadores Lógicos
Operador |
Significado |
Exemplo |
and |
E lógico |
a and b |
not |
Não lógico |
not a |
or |
OR lógico |
a or b |
Sintaxe
valor1 operador valor2
Exemplo 4
local x = true
local y = false
z = x and y
print(z)
z = x or y
print(z)
z = not y
print(z)
Saída
false
true
true
Operadores bit-a-bit/bitwise
Os seguintes operadores bit-a-bit estão disponíveis na linguagem Lua. Esse operadores aplicam operações em cada bit de
um valor resultando em 0 ou 1.
O funcionamento básico pode ser visto em Tutorail C: Operadores bit-a-bit sendo
a leitura recomendada.
Tab. 5: Operadores bit-a-bit
Operador |
Significado |
Exemplo |
& |
E bit-a-bit |
a & b |
| |
OR bit-a-bit |
a | b |
~ |
Não bit-a-bit |
~a |
>> |
Desloca N bits à direita |
a>>b |
<< |
Desloca N bits à esquerda |
a<<b |
Sintaxe
valor1 operador valor2
Exemplo 5
local x = 4
local y = 2
local z = 0
z = x&y
print(z)
z = x|y
print(z)
z = x>>y
print(z)
z = x<<y
print(z)
z = ~x
print(z)
Saída
0
6
1
16
-5
Abaixo a tabela contendo outros registradores que não se encaixam nos grupos de operadores
estudados anteriormente.
Tab. 6: Outros operadores
Operador |
Significado |
Exemplo |
.. |
Concatenação de string |
a..b |
# |
Retorna tamanho de string ou vetor |
#a |
[] |
Indexador de vetor/matriz |
v[1] |
Exemplo 6
local x = "Uma string "
local y = "lunática"
local z = x..y
local w = #z
Saída
Uma string lunática
20
Mais operadores serão adicionados em futuras atualizações deste tutorial.
Precedência de operadores
Os operadores estudados acima possuem um precedência para a validação quando contidos em uma expressão.
A lista de precedência de operadores abaixo foi ordenada da menor prioridade até a maior prioridade.
or
and
< > <= >= ~= ==
|
~
&
<< >>
..
+ -
* / // %
not # - ~
^
Histórico de atualizações
- 12/09/2024 - revisão 2 - Correção em links Portugol e outros pequenos ajustes gramaticais
- 03/10/2023 - revisão 1 - Correção em referências e erros gramaticais
-
- 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.