Ir para conteúdo

Utilizações De Loops


caotic

Posts Recomendados

Resolvi fazer um tuto para intermediários discutindo sobre formas de repetir valores e funções.

 

Vamos ver os mais utilizados while,repeat e for

 

Repeat

 

E parecido com o while muitos dizem que ele complicado mais o contrario ele e bem facil.

Já que ele não e e muito utilizado e ele e parecido com o while vamos explicar um pouco dele.

 

Primeiro precisamos declarar ele.

 

.........
Repeat
........

 

Para que ele pare precisamos declarar until e o valor que devera ser assumido para o repeat parar.

 

.......
Repeat
........
until level == 12 ---- Se o valor de level e igual a 12 o repeat e parado mais se não for ele continua.
........

 

While

 

O while já e bem mais utilizado e excelente loop.

O while estará sempre buscando o valor para que ele pare.

Ou seja ele executara sempre até que ele tenha o valor que foi definido seja verdadeiro.

 

var = o valor definido
while var>4 do

 

Mais existe outras maneiras de utilizar o while fazendo um while infinito.

Sendo que ao executar while true ele repetira infinitamente e ao usar break o while e fechado

 

While true do  -- Repetição Infinita
.......
if var > 4 then
break --- Se var for maior do que 4 parar a o loop.

 

FOR

 

Este e o famoso for e você deve ja visto ele varias vezes.

 

 

Ele uma estrutura com multiplicas funções com funcionalidades sequenciais e numerais.

 

for ab = 1, 300 do

 

Esta e numeral vai repetir valores de 1 a 300 se eu colocasse este valor na tabela ela colocava os 300 valores.

Os trezentos valores serão guardados em uma única variável chamada de ab.

Não e obrigatório que seja ab pode renomear por qualquer outro nome.

 

Veremos o for sequencia.

Utilizado para tabelas outros.

Consiste em repetir valores em sequencia

 

local x = {"1 var", "2 var", "3 var"}
for a, c in pairs(x) do
print(a, c)

 

Temos outro exemplos como usar o for em todos os players online.

 

for _, id in ipairs(getPlayersOnline()) do

 

Se quisermos por exemplo mandar uma mensagem todos os player online.

 

for _, id in ipairs(getPlayersOnline()) do
doPlayerSendTextMessage(id, MESSAGE_STATUS_CONSOLE_BLUE, "Viu como o for e importante para seu otserv")

 

Mais se quisermos que apenar players com o level maior de 50 receba a mensagem.

 

for _, pid in ipairs(getPlayersOnline()) do
if getPlayerLevel(pid) > 50 then
doPlayerSendTextMessage(pid, MESSAGE_STATUS_CONSOLE_BLUE, "Fod@ e quem e level maior de 50 XD")

 

Bem e isto pessoal espero que tenha gostado

Link para o comentário
Compartilhar em outros sites

o While é uma estrutura de repetição, e primeiramente a condição testada, se for falsa não entra em loop, caso contrário executa o bloco do loop e avalia novamente a condição

 

exemplo:

local count,max = 0,10
while count < max do
count = count + 1
print(count)
end

 

vai executar o bloco 10x e parar

Link para o comentário
Compartilhar em outros sites

  • 2 months later...

Você mostrou o for com ipairs e pairs, mas se quer falou o porque delas poderem ser usadas.

Essas funções são funções iteradoras, assim como outras nativas de lua, são elas:

string.gmatch string.gsub pairs ipairs io.lines

 

Você pode também criar funções iteradoras, da seguinte forma:

 

function iterator_function(...)
 return function() return end, ...
end

Obs.: Pode ter ficado confuso de intender dessa forma, então mostrarei um exemplo prático, com uma função iteradora conhecida, a pairs.

 

function _pairs(_tab)
local function void(_table, last_index)
	local index = next(_table, last_index)
	if not index then
		return nil
	else
		return index, _table[index]
	end
end

return void, _tab, nil
end

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

×
×
  • Criar Novo...