caio neves leila soriano
DESCRIPTION
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: - PowerPoint PPT PresentationTRANSCRIPT
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 bibliotecaEscrita 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 LuaEscrever 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
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.
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
Por que usar Lua?
Acoplávelbiblioteca, 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 Linguagem
ConvencionalOs 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:
Tipos
NilAusência de valor útil
BooleanTrue ou False (ou nil)
StringCadeias de caracteres
NumberPonto flutuante de precisão dupla
Tipos
Userdata 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ção
Lua 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áveis
Três tipos:Globais, locais e campos de tabelasOs 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 localVariáveis locais possuem escopo léxico
Comandos
Podem ser opcionalmente seguidos por“;”Não é permitida a construção
“;;”(comando vazio)Blocos podem ser delimitador para um
único comando
Estruturas de controle
Uso 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
For
Possui 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
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.
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
Operadores
Iguais a C, Java… exceto:Diferença: ~=Adição do operador tamanho: #Operadores lógicos denotados por:
AndNotOr
Concatenão: ..
Precedência: comum a C
Regras de Visibilidade
Lua é uma linguagem com escopo léxico.
Começa no primeiro comando até o fim do bloco mais interno.
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
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
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 DigitalNCLua
Outros UsosConectiva: APT-RPM (padrão para distribuições
RPM)Intel: ferramenta interna para layout de chipstomsrtbt: “The most Linux on one floppy disk” . . .
Conclusões
Linguagem pequenaCapacidade de estender sua
biblioteca (especializar)LeveEmbutívelÓtima opção para uma linguagem
hóspede
Exercícios
Acesse: http://www.lua.org/cgi-bin/demoExercício 1
Implemente a função de Fibonacci.
Exercício 2Implemente o quicksort, utilizando tabelas.
Referências
http://www.lua.org/manual/5.1/pt/manual.html#2
http://www.telemidia.puc-rio.br/~francisco/nclua/tutorial/index.html