Ir para conteúdo

Utilizando While em Tabelas.


caotic

Posts Recomendados

Ola galerinha xtibiana!

Hoje vou mostrar um tutorial sobre a utilização de while em tabela.

Bem tabelas conseguem guardar múltiplos valores de forma fácil e pratica.

O while não e muito utilizado para manipular tabelas mais e possível fazer de forma rápida e funcional.

 

A utilização de um while e UM dos meios de "procurar" os valores em uma tabela.

O while perde a sua popularidade em tabelas por causa do for.

O while torna - se um pouco mais pesado do que o for além de que a quantidade de linhas gastas no for e bem menor.

 

Neste tutorial explicarei a utilização de while em tabelas:

Toda tabela apresenta os números de cada coluna.

Exemplo:

 

 

local tab = {
{coluna = "Esta coluna representa a 1"},
{coluna = "Esta coluna representa a 2"},
{coluna = "Esta coluna representa a 3"}
}

 

Você deve ter percebido que as colunas são em ordem numéricas crescente e começa na primeira coluna.

E importante aprender esta parte para entender o funcionamento da repetição.

 

Para acessar o valor de acordo com a tabela e só colocarmos de tal maneira:

tab[Numero da Coluna]

 

Se colocarmos assim:

 

tab[1] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 1"},
tab[2] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 2"},
tab[3] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 3"}

 

 

Para acessar um valor da tabela basta colocar de tal maneira:

tab[Numero da Coluna].value

 

Se colocarmos assim:

 

tab[1].coluna == sera acessado seguinte valor = "Esta coluna representa a 1"
tab[2].coluna == sera acessado seguinte valor  = "Esta coluna representa a 2"
tab[3].coluna == sera acessado seguinte valor  = "Esta coluna representa a 3"

 

Se usáramos # em uma tabela.

Ela verifica a quantidade de colunas dela.

Pronto.

 

Concluímos o básico de tabela agora vamos a utilização do while.

Temos que repetir cada coluna e verificar o valor que queremos.

local str = {
{msg = "Esta na 1 missão", value = 1},
{msg = "Esta na 2 missão", value = 2},
{msg = "Esta na 3 missão", value = 3}
}


k = 0  ---- Cria um nova variável com o valor de 0
while #str > k do -- Verifica se a variável k e maior que o tamanho de str
k = k+1 --- Adiciona o valor +1 a k
if str[k].value == 2 then --- Verifica se value e 2
print(str[k].msg) ---- Se o value for 2 ele manda uma print com a mensagem da coluna.
break
end
end

 

Pode parecer complicado mais vamos por parte.

Eu declarei k para eu guardar um valor.

k = 0

 

Quando o while repetir ele vai adicionar mais um:

k = k+1

 

Assim toda vez que o while repetir sera uma coluna:

str[k]

 

Para sabermos se encontramos o value == 2 fizemos uma verificação

if str[k].value == 2 then --- Verifica se value e 2

 

Se a verificação for verdadeira ele manda uma mensagem da coluna de k

print(str[k].msg) ---- Se o value for 2 ele manda uma print com a mensagem da coluna.

 

Terminado o script se a verificação for verdadeira ele para o while

break

 

Viu como e simples?

Agora basta explorar e procurar novas formas de "procurar" valores na tabela.

Espero que nos mostre a sua maneira de manipular tabelas.

Até a proxima pessoal!

 

21nl25z.png

Editado por caotic
Link para o comentário
Compartilhar em outros sites

While + tabelas é algo inviavel, qualquer erro zuaria o servidor inteiro. Mil vezes mais aconselhavel usar for. E faltou explicar algumas coisas, como funciona o break e eu acho errado explicar while sem explicar repeat.

Link para o comentário
Compartilhar em outros sites

Repeat e bem menos usado.

O tutorial e só para explicar que e possível manipular uma tabela com while.

 

O problema é você explicar o que é fruta citrica, sem explicar o que é limão, só pq o limão é mais azedo. Acho que se explicar o while, tem que explicar o repeat que são praticamente a mesma coisa, mudando apenas a verificação.

Link para o comentário
Compartilhar em outros sites

While é um loop, Repeat também é. Se um faz uma coisa, o outro também faz.

 

 

local tabela = {1, 2, 3, 4}
local n = 1
while n <= #tabela do
print(tabela[n])
  n = n + 1
end

 

local n = 1
repeat
  print(tabela[n])
  n = n + 1
until n > #tabela

Editado por Oneshot
Link para o comentário
Compartilhar em outros sites

Cara, é viável apenas se for trabalhar com index numericos, se tiver index como string fica tenso de fazer no while.

Um simples for index, value in pairs(table) do end usando while seria um horror.

Pra tabela ele não é muito bom, tanto porque existe pairs e ipairs que faria praticamente todo o serviço numa tabela, Porem a titulo de estudo e viavel que se saiba de varias maneiras, então é valido o tutorial, continue assim.

Editado por dalvorsn
Link para o comentário
Compartilhar em outros sites

Cara, é viável apenas se for trabalhar com index numericos, se tiver index como string fica tenso de fazer no while.

Um simples for index, value in pairs(table) do end usando while seria um horror.

Pra tabela ele não é muito bom, tanto porque existe pairs e ipairs que faria praticamente todo o serviço numa tabela, Porem a titulo de estudo e viavel que se saiba de varias maneiras, então é valido o tutorial, continue assim.

 

Exatamente.

O while e um modo mais "grosso" de repetir valores.

Então não deixa de ser uma opção.

Link para o comentário
Compartilhar em outros sites

Se colocarmos assim:

tab[1] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 1"},

tab[2] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 2"},

tab[2] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 3"}

 

Corrigi ai:

Se colocarmos assim:
tab[1] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 1"},
tab[2] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 2"},
tab[3] sera acessada a seguinte coluna = {coluna = "Esta coluna representa a 3"}

Editado por SmiX
Link para o comentário
Compartilhar em outros sites

While é um loop, Repeat também é. Se um faz uma coisa, o outro também faz.

 

 

local tabela = {1, 2, 3, 4}
local n = 1
while n <= #tabela do
print(tabela[n])
  n = n + 1
end

 

local n = 1
repeat
  print(tabela[n])
  n = n + 1
until n > #tabela

 

Aproveitando que falou sobre, apenas para completar, a diferença é basicamente essa:

Repeat: Executa o bloco, verifica a condição, se verdadeira executa novamente ate que seja falsa, ou que encontre um return ou break..

While: Verifica a condição, se verdadeira executa e torna o ciclo, ate que seja falsa, ou que encontre um return ou break.

 

Não foi citado no tópico, mas acho importante então aproveitarei o post e falarei, quando se usa loops concatenados dentro de loops, o break para o loops mais interno apenas.

 

local var = 0
while var < 50 do
var = var + 1
while true do
	 if var > 40 then
		  break
	 end
	 var = var+ 1
end
end

como podem ver, ao atingir o valor 41 (var > 40), ele para de executar o segundo loop, mas o primeiro continua.

porém se fosse dado um return, ele pararia tudo ali, e retornaria algo pra função a que o bloco pertence

Editado por dalvorsn
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...