Bem-vindos ao primeiro tutorial da série Scripting!, escolhi abordar um tema simples, mas que fará muita diferença nos próximos temas que irei abordar.
Aprender a linguagem LUA é como aprender matemática. Sabe por quê?
Na matemática, para resolver equações, você não precisa ter aprendido soma e subtração? No campo da LUA, para aprender (por exemplo) a construção do escopo do operador FOR, deverá primeiro, aprender o tema de hoje: Controladores Lógicos.
Está preparado? Se sim, vamos lá!
Para começar, galera, temos que pensar nas estruturas de controle lógico mais comuns no ramo da LUA, são as que trabalham com condições. Provavelmente quando você estava fazendo sua aula de inglês ou de português, seu professor falou algo parecido com isso abaixo:
Veja que o Se ali remete a nossa condição (não chover) e ao que irá acontecer (não irei para a escola), por incrível que pareça, no campo da LUA, a coisa é exatamente a mesma, só que usamos o controlador IF. Vejamos abaixo como usar ele:
if true then
--[[bloco]]
end
O IF funciona desse jeito mostrado acima, se ele verifica que algo retorna verdadeiro, ele executa o escopo atribuído a ele. Seguem abaixo exemplos do que poderia ser verdadeiro.
Para verificar se algo é verdadeiro, você precisa fazer uma relação entre algo declarado e o argumento, para o LUA não é diferente. Para fazer essas verificações, você deverá usar os operadores de relação. Você deve conhecer alguns desses operadores das suas aulas de matemática, são eles:
São os operadores que vão retornar o true ou o false da estrutura de controle IF para que ela funcione. Agora veremos um código simples abaixo:
local var = 3
if(var <= 4) then
print("Legal")
end
O seu interpretador que, na maioria dos casos, será o executável do seu servidor, entende o bloco acima como algo mais ou menos assim:
Certo, se você entendeu tudinho, deixe eu falar algo sábio: "Para tudo existe algo contrário."
É com isso que apresento-lhe nosso segundo controlador lógico: ELSE.
O ELSE é um controlador lógico que remete a "do contrário". Ele é usado juntamente com o IF, de modo que, podemos nos aproveitar do true e do false. Sendo assim, vamos voltar ao exemplo dado acima:
Como já sabemos montar o escopo do IF, vamos prosseguir com o código.
local var = 3
if(var <= 4) then
print("Legal")
else
print("Chato")
end
Lembre-se! Que o ELSE não precisa do then, pois ele se aproveita da verificação do IF que ele é atribuído. Agora existe um último controlador que funciona como junção de ELSE e de IF e o nome não é nada criativo: ELSEIF.
Ele foi criado mais com o objetivo de evitar as construções de escopos abaixo:
if true then
--[[bloco 1]]
else
if true then
--[[bloco 2]]
else
if true then
--[[bloco 3]]
end
end
end
Ele tem a função de permitir outra verificação ou outra efeito para a condição, de modo que:
Se chover hoje não irei para a escola, mas se nevar irei fazer guerra de neve.
De modo que o escopo com o uso do ELSEIF fica assim:
if true then
--[[bloco 1]]
elseif true then
--[[bloco 2]]
elseif true then
--[[bloco 3]]
end
Um exemplo básico para fixar o conteúdo passado acima é esse abaixo:
local var = math.random(1, 3)
if var == 1 then
print("var tem valor 1")
elseif var == 2 then
print("var tem valor 2")
elseif var == 3 then
print("var tem valor 3")
end
Agora existem dois "operadores-controladores" que são usados para atribuir várias condições a um controlador lógico.
São eles o AND e o OR, eles como o nome remete, tem significado lógico de "E" e "OU", respectivamente. Sendo assim, imagine a seguinte frase:
Sim, creio que você entendeu. A estrutura montada fica mais ou menos assim:
if true and true or true then
--[[bloco]]
Esse dois operadores fazem um papel grandioso no campo do LUA. Eles, igual ao ELSEIF, evitam construções de escopos do tipo:
if true then
if true then
--[[bLOCO]]
end
elseif true then
--[[bLOCO]]
end
Veja, é um mesmo bloco (escopo) executado se todas essas condições retornarem verdadeiro. O AND faz o papel daqueles dois IF e o OR faz o papel do ELSEIF. Concorda comigo que esses operadores reduzem o código em muito?
O AND verifica todas as condições ligadas, se todas retornarem verdadeiro, ele executa o escopo. Se uma delas for falso, ele pula o escopo. Se houver presença do OR, ao invés do interpretador pular o escopo, ele verifica se a condição do OR é verdadeira.
E assim acabamos a matéria do nosso primeiro tutorial. Será que vocês conseguem fazer o exercício de fixação?
Com a variável passada acima, quero que vocês montem uma estrutura que faça tudo isso abaixo:
O exercício está bem simples, se você ler o conteúdo, você conseguirá fazer.
Abraços, galera!