Variáveis, Tipos de Dados, Acance e Manipulação.
Why Lua? Compared to other scripting languages, Lua is very simple and powerful.
Lua is a powerful, fast, lightweight, embeddable scripting language. Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. — Lua.org
Lua has been used to great effect in a number of similar projects, such as arbitrary re-write rules within the Apache Squid proxy, UDFs in both Redis and Postgres, and other projects.
"Lua é uma linguagem de programação simples e direta, além de possuir uma série de aplicações, é utilizada em diversos jogos mundialmente conhecidos. Além disso, Lua foi desenvolvida na PUC-RJ, no Brasil!" From google.
print("Olá, Mundo!")
-- Explicação breve de print :
-- print é uma função/comando que mostra o dado
-- que está delimitado por pararentesis.
-- Para nosso exemplo, este dado é representado por Olá, Mundo!
-- Se o dado também estiver delimitado por aspas, então este dado
-- será mostrado na tela exatamente como se encontra.
-- Um comentário começa com um hífen duplo (--) em qualquer lugar fora de uma cadeia.
-- Posso ter outro comentario!
-- a = b + c
-- você também pode comentar pedaços de código, assim serão ignorados.
--[[ para comentários introdutórios ou saídas
resultado no qual engloba mais de uma linha
e assim nomeamos de bloco de comentários.
]]
A notação -->> significa algo a ser impresso na tela.
-->>
Letras: caracteres 7 bits (sem acentos):
A até Z
a até z
Caracter conectivo:
underline ( _ )
Números:
0 até 9
Especiais:
+ - * / % ^ #
== ~= <= >= < > =
( ) { } [ ] ::
; : , . .. ...
and break do else elseif end
false for function goto if in
local nil not or repeat return
then true until while
local a
local b
a = 10
b = 30
print("valor de a:", a)
print("valor de b:", b)
a = 5
b = 3
print("valor de a:", a)
print("valor de b:", b)
b, a = a, b
print("valor de a:", a)
print("valor de b:", b)
Vale ressaltar que Lua faz a troca de valores entre variáveis sem precisar de uma variável auxiliar.
f = 70.0/3.0
print("valor de f", f)
litro_de-ar_gramas = 1.3
print (c) -->> nil -- Não existe
c = 10 -- foi criada e inicializada
print (c) -->> 10 -- resultado
nome_variavel
Nome_
_nome
ExemploABC123
2seu nome completo
!exemplo de teste 123
meu* gatopr eto
O símbolo = (igual) atribue dados ou objetos a variáveis/identificadores. Use, por exemplo, a função print para imprimir o conteúdo do identidicador.
Atenção: == (igual igual) é utilizado para comparar uma coisa com outra.
x = 7
kg = 1000
grama = 1
miligrama = 10^-3
var1, var2, var3 = 10, 20, 30
a, b, c = 1, 'isto', 'aquilo'
atm, cmHg, mmHg, torr, kPa = 1, 76, 760, 760, 100
print(atm)
print(kPa)
print(x)
print(var1, var2, var3)
print(a, b, c)
a = 5 -- ok
coisa = 2 -- também ok
coisadoida = 2.1 -- também ok!
a50000 = 5 -- ok
_1 = 5 -- também ok!
1 = 5 -- não ok!
and = 5 -- não ok! "and" é uma palavra rervada
_and = 5 -- ok!
and1 = 5 -- ok!
and_or = 5 -- ok! "and_or" não é palafra reservada, portanto
-- "and" e "or" são.
Símbolo | Proposito |
---|---|
+ | Adição |
- | Subtração |
* | Multiplicação |
/ | Divisão |
^ | Potência |
--[[
Programa Frutas
Este programa faz a soma de duas frutas, armazena o valor final e mostra o resultado na tela
]]
-- Entrada dos dados
bananas = 5
laranjas = 3
-- Processamento dos dados com armazenamento do processamento
-- na variável frutas
frutas = bananas + laranjas
-- Saída do resultado
print(frutas)
-- Manipulando os identificadores + - * / outros
-- Exemplo 1
a, b, c = 6, 16, "vinte um"
a, b = b, a
print(a, b)
a, b = a + b, a - b
print(a, b)
a, b, c = a + b, a
print(a, b)
-- Exemplo 2
print(30+31) -- numero de dias entre Junho e Julho
print(60*60) -- numero de segundos em uma hora
print(15-9) -- intervalo entre 3pm e 9am
print(365*24) -- numero de horas em um ano
-- Programa de conversão de temperaturas
tempCelsius = 45
tempKelvin = tempCelsius + 273
print(tempKelvin)
tempCelsius = tempKelvin - 273
print(tempCelsius)
-- Programa para achar a densidade
massa = 18
volume = 2
densidade = massa / volume
print(densidade)
--[[ Intrepretando e Codificando Enunciados
Programa Televisao
Enunciado:
Carlos comprou uma televisão no valor de R$ 950,00,
dividida em 10 prestações iguais.
Ao pagar a 4º prestação, recebeu de presente de seu avô,
o restante do dinheiro para a quitação do aparelho.
Quanto Carlos recebeu?
]]
--==== Desmembrando ====
--[[O valor do aparelho é igual a R$ 950,00.
Carlos resolveu dividir o televisor em 10 prestações
iguais, então devemos realizar uma operação de
divisão: 950/ 10 = 95 reais.
Carlos efetuou o pagamento de 4 prestações,
dessa forma, ainda faltam 6.
São as prestações restantes que o avô de Carlos
resolveu pagar.
Portanto, 95 * 6 = 570 reais.
]]
--==== Resultado2 ====
televisao_valor_final = 950
prestacoes_totais = 10
prestacao_valor = televisao_valor_final / prestacoes_totais
prestacoes_pagas = 4
prestacoes_faltantes = prestacoes_totais - prestacoes_pagas
avo_contribuiu = prestacao_valor * prestacoes_faltantes
print( avo_contribuiu)
--[[ Intrepretando e Codificando Enunciados
Programa Porcentagem
Enunciado:
João tinha uma quantia, gastou 35% e
ainda ficou com R$ 97,50.
Qual o valor que João tinha inicialmente?
]]
--==== Desmembrando ====
--[[
Quando trabalhamos com porcentagem,
sempre precisamos nos lembrar de que o
valor corresponde a 100%.
Dos 100%, João gastou 35%,
então: 100% – 35% = 65%.
Os 65% restante, correspondem a R$ 97,50.
Dessa forma, temos que:
João tinha o valor inicial de R$ 150,00.
]]
-- ==== Resultado ====
porcentagem_gasta = 0.35
valor_restante = 97.5
porcentagem_restante = 1 - porcentagem_gasta
joao_quantia = valor_restante / porcentagem_restante
print(joao_quantia)
--[[ Intrepretando e Codificando Enunciados
Programa Geladeira
Enunciado:
O preço de uma geladeira, à vista, é R$ 1 200,00.
No pagamento em três prestações ocorre um acréscimo
de 10% de juros. Qual será o valor da prestação
no pagamento parcelado?
Na compra da geladeira a prazo,
o valor de cada prestação será de R$440,00
]]
-- === Resultado ===
valor_geladeira = 1200
prestacoes = 3
acrescimo = 0.10
aumento = valor_geladeira * acrescimo
valor_final = valor_geladeira + aumento
print(valor_final)
valor_prestacoes = valor_final / prestacoes
print(valor_prestacoes)
As variáveis são dinamicamente tipadas e são 8 tipos, e trabalharemos com (6): nil, boolean, number, string, function, table
a = nil
Usado para diferenciar o valor de ter alguns dados ou nenhum dado (nulo).
resp = true
Inclui verdadeiro e falso como valores. Geralmente usado para verificação de condição.
x = 1
y = 0.45
Representa números reais (ponto flutuante de precisão dupla).
nome = 'Reinaldo'
nome2 = "Reinaldo"
Representa um grupo de caracteres rodeado por aspas simples ou duplas.
solido = {10,10,20}
minhatabela = {"FRIO", "QUENTE", "MORNO"}
local a = {
{1, 3,-2},
{3,-5, 6},
{2, 4, 3}
}
local b = {
{5},
{7},
{8}
}
local o = {{7,7}}
Representa matrizes comuns, tabelas de símbolos, conjuntos, registros, gráficos, árvores etc. e implementa matrizes associativas. Pode conter qualquer valor (exceto nulo).
print
math.floor
Representa um método para execução de ação.
-- Testando tipos
print(type("texto qualquer"))
t = 10
print(type(5.8*t))
print(type(true))
print(type(print))
print(type(nil))
print(type(type(ABC)))
-- nil: Falta de um valor útil
print (x)
-- boolean: false ou true
-- Exemplo 1
print( 7 == true)
-- Exemplo 2
a = (7 == true)
print(a)
-- Exemplo 3
y = true
print(not true) --> false
print(not false) --> true
-- numeric: números inteiros, reais, científicos e hexadecimais
-- Exemplos Miscelaneous
x = 21
print(2^0.5)
print(5/6)
print(1.2345e6)
print(2.56e-4)
-- string: literais
-- Exemplo 1
print("olá")
-- Exemplo 2
a = "Ola\nQuimicos!"
print(a)
-- Exemplo 3
z = "Cortex"
s = "uma string simples"
nome = "James Tiberius Kirk"
data_nascimento = "17 de Junho de 1938"
-- Exemplo 4
s2 = [[
um texto longo
que extende
em varias
linhas]]
-- Exemplo 5
print ("Usamos um asequencia de caracteres, aqui!")
-- ou equivalente
messagem = "Usamos um asequencia de caracteres, aqui!"
print(messagem)
O alcance dos blocos de código é delimitado por do e end e permitem organizar pedaços do seu programa para maior legibilidade
-- parte global
do
-- parte local
end
do
-- outra parte local
end
-- parte global
-- Exemplo do alcance da var x
x = 6 -- variavel global x recebendo 6
do -- inicio do bloco local
local x = 5 -- variavel local x recebendo 5
print(x) -->> 5
end -- fim do bloco local
print(x) -->> 6
O alcance dos blocos de código é delimitado por ( ) e permitem distribuir linhas de código.
-- Exemplo 1
print(
"Olá usuário lua"
)
-- Exemplo 2
print(10 *
10 +
5
)
-- Exemplo 1
print([[+-----+
| Lua |
+-----+
]])
-- Exemplo 2
print([[
+-----+
| Lua |
+-----+
]])
-- Exemplo 3
print([[
Existem alguns
caracteres “\’ estranhos
nesta string.
]])
-- Exemplo 4
frase = [[
Existem alguns
caracteres “\’ estranhos
nesta string.
]]
print(frase)
-- Problema: Tendo o tempo de vida de uma lampada
-- que eh indicada para 2200h, e utilizada 6h dia num ano cheio,
-- ache a resposta que se refere ao valor de vida desta lâmpada.
-- maneira 1 um de escrever o codigo
print(2200/6/365)
-- maneira 2, equivalente
print(2200/(6*365))
-- maneira 3, equivalente
print(2200/6)
print((2200/6)/365)
-- Este é um comentario em Lua
n = 8
t = {} -- t é uma tabela
-- definicao de funcao
function cubo (x)
return x^3
end
-- preenche t com os n cubos
for i = 1, n do
t[i] = cubo(i)
end
-- apresenta t com os n cubos
for i = 1, n do
print(t[i])
end