caotic 393 Postado Dezembro 22, 2012 Share Postado Dezembro 22, 2012 (editado) 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! Editado Dezembro 26, 2012 por caotic Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/ Compartilhar em outros sites More sharing options...
iunix 41 Postado Dezembro 22, 2012 Share Postado Dezembro 22, 2012 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 https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420227 Compartilhar em outros sites More sharing options...
caotic 393 Postado Dezembro 22, 2012 Autor Share Postado Dezembro 22, 2012 Repeat e bem menos usado. O tutorial e só para explicar que e possível manipular uma tabela com while. Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420230 Compartilhar em outros sites More sharing options...
iunix 41 Postado Dezembro 22, 2012 Share Postado Dezembro 22, 2012 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 https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420232 Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Dezembro 22, 2012 Share Postado Dezembro 22, 2012 (editado) 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, 2012 por Oneshot Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420237 Compartilhar em outros sites More sharing options...
DinoAdmin 57 Postado Dezembro 22, 2012 Share Postado Dezembro 22, 2012 Parabens caotic. Rep+ e espero que saida novos tutoriais... Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420238 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Dezembro 22, 2012 Share Postado Dezembro 22, 2012 (editado) 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, 2012 por dalvorsn Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420241 Compartilhar em outros sites More sharing options...
caotic 393 Postado Dezembro 22, 2012 Autor Share Postado Dezembro 22, 2012 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 https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420244 Compartilhar em outros sites More sharing options...
Akatsukyi 23 Postado Dezembro 23, 2012 Share Postado Dezembro 23, 2012 Otimo caotic , eu tava meio confuso com essas colunas mesmo. esperamos novos tutoriais. Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420549 Compartilhar em outros sites More sharing options...
Skymagnum 234 Postado Dezembro 23, 2012 Share Postado Dezembro 23, 2012 Cara while em tabela é meio zuado/podre for é bem mais fácil/limpo de trabalhar em tabelas. Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1420588 Compartilhar em outros sites More sharing options...
caotic 393 Postado Dezembro 24, 2012 Autor Share Postado Dezembro 24, 2012 Não gosto de aprovar meus proprios tutoriais. Mais..... Tutorial Aprovado Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1421592 Compartilhar em outros sites More sharing options...
fokus090 36 Postado Dezembro 24, 2012 Share Postado Dezembro 24, 2012 for é bem mais simples de trabalhar. Sempre utilizo ele. Mas foi um bom Tutor. Parabéns! Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1421855 Compartilhar em outros sites More sharing options...
Demonbholder 420 Postado Dezembro 25, 2012 Share Postado Dezembro 25, 2012 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. Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1422143 Compartilhar em outros sites More sharing options...
SmiX 265 Postado Dezembro 25, 2012 Share Postado Dezembro 25, 2012 (editado) 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, 2012 por SmiX Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1422285 Compartilhar em outros sites More sharing options...
dalvorsn 268 Postado Dezembro 25, 2012 Share Postado Dezembro 25, 2012 (editado) 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, 2012 por dalvorsn Link para o comentário https://xtibia.com/forum/topic/202213-utilizando-while-em-tabelas/#findComment-1422639 Compartilhar em outros sites More sharing options...
Posts Recomendados