1 / 39

Caio Neves Leila Soriano

Caio Neves Leila Soriano. Roteiro. O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios. O que é Lua?. Linguagem de programação de extensão projetada para dar suporte à programação procedimental; Oferece suporte também para:

Download Presentation

Caio Neves Leila Soriano

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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? • 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 • 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 • 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:

  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 • 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:

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

  13. Tipos • Userdata • 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

  16. Variáveis • Colchetes são usados para indexar uma tabela

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

  18. Comandos • Lua permite atribuições múltiplas

  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

  21. For • 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

  22. For • 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.

  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

  24. Operadores • Iguais a C, Java… exceto: • 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. Funções • Definições:

  27. Regras de Visibilidade • Lua é uma linguagem com escopo léxico. • Começa no primeiro comando até o fim do bloco mais interno.

  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

  31. Outros códigos…

  32. Usando tabelas:

  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 • NCLua • Outros Usos • 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 • http://www.telemidia.puc-rio.br/~francisco/nclua/tutorial/index.html

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

More Related