apresentação lua

Post on 15-Jul-2015

110 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Linguagem de ProgramaçãoLua

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 ?

MercadoDesenvolvimento 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" ) endend

Entrada = 123Saída = numero 123 é impar

Exemplo

• Declaração de variáveis

• Em Lua, não declaramos o tipo de uma variável.

local var = 10var = “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 = 3print (type (a)) → imprime "number“

a = "bola"print (type (a)) → imprime "string“

a = trueprint (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 1local x = 44if 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 2local a='a'local b=alocal c='c'

if(a == b and a ~= c) thenprint (a..","..b..","..c)

end

→ a,a,c

Sintaxe IF

local i = 0while 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 docorpo_do_laco

end

var1 índice var2 valor da condiçãovar3 contador

for i=1, 10 do print (i) endfor 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→ a a 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 falsolocal y = b or 1 -- y recebe o valor padrão 1 quando b e um valor falsoreturn 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 sejachamada com um numero menor de parâmetros, o valor dos parâmetros quenão foram fornecidos é nil.

s, p = fun (3, 4) -- a é 3 e b é 4print (s, p) --> 7 12s, p = fun (2) -- a é 2 b é nil e y e inicializado com 1print (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 arraysprint (v)

endend

endmaior3 ("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.subs = "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.lena = "boi"

b = "formiga"

print (#a, #b) --> 3 7

print (string.len (a)) --> 3

print (#string.sub (b, 3)) --> 5

Manipulação de String

• .. a = "seg" .. "unda"

b = "feira"

print (a .. "-" .. b) --> segunda-feira

• string.findlocal s = "Ciência da Computação"

local a = string.find(s,"ê")

print( a ) --> 3

• string.gsublocal s = "boi,bola,balao“

local news = (string.gsub (s, ",", " "))

print (news) --> 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) --> 4t [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]) --> 1print (t[2]) --> 2print (t[3]) --> 3

table.insert (t, 2, 4)--array, posição, valor

print (t[1]) --> 1print (t[2]) --> 4print (t[3]) --> 2print (t[4]) --> 3

table.remove(t) --remove o ultimo elementotable.remove(t, 2) --remove segundo o elemento

Tabelas

• Tabela com Array associativolocal tab2 = {x=100, y=200, z=50}print(tab2[“y”],tab2.z) --> 200 50

• Mais exemplosentry {

name = "Brasil",

capital = "Braslia",

netdomain = "br",

population = 186757608

}

entry {

name = "Argentina",

capital = "Buenos Aires",

netdomain = "ar",

population = 40677348

}

Linguagem de descriçãode 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.heightend

Rectangle.width = 6Rectangle.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"0607 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 */1213 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 }2122 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

top related