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.
- Fórum
- OTServ
- Tutoriais
- Tutoriais de Scripting
- Utilizando While em Tabelas.
Utilizando While em Tabelas.
Por caotic, 22 de dez. de 2012 em Tutoriais de Scripting
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Repeat e bem menos usado.
O tutorial e só para explicar que e possível manipular uma tabela com while.
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.
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 Dezembro 22 por Oneshot
info
Grupo: Conde
Registrado: 27/07/12
Posts: 757
Reputação: +57
Char no Tibia: [ADM] Bhoris

Parabens caotic.
Rep+ e espero que saida novos tutoriais...
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 Dezembro 22 por dalvorsn
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

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.
Otimo caotic , eu tava meio confuso com essas colunas mesmo.
esperamos novos tutoriais.
info
Grupo: Marquês
Registrado: 02/08/12
Posts: 1k
Reputação: +234
Char no Tibia: Maurolkit

Cara while em tabela é meio zuado/podre for é bem mais fácil/limpo de trabalhar em tabelas.
info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have

Não gosto de aprovar meus proprios tutoriais.
Mais.....
Tutorial Aprovado
info
Grupo: Cavaleiro
Registrado: 19/11/10
Posts: 190
Reputação: +36
Char no Tibia: Frenesy

for é bem mais simples de trabalhar. Sempre utilizo ele. Mas foi um bom Tutor.
Parabéns!
info
Grupo: Infante
Registrado: 13/10/08
Posts: 1.6k
Reputação: +420
Char no Tibia: Demonbholder

Ta bom o tutorial, apesar das limitações do while na utilização com tabelas.
Podia ter ensinado o repeat, mas não que seja necessário, só se quisesse, não é um pre requisito para entender o while.
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 Dezembro 25 por SmiX
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 Dezembro 25 por dalvorsn










info
Grupo: Infante
Registrado: 04/03/11
Posts: 1.6k
Reputação: +393
Char no Tibia: No Have
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:
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 endViu 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!
Editado Dezembro 26 por caotic