SlideShare uma empresa Scribd logo
Linguagem de Programação
Lua
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.
• 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 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.
–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 "..n.." é par" )
else
return print( "numero "..n.." é impar" )
end
end
Entrada = 123
Saída = numero 123 é impar
Exemplo
• 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 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
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
• < 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
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
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) end
for i=10, 1, -1 do print (i) end
Sintaxe For Numérico
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
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
• 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
• 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
• 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
• ..
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
• 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
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
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
• 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
• 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
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
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
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 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
• www.lua.org
• lua-users.org
• LabLua. Lua, Conceitos Basicos e API C (Agosto
de 2008). www.lua.inf.puc-rio.br
Referências

Mais conteúdo relacionado

PPTX
Introdução a linguagem de programação Lua
PPTX
Linguagem lua
PDF
Linguagens de Script: Caso de Estudo Lua
PPT
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
PPT
A Linguagem Lua - Uma abordagem inicial
PDF
Jogos_Eletronicos_Aula_03_Introducao_Linguagem_Lua_2014.pdf
PPTX
Apresentação sobre a linguagem lua
Introdução a linguagem de programação Lua
Linguagem lua
Linguagens de Script: Caso de Estudo Lua
5.II SACIC - 2010 - Desenvolvimento de Aplicações para TVDigital com NCLUA
A Linguagem Lua - Uma abordagem inicial
Jogos_Eletronicos_Aula_03_Introducao_Linguagem_Lua_2014.pdf
Apresentação sobre a linguagem lua

Semelhante a Apresentação Lua (20)

PPT
A Linguagem Lua e suas Aplicações em Jogos
PPTX
Curso Corona SDK - Módulo 2
PPT
TODAS AS FASES DA LUA, CURIOSIDADES .ppt
PPT
Python2.5.ppt
PDF
A Linguagem de Programação Lua-uma linguagem de programação poderosa e leve
PPTX
Logica programar
PDF
Python e django na prática
PDF
Curso básico de Algoritmos com Python
ODP
Workshop Python.1
PDF
Lua & C++
PDF
minicurso-python-getmeeting.pdf
PPTX
Seminário: Lua
PPTX
Introducao a Lógica de Programação
PDF
Aprenda computação com python 3.0 (1)
PPT
Apresentação Ruby no Dojo da UFBA
PDF
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
PPTX
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
PDF
Python e seus desafios
PDF
Aprenda computaocompython
A Linguagem Lua e suas Aplicações em Jogos
Curso Corona SDK - Módulo 2
TODAS AS FASES DA LUA, CURIOSIDADES .ppt
Python2.5.ppt
A Linguagem de Programação Lua-uma linguagem de programação poderosa e leve
Logica programar
Python e django na prática
Curso básico de Algoritmos com Python
Workshop Python.1
Lua & C++
minicurso-python-getmeeting.pdf
Seminário: Lua
Introducao a Lógica de Programação
Aprenda computação com python 3.0 (1)
Apresentação Ruby no Dojo da UFBA
TDC2018SP | Trilha Ruby - Programacao funcional com Ruby, potencialize e simp...
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
Python e seus desafios
Aprenda computaocompython
Anúncio

Último (6)

PDF
apresentacao introducao computacao ead.pdf
PDF
Dos requisitos ao código: como criar código rastreável em PHP
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
PDF
Evolução em código: algoritmos genéticos com PHP
PPTX
Curso de Windows 11 resumido na prática.pptx
apresentacao introducao computacao ead.pdf
Dos requisitos ao código: como criar código rastreável em PHP
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
Evolução em código: algoritmos genéticos com PHP
Curso de Windows 11 resumido na prática.pptx
Anúncio

Apresentação Lua

  • 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. • Lua e uma linguagem de script dinâmica, semelhante a outras linguagens de script como Python, Ruby e PHP. O que é Lua ?
  • 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. –Adobe Photoshop Lightroom –Middleware Ginga do Sistema Brasileiro de TV Digital. –Firefox Outras Aplicações Mercado
  • 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. • 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. – 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. 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. • < menor • > maior • <= menor igual • >= maior igual • == igual • ~= diferente Operadores Relacionais
  • 12. • and • or • not Operadores Lógicos
  • 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. 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. 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. 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. 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. • 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. • 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. • 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. • .. 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. • 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. 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. 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. • 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. • 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. 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. 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. Ferramentas Frameworks IDE’s Lua Glider Eclipse LuaEdit QLua Free (Android) Corona SDK Cocos2d-x AAMO MOAI
  • 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. • www.lua.org • lua-users.org • LabLua. Lua, Conceitos Basicos e API C (Agosto de 2008). www.lua.inf.puc-rio.br Referências