Ir para conteúdo
  • Cadastre-se

[Aula 7] Estrutura de Controles


Posts Recomendados

Estruturas de controle

Aula 7

Bem-vindos à Aula 7 (Da sorte). Hoje iremos aprender mais uma coisa importantíssima na área de scripting e programação em geral: as Estruturas de Controle. Bem, Estruturas de Controle definem o andamento do script. Para entendermos melhor, vamos ver o algoritmo de uma Estrutura de Controle simples:

Se o nome for igual a Vittu então

Mostrar oi Vittu

Fim da verificação de se o nome é igual a Vittu.

Veja, agora um em lua:


if name == 'Vittu' then

   print('Oi Vittu')

end

Compare as cores do script em Lua com o escrito em português. Nossa Estrutura de Controle se chama condição, iniciada por if (se). Para entendermos basta traduzir. Veja como se usa o if:

if true then

-- código

end

Citado acima, true seria o que vai ser verificado, exemplo:

1 == 1

name == 'Vittu'

type({}) == 'table'

lag ~= false

name == nil

3 >= 6

Antes de prosseguir, vamos ver o que são essas "coisas" em roxo. Essas "coisas" se chamam Operadores Relacionais, e vão verificar se a condição é verdadeira. Se for, então vai ser executado o código. Se não, então o código será pulado e o script continuará rodando a partir do fim do escopo da condição (end). Os operadores relacionais são: Igualdade (==), Diferença (~=), Superioridade Absoluta (>), Inferioridade Absoluta (<), Superioridade (>=) e Inferioridade (<=). Os operadores relacionais sempre retornarão um booleano, ou seja, true ou false. Se a condição for verdadeira então retornará true. Se for falsa retornará false. Você pode comprovar isto tentando:

print(1 == 1)

print(1 == 2)

veja como usar os operadores relacionais:
v1 == v2 - Igualdade, verifica se v1 é igual a v2 v1 ~= v2 - Diferença, verifica de v1 é diferente de v2 v1 > v2 - Maior, Verifica se v1 é maior que v2 (apenas números) v1 < v2 - Menor, verifica se v1 é menor que v2 (apenas números) v1 >= v2 - Maior ou igual, verifica se v1 é maior ou igual a v2 (apenas números) v1 <= v2 - Menor ou igual, verifica se v1 é Menor ou igual a v2 (apenas números)
Bom veja aqui alguns exemplos e em seguida a explicação de o que vai acontecer.

local nome = 'vittu'

if nome == 'vittu' then

   numero = 7

   if numero == 8 then

	 print('Nosssa!')

   end

end

Explicação:

Declaramos a variável nome como = a 'Vittu'

Se o nome é igual a 'Vittu' entao...

	Declaramos a variável numero igual a 7

	Se numero for = a 8  entao

		Mostrar o texto: 'Nosssa!'

	Fim da verificação do numero

Fim da verificação do nome.

O que iria acontecer? a variável nome seria declarada, passaria pela verificação pois nome é igual a Vittu o número 7 seria declarado mas não iria mostrar o texto pois numero vale 7 e não 8
thumbup.gifElse Agora que ja sabemos abrir um if vamos ver a else (se nao.) Como vocês já sabem como abrir um if a explicação aqui não vai ser longa. Para evitarmos isso:

if numero == 8 then

   print('foi')

end

if numero ~= 8 then

  print('nem foi')

end

Usamos a expressao else, Veja a syntax.

if (bloco) then

--- code

else

--- code

end

Um exemplo no uso acima.

if numero == 8 then

   print('foi')

else

  print('nem foi')

end

No caso, caso a verificação seja falsa (quando numero não é 8) ele pulará o escopo 1 mais parará no else e executara o escopo 1 de baixo. Elseif Essa é uma junção de um else com um if, muito usado em NPCs antigos, seria a mesma coisa acima acontece que quando encontra o elseif ao contrario do else ele não executa o escopo direto ele permite outra verificação. Veja a sintaxe.

if (bloco) then

--- code

elseif(bloco)then

--- code

end

Podendo conter apenas UM else no final também. Veja o exemplo:
:(') end

if numero == 8 then

   print('oia meu numero e um oito!')

elseif numero == 5 then

  print('omg meu numero é um 5')

elseif numero == 3 then

  print('mintira é um 3')

else

  print('affff meu numero nem é 8 5 ou 3 
Você pode usar quantos elseif's quiser. and/or São parte do (bloco), elas definem as palavras e, ou, veja um exemplo:

if sex == 5 and nome == 'vittu' then

  print('tenso')

end

Ele so executará o escopo 1 se sex for 5 e o nome for vittu.

if sex == 5 or nome == 'vittu' then

  print('tenso')

end

Nesse caso ele executará o escopo 1 se sex for 5 OU o nome for vittu. Podemos unir os 2 e separar por parênteses

if (sex == 5 and nome == 'vittu') or (animal == 'urso') then

  print('tenso³²²³¹³²¹³²¹')

end

primeiro o script vai verificar o 1º bloco. (sex == 5 and nome == 'vittu') Ele vai ver se sexo é 5 e nome for Vittu. Caso seja verdadeiro ele vai passar para o próximo, caso tenha um or ele simplesmente vai parar a verificação e ir direto para o escopo abaixo. Agora supondo que sex era 4, ele vai retornar negativo e então ao invés de parar tudo e ir para o else ou o elseif ele vai ver que tem um or e então verificar o bloco 2 (animal == 'urso') uma verificação simples, se animal for urso ele vai pro escopo, se não for ele pula o escopo. Extra! Um conteúdo extra dessa aula. Sabia que or não é apenas usado em if's? Vamos simular um caso de um script com 2 variáveis, nome e player, a variável nome vale um string: 'Ixe nem deu.' e a variável player não vale nada ela é nil, (pense que não existe). Agora o que aconteceria se colocássemos para mostrar a variável player com o print? Daria um erro! mais existe uma maneira rápida e fácil de se evitar isso. Assim:

print(player or nome)

Omg vittu que que tu fez? Eu mandei printar a variável player, porem antes o script verifica, já que tem o or ele vê qual é o valor da variável player, se for nil ele vai printar a variável nome!
Segue o code:

nome = 'vitor'

var = nil

numero = 774

pk = false

numero2 = 89

você tem essas variaveis. Fassa o seguinte:

Verifique se nome é diferente de vittu

Verifique se omg existe.

verifique se numero é menor do que numero 2

verifique se pk é true

use pelomenos 1 elseif

use pelomenos 1 and ou um or

Desafio: verifique se var é um numero!!!!

E por fim, mande printar var usando or, aquele var or algo

Resposta:

nome = 'vittu'

var = nil

numero = 774

pk = false

numero2 = 89

if nome == 'vittu' then

if numero < numero2 then

print('q')

elseif pk == true and omg ~= nil then

if type(var) == 'number' then

print(var or 'ixe')

end

end

end

Creditos:

99% Mock

1% Vittu

Editado por Vittu (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo