A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Caio Neves Leila Soriano

Apresentações semelhantes


Apresentação em tema: "Caio Neves Leila Soriano"— Transcrição da apresentação:

1 Caio Neves Leila Soriano

2 Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem
Exemplos Onde é usada? Exercícios

3 O que é Lua? Linguagem de programação de extensão projetada para dar suporte à programação procedimental; Oferece suporte também para: Programação orientada a objetos Programação funcional Programação orientada a dados Planejada para ser usada como uma linguagem de script leve e poderosa

4 O que é Lua? Implementada como uma biblioteca
Escrita em C limpo Por ser de extensão funciona somente embarcada num programa hospedeiro. O programa hospedeiro pode: Invocar funções para executar um pedaço de código Lua Escrever e ler variáveis Lua Registrar funções C para serem chamadas pelo código Lua

5 O que é Lua? Lua é um software livre
Através de uso de funções C, Lua pode ser estendida Criação de linguagens especializadas Lua é um software livre

6 Origem Totalmente Brasileira (projeto, implementação e desenvolvimento). Única linguagem produzida fora do primeiro mundo a ter aceitação mundial PUC-Rio, Departamento de Informática (Pontifícia Universidade Católica do Rio de Janeiro). Nasceu e cresceu no Tecgraf e é desenvolvida no Lablua.

7 Por que usar Lua? Pequena Portátil Eficiente
interpretador completo mais bibliotecas básicas tem 140K Portátil escrita em ANSI C, compila o mesmo código em todas as plataformas Unix, Windows (incluindo CE), Playstation II, OS/390, XBox, BeOS, DOS,Palm OS, EPOC, sistemas embutidos, etc. Eficiente

8 Por que usar Lua? Acoplável Acoplada a diversas linguagens:
biblioteca, com API bem definida e simples para C bibliotecas básicas implementadas em C através da API Acoplada a diversas linguagens: C/C++, Java, Fortran, Ruby, OPL (linguagem do EPOC), etc. Simples e flexível Linguagem pequena, com poucos (mas poderosos) mecanismos. Poucos casos especiais

9 A Linguagem Convencional
Os indentificadores podem ser qualquer cadeia de letras e dígitos. As palavras reservadas são: and break do else elseif end false for function if in local nil not or repeat return then true until while

10 == ~= <= >= < > =
A Linguagem É case sensitive Os nomes que começam com sublinhado seguido por letra maiúscula são reservados para variáveis globais internas Denotam itens léxicos: * / % ^ # == ~= <= >= < > = ; : , ( ) { } [ ]

11 Valores e Tipos Dinamicamente tipada Os valores são de primeira classe
Variáveis não possuem tipos, valores possuem tipos. Os valores são de primeira classe Não existe definição de tipos Existem 8 tipos básicos: Nil Boolean Number String Function Userdata Thread Table

12 Tipos Nil Boolean String Number Ausência de valor útil
True ou False (ou nil) String Cadeias de caracteres Number Ponto flutuante de precisão dupla

13 Tipos Userdata Thread Table
Permite que dados C arbitrários possam ser armazenados em variáveis Lua Thread Usado para implementar co-rotinas Table Arrays associativos Valores do tipo table, function, thread e userdata (completo) são objetos: Contêm referências para os valores

14 Coerção Lua provê coerção automática de string para number em tempo de execução Qualquer operação aritmética aplicada a uma cadeia de caracteres tenta converter essa cadeia em um número Um número ao ser usado onde uma cadeia de caracteres é esperada é convertido para string

15 Variáveis Três tipos: Globais, locais e campos de tabelas Os parâmetros de funções são um caso especial de variáveis locais Toda variável é global ao menos que ela seja declarada como local Variáveis locais possuem escopo léxico X = “exemplo”

16 Variáveis Colchetes são usados para indexar uma tabela tabela[1]
tabela[“chave”] tabela.chave

17 Comandos Podem ser opcionalmente seguidos por“;”
Não é permitida a construção “;;”(comando vazio) Blocos podem ser delimitador para um único comando do comando end

18 Comandos Lua permite atribuições múltiplas x, y, z = y, z, x

19 Estruturas de controle
Uso de sintaxe familiar: If Repeat While For (com 2 variações) A expressão de condição de uma estrutura de controle pode retornar qualquer valor: false ou nil são considerados valores falsos Todos os outros valores são considerados verdadeiros

20 Estruturas de controle
while exp do bloco end repeat bloco until exp if exp then else elseif exp then bloco end

21 for var = …, exp1, exp2 do bloco end
Possui duas variações: Numérica Genérica O laço for numérico repete um bloco de código enquanto uma variável de controle varia de acordo com uma progressão aritmética for var = …, exp1, exp2 do bloco end

22 for var_1, ···, var_n in explist do block end
O comando for genérico funciona utilizando funções, chamadas de iteradoras. A cada iteração, a função iteradora é chamada para produzir um novo valor, parando quando este novo valor é nil. for var_1, ···, var_n in explist do block end

23 Comandos Return e Break
Return é usado para retornar valores de um trecho ou de uma função Break é usado para terminar a execução de um laço while, repeat ou for, pulando para o próximo comando depois do laço. Termina a execução do laço mais interno return trecho

24 Operadores Iguais a C, Java… exceto: Precedência: comum a C
Diferença: ~= Adição do operador tamanho: # Operadores lógicos denotados por: And Not Or Concatenão: .. Precedência: comum a C

25 Operadores Precedência: or and < > <= >= ~= == .. + -
< > <= >= ~= == .. * / % not # (unary) ^

26 nome = function (param) corpo end
Funções Definições: function nome (param) corpo end nome = function (param) corpo end

27 Regras de Visibilidade
Lua é uma linguagem com escopo léxico. Começa no primeiro comando até o fim do bloco mais interno. a = {} local x = 20 for i=1,10 do local y = 0 a[i] = function () y=y+1; return x+y end end

28 Coletor de Lixo Lua realiza gerenciamento automático da memória
tabelas, userdata, funções, fluxos de execução, cadeias de caracteres, etc. Lua implementa um coletor de lixo marca-e-limpa (mark-and-sweep) incremental. Controle do garbagecollector através de Lua

29 Co-Rotinas Lua oferece suporte a co-rotinas (threads)
Uma co-rotina em Lua representa um fluxo de execução independente É possível criar uma co-rotina com uma chamada à coroutine.create A co-rotina inicia sua execussao atraves a camada da funcao coroutine.resume

30 Finalmente… Hello World io.write("Hello world!")

31 Outros códigos… -- funcao fatorial function fatorial (n)
if n == 0 then return 1 else return fatorial(n-1)*n end for n = 1,5 do io.write("fatorial ",fatorial(n),"\n")

32 Usando tabelas: tabela = {"fruta", "legume", "verdura"}
tabela.fruta = "banana" tabela.legume = "feijao" tabela.verdura = "pimentao" io.write("É fruta: " ,tabela.fruta, "\n") io.write("É legume: " ,tabela.legume, "\n") io.write("É verdura: ", tabela.verdura)

33 Onde é usada? Muito utilizada em jogos:
LucasArts: Grim Fandango, Escape From Monkey Island BioWare: Baldur’s Gate, MDK2 Microsoft games: Mythica freeware: Angband (RPG) Blizzard: Word of Worcraft

34 Onde é usada? Aplicações para TV Digital Outros Usos NCLua
Conectiva: APT-RPM (padrão para distribuições RPM) Intel: ferramenta interna para layout de chips tomsrtbt: “The most Linux on one floppy disk” . . .

35 Onde é usada?

36 Conclusões Linguagem pequena
Capacidade de estender sua biblioteca (especializar) Leve Embutível Ótima opção para uma linguagem hóspede

37 Exercícios Acesse: http://www.lua.org/cgi-bin/demo Exercício 1
Implemente a função de Fibonacci. Exercício 2 Implemente o quicksort, utilizando tabelas.

38 Referências http://www.lua.org/manual/5.1/pt/manual.html#2

39 Dúvidas? Obrigado pela atenção!


Carregar ppt "Caio Neves Leila Soriano"

Apresentações semelhantes


Anúncios Google