[Aula 7, Parte I] Estruturas de Controle

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[Aula 7, Parte I] Estruturas de Controle

Mensagem  caiohu123 em Sex Nov 26, 2010 6:02 pm

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:
Código:
Se o nome for igual a Mock então
Mostrar oi Mock
Fim da verificação de se o nome é igual a Mock.
Veja, agora um em lua:
Código:
if name == 'Mock' then
print('Oi Mock')
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:
Código:
if true then
-- código
end
Citado acima, true seria o que vai ser verificado, exemplo:
Código:
1 == 1
name == 'Mock'
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:
Lua:
print(1 == 1)
print(1 == 2)

Veja como usar os operadores relacionais:
Citação:
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.
Lua:
local nome = 'Mock'
if nome == 'Mock' then
numero = 7
if numero == 8 then
print('Nosssa!')
end
end


Explicação:
Código:
Declaramos a variável nome como = a 'Mock'
Se o nome é igual a 'Mock' 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 Mock o número 7 seria declarado mas não iria mostrar o texto pois numero vale 7 e não 8

Else

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:
Lua:
if numero == 8 then
print('foi')
end
if numero ~= 8 then
print('nem foi')
end


Usamos a expressao else, Veja a syntax.
Código:
if (bloco) then
--- code
else
--- code
end
Um exemplo no uso acima.
Lua:
if numero == 8 then
print('foi')
else
print('nem foi')
end


No caso, caso a verificação seja falsa (quando numero não é Cool 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.
Código:
if (bloco) then
--- code
elseif(bloco)then
--- code
end
Podendo conter apenas UM else no final também.
Veja o exemplo:
Lua:
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 "images/smilies/sad.gif" border="0" alt="" title="Triste" class="inlineimg" />')
end


Você pode usar quantos elseif's quiser.
and/or
São parte do (bloco), elas definem as palavras e, ou, veja um exemplo:
Lua:
if sex == 5 and nome == 'pedro' then
print('tenso')
end


Ele so executará o escopo 1 se sex for 5 e o nome for pedro.
Lua:
if sex == 5 or nome == 'pedro' then
print('tenso')
end


Nesse caso ele executará o escopo 1 se sex for 5 OU o nome for pedro.
Podemos unir os 2 e separar por parênteses
Lua:
if (sex == 5 and nome == 'pedro') or (animal == 'urso') then
print('tenso³²²³¹³²¹³²¹')
end


primeiro o script vai verificar o 1º bloco.
(sex == 5 and nome == 'pedro')
Ele vai ver se sexo é 5 e nome for Pedro.
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:
Lua:
print(player or nome)


Omg mock 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:
Lua:
nome = 'pedro'
var = nil
numero = 774
pk = false
numero2 = 89


você tem essas variaveis. Fassa o seguinte:
Citação:
Verifique se nome é diferente de pedro
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:

Lua:
nome = 'pedro'
var = nil
numero = 774
pk = false
numero2 = 89
if nome == 'pedro' 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: caiohu123

caiohu123
Membro
Membro

Mensagens : 32
Data de inscrição : 25/11/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum