Programa do Curso

Introdução a Lua

  • Um pouco de história
  • Objetivos, recursos e não objetivos de Lua
  • Recursos de Lua documentação e tutoriais
  • Instalando o interpretador Lua
  • Configurando e usando LuaRocks

Sintaxe e semântica básicas

  • Identificadores
  • Comentários, bloquear comentários
  • Variáveis globais e aplicação de rigor
  • Variáveis locais
  • Programas independentes, argumentos de programa
  • Unidades de compilação, pedaços, expressões, ponto e vírgula

Tipos de dados e estruturas de dados

  • Tipos básicos: nulo, booleano, número, string
  • Tipos de objetos: função, userdata, thread, tabela
  • Referências/objetos vs. valores básicos
  • A importância das tabelas em Lua

Introdução às tabelas e sua versatilidade

  • Tabelas como uma matriz associativa
  • Tabelas como matrizes numéricas, sequências

Estruturas básicas de controle

  • O if then elseif else termina
  • O loop while
  • O ciclo de repetição
  • O loop for simples

Manipulação de erros

  • Valores de retorno versus exceções
  • Convertendo um valor de retorno em uma exceção
  • Convertendo uma exceção em um valor de retorno
  • Níveis de erro

Programas de exemplo

  • Avaliação polinomial
  • Amplitude da primeira pesquisa
  • Exercícios adicionais

Mais sobre funções

  • Argumentos nomeados
  • Chamadas orientadas a objetos
  • Fechamentos
  • Escovando
  • Chamadas finais
  • Atribuição múltipla e retorno
  • Varargs

Iteradores e co-rotinas

  • O loop for genérico
  • Iteradores sem estado vs. com estado
  • Diferenças entre iteradores e co-rotinas

Metatabelas e metamétodos

  • O exemplo definido
  • O metamétodo __tostring
  • Metamétodos aritméticos
  • Os metamétodos __index, __newindex
  • O metamétodo __len

Módulos e pacotes

  • Usando módulos
  • Criando módulos
  • Organizando módulos em pacotes

Tabelas avançadas

  • Tabelas para filas e pilhas
  • Tabelas que descrevem gráficos
  • Matrizes como tabelas
  • Listas vinculadas como tabelas
  • Buffers de string

Metatabelas através de exemplos

  • Proxies
  • Somente leitura
  • Memoização
  • Programação dinâmica com memoização
  • O exemplo de Fibonacci

Ambientes

  • Relação entre variáveis globais e ambientes
  • Variáveis livres
  • A tabela _ENV e a tabela _G

Mais sobre módulos

  • Diferentes abordagens para a criação de módulos
  • Módulos que mudam o comportamento
  • Inicialização e argumentos do módulo
  • Usando ambientes para implementar módulos seguros

Iteradores e co-rotinas avançados

  • Produtor, consumidor, filtro
  • Envolvendo co-rotinas para obter iteradores
  • Iterador sem estado para listas vinculadas

Contribuindo para o Ecossistema

  • Fazendo upload de pacotes para MoonRocks

Paradigma funcional em Lua

  • A função do mapa
  • A função reduzir/dobrar

Orientado a objetos Programming

  • Diferentes abordagens para OOP
  • Diferentes abordagens para herança
  • Exemplos

Um passo a passo das Lua bibliotecas padrão

Compilação

  • Compilação
  • Avaliação
  • Relação com o meio ambiente
  • Pedaços binários

Coleta de lixo

  • Mesas fracas
  • Finalizadores, o meta-método __gc

Lua bytecode e máquina virtual

  • Gerando bytecode a partir do código fonte
  • Lendo e analisando bytecode
  • Tour rápido pelo código-fonte da VM Lua

Módulos C

  • Chamando C de Lua
  • Search caminho e carregamento de módulos C

Chamando Lua de C

  • A pilha
  • Manipulação de erros
  • Continuações

Tratamento de valores e tipos Lua de C

  • Matrizes
  • Cordas
  • Dados do usuário
  • Metatabelas
  • Chamadas orientadas a objetos
  • Dados de usuário leves

Gerenciamento de memória

  • Alocadores
  • API do GC

Tópicos em Lua

  • Co-rotinas vs threads
  • Multi-threading real e estados Lua

Requisitos

Familiaridade com, pelo menos, uma outra linguagem de programação. Programming experiência. Opcionalmente, se você tiver familiaridade com outras linguagens de script, isso facilitará a compreensão de Lua.

 21 Horas

Número de participantes


Preço por Participante

Próximas Formações Provisórias

Categorias Relacionadas