Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

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.

Programação lógica é um paradigma de programação que faz uso da lógica matemática. John McCarthy, em 1958. foi o primeiro a publicar uma proposta de uso da lógica matemática para programação.

Wikipédia - 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.

Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.

O conceito de algoritmo é frequentemente ilustrado pelo exemplo de uma receita culinária, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iterações) ou necessitar de decisões (tais como comparações ou lógica) até que a tarefa seja completada. Um algoritmo corretamente executado não irá resolver um problema se estiver implementado incorretamente ou se não for apropriado ao problema.

Wikipédia - Algoritmo

Vamos então pegar um exemplo de algoritmo aplicado a Open Tibia, um exemplo simples, algo como a Pedra do Sexo.

Quando o item for usado, então:

Verifique se o(a) jogador(a) é do sexo feminino

Se sim, então:

Troque o sexo para masculino

Remova o item

Se não, então:

Troque o sexo para feminino

Remova o item

Terminada a verificação do sexo do(a) jogador(a)

Terminada a execução do item

Algoritmos podem ser escritos em forma gráfica, o que podemos chamar de fluxograma, segue a sequência de instruções em fluxograma abaixo:

M5hco.png

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.

Adição -> +

Subtração -> -

Multiplicação -> *

Divisão -> /

Temos outros operadores aritméticos de utilização um pouco mais "rara", assim dizendo:

Módulo % -- Retorna o resto de uma divisão entre dois números.

Exponenciação ^ -- Retorna a cadeia de multiplicação de um número, por exemplo, 2³

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.
> "maior" < "menor" >= "maior ou igual" <= "menor ou igual"
Eles só irão retornar true, caso a comparação seja realmente verdadeira e false caso não seja. Veja abaixo alguns exemplos:
5 > 4 -- Retorna true pois realmente 5 maior que 4. 2 < 3 -- Retorna true pois realmente 2 menor que 3. 40 <= 10 -- Retorna false, 40 não é menor ou igual a 10. 200 >= 300 -- Retorna false, uma vez que 200 não é maior ou igual a 300.
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:
Se você estudar muito então será recompensado amanhã.
Vou grifar em vermelho uma parte muito importante dessa frase e em azul seu bloco:
Se você estudar muito então será recompensado amanhã.
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:
Se você estudar muito então será recompensado amanhã. Caso você não estude, coisas ruins podem acontecer.
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 :)

Editado por Lpz (veja o histórico de edições)

  • Respostas 7
  • Visualizações 2.2k
  • Created
  • Última resposta

Top Posters In This Topic

Postado

Belo tutorial, script bem explicado e complexo.

REP+

Abraços,

Mophus

Atenciosamente,

Mophus - [m's]

since 2010 - tibiabots.net / tibiaking.com - ever

ihdVt8QPFgIqG.png

#giftjowleite

zs38k.png

Postado

Ótima aula Lpz, sobre quem esta criando novos scripts tambem auxilio o uso do gráfico ou apenas com as perguntas e respostas (e a que eu utilizo) pois tudo fica mais fácil para elaborar o script!

Reputado!

E-mail para contato: [email protected]

Quer ter um fórum mais organizado? Cumpra as regras!

EU VOLTEI GAROTAS!

31/12/2011

Atenciosamente,

Guilherme Salviati.

  • 4 months later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 520.2k

Informação Importante

Confirmação de Termo