caio neves leila soriano. roteiro o que é lua? origem por que usar lua? aspectos da linguagem...
TRANSCRIPT
Caio NevesLeila Soriano
RoteiroO que é Lua?OrigemPor que usar Lua?Aspectos da linguagemExemplosOnde é 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:Programação orientada a objetosProgramação funcionalProgramação orientada a dados
Planejada para ser usada como uma linguagem de script leve e poderosa
O que é Lua?Implementada como uma biblioteca
Escrita em C limpoPor 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 LuaRegistrar funções C para serem chamadas pelo
código Lua
O que é Lua?Através de uso de funções C, Lua pode ser
estendidaCriação de linguagens especializadas
Lua é um software livre
OrigemTotalmente Brasileira (projeto,
implementação e desenvolvimento).Única linguagem produzida fora do primeiro
mundo a ter aceitação mundialPUC-Rio, Departamento de Informática
(Pontifícia Universidade Católica do Rio de Janeiro).
Nasceu e cresceu no Tecgraf e é desenvolvida no Lablua.
Por que usar Lua?Pequena
interpretador completo mais bibliotecas básicas tem 140K
Portátilescrita 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
Por que usar Lua?Acoplável
biblioteca, com API bem definida e simples para Cbibliotecas básicas implementadas em C através
da APIAcoplada a diversas linguagens:
C/C++, Java, Fortran, Ruby, OPL (linguagem do EPOC), etc.
Simples e flexívelLinguagem pequena, com poucos (mas
poderosos) mecanismos.Poucos casos especiais
A LinguagemConvencionalOs indentificadores podem ser qualquer
cadeia de letras e dígitos.As palavras reservadas são:
A LinguagemÉ case sensitiveOs nomes que começam com sublinhado
seguido por letra maiúscula são reservados para variáveis globais internas
Denotam itens léxicos:
Valores e Tipos
Dinamicamente tipadaVariáveis não possuem tipos, valores possuem
tipos.Os valores são de primeira classe Não existe definição de tiposExistem 8 tipos básicos:
TiposNil
Ausência de valor útilBoolean
True ou False (ou nil)String
Cadeias de caracteres Number
Ponto flutuante de precisão dupla
TiposUserdata
Permite que dados C arbitrários possam ser armazenados em variáveis Lua
ThreadUsado para implementar co-rotinas
TableArrays associativos
Valores do tipo table, function, thread e userdata (completo) são objetos:Contêm referências para os valores
CoerçãoLua provê coerção automática de
string para number em tempo de execuçãoQualquer 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
VariáveisTrês tipos:
Globais, locais e campos de tabelasOs parâmetros de funções são um caso especial
de variáveis locaisToda variável é global ao menos que ela
seja declarada como localVariáveis locais possuem escopo léxico
VariáveisColchetes são usados para indexar uma
tabela
ComandosPodem ser opcionalmente seguidos por“;”Não é permitida a construção
“;;”(comando vazio)Blocos podem ser delimitador para um
único comando
ComandosLua permite atribuições múltiplas
Estruturas de controleUso de sintaxe familiar:
IfRepeatWhileFor (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 falsosTodos os outros valores são considerados
verdadeiros
Estruturas de controle
ForPossui duas variações:
NuméricaGené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
ForO 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.
Comandos Return e BreakReturn é 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
OperadoresIguais a C, Java… exceto:
Diferença: ~=Adição do operador tamanho: #Operadores lógicos denotados por:
AndNotOr
Concatenão: ..Precedência: comum a C
OperadoresPrecedência:
or and < > <= >= ~= == .. + - * / % not # - (unary) ^
FunçõesDefinições:
Regras de VisibilidadeLua é uma linguagem com escopo
léxico.Começa no primeiro comando até o
fim do bloco mais interno.
Coletor de LixoLua realiza gerenciamento automático
da memóriatabelas, 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
Co-RotinasLua 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.createA co-rotina inicia sua execussao
atraves a camada da funcao coroutine.resume
Finalmente…Hello World
Outros códigos…
Usando tabelas:
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
Onde é usada?Aplicações para TV Digital
NCLuaOutros Usos
Conectiva: APT-RPM (padrão para distribuições RPM)
Intel: ferramenta interna para layout de chipstomsrtbt: “The most Linux on one floppy disk” . . .
Onde é usada?
ConclusõesLinguagem pequenaCapacidade de estender sua
biblioteca (especializar)LeveEmbutívelÓtima opção para uma linguagem
hóspede
ExercíciosAcesse: http://www.lua.org/cgi-bin/demoExercício 1
Implemente a função de Fibonacci.
Exercício 2Implemente o quicksort, utilizando tabelas.
Referênciashttp://www.lua.org/manual/5.1/pt/ma
nual.html#2http://www.telemidia.puc-rio.br/~fra
ncisco/nclua/tutorial/index.html
Dúvidas?Obrigado pela atenção!