Introdução a
linguagem Lua
Prof. Leonardo Soares
Por que Lua?
 Linguagem de sintaxe simples
 Relatos de bom desempenho
 Grande portabilidade para diferentes
plataformas
 Pequeno footprint
 Fácil integração com C/C++
Também usada como linguagem
secundária
 Implementação de recursos específicos dentro de
uma aplicação
 Utilização de DSLs (Domain Specific Languages)
 Exemplo:
 I.A. em jogos
Jogos que usam lua como
scripting
Jogos que usam lua como
scripting
Características do Lua
 Linguagem interpretada
 Tipagem dinâmica
 Gerência automática de memória
Linguagem interpretada
 O código criado é executado por meio de um
interpretador
 Vantagens:
 Independente de plataforma
 Sintaxe tende a ser mais ”alto nível"
 Gestão automática de memória
 Desvantagens:
 Teoricamente menos eficiente do que uma
linguagem compilada
Tipagem dinâmica
 Não fazemos a declaração dos tipos de
dados
 A verificação do tipo de dados ocorre em
tempo de execução
Exemplos de diferentes tipos de
tipagem
 Java (tipagem estática):
 String nome = “Leonardo”;
 Lua (tipagem dinâmica):
 nome = “Leonardo”
Vantagens da tipagem dinâmica
 Código mais “limpo”
 Menor tamanho do código
 Conversão de dados se torna mais simples
Desvantagens da tipagem
dinâmica
 Pode dificultar o entendimento do código (alguns
preferem saber os tipos de dados que são usados)
 Pode dificultar a identificação de erros no código
 Faz menos uso dos recursos de autocompletar das
IDEs
Gerência automática de memória
 Não nos preocupamos em alocar ou liberar
memórias de nossas variáveis
 Vantagem:
 Simplifica a programação
 Desvantagem:
 Oferece menos flexibilidade para a gestão de
memória em situações críticas
Show me the code!
• Sem { } (chaves)
• Sem tipos de dados
• Uso de then, do, etc
Observações
 Lua é case-sensitive
 Não há formatação rígida
 Comentários iniciam com --
Variáveis em Lua
 Não se declara o tipo, apenas o nome da
variável e seu valor
 Exemplo:
 denominador = 2
Tipos de dados
 nil
 Boolean
 Number (flutuantes e double)
 String
 Table
Escopo de variáveis
 Globais
 Uma vez declaradas, podem ser usadas em qualquer
parte do programa
 Locais
 Uma vez declaradas, somente são usadas dentro do
bloco em que foram declaradas
Declaração de variáveis
 Global:
 ligado = true
 Local:
 local soma = 2
Observações
 Se a variável local tiver o mesmo nome da global, então
prevalece o uso da variável local
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Atribuição de valores
Fonte: Fábrica de código – Curso de Lua 3.2
Fonte: Fábrica de código – Curso de Lua 3.2
Fonte: Fábrica de código – Curso de Lua 3.2
Exemplo
Fonte: Fábrica de código – Curso de Lua 3.2
Fonte: Fábrica de código – Curso de Lua 3.2
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Estrutura de controle de fluxo
Fonte: Fábrica de código – Curso de Lua 3.2
Exemplos
Fonte: Fábrica de código – Curso de Lua 3.2
Repetição
 Sintaxe e uso do for:
Fonte: Fábrica de código – Curso de Lua 3.2
Fonte: Fábrica de código – Curso de Lua 3.2
Exercício
Fonte: Fábrica de código – Curso de Lua 3.2
Exercício
Fonte: Fábrica de código – Curso de Lua 3.2
Exercício
Fonte: Fábrica de código – Curso de Lua 3.2
Exercício
Fonte: Fábrica de código – Curso de Lua 3.2
Exercício
Fonte: Fábrica de código – Curso de Lua 3.2
Funções
Fonte: Fábrica de código – Curso de Lua 3.2
Exemplo de função
Fonte: Fábrica de código – Curso de Lua 3.2
Parâmetros para funções
Fonte: Fábrica de código – Curso de Lua 3.2
Número variáveis de parâmetros
Fonte: Fábrica de código – Curso de Lua 3.2
Passagem de parâmetros por
valor
Fonte: Fábrica de código – Curso de Lua 3.2
Passagem de parâmetro por
referência
Fonte: Fábrica de código – Curso de Lua 3.2
Retorno dos parâmetros
 Uso da palavra reservada return
 Pode retornar um ou mais parâmetros
Fonte: Fábrica de código – Curso de Lua 3.2
Chamando funções
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Exercícios
Fonte: Fábrica de código – Curso de Lua 3.2
Bibliografia/Referências
 Fábrica Digital – Curso de Lua 3.2
 http://www.lua.org/pil/contents.html

Introdução a linguagem de programação Lua