Ir para conteúdo
Entre para seguir isso  
Notorious

[Aula 9] Tabelas

Recommended Posts

Notorious    1
Notorious

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, [b]23[/b]
t[3] --> [b]43[/b]
t[4] --> [b]54 [/b]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[b].[/b]level --> 20, 't' é a tabela e 'level' o nome da variavel inserida nela
t[b].[/b]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. T
abelas 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

 

Gostou? Agradeça ...

 

[spoiler=Exercício]

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

 

[spoiler=Resposta]

[spoiler=Resposta .. Pense bem ..]

[spoiler=Resposta ...]


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

 

 

 

 

 

 

 

Editado por Mickfern

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dark Billie    0
Dark Billie

KD OS ACENTOS KRLa

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dokmos    1
Dokmos

Muito bom Notorious, aulas boas sempre são bem vindas!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Lwkass    1
Lwkass

Hmm.. curti cara...

eu particularmente curto usar tabelas ;]

 

Notorious dando aulas ? hmm...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Nord    2
Nord

Melhor aula de tabelas que eu já vi, muito fácil de entender e bem completa.

Se eu encontrar alguém precisando com certeza esse vai ser o tópico que vou recomendar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
pejuge2    1
pejuge2

Muito boa aula, eu gostaria de ter tido uma aula de tabelas antes de eu aprender na marra O.o. Tabelas são muito importantes, principalmente quando se quer automatizar e simplificar um script. Fiz um tutorial sobre isso e creio que muita gente não intendeu por não saber utilizar tabelas.

 

Parabens pelo tutoria!

Compartilhar este post


Link para o post
Compartilhar em outros sites
ushoriuma    0
ushoriuma

aew notorius vlws

teamo(zuera)

bela aula!!!

parabens!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
JhonnyMotta    0
JhonnyMotta

Aula muito boa ! Vlw mesmo, me ajudo bastanteee!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Warp    0
Warp

Ótima aula Notoriouss, como o Dokmos disse aula boa é sempre bem vinda (Y)

e.. como tava sem nada pra fazer fui fazer o exercicio ^^

num = {[color=Orange]1[/color],[color=Orange]2[/color]}
str = {[color=Red]"Warp"[/color], [color=Red]"foda xd"[/color]}
var = {nome=[color=Red]"Warp"[/color],e=[color=DarkOrchid]string.sub[/color](str[[color=Orange]2[/color]],[color=Orange]1[/color],[color=Orange]4[/color])}

[color=DarkOrchid]print[/color](num[[color=Orange]1[/color]],num[[color=Orange]2[/color]])
[color=DarkOrchid]print[/color](str[[color=Orange]1[/color]],str[[color=Orange]2[/color]])
[color=DarkOrchid]print[/color](var.nome..[color=Red]" e "[/color]..var.e)

Compartilhar este post


Link para o post
Compartilhar em outros sites
Roku    0
Roku

embora eu tenha gostado mais do dark, a aula esta sem duvida ótima...

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mystic Avatar    0
Mystic Avatar

Otimo tutorial caro Notorious

Espero que você continue assim =D

sempre nos ajudando com suas aulas e tutoriais

nossa que garoto inteligente!

eu queria conheser vose na RL vose deve ser muito legal!

 

Beijos!

Editado por Mystic Avatar

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mock    32
Mock

Sua aula ficou otima notorious ;D

até que vc leva jeito ^^

 

proxima aula. for

Compartilhar este post


Link para o post
Compartilhar em outros sites
xXHiroshiXx    0
xXHiroshiXx

vlw pelo tutorial me ajudo muito!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Dosman    0
Dosman

Otimo amigo,

Muito bom a aula,

 

I look forward to next class... hahaha

Compartilhar este post


Link para o post
Compartilhar em outros sites
alemao96    0
alemao96

Vlw pela aula cara,me ajudou bastante e tenho certeza que ajudara muitos outros!

Compartilhar este post


Link para o post
Compartilhar em outros sites
GustavoMassa    1
GustavoMassa

Haha muito bom tio Notorious :D

Compartilhar este post


Link para o post
Compartilhar em outros sites
dragonlorde    0
dragonlorde

Essa tem poco texto e altos exemplos isso é bom.

To esperando a proxima aula '-'

Compartilhar este post


Link para o post
Compartilhar em outros sites
Pandá s2    0
Pandá s2
t = {10, 20, "aew", "aula", ik = 9, cs = 5}

print(t[1], t[2])

print(t[3], t[4])

print(t.ik, t.cs)

 

Esse ae é o meu Exercicio

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Ramza    11
Ramza

Valeu nego! Muito boa mesmo a aula!

Só essa "table.concat" que eu não entendi nadinha :/

mas tirando isso, aula foi ótima! Aqui está o exercício :D

 

tabela = {1, 2, "rick", "gabi", namorados = "Rick e gabi", numeros = "1 e 2"}

 

print(tabela[1], tabela[2])

print(tabela[3],tabela[4])

print(tabela.namorados, tabela.numeros)

Compartilhar este post


Link para o post
Compartilhar em outros sites
GOD TY    0
GOD TY

Tudo de bom a aula. APROVADO! Continuem postandos essas aulas creio que irá ajudar tanto a min quanto a uma cambada de gente VLWS.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×