Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Tabelas

Aula 9

#Introdução

Olá, nessa aula vamos conhecer um elemento que facilita muito a vida de programadores, principalmente quando se trata de um código com muitas variaveis e operações, as tabelas!

Imagine uma tabela como se fosse uma estante com várias gavetas, quantas você desejar, dentro de cada gaveta tem um objeto, temos a gaveta um, a gaveta dois, e assim em diante ... podemos guardar objetos dentro de cada gaveta, tirar objetos delas e também saber o que tem dentro de cada uma, nessa analogia uma tabela é basicamente como se fosse essa estante.

Uma tabela é uma variável estruturada que pode conter vários valores dispostos "dentro" de si (vide analogia), seu inicio é indicado por uma abertura de chave, ela pode conter inúmeros valores, de todos os tipos exceto nulo(nil), desde variáveis até strings, e dentro dela esses valores são separados por vírgulas (,), seu fim é indicado por um fechamento de chave.

Essa definição pode ficar meio confusa aqui, mas garanto que ao longo da aula tudo vai se explicar.

Exemplo:


tb = {1, 2, 3, 4, 5} --> inteiros em uma tabela

tb = {"hello", "world"} --> strings em uma tabela

tb = {a = 2, b = 3} --> variáveis em uma tabela

Como você pode perceber nos exemplos acima a declaração (criação) de uma tabela é semelhante a de uma variável comum, mas perceba que a estrutura é diferente, eu abri uma chave `{´ e dentro dessa chave comecei a colocar os valores que eu quero para cada posição na tabela, como se eu estivesse distribuindo-os nas "gavetinhas" 1, 2, etc, separados por vírgulas, é como se cada virgula indicasse que acaba uma gavetinha e começa outra, mas lembre-se só é permitido um valor em cada "gavetinha" e uma gavetinha não pode não ter valor ou ser nula, e no final ocorre um fechamento da chave `}´ que indica o fechamento/final da tabela. Através desses exemplos e definições percebemos uma coisa, uma tabela é uma variável comum, mas é como se pudessemos guardar vários valores dentro de uma variável só, dentro da tabela, ao invés de criarmos duas variáveis, porque não criamos uma tabela contendo os valores dessas duas variáveis. #Mas e então, qual é a vantagem de se usar tabelas? Além da organização e estruturação veremos mais pra frente jeitos de se manipular tabelas que farão com que seu código fique muito menor e mais prático com o uso delas, acompanhe ... #Agora vamos pra uma parte um pouco mais chatinha, preste atenção Tabelas contém indexes, o que é um index? Os indexes são chaves "primárias" às quais os valores da tabela são associados, todo valor em uma tabela exceto variáveis tem um index, o index se não definido por você é definido pela posição do valor na tabela, e eles tem a simples função de organização e identificação dos valores na tabela:

tb = {2, 5, 4, 6}

Sobre a tabela acima podemos afirmar que o valor 2 tem o index 1, mas porque? Pois como eu já falei o index é definido pela posição do valor na tabela, começando sempre do 1, então ele é o primeiro valor da tabela, tem a posição 1 E assim em diante, o valor 5 tem index 2, o 4 tem index 3, o 6 tem index 6 e sempre em diante ...
Há também a opção de definir o index de um valor manualmente ao invés de simplesmente identifica-los pela posição na tabela, o que pode facilitar a associação de valores:

  --> [index] = valor

tb = {2, 5, [15] = 30}

Neste caso foi criada uma tabela, e para um de seus valores foi definido o index 15 manualmente, ou seja, o index do valor 2 é 1, e o do valor 5 é 2 (atribuidos pela posição), já para o valor 30 foi definido o index 15 manualmente, então o index do valor 30 é 15, e não 3 como seria normalmente ...
#E como se pega os valores de uma tabela?
Há dois meios de se pegar valores de dentro de uma tabela: Através do index do valor ou se a tabela contiver variáveis, atraves dos nomes das variaveis:

t = {21, 23, 43, 54}

t[2] --> esta sintaxe retornará o valor na tabela 't' no index 2, ou seja, 23

t[3] --> 43

t[4] --> 54 e assim por diante ...

Para se obter valores de uma tabela atraves de variaveis inseridas nela é muito mais facil:

t = {level = 20, nome = "dragon"}

t.level --> 20, 't' é a tabela e 'level' o nome da variavel inserida nela

t.nome --> "dragon"

#A biblioteca 'table' Existem muitas funções dentro da biblioteca 'table', que são usadas para manipulação de tabelas, aqui vão elas e suas respectivas utilidades:

table.concat (table [, sep [, i [, j]]]) --> Dada uma tabela onde todos os elementos são strings ou números retorna os elementos de i ou o inicio e j ou o fim concatenados em sequencia intercalados por 'sep', separador

table.insert (table, [pos,] value) --> Insere o valor 'value' na 'pos' (index) na tabela 'table'

table.remove (table [, pos]) --> Remove o valor associado ao index 'pos' da tabela 'table'

table.sort (table [, comp]) --> Ordena os elementos da tabela 'table' em dada ordem, se comp é fornecido então ele deve ser uma função que recebe dois elementos da tabela e retorna true quando o primeiro é menor do que o segundo

#E como uma tabela pode ser util no meu script? Pode ser util na associação de valores, observe este script de troca de sexo, ao inves de dois ifs checando o sexo, como o sexo só pode ser 0 ou 1, voce usa uma tabela:

function onUse(cid)

  local sex = {

				   [0]=1,

				   [1]=0,

				 }

  doPlayerSetSex(cid, sex[getPlayerSex(cid)])

  return true

end

Se o sexo do jogador for 0, atraves do valor no index 0 na tabela, o sexo é trocado para 1, e vice-versa .. Como também pode ser útil para armazenar configurações ou variáveis:

local config = {

				effect = 1,

				removeRune = true,

				combat = 2

				}

config.effect --> 1

config.removerune --> true

config.combat --> 2

#Utilidades 1. O operador # é utilizado em tabelas para retornar o tamanho de uma tabela (referente aos seus elementos, exceto variáveis), exemplo:

t = {2, 3, 4, 5, 6}

print(#t) --> 5, elementos reconheciveis

2. Tabelas multi-dimensionais, tabelas podem ser colocadas dentro de tabelas e assim por diante, exemplo:

tabela = {tabela2 = {tabela3 = {20}}}

print(tabela.tabela2.tabela3[1]) --> 20

#Curiosidades

  • Tabelas são o único mecanismo de estruturação de dados em Lua;
  • Tabelas podem ser heterogêneas; isto é, elas podem conter valores de todos os tipos (exceto nil).
  • Existem várias maneiras convenientes de se criar tabelas em Lua
  • Campos de tabela podem conter funções

*nil = tipo de valor nulo, vazio

Exercicios:

Crie uma tabela, contendo 2 valores inteiros, 2 strings e 2 variaveis.

Printe os elementos semelhantes da tabela separadamente.

OBS: Os valores podem ser aleatórios

Resposta Abaixo:

t = {4, 10, "oi", "tchau", a = 9, b = 5} print(t[1], t[2]) print(t[3], t[4]) print(t.a, t.b)

Creditos:

99% Notorious

1% Vittu

Editado por Vittu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Excelente Rs

Vou começar rever meus conceitos de script :x

Só fico meio ruin de ler as partes em codigos por causa do tipo de fonte, sei la devo ser milpe.

REP+

Donate

 

Link para o post
Compartilhar em outros sites

Obrigado, fazer tabelos é uma coisa bem dificiu, mas fica bem mas facil de programar, quanto ao code, é ruim de ler, msm, mas não tem outro jeito de por, eu acho..

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo