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