Lab 02a
●
Linguagens de Programação
Lua 5.1
É a implementação de arrays associativos
●
Exceto nil, qualquer valor pode ser índice
●
Pode armazenar qualquer valor, inclusive nil t = {} t[1] = “hello” t[true] = false t[true] = nil print( t[print] ) t["type"] = type
Prof. Bruno Silvestre brunoos@inf.ufg.br 2
Tipos e Valores: table
●
Tipos e Valores: table
Tabelas são objetos
●
Alocadas dinamicamente
●
Crescem com a demanda
●
Variáveis são referências para a tabela
t = {} a = "x" t[a] = 4+1 print( t["x"] ) t[a..a..a] = 19 print( t[string.rep('x',3)] )
t = {} a = t
t[ [[bla]] ] = 2 print(t['bla']) a[1] = 1+2 print( t[1] ) t = nil a = nil
3
4
table: Construção de Tipos
Arrays
●
arrays
●
1-based
●
matrizes
●
Operador de tamanho: #
●
registros
●
–
●
a = {} a[1] = 10 a[2] = 'nada' a[3] = true
Estruturas de dados
Lista, fila, pilha, árvore, grafos
Entidades do domínio da aplicação
–
Pessoa, Aluno, Professor, Cliente, Venda, etc.
print(#a)
5
Arrays
●
1-based
●
Operador de tamanho: # a = {} a[5] = 10 a[3] = 'nada' a[1] = true a[2] = 7 a[6] = false
6
Operador de Tamanho: #
“O comprimento de uma tabela t é definido como qualquer índice inteiro n tal que t[n] não é nil e t[n+1] é nil; além disso, se t[1] é nil, n pode ser zero. Para um array comum, com todos os valores diferentes de nil indo de 1 até um dado n, o seu comprimento é exatamente aquele n, o índice do seu último valor. Se o array possui "buracos"
(isto é, valores nil entre dois outros valores diferentes de nil), então #t pode ser qualquer um dos índices que imediatamente precedem um valor nil (isto é, ele pode considerar qualquer valor nil como o fim do array)”
a = {} a['1'] = 10 a['2'] = 'nada' a['3'] = true print(#a) print(#a)
7
8
Operador de Tamanho: # a = {} a[5] = 10 a[3] = 'nada' a[1] = true a[2] = 7 a[6] = false
Arrays
a = {} a['1'] = 10 a['2'] = 'nada' a['3'] = true
●
1-based
●
Operador de tamanho: # a = {} a[#a+1] = 10 a[#a+1] = 'nada'