sábado, 18 de outubro de 2008

[Unit-1 | Lição-9] Outros Tipos de Condições

Antes de mais nada, pesso desculpas pela demora para postar esta aula, eu estava com alguns problemas para postá-la porque o blogspot estava confundindo os códigos de ruby ques estão nos exemplos da aula com os códigos de HTML do post então tive que tirar os exemplos do post e colocar num arquivo de texto. Por isto em alguns exemplos desta aula estarão um link para o exemplo ao invéz do exemplo aqui mesmo.

Como já foi dito anteriormente, existem vários tipos de condicionais além da forma tradicional explicada na lição anterior. Estas formas alternativas são utilizadas com o mesmo conceito das expressões já explicadas(com os valores true e false), porém com algumas alterações.
Existem duas formas de resumir as condições 'if' e 'unless', uma delas é definindo a condição de trás para frente, esta, só pode ser usada quando o resultado da condição for somente um comando.
Exemplo de condição if resumida:
Clique aqui para visualisar este exemplo.

Neste caso, var será igual a 0 se var for menor que 0. Note que desta forma não é necessário o 'end' no final da expressão. Nesta mesma forma, também podem ser utilizados as palavras 'and' e 'or' para melhor definir a condição, assim como os parênteses.

Uma outra forma de se utilizar a condição 'if' é utilizar a palavra 'then' ao invés da "quebra de linha"(enter) para definir o final da condição, e logo depois de 'then' já colocar o comando a ser realizado.
Exemplo:
Clique aqui para visualisar este exemplo.

Esta é apenas uma outra forma de se escrever a condição if, portanto, também podem ser utilizados 'and', 'or' e 'else'.('else' é esplicado logo abaixo)
Exemplo:
Clique aqui para visualisar este exemplo.

Else
Else é uma palavra utilizada para definir o que acontecerá cado a condição especificada não seja concluída.(Tem exatamente a mesma função que a função "adicionar exceção" do comando "condição" dos eventos do RPGMaker.)
Exemplos:
Clique aqui para visualisar os exemplos.

No exemplo acima âmbas as condições tem a mesma função, que é de definir o valor de 'var' como 0(zero) se var for menor que 5 e definir var como 10 se var não for menor que 5.

Exceções Condicionais
Da mesma forma que se pode usar exceções('else') nas condições 'if', também se pode utilizar as exceções condicionais(representadas pela palavra 'elsif') para definir uma condição que será verificada somente se a condição principal não for cumprida. Para criar uma exceção condicional use 'elsif' no final da condição da mesma forma como utiliza 'else'. Logo após 'elsif' é necessário que se defina uma condição, da mesma forma que se coloca uma condição após 'if'.
Exemplo:
Clique aqui para visualisar este exemplo.

No exemplo acima, caso var seja menor que 0 var passará a ser 0, se var for maior que 10, var passará a ser 10.
Uma mesma condição pode conter quantas 'elsif' for necessário, ou seja, não há um limite de 'elsif's a serem colocados numa condição 'if'.
Exemplo:
if var == 2
var = 4
elsif var == 3
var = 9
elsif var == 4
var = 16
elsif var == 5
var = 25
end

Note que 'elsif' é utilizado da mesma forma que 'if', portante o exemplo acima poderia ser resumido ao código abaixo:
if var == 2 then var = 4
elsif var == 3 then var = 9
elsif var == 4 then var = 16
elsif var == 5 then var = 25
end

Uma mesma condição 'if' também pode conter 'elsif' e 'else' ao mesmo tempo.
Exemplo:
if var == 2 then var = 4
elsif var == 3 then var = 9
elsif var == 4 then var = 16
elsif var == 5 then var = 25
else var = 0 end

Condições Rápidas
Existe ainda mais uma forma de se criar condições, são as "condições rápidas". Com as condições rápidas nós podemos criar condições simples com uma condição, um comando caso a condição seja cumprida e um comando caso a condição não seja cumprida(uma exceção).
Para criar uma condição rápida basta definir uma condição, logo após ela se coloca uma interrogação, um comando caso a condição seja cumprida, dois pontos(:), e o comando caso a condição não seja cumprida, como mostra o esquema abaixo:
[condição] ? [comando] : [comando]

Exemplo de condição rápida:
var == true ? var = false : var = true

É bom lembrar que, como o ruby ignora os espaços em branco, sempre que há necessidade de um novo valor você pode usar uma quebra de linha(enter) para facilitar seu compreendimento:
variável == true ? # Se variável for true...
variável = false : # Ela passa a ser false,
variável = true # Se não, ela passa a ser true

OBS: Note que, diferente das outras condições, nas condições rápidas sempre será obrigatório o uso de exceções.

Case
Case é uma condição bem diferente das outras condições, vistas acima. Em case é verificado se um determinado valor é igual a um dos valores especificados. Case serve, basicamente para definir um comando para cada tipo de valor diferente que uma variável tomar, assim simplificando uma estrutura condicional que se utilizando 'if' daria muito mais trabalho de se faser.
Para usar case utilize a palavra 'case' e logo depois o valor a ser verificado, abaixo coloque a palavra 'when' seguida de um valor, se o valor após 'case' bater com o valor após o 'when', a condição é cumprida e o código é realizado. Você pode utilizar quantas vezes for necessário a palavra 'when'.
Exemplo de case:
case variavel
when 0
print "variavel é 0"
when 1
print "variavel é 1"
when 2
print "variavel é 2"
when 3
print "variavel é 3"
end

Note que se variável não for nenhum dos valores especificados nos 'when's nenhuma das condições será cumprida, porém, em case você também pode utilizar 'else'.
Exemplo de case com 'else':
case variavel
when 0
print "variavel é 0"
when 1
print "variavel é 1"
when 2
print "variavel é 2"
when 3
print "variavel é 3"
else
print "variavel não é 0 nem 1 nem 2 nem 3"
end

Você pode definir mais de um valor quando coloca os valores em 'when', para isso utilize uma vírgula para separar cada valor.
Exemplo:
case variavel
when 0, 1, 2, 3
print "variavel é 0, 1, 2 ou 3"
when 4, 5, 6, 7, 8, 9, 10
print "variavel é 4, 5, 6, 7, 8, 9 ou 10"
else
print "variavel não é nenhum número entre 0 e 10"
end

Lembre-se também que, como case é um tipo de condição, você também pode utilizar outros valores além de números.
Exemplo:
case suco
when "azedo"
print "O suco está estragado >.<"
when "aguádo"
print "O suco está sem açucar >.<"
else
print "O suco está uma delícia ^.^"
end

Você também pode utilizar uam range para varificar um valor numérico entre os valores da range.
Exemplo:
case preço_do_biscoito
when 0 ... 2
print "Que biscoito barato =)"
when 3 ... 6
print "O biscoito está num preço normal =|"
when 7 ... 10
print "O biscoito está caro demais =("
when 11 ... 1_000_000
print "Biscoito de ouro! lol"
end
Bem, já chega de falar sobre case né?! xP
Isso é tudo por hoje, preparei um Quiz bem legal sobre esse assunto para postar amanhã, e depois começarei a falar sobre classes. ^^