Linguagem de Programação
Lua
História
• Criada em 1993
• Tecgraf, PUC-Rio
• Criadores
- Roberto Ierusalimschy
- Waldemar Celes
- Luiz Henrique de Figue...
• Lua e uma linguagem de script dinâmica,
semelhante a outras linguagens de script
como Python, Ruby e PHP.
O que é Lua ?
Mercado
Desenvolvimento de Jogos
● Abrangência: em 2012 bateu o número de
1 bilhão de downloads.
Lua é utilizada em conjun...
–Adobe Photoshop Lightroom
–Middleware Ginga do Sistema Brasileiro de TV Digital.
–Firefox
Outras Aplicações
Mercado
Quem Usa
io.write("Informe o numero:n")
local numero = io.read()
function verifica (n)
if n % 2 == 0 then
return print( "numero ".....
• Declaração de variáveis
• Em Lua, não declaramos o tipo de uma
variável.
local var = 10
var = “Aula”
var = true
Variáveis
– nil
• Null
– boolean
• True ou False
– number
• Lua possui somente um tipo numérico básico, Number, que é ponto flutuant...
local a = 3
print (type (a)) → imprime "number“
a = "bola"
print (type (a)) → imprime "string“
a = true
print (type (a)) →...
• < menor
• > maior
• <= menor igual
• >= maior igual
• == igual
• ~= diferente
Operadores Relacionais
• and
• or
• not
Operadores Lógicos
Exemplo 1
local x = 44
if x > 30 then
print ("maior que 30")
elseif x > 20 then
print ("maior que 20")
elseif x > 10 then
...
local i = 0
while i < 10 do
print (i )
i = i + 1
end
→ 0 1 2 3 4 5 6 7 8 9
Sintaxe While
for var=var1, var2, var3 do
corpo_do_laco
end
var1 índice
var2 valor da condição
var3 contador
for i=1, 10 do print (i) en...
ipairs, para percorrer os índices de um array;
pairs, para percorrer as chaves de uma tabela;
local a = {"a","b","c","d"}
...
function nomedafuncao (arg_1, arg_2, ..., arg_n)
corpoDaFuncão
end
function fun (a, b)
local x = a or 1 -- x recebe o valo...
• Número variavel de parametros
– Funções com um numero variável de parâmetros podem ser declaradas usando três pontos
(.....
• Em Lua, cadeias de caracteres são imutáveis,
isto é, toda vez que tentamos alterar uma
cadeia de caracteres, não estamos...
• string.sub
s = "bolada"
string.sub(array, inicio, [fim])
print (string.sub (s, 1, 3)) --> bol
print (string.sub (s, 1)) ...
• ..
a = "seg" .. "unda"
b = "feira"
print (a .. "-" .. b) --> segunda-feira
• string.find
local s = "Ciência da Computaçã...
• Tabelas são o único mecanismo de
estruturação de dados em Lua. Tabelas
implementam diretamente arrays associativos
e arr...
local tab ={4, “lua”, false}
tab[1] --> 4
Tamanho da tabela #
local t = {"a", "b", "c"}
print (#t) --> 3
table.insert (t, ...
local t = {}
for i=1, 3 do
table.insert (t, i)
end
print (t[1]) --> 1
print (t[2]) --> 2
print (t[3]) --> 3
table.insert (...
• Tabela com Array associativo
local tab2 = {x=100, y=200, z=50}
print(tab2[“y”],tab2.z) --> 200 50
• Mais exemplos
entry ...
• Lua não e uma linguagem orientada a objetos,
mas provê mecanismos que tornam possível a
programação orientada a objetos ...
Classe rectangle
Objeto:
Rectangle = {
width = 0,
height = 0
}
Método calcula a área:
function Rectangle:area (self)
retur...
01 #include <stdio.h>
02 #include <string.h>
03 #include "lua.h"
04 #include "lauxlib.h"
05 #include "lualib.h"
06
07 int ...
Ferramentas
Frameworks IDE’s
Lua Glider
Eclipse
LuaEdit
QLua Free (Android)
Corona SDK
Cocos2d-x
AAMO
MOAI
• Para um arquivo com 100K, Lua o trata em 1.2
seg, Perl em 5.3 seg, e Python em 16.8 seg.
• O núcleo da linguagem somado ...
• www.lua.org
• lua-users.org
• LabLua. Lua, Conceitos Basicos e API C (Agosto
de 2008). www.lua.inf.puc-rio.br
Referências
Próximos SlideShares
Carregando em…5
×

Apresentação Lua

447 visualizações

Publicada em

presentação da linguagem LUA

Publicada em: Software
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
447
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
21
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentação Lua

  1. 1. Linguagem de Programação Lua
  2. 2. História • Criada em 1993 • Tecgraf, PUC-Rio • Criadores - Roberto Ierusalimschy - Waldemar Celes - Luiz Henrique de Figueiredo - Tecgraf, um laboratório de pesquisa e desenvolvimento da PUC-Rio. - A princípio, para ser usada em um projeto da Petrobras.
  3. 3. • Lua e uma linguagem de script dinâmica, semelhante a outras linguagens de script como Python, Ruby e PHP. O que é Lua ?
  4. 4. Mercado Desenvolvimento de Jogos ● Abrangência: em 2012 bateu o número de 1 bilhão de downloads. Lua é utilizada em conjunto com Objective-C nas aplicações específicas de iOS. ● Abrangência: chegou a possuir mais de 12 bilhões de jogadores ativos. Lua é utilizado em modificações de UI.
  5. 5. –Adobe Photoshop Lightroom –Middleware Ginga do Sistema Brasileiro de TV Digital. –Firefox Outras Aplicações Mercado
  6. 6. Quem Usa
  7. 7. io.write("Informe o numero:n") local numero = io.read() function verifica (n) if n % 2 == 0 then return print( "numero "..n.." é par" ) else return print( "numero "..n.." é impar" ) end end Entrada = 123 Saída = numero 123 é impar Exemplo
  8. 8. • Declaração de variáveis • Em Lua, não declaramos o tipo de uma variável. local var = 10 var = “Aula” var = true Variáveis
  9. 9. – nil • Null – boolean • True ou False – number • Lua possui somente um tipo numérico básico, Number, que é ponto flutuante por padrão. – string • podem ser delimitadas por aspas duplas ou simples – function • Em Lua, funções são valores de primeira classe – userdata • Usado para armazenar dados do C em variáveis Lua. – thread • fluxos de execução independentes. Da suporte ao uso de co-rotinas (multitarefa) – table • Tabela em Lua. Tipos de Variáveis
  10. 10. local a = 3 print (type (a)) → imprime "number“ a = "bola" print (type (a)) → imprime "string“ a = true print (type (a)) → imprime "boolean“ a = print -- "a" agora e a função "print" a (type (a)) → imprime "function" Função Type
  11. 11. • < menor • > maior • <= menor igual • >= maior igual • == igual • ~= diferente Operadores Relacionais
  12. 12. • and • or • not Operadores Lógicos
  13. 13. Exemplo 1 local x = 44 if x > 30 then print ("maior que 30") elseif x > 20 then print ("maior que 20") elseif x > 10 then print ("maior que 10") else print ("que x pequeno") end → maior que 30 Exemplo 2 local a='a' local b=a local c='c' if(a == b and a ~= c) then print (a..","..b..","..c) end → a,a,c Sintaxe IF
  14. 14. local i = 0 while i < 10 do print (i ) i = i + 1 end → 0 1 2 3 4 5 6 7 8 9 Sintaxe While
  15. 15. for var=var1, var2, var3 do corpo_do_laco end var1 índice var2 valor da condição var3 contador for i=1, 10 do print (i) end for i=10, 1, -1 do print (i) end Sintaxe For Numérico
  16. 16. ipairs, para percorrer os índices de um array; pairs, para percorrer as chaves de uma tabela; local a = {"a","b","c","d"} for i, v in ipairs (a) do print (v) end → a,b,c,d local t = {a="a",b="b",c="c",d="d"} for k, v in pairs (t) do -- k guarda a chave, v o valor print (k, v) end → aa b b c c d d Sintaxe For Genérico
  17. 17. function nomedafuncao (arg_1, arg_2, ..., arg_n) corpoDaFuncão end function fun (a, b) local x = a or 1 -- x recebe o valor padrão 1 quando a e um valor falso local y = b or 1 -- y recebe o valor padrão 1 quando b e um valor falso return x + y, x * y end Embora a função fun possua dois parâmetros, e possível chama-la com um numero diferente de parâmetros, os valores extra são descartados, caso a função seja chamada com um numero menor de parâmetros, o valor dos parâmetros que não foram fornecidos é nil. s, p = fun (3, 4) -- a é 3 e b é 4 print (s, p) --> 7 12 s, p = fun (2) -- a é 2 b é nil e y e inicializado com 1 print (s, p) --> 3 2 Funções
  18. 18. • Número variavel de parametros – Funções com um numero variável de parâmetros podem ser declaradas usando três pontos (...). Para acessar então os parâmetros que foram chamados, usamos a notação {...} function maior3 (...) for i, v in ipairs {...} do -- percorre a lista de parâmetros if #v > 3 then -- # e o operador de tamanho para cadeias e arrays print (v) end end end maior3 ("bola", "sol", "lua", "balao") -- Imprime "bola" e "balao“ Funções
  19. 19. • Em Lua, cadeias de caracteres são imutáveis, isto é, toda vez que tentamos alterar uma cadeia de caracteres, não estamos realmente modicando a cadeia original, mas sim criando uma nova cadeia. • Em Lua o primeiro caractere da cadeia esta no índice 1. Manipulação de String
  20. 20. • string.sub s = "bolada" string.sub(array, inicio, [fim]) print (string.sub (s, 1, 3)) --> bol print (string.sub (s, 1)) --> bolada print (string.sub (s, 5, 6)) --> da print (string.sub (s, -4)) --> lada • String.len a = "boi" b = "formiga" print (#a, #b) --> 3 7 Manipulação de String
  21. 21. • .. a = "seg" .. "unda" b = "feira" print (a .. "-" .. b) --> segunda-feira • string.find local s = "Ciência da Computação" local a = string.find(s,"ê") print( a ) --> 3 • string.gsub local s = "boi,bola,balao“ Manipulação de String
  22. 22. • Tabelas são o único mecanismo de estruturação de dados em Lua. Tabelas implementam diretamente arrays associativos e arrays numéricos, e podem ser usadas para implementar diversas outras estruturas de dados, como conjuntos e grafos. • Alem disso, tabelas são usadas para representar registros, objetos e módulos Lua. Tabelas
  23. 23. local tab ={4, “lua”, false} tab[1] --> 4 Tamanho da tabela # local t = {"a", "b", "c"} print (#t) --> 3 table.insert (t, "d") print (#t) --> 4 t [6] = "8“ --[[ Temos um valor nil no meio do array (t[5]). O operador de tamanho não tem um comportamento bem definido neste caso]] Tabelas
  24. 24. local t = {} for i=1, 3 do table.insert (t, i) end print (t[1]) --> 1 print (t[2]) --> 2 print (t[3]) --> 3 table.insert (t, 2, 4)--array, posição, valor print (t[1]) --> 1 print (t[2]) --> 4 print (t[3]) --> 2 print (t[4]) --> 3 table.remove(t) --remove o ultimo elemento table.remove(t, 2) --remove segundo o elemento Tabelas
  25. 25. • Tabela com Array associativo local tab2 = {x=100, y=200, z=50} print(tab2[“y”],tab2.z) --> 200 50 • Mais exemplos entry { name = "Brasil", capital = "Braslia", netdomain = "br", population = 186757608 } entry { name = "Argentina", capital = "Buenos Aires", netdomain = "ar", population = 40677348 Linguagem de descrição de Dados
  26. 26. • Lua não e uma linguagem orientada a objetos, mas provê mecanismos que tornam possível a programação orientada a objetos (POO) (há, inclusive, mais de uma maneira de programar orientado a objetos em Lua). POO em Lua
  27. 27. Classe rectangle Objeto: Rectangle = { width = 0, height = 0 } Método calcula a área: function Rectangle:area (self) return self.width * self.height end Rectangle.width = 6 Rectangle.height = 3 local ret1 = Rectangle:area(Rectangle) print (ret1) --> 18 POO em LUA
  28. 28. 01 #include <stdio.h> 02 #include <string.h> 03 #include "lua.h" 04 #include "lauxlib.h" 05 #include "lualib.h" 06 07 int main () { 08 char buff [256]; 09 int error; 10 lua_State *L = luaL_newstate (); /* cria um novo estado Lua */ 11 luaL_openlibs (L); /* da acesso a todas as bibliotecas padr~oes */ 12 13 while (fgets (buff, sizeof (buff), stdin) != NULL) { 14 error = luaL_loadbuffer (L, buff, strlen (buff), "line") || 15 lua_pcall (L, 0, 0, 0); 16 if (error) { 17 fprintf (stderr, "%s", lua_tostring (L, -1)); 18 lua_pop (L, 1); /* retira a mensagem de erro da pilha */ 19 } 20 } 21 22 lua_close (L); 23 return 0; 24 } API C Usando Lua em Aplicação C
  29. 29. Ferramentas Frameworks IDE’s Lua Glider Eclipse LuaEdit QLua Free (Android) Corona SDK Cocos2d-x AAMO MOAI
  30. 30. • Para um arquivo com 100K, Lua o trata em 1.2 seg, Perl em 5.3 seg, e Python em 16.8 seg. • O núcleo da linguagem somado as suas bibliotecas padrões ocupa menos de 200k. • Presente em mais de 80 países • Única linguagem de programação desenvolvida fora do primeiro mundo a ter aceitação mundial Curiosidades
  31. 31. • www.lua.org • lua-users.org • LabLua. Lua, Conceitos Basicos e API C (Agosto de 2008). www.lua.inf.puc-rio.br Referências

×