LÓGICA, ALGORITMO E OPERADORES
Na aula passada, você aprendeu qual a linguagem usada nos servidores, onde surgiu a programação Lua, o que é scripting e como se tornar um scripter.
Nessa segunda aula, você irá aprenderá a pensar como um programador, irá aprender a transformar seu raciocínio lógico em uma sequência de instruções e finalmente, com a apresentação do que são operadores, você irá montar um script básico, mas eficaz.
Lógica e Algoritmo
Toda linguagem de programação, inclusive a Lua, segue uma certa lógica para funcionar corretamente. A isso, damos o nome de lógica de programação.
Para fazer um script em Lua não é diferente, você precisa criar uma lógica que relacione sua ideia e o script, uma sequência de instruções que, depois, se torne o script em si. Isso é um algoritmo.
Vamos então pegar um exemplo de algoritmo aplicado a Open Tibia, um exemplo simples, algo como a Pedra do Sexo.
Algoritmos podem ser escritos em forma gráfica, o que podemos chamar de fluxograma, segue a sequência de instruções em fluxograma abaixo:
Algoritmos são uma grande ajuda para os scripters. Pessoalmente, sempre rabisco um fluxograma parecido com esse acima quando o script que vou fazer é um tanto mais elaborado.
Agora, com a apresentação dos conceitos abaixo, você irá transformar esse algoritmo em um script funcional.
Operadores aritméticos e operadores relacionais.
Nessa parte da aula, você irá aprender um pouco mais sobre os operadores aritméticos, aqueles bem conhecidos das suas aulas de Matemática. Os operadores relacionais que comparam coisas hmm
Os operadores aritméticos, como você deve bem conhecer, fazem operações de cálculo simples. Creio que você os conhece com certeza.
Temos outros operadores aritméticos de utilização um pouco mais "rara", assim dizendo:
Você pode testar o funcionamento dos operadores, utilizando-se da função print(), veja abaixo:
print(4+7) -- Retorna 11
print(7-4) -- Retorna 3
print(5*4) -- Retorna 20
print(4/4) -- Retorna 1
Os operadores relacionais são muito usados também no âmbito da matemática. Na programação, eles comparam dois tipos de objetos e retornam apenas valores true e false. Os operadores relacionais são listados abaixo:
O operador de igualdade (==) compara o tipo dos argumentos envolvidos, caso o tipo seja diferente, será retornado false. Caso o tipo seja igual, ele compara o valor dos argumentos e novamente, se o valor é diferente, é retornado false, caso os dois valores sejam iguais, será retornado true.
O operador de diferença (~=) é simplesmente a negação do operador de igualdade (==). Ou seja, ele retornará true para tipos ou valores diferentes e false para tipos/valores iguais.
Os operadores de ordem (>, <, >=, <=) funcionam simples como na matemática. Se os dois operadores são números, então eles são comparados como tais.
Eles só irão retornar true, caso a comparação seja realmente verdadeira e false caso não seja. Veja abaixo alguns exemplos:
Agora vamos combinar esses operadores aritméticos e relacionais com os chamados operadores de controle que expressam a idéia de condição.
Operadores de controle
A estrutura de um operador de controle pode retornar qualquer valor. Tanto os valores false e nil são considerados como falsos e todos os outros valores diferentes são considerados como verdadeiros.
A estrutura de controle criada a partir de um operador, só executa o bloco de código associado se o valor retornado pela condição seja verdadeiro.
Existem cinco operadores de controle: if, elseif, else, repeat e until. Os dois últimos não serão explicados nessa aula.
O operador if significa 'se', remete a uma estrutura sintática e condicional, você já deve ter visto uma sintaxe do tipo:
Vou grifar em vermelho uma parte muito importante dessa frase e em azul seu bloco:
Veja que para a parte em azul ocorrer, então a condição tem que "retornar" verdadeiro, ou seja você tem que estudar muito.
Na programação Lua não é diferente, não. O bloco azul é simplesmente todo o código que será executado se a condição relacionada ao if retornar verdadeiro:
if true then
(...)
end
Pois é, para algo retornar verdadeiro, você deve fazer uma comparação entre dois argumentos, usando nada mais que os operadores relacionais.
Note que: O if precisa de um then, este significa 'então'. Ele fecha a estrutura sintática do if, nunca esqueça dele. E também o end que fecha a verificação do if.
Mas para toda condição, existe uma chance de ocorrer algo contrário, certo? Por exemplo, se o camarada não tivesse estudado, nada ocorreria? Na programação, nós tratamos dessa sintaxe com o else.
O else é simplesmente a negação do if, se a construção do operador if retorna falso, então o que estiver atribuído ao else será executado. Vamos completar a frase:
E nosso código fica assim:
if false then
(...) -- não será executado
else
(...) -- será executado
end
Note que: O else não precisa de then. Como ele é a negação do if, ele "meio que" se aproveita do then e end do if.
E por último, temos o controlador elseif, ele é bem simples, é usado quando você tem muitos outros blocos para outras várias condições. Mas os blocos ligados ao elseif só irão ser executados quando o bloco do if retornar falso, parecido com o funcionamento do else.
if false then
(...) -- não será executado, temos false no if
elseif true then -- será executado temos true aqui
(...)
end
Note que: O elseif precisa de then igual ao if, mesmo que seja auxiliar ao if, ele é uma condição totalmente diferente. Ele só não precisa do end.
Finalizamos por aqui