A Linguagem Lua Lua Puc-Rio

Documentos relacionados
LUA. Deise Miranda Douglas Neves Luane Gomes Naara Soares

Descobrindo Lua. Sérgio Queiroz de Medeiros. Campus Party LabLua. Sérgio Queiroz de Medeiros Descobrindo Lua 1

Compiladores. Análise Léxica

Linguagem de Programação e Compiladores

Introdução à Engenharia ENG1000

Tópicos Especiais em Linguagens de Programação

Programação Introdução

4. Constantes. Constantes pré-definidas

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Linguagem de Programação I Prof. Tiago Eugenio de Melo.

Linguagem Python. Inteligência Artificial. Características de Python. Importando módulos. Módulos. Usando Python no modo interativo

Linguagens de Programação

Programação de Computadores II

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Curso de PHP. FATEC - Jundiaí TIPOS DE VARIÁVEIS

Introdução à Linguagem Lua Variáveis e Expressões

Computação 1 - Python Aula 3 - Teórica: Tipos de dados, Strings, Estrutura Condicional 1/ 28

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

LUA. Carlos Henrique Maulaz de Freitas Matheus Beloti Mariani Thiago Gozzi Renoldi Siqueira Costa

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Introdução a Programação

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

Introdução à Ciência da Computação

Aula de hoje. Tipos de Dados e Variáveis. Constantes literais. Dados. Variáveis. Tipagem dinâmica. SCC Introdução à Programação para Engenharias

Introdução. Surge em 1995 (Brendan Eich, programador da Netscape) com o nome de Livescript

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Variáveis primitivas e Controle de fluxo

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Curso de PHP. FATEC - Jundiaí

LabLua Lua. Conceitos Básicos e API C

ALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados

TÉCNICO DE INFORMÁTICA - SISTEMAS

Variáveis e Entrada de Dados Marco André Lopes Mendes marcoandre.googlepages.

Revisão da Linguagem C Prof. Evandro L. L. Rodrigues

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Noçõ linguagem Java. Profs. Marcel Hugo e Jomi Fred Hübner. Departamento de Sistemas e Computação Universidade Regional de Blumenau - FURB

Linguagem de Programação III - PHP

O Common Language Runtime (CLR) é uma plataforma criada com o objetivo de facilitar a interoperabilidade entre diferentes linguagens de programação,

Programação: Vetores

Algoritmos e Programação

JavaScript (Elementos de Programação e Programação Básica)

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

JSP Prof. Daniela Pires. VARIAVEIS... 2 Tipos de Dados... 2 String Float Integer Boolean... 3

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Variáveis Tipos de Dados. APROG (Civil) Aula 2

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Ambiente de desenvolvimento

Python - Variáveis e expressões

Compiladores II. Fabio Mascarenhas

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Conceitos Básicos de Programação

Estudo sobre a linguagem de programação Lua *

Compilação da linguagem Panda

UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE DEPARTAMENTO DE INFORMÁTICA E MATEMÁTICA APLICADA. DIM0320 Algoritmos e Programação de Computadores

JAVA. Professor: Bruno Toledo

Introdução a Programação. Curso: Sistemas de Informação Programação I José R. Merlin

Programação I A Linguagem C. Prof. Carlos Alberto

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Algoritmos II prof. Daniel Oliveira

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Introdução à Linguagem C++

Python Listas e Strings. Listas 23/11/2016. Por que usar listas? Listas. Listas - Solução. Listas - Problema

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Capítulo 8. Estruturas de Controle no Nível de Sentença

Introdução à linguagem Perl

Paradigmas de Linguagem de Programação. Paradigma Imperativo

Programação de Computadores III

Programação I Aula 3 Primeiros programas

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Algoritmo e Programação Matemática

Diagramas Sintáticos

Aula 11: Desvios e Laços

Programação de Computadores III

Programação de Computadores:

Transcrição:

A Linguagem Lua Lua foi projetada e implementada por uma equipe no Tecgraf, o Grupo de Computação Gráfica da Puc-Rio (Pontifícia Universidade Católica do Rio de Janeiro). 1

Exemplos de linguagens de scripts Lua Python Tcl Perl VBasic...

Para quê? Implementar o script do jogo Definir objetos e seus comportamentos Gerenciar os algoritmos de inteligência artificial Controlar os personagens Tratar os eventos de entrada Descrever a interface com o usuário Criar protótipos Testar Depurar Analisar adequação Prover acesso programável para roteiristas e artistas Experimentar novas idéias e variações

Por quê? Conjunto de características favoráveis Interpretada Tipagem dinâmica Gerência automática de memória Facilidade para estruturação de dados Facilidade para manipulação de strings Segura Facilidade para comunicação entre componentes

Como é Lua? Sintaxe convencional function fat (n) if n == 0 then return 1 else return n*fat(n-1) end end Unidade básica de execução: chunk Chunk = lista de comandos Arquivo ou string do programa hospedeiro

Execução de um chunk Pré-compilado em bytecodes Pode-se carregar arquivo compilado Máquina virtual executa seqüencialmente Execução altera ambiente global

Variáveis e Tipos Em Lua, as variáveis não têm tipos associados a elas: os tipos estão associados aos valores armazenados nas variáveis. Dessa forma, uma mesma variável pode num momento armazenar um valor de um tipo e depois passar a armazenar o valor de outro tipo Exemplos: a = "Exemplo" b = 1.23... b = nil a = 3 -- a armazena string -- b armazena numero -- b armazena nil -- a armazena numero 13

Variáveis e Tipos Em Lua, variáveis globais não precisam ser declaradas. Quando escrevemos a = 3, a variável a é, por default, uma variável global. Se desejarmos que uma variável tenha escopo local (a um bloco ou chunk), devemos declará-la previamente usando a palavra reservada local. Por exemplo: local a... a = 3 14

Os valores em Lua podem ser de oito tipos: Tipo nil O tipo nil representa o valor indefinido. Todas as variáveis ainda não inicializadas assumem o valor nil. Assim, se o código: a = b for encontrado antes de qualquer atribuição à variável b, então esta é assumida como contendo o valor nil, o que significa que a também passa a armazenar nil, independentemente do valor anteriormente armazenado em a. 15

Tipo number O tipo number representa valores numéricos. Lua não faz distinção entre valores numéricos com valores inteiros e reais. Todos os valores numéricos são tratados como sendo do tipo number. Assim, o código a = 4 b = 4.0 c = 0.4e1 d = 40e-1 armazena o valor numérico quatro nas variáveis a, b, c e d. 16

Tipo string O tipo string representa cadeia de caracteres. Uma cadeia de caracateres em Lua é definida por uma seqüência de caracteres delimitadas por aspas simples (' ') ou duplas (" "). Por simplicidade, quando a cadeia de caracteres é delimitada por aspas duplas, pode-se usar aspas simples no seu conteúdo, sem necessidade de tratá-las como seqüências de escape. Entretanto, para reproduzir na cadeia de caracteres as aspas usadas como delimitadoras, é necessário usar os caracteres de escape. Assim, são válidas e equivalentes as seguintes atribuições: s = "Olho d'agua" s = 'Olho d\'agua' 17

Tipo function Funções em Lua são consideradas valores de primeira classe. Isto significa que funções podem ser armazenadas em variáveis, passadas como parâmetros para outras funções, ou retornadas como resultados. A definição de uma função equivale a atribuir a uma variável global o valor do código que executa a função. function func1 (...)... end que pode posteriormente ser executada através de uma chamada de função: func1(...) 18

Tipo userdata O tipo userdata permite que dados C arbitrários possam ser armazenados em variáveis Lua. Este tipo corresponde a um bloco de memória e não tem operações prédefinidas em Lua, exceto atribuição e teste de identidade. Contudo, através do uso de metatables, o programador pode definir operações para valores userdata. Valores userdata não podem ser criados ou modificados em Lua, somente através da API C. Isto garante a integridade dos dados que pertencem ao programa hospedeiro. 19

Tipo table O tipo table implementa arrays associativos, isto é, arrays que podem ser indexados não apenas por números, mas por qualquer valor (exceto nil). Tabelas podem ser heterogêneas; isto é, elas podem conter valores de todos os tipos (exceto nil). Tabelas são o único mecanismo de estruturação de dados em Lua; elas podem ser usadas para representar arrays comuns, tabelas de símbolos, conjuntos, registros, grafos, árvores, etc. Para representar registros, Lua usa o nome do campo como um índice. Tipo boolean Boolean é o tipo dos valores false e true. 20

Atribuição simples e múltipla É possível atribuir diversas variáveis em um mesmo comando. Por exemplo: s, v = "Linguagem Lua", 2 Quando o número de variáveis listadas à esquerda do sinal de igualdade é diferente do número de resultados à direita da igualdade, a linguagem automaticamente ajusta as listas: ou preenchendo as últimas variáveis da esquerda com valores nils ou descartando os últimos resultados da direita. Por exemplo: a, b = 2 c, d = 2, 4, 6 O código acima atribui 2 à variável a, nil à variável b, 2 à variável c, 4 à variável d, e despreza o valor 6. 21

Atribuição simples e múltipla A possibilidade de atribuição múltipla permite a troca de valores armazenados em duas variáveis com um único comando. Portanto a, b = b, a faz com que a receba o valor anteriormente armazenado por b e que b receba o valor anteriormente armazenado por a, sem necessidade de variáveis temporárias. 22

Operadores relacionais Os operadores relacionais disponíveis em Lua são: < menor que > maior que <= menor que ou igual a >= maior que ou igual a == igual a ~= diferente de Os operadores relacionais retornam o valor nil quando o resultado é falso e o valor 1 quando o resultado é verdadeiro. Assim, as atribuições a = 4 < 3 b = 4 > 3 armazenam em a o valor nil e em b o valor 1. Os operadores >, <, >=, <= só são aplicáveis em dados do tipo number ou string, e têm a interpretação usual. 23

Controle de fluxo (if) if condição then bloco end ou if condição then bloco1... else bloco2... end ou ainda if condição1 then bloco1 elseif condição2 then bloco2... elseif condiçãon then bloco N else bloco N+1 end 24

Laço iterativo (while) while condição1 do bloco end Exemplo: f = 1 i = n while i > 0 do f = f * i i = i 1 end 25

Laço iterativo (for) for var = exp1, exp2, exp3 do bloco end Exemplo: for i = 10, 1, -1 do print(i) end 26

Funções A linguagem Lua trata funções como valores de primeira classe. Isto quer dizer que funções podem ser armazenadas em variáveis, podem ser passadas como parâmetros para outras funções e podem ser retornadas como resultados de funções. function nome ( [lista-de-parâmetros] ) bloco de comandos end A chamada da função segue a forma básica nome ( [lista-de-argumentos] ) Lua passa parâmetros por valor. Isto quer dizer que quando se altera o valor de um parâmetro dentro de uma função, altera-se apenas o valor da variável local correspondente ao parâmetro. O valor da variável passada como argumento na chamada da função permanece inalterado. 27

Funções Os valores retornados por uma função são ajustados para a atribuição na linha que faz a chamada. Para exemplificar, supõe-se uma função que incrementa os valores de um ponto cartesiano (x, y): function translada (x, y, dx, dy) return x+dx, y+dy end Considera-se, agora, que a chamada da função é feita por: a, b = translada(20, 30, 1, 2) Assim, a recebe o valor 21 (=20+1) e b recebe o valor 32 (=30+2). 28

Funções Seguindo o mesmo exemplo, se a chamada fosse a = translada(20, 30, 1, 2) Então o segundo valor retornado seria desprezado, e a receberia o valor 21. Por outro lado, a atribuição: a, b, c = translada(20, 30, 1, 2) Faria a= 21, b = 32 e c = nil. 29

Bibliotecas padrão Basic String Table Math IO OS Debug Coroutine

Basic Oferecem funções básicas print type setmetatable pairs

String Funções para manipulação de strings Casamento de padrões (pattern matching) string.find Permite buscar a ocorrência de um padrão numa string string.gsub Permite substituir ocorrâncias de um padrão por uma sequência de caracteres dentro de uma string

Table Funções para manipulação de tabelas table.insert Inserir um novo elemento table.remove Remover um elemento table.sort Ordenar os elementos em índices numéricos

Math Funções matemáticas Semelhantes às funções de C math.sqrt math.sin math.log

IO Funções de entrada e saída io.open Abertura de arquivo io.close Fechamento de arquivo io.read Leitura de arquivo io.write Escrita em arquivo

A Linguagem Lua Lua foi projetada e implementada por uma equipe no Tecgraf, o Grupo de Computação Gráfica da Puc-Rio (Pontifícia Universidade Católica do Rio de Janeiro). 36