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

Embed Size (px)

Citation preview

Page 1: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Caio NevesLeila Soriano

Page 2: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

RoteiroO que é Lua?OrigemPor que usar Lua?Aspectos da linguagemExemplosOnde é usada?Exercícios

Page 3: 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:Programação orientada a objetosProgramação funcionalProgramação orientada a dados

Planejada para ser usada como uma linguagem de script leve e poderosa

Page 4: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 5: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

O que é Lua?Através de uso de funções C, Lua pode ser

estendidaCriação de linguagens especializadas

Lua é um software livre

Page 6: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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.

Page 7: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 8: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 9: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

A LinguagemConvencionalOs indentificadores podem ser qualquer

cadeia de letras e dígitos.As palavras reservadas são:

Page 10: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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:

Page 11: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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:

Page 12: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

TiposNil

Ausência de valor útilBoolean

True ou False (ou nil)String

Cadeias de caracteres Number

Ponto flutuante de precisão dupla

Page 13: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 14: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 15: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 16: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

VariáveisColchetes são usados para indexar uma

tabela

Page 17: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

ComandosPodem ser opcionalmente seguidos por“;”Não é permitida a construção

“;;”(comando vazio)Blocos podem ser delimitador para um

único comando

Page 18: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

ComandosLua permite atribuições múltiplas

Page 19: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 20: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Estruturas de controle

Page 21: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 22: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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.

Page 23: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 24: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 25: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

OperadoresPrecedência:

or and < > <= >= ~= == .. + - * / % not # - (unary) ^

Page 26: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

FunçõesDefinições:

Page 27: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Regras de VisibilidadeLua é uma linguagem com escopo

léxico.Começa no primeiro comando até o

fim do bloco mais interno.

Page 28: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 29: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 30: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Finalmente…Hello World

Page 31: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Outros códigos…

Page 32: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Usando tabelas:

Page 33: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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

Page 34: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

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” . . .

Page 35: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Onde é usada?

Page 36: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

ConclusõesLinguagem pequenaCapacidade de estender sua

biblioteca (especializar)LeveEmbutívelÓtima opção para uma linguagem

hóspede

Page 37: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

ExercíciosAcesse: http://www.lua.org/cgi-bin/demoExercício 1

Implemente a função de Fibonacci.

Exercício 2Implemente o quicksort, utilizando tabelas.

Page 39: Caio Neves Leila Soriano. Roteiro O que é Lua? Origem Por que usar Lua? Aspectos da linguagem Exemplos Onde é usada? Exercícios

Dúvidas?Obrigado pela atenção!