Estruturas de controle
Palavras reservadas que será usado nessa aula:
for, do, while, repeat, until, not, end, in
Iremos tratar nesta aula sobre loops.
Tomem muito cuidados ao usar loops, pois eles são a maior causa de travamento de sistemas.
Será ensinado sobre as estruturas de controle: for, while e repeat.
Iniciaremos pelo loop for:
O loop for é composto por uma expressão de controle na qual a primeira expressão é uma variável interna e a segunda são suas atribuições que podem ser feitas para percorrer uma sequencia numérica ou uma iteração de tabela, por exemplo.
Estrutura do for:
for varName = primeiroValor,ultimoValor[,atribuição] do
-- bloco
end
varName: seria o nome da variável, ou variáveis, que vai à receber a atribuição dos valores secundários.
primeiroValor: seria o número que irá começar a percorrer a sequência; essa sequência tanto pode ser positiva quanto negativa.
ultimoValor: seria o último valor a percorrer na sequência numérica.
[,atribuição]: esse é um valor que pode ser omitido, mas quando não for, serve como atribuição de valor ao percorrer a sequência numérica; quando o loop está percorrendo a sequência numérica, esse valor é atribuído ao valor anterior da sequência; essa atribuição faz com que o loop “pule” alguns valores da sequência numérica. Por padrão, esse valor é 1 (positivo), caso esteja percorrendo valores negativos, terá que declarar como atribuição um valor negativo também.
Exemplo de loop for usado para percorrer uma sequência numérica:
for x = -1,-10,-2 do print(x) end
>> -1
>> -3
>> -5
>> -7
>> -9
Veja que ele “pulou” os números: -2,-4,-6 e -8; Por quê? Porquê ao atribuir o valor ao valor anterior, ele deixa de seguir a sequência comum e passa a seguir segundo a atribuição.
Lembrando que o valor da atribuição pode ser omitido e que ele vale +1 (um positivo).
for x = 1,4 do print(x) end
>> 1
>> 2
>> 3
>> 4
Outra expressão muito usada no for é o uso de funções, principalmente funções iteradoras.
Como toda função pode retornar mais de um valor, na expressão da variável interna, podem-se declarar mais palavras que irão pegar os múltiplos valores retornados pela função, ou omiti-las como já foi demonstrado na aula sobre variáveis.
Enquanto a expressão for verdadeira, ele continuará executando o bloco até que a expressão se torne falsa ou ele seja terminado pelo uso da palavra break ou por um return.
Exemplo de um for com uma função iteradora:
O loop while:
Estrutura do loop while:
while expressão do
--bloco
end
Tu poderás usar qualquer tipo de expressão válida em lua.
A maior diferença entre esse loop e o for é a falta da variável interna que consta no loop for.
Enquanto a expressão for verdadeira, ele continuará executando o bloco até que a expressão se torne falsa ou ele seja terminado pelo uso da palavra break ou por um return.
Exemplo de uso de um loop while:
local ttm = 0
while (ttm < 60) do ttm = ttm + 1 end
Uma pratica em programação é não por expressão no loop while, mas por algo que seja verdadeiro no lugar, forçando assim que tu tenhas que parar o loop dentro do bloco.
local x = 0
while true do -- loop infinito
if x > 9 then break end -- controle para parar o loop
x = x + 1
end
O loop repeat:
O loop repeat segue o conceito oposto dos demais. Ao invés dele continuar executando enquanto a expressão for verdadeira, ele só continua executando enquanto a expressão for falsa e parando quando ela for verdadeira; ou caso seja finalizada pelo uso da palavra break ou return.
A estrutura do loop repeat:
repeat
--bloco
until expressão
O loop repeat cria o bloco e sua expressão de controle fica após a palavra until que serve como “end” dos demais loops.
Exemplo de uso do loop repeat:
local x = 0
repeat
print(x)
x = x + 1
until not (x < 10)
No código criado por vocês nas aulas anteriores, adicionem loops dos três tipos.
Inté a próxima aula.