sexta-feira, 24 de outubro de 2008

[Unit-1 | Lição-10] Estruturas de Repetição

Apesar de na aula passada eu ter citado que iria começar sobre Classes nesta lição, falarei sobre estruturas de repetição, que é um assunto que ainda não foi visto, e na próxima lição falarei sobre as Classes.

As estruturas de repetição são estruturas que irão executar os comandos determinados repetidamente um determinado número de vezes, ou até você determinar o seu término. Existem vários tipos de estruturas de repetição, cada uma é trabalhada de uma forma diferente, existindo assim uma estrutura diferente para ser usada em cada tipo de situação.

Loop
O comando Loop serve para repetir determinados comandos infinitas veses até que seja executado o comando o comando de quebra de loop. Basicamente, funciona igual ao comando Loop dos eventos do RPGMaker. Para iniciar um loop utilize a palavra 'loop' seguido de 'do' e logo depois os comandos do loop e para feichar o loop utilize um 'end', exatamente como no exemplo a seguir:
Exemplo:
loop do
Graphics.update
Input.update
update
break if $scene != self
end

OBS: O exemplo citado acima é um exemplo de loop bem comum encontrado em todas as classes Scene da programação padrão do RMXP e na Scene_Base do RMVX.
Note que o comando 'break' serve para quebrar o loop, caso não exista um 'break', o loop será executado infinitamente e nunca haverá um fim, logo, pode ocasionar um erro ao jogo.

While
A estrutura de repetição While é muito parecida com Loop, basicamente a única diferença é a forma de trabalhar. No caso de Loop você deve utilizar o comando 'break' para quebrar o loop, no caso de while você deve colcoar uma condição logo após a palavra 'while', utilizada para criar a estrutura, caso esta condição retorne true, o loop será executado, caso seja false, a estrutura será quebrada.
Exemplo de While:
while variavel > 0
variavel -= 1
end

No exemplo acima, o comando 'variavel -= 1' será executado repetidamente até que 'variavel' deiche de ter o valor maior que 0. Note que, se variável já for menor ou igual à 0, o comando não será executado nenhuma vez. Note também que o exemplo acima também poderia ser espressado da seguinte forma:
loop do
break if variavel <= 0
variavel -= 1
end

Apesar das duas formas apresentarem um mesmo resultado, a primeira forma(usando while) é bem mais simples de se usar.

Until
Until é utilizada da mesma forma que while, a única diferença é que enquanto while executa o comando quando a condição retorna true, Until só irá executar o comando enquanto a condição retornar false.
Exemplo:
until variavel <=0
variavel -= 1
end

O exemplo acima tem a mesma função que a dos últimos dois exemplos citados.

For
Como você pôde observar, todas as estruturas esplicadas acima têm, basicamente, uma mesma mesma função em comum; isto não ocorre com For. For irá repetir os comandos de sua estrutura para cada valor em uma determinada range ou array.
Exemplo:
for i in [0, 1, 2, 3]
print i
end

O código acima fará com que apareca quatro janelinhas do windows abram uma após a outra mostrando os valores 0, 1, 2 e 3; já que o comando 'print i' será executado quatro veses, para cada uma destas veses o valor da variável 'i' irá mudar de acordo com os valores da array. É obrigatório declarar uma variável logo após o 'for' e antes do 'in', para que esta variável possa ter seu valor alterado a cada repetição da estrutura de acordo com a Array ou Range depois do 'in'.
Exemplo de For com Range:
for variavel in 0...5
print variavel
end

Neste caso os valores exibidos serão: 0, 1, 2, 3 e 4 já que ranges com tres pontos(...) não cosideram o último(veja a lição 5, "Os possíveis valores das variáveis", para mais detalhes sobre Range)

Break
Eu falei brevemente sobre Break quando espliquei sobre Loop nesta aula, não há muito o que diser sobre este comando. Basicamente, 'break' serve para quebrar as estruturas de repetição, após este comando, o programa pula direto para a linha onde está o fim da estrutura(onde está o 'end') e continua a executar os comandos das próximas linhas normalmente. Break pode ser utilizado normalmente em qualquer uma das quatro tipos de estruturas condicionais esplicadas acima.
Exemplo:
for i in 0...5
break if i == 3
print i
end

No exemplo acima, serão mostrados somente os valores 0, 1 e 2; pois quando i for 3, a estrutura será quebrada e o comando 'print i' não será executado.


Next
Ao contrário do comando 'break', Next irá parar com a execução dos comandos da estrutura e irá recomeçar a executar os comandos a partir do começo da estrutura. Next também pode ser utilizado normalmente em qualquer tipo de estrutura de repetição.
Exemplo:
for i in 0...5
next if i == 3
print i
end

No exemplo acima serão mostrados os valores 0, 1, 2, 4 e 5; porque quando i for 3, next será executado e assim o comando 'print i' não será executado quando i for 3.

segunda-feira, 20 de outubro de 2008

[Quiz] Valores True e False

1) Levando em consideração os dados abaixo, ascinale a alternativa em que a expressão
retorna true.
Dados:
arg1 = 2
arg2 = 10
arg3 = 25
arg4 = -5

a) arg2 / arg1 * arg4 == arg3
b) arg3 * -1 / arg4 * arg1 <= arg2
c) arg4 * arg1 == arg2
d) arg1 * arg3 == arg2 * arg5


2) Tento em mente que a expressão '1 == 1' representra um true, é possível afirmar que
'1 == 1 and 2 == 2' seja o mesmo que 'true and true', logo, o retorno será um 'true'. Tendo
em mente o funcionamento deste esquema, determine a alternativa em que o retorno será
'true'.

a) false and true or false
b) true and false and true
c) (true or false) and false
d) (not false) or (false or true)


3) Determine o retorno final de cada uma das expressões abaixo.(Determinar se o retorno
será 'true' ou 'false')

( ) 5 > 1 or 1 < 5
( ) not true and false
( ) 2 + 2 * 2 * 2 != 3 * 3 + 7
( ) (true or false) and (not false)



O gabarito para este questionário pode ser encontrado aqui.

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. ^^

quarta-feira, 15 de outubro de 2008

[Unit-1 | Lição-8.1] Estruturas Condicionais: Parte 2

Relendo a Lição 8 para escrever a lição 9 persebi que esqueci de falar sobre um assunto: not.

Not
Assim como 'and' e 'or', também existe a palavra 'not', que irá alterar o valor true ou false que estiver logo após ele.
Alguns exemplos com 'not':
variavel1 = not true # => variavel1 é false
variavel2 = not false # => variavel2 é true
variavel3 = not 2 > 1 # => variavel3 é false
variavel4 = not (true or false) # => variavel4 é false
variavel5 = not (true and false) # => variavel5 é true

segunda-feira, 13 de outubro de 2008

[OFF] Parceiros

Olá amigos, velho aqui hoje para falar dos sites parceiros deste blog. =)


Blog do Jão
Jão é um grande amigo meu que começou a mecher com Ruby mais ou menos na mesma época que eu e des de lá viemos aprendendo juntos, ele tabém tem um blog para ensinar RGSS, porém, ele pretende abordar mais assuntos específicos, ensinando a cada tópico expecíficamente um assunto, isso é excelente para aqueles que têm dúvidas expecíficamente em um determinado assunto.
Link: http://JaoMaker.blogspot.com

Comunidade RPGMaker XP
Esta é simplesmente a maior comunidade de RPGMaker do Orkut!! Comunidade dedicada aos fãs do RPG Maker XP. Têm uma imênsa comunidade, uma turma muito gente fina que já me ajudaram muito na epoca que eu estava começando com RPGMaker. Lá, você também pode encontrar um conteúdo muito grande em relação a tutoriais diversos. Em fim, recomento ela a todos os usuários do RPGMaker ^^ (inclusive foi atravéz dela que conheci meu grande amigo Jão^^)
Link: http://www.orkut.com.br/Main#Community.aspx?cmm=1227187

ReinoRPG
O ReinoRPG é uma das maiores comunidades de RPGMaker do Brasil, têm um grande acervo de resources e muitos utilitários para downloads, tudo para que você possa customizar seu jogo ao máximo, e deixá-lo da maneira que deseja, seja ele de RPGMaker XP,RPGMaker VX, RPGMaker 2k3 ou 2k. Existe também um gigantesco fórum onde os membros podem expor seus projetos,discutir sobre outras ferramentas de criação, compartilhar conhecimentos,fazer novas amizades entre tantas outras opções que existem nos outros boards do fórum.
Link: http://ReinoRPG.com

RMZine
A RMZine pretende ser sua revista em forma de portal e para isto se concretizar trabalharemos duro melhorando tanto seu conteúdo como o portal de forma a agradar a seus leitores.
"Nosso objetivo é mostrar um conteúdo completo sobre RPG Maker, não apenas se limitando a ele, mas sim a você maker, trazendo uma grande gama de informações e cultura, que possibilite trabalhar com mais criatividade e inovação em seus projetos." - Night Walker
Link: http://RMZine.reinorpg.com


É isso galera, são todos excelentes sites, espero que gostem assim como gostam deste :D

terça-feira, 7 de outubro de 2008

[Unit-1 | Lição-8] Estruturas Condicionais

Como foi dito na lição anterior existem 4 formas de se criar condições, qualquer uma delas poderá ser usada para qualquer situação, porém em alguns casos será muito mais simples optar por um dos tipos de condições a um outro tipo.

Vamos começar pela forma mais simples:
If
If é a estrutura condicional mais utilizada no RGSS por ser simples e, ao mesmo tempo, satisfaser a necessidade de criar condições mais elaboradas. Para utilizá-la, basta escrever a palavra 'if', seguida de uma expressão condicional(explicado na lição anterior); e depois utilizar a palavra 'end' para definir o fim da condição.
Exemplo:
if variável == 5
print "sim"
end

Neste caso, será exibisdo um "sim" na tela se o valor de 'variável' for 5,
caso contrário 'print "sim"' será ignorado.
É claro que qualquer um dos
outros operadores poderiams er utilizados no lugar de '=='.

Existem algums métodos utilizados para tornar a condição mais específica.
Para isto são utilizados as palavras 'and
' e 'or'.

As palavras 'and' e 'or' significam "e" e "ou", ela são utilizadas separando
duas expressões condicionais para definir se alguma delas está verdadeira
ou se as duas estão.

Exemplo:
if var1 == 5 and var2 == 10
print "sim"
end

No exemplo acima, só aparecerá a mensagem "sim" caso a variável 'car1'
seja igual à 5 e a variável 'var2' seja igual à 10. Note que nada lhe
impede de utilizar uma mesma variável numa mesma condição.

if var > 0 and var < 6
print "sim"
end

Já no exemplo acima, a mensagem só aparecerá caso a variável 'var'
seja maior que 0 e menor que 6, ou seja, um dos valores: 1, 2, 3, 4 ou 5.
A palavra 'or'(ou) é utilizada da mesma forma que 'and', porém expressa
a condição de uma das duas condições ser verdadeira, ao contrário de
'and' que expressa a condição de as duas expressões serem verdadeiras.

Exemplo:
if var1 == 5 or var2 == 10
print "sim"
end

Neste caso, para que a mensagem seja exibida, não é necessário que
'var2' seja 10 se 'var1' for 5, e vice-versa. Voçê também pode utilizar
'or' e 'and' numa mesma condição quantas veses quiser.
Alguns exemplos simples:

if var1 == 0 and var2 == 5 and var3 == 10 and var4 == 20

if var1 == 0 or var2 == 5 or var3 == 10 or var4 == 20

if var1 == 0 and var2 == 5 or var3 == 10 and var4 == 20

No último dos três exemplos acima foi utilizado tanto 'or' quanto 'and',
neste caso, 'and' terá prioridade, logo, será verificado primeiro as
expressões:
"
var1 == 0 and var2 == 5" e "var3 == 10 and var4 == 20",
e somente depois será verificado se uma destas duas expressões for
verdadeira ocorrerá a condição.
É um tanto complicado quando se está usando tantas expressões
condicionais numa só condição, mas casos como este não são tão
comums de ocorrer. Você também pode utilizar parênteses para melhor
definir a condição da forma que quiser.
Exemplo:
if var1 == 0 and (var2 == 5 or var3 == 10)
Neste caso, a expressão será verdadeira caso 'var1' seja 0 e 'var2' for 5
ou 'var3' for 10. Cuidado para não confundir as expressões em casos
como este.
Note que se os parênteses não existicem no exemplo acima, a condição
passaria a ser de ('var1' ser 0 e 'var2' ser 5) ou 'var3' ser 10.
OBS1: Nos exemplos acima eu só utilizei números nas condições,
mas também podem ser utilizados outros tipos de valores, exemplo:

if var1 == [0, 1, 2, 3] and var1 == "=)"
end

OBS2: Vale a pena lembrar que o operador '==' verifica se um valor é
exatamente igual à outro, logo, pequenos detlahes fasem toda a diferença.

OBS3: Os operadores '>', '<', '>=' e '<=' verificam se um número é maior/menor(ou igual) a um outro valor, logo não podem ser utilizados com valores que não sejam números, exemplo:
if [0, 1, 2, 3] > "=)"
end


No exemplo acima ocorrerá um erro, pois nem Arrays nem Strings podem
ser usadas com operadores númericos.


Unless
Não há muito o que falar de unless, já que a condição unless é utilizada
exatamente igual à condição 'if', porém, a condição só será cumprida se
o retorno for falso.
Exemplo:
unless 2 == 2
print "sim"
end

No caso acima será verificado se 2 é igual a 2, logo haverá o retorno
verdadeio, porém, não será exibida a mensagem "sim", pois em unless
é verificado se o retorno é 'false', ao contrário de 'if' que verifica se o
retorno é 'true'.
OBS: Já que unless é o contrário de if, os dois exemplos de condições
abaixo seriam cumpridos:
# se variável for igual a outra veriável

if variável == outra_variável

# se a variável não for diferente da outra variável

unless variável != outra_variável

quarta-feira, 1 de outubro de 2008

[Unit-1 | Lição-7] Criando condições

Antes de mais nada quero pedir desculpas pelo tempo que tomei para escrever a próxima lição, eu passei este fim de semana fora e não pude escrever as aulas.

Introdução ao assunto:

As condições servem para criar caminhos diferentes para a programação, de acordo com determiados valores, assim o programa poderá tomar vários caminhos diferentes. As condições do Ruby são utilizadas da mesma forma e com mesmo propósito que as condições dos eventos do RGPMaker, porém com mais especificações e possibilidades. Em Ruby, existem 4 formas diferentes de criar condições.

Os pseudo-valores true e false:
As condições, para serem utilizadas dependerão sempre dos valores true e false, eles são os valores que determinarão se a condição será cumprida ou não. Existem algumas situações em Ruby em que ocorre uma substituição de valores, como por exemplo uma situação da lição passada:
teste = variável + 2

No exemplo acima, 'variável' será substituída pelo seu valor, para que a equação possa ter um sentido e assim o programa irá resolver a conta matemática corretamente. O mesmo ocorrerá com os valores true e false para que ocorram as condições, os valores true e false substituição qualquer expressões que representem condições. Esta substituição é o que chamamos de "Retorno".
Exemplo:
var1 == var2

No exemplo acima é questionado se a variável 'var1' é igual a outra variável 'var2' atravéz do operador "=="(será esplicado logo mais); se var1 for igual à var2, a expressão será substituída por um true, ou seja, retornará true, caso contrário, retornará false.
Vamos à um exemplo prático desta substituição, crie um novo projeto e em seu editor de scripts crie um novo script acima de todos os outros, então coloque o código:
var1 = 1
var2 = 1
print var1 == var2

No código acima é declarado as variáveis 'var1' e 'var2' âmbas como 1, e logo depois é questionado se elas são iguais, como elas são, retornou true. Teste outros valores no lugar do 1 e veja os resultados.
OBS1: Não confunda "=" com "==", "=" define um valor para a variável, e "==" questionará se os valores antes e depois dele são iguais.
OBS2: Note que "==" compara os valores antes e depois dele, logo, ocorrerá um erro se você nao definir um destes dois valores, o mesmo ocorrerá se você não definir um dos valores mesmo utilizando operadores diferentes.

Operadores
Acima eu utilizei apenas o operador "==" para dar exemplos de retorno de true e false, mas existem vários outros tipos de operadores para serem utilizados como condições. Abaixo segue a lista dos principais operadores e suas funções:
== # Igual à
!= # Diferente de
> # Maior que
< # Menor que
>= # Maior ou igual que
<= # Menor ou igual que

terça-feira, 30 de setembro de 2008

[Unit-1 | Lição-6] Utilizando as Variáveis

Bem, eu ja espliquei sobre todos os tipos de variáveis e sobre os principais valores que as variáveis podem ter, agora, esplicarei como criar as variáveis e alterar seus valores. As variáveis representam os próprios valores que elas guardam, logo, podem ser consideradas os próprios valores e serem calculadas por operações matemáticas simples de equações. Antes de mais nada devemos declarar uma variável. Declarar, em Ruby, é uma expreção dada quando se é criada a Variável. Para criar uma Variável, basta equivaler ela a um valor desejado, você pode dar qualquer nome e qualquer valor a Variável que estiver criando.
Exemplo de declaração de variável:
variável = 5

Com isso, eu acabo de criar uma variável local com nome de ‘variável’, e seu valor é 5.
Que tal começar a colocar as aulas em prática? Crie um novo script em seu jogo acima de todos os outros scripts, e cole o código já dito acima (variável = 5). Clique Enter e na linha abaixo use o comando "print variável" para usar o método 'print' na variável. Quando inciar o jogo aparecerá a janelinha do Windows com o número 5 aparecendo, isto porque você mandou exibir a 'variável' com o método print, e antes disto você disse ao programa que variável é 5. Agora vamos à um outro exemplo, apague o "print variável", vamos criar uma nova variável; coloque o seguinte código:
teste = variável + 2
p teste

Agora dê um teste no jogo. Aparecerá o número 7, pois se 'variável' tem o valor de 5, então a linha 'teste = variável + 2' dirá ao programa que teste é 5 + 2, ou seja, 7. É simplesmente uma equação matemática de primeiro grau.
Agora, apague o último código citado, vamos alterar o valor de 'variável' sem precisar criar uma segunda variável. Logo abaixo de 'variável = 5', coloque:
variável = variável + 2

Com isso, o valor de variável, será adicionado em 2, já que, até esta linha, variável tinha o valor de 5.
Você também pode utilizar uma forma mais prática derealisar este código. Em Ruby, você pode utilizar um operador matemático antes do '=', para faser com que aquela variável seja operada diretamente pelo valor desejado. Neste caso, ficaria assim: "variável += 2".
Em Ruby existem sempre várias formas de se fazer cada coisa que você quiser, apenas optamos pelo caminho mais simples e curto.
Abaixo segue uma lista dos comandos matemáticos que o Ruby consegue ler:
+, -, *, /, %, **, &, |, ^, <<, >>, &&, ||
OBS: Em outras aulas serão explicados o significado de cada operador, por hora, somente os que realmente importam são: +, -, * e /; que representam respectivamente: soma, subtração, multiplicação e divisão.

segunda-feira, 29 de setembro de 2008

[Unit-1 | Lição-5] Os possíveis valores das variáveis

As variáveis podem ter vários tipos diferentes de valores, cada tipo de variável pode conter qualquer tipo de valor desejado. Os principais tipos de valores que as variáveis podem conter são: Valores Numéricos, Strings, Expreções Regulares, Arrays, Hashes, Ranges, Símbolos e Pseudo-variáveis, entre outras classes.

Valores Numéricos
Valores Numéricos são aquelas variáveis que representam números, exatamente igual as variáveis do RPGMaker, elas podem representar números inteiros, decimais e até mesmo negativos. É importante lembrar que as variáveis do RPGMaker são alojadas numa variável global pelo RGSS, exatamente por isto que é possível a mudança do valor das variáveis do RPGMaker através dos scripts, logo, tudo que o comando “Alterar Variáveis” dos eventos faz é mudar o valor de uma variável global (algo que também poderia ser feito pelo comando “Chamar Script”, já que tudo que ele faz é alterar o valor de uma variável).
Exemplo de Valor Numéricos:

0
16
-42
# Todos estes acima são valores Numéricos dados à variáveis.
OBS: O Ruby ignora qualquer underline(_) que esteja no meio de um valor numérico, isso pode ser útil para separar valores grandes, como no exemplo a seguir:
1_000_000_000 # Ambas as formas de escrever
1000000000 # resultarão no valor de um bilhão.

Strings
Strings são, basicamente, textos (expreções literárias). As strings podem ser usadas colocando-se aspas ou aspas-duplas ( ‘ e “ ) entre o texto.
Exemplos de Strings:
‘Esta é uma String’
“Esta também é uma string”

A diferença de usar aspas ou aspas-duplas é que com aspas-duplas podem ser utilizados códigos dentro das strings, já textos em aspas comuns irão mostrar exatamente o que está dentro das aspas.
Para melhor compreender a diferença entre um e outro crie um novo projeto no RMXP ou RMVX, abra o editor de scripts neste projeto e crie um novo script acima de todos os outros, então cole o exemplo a seguir:
Exemplo:
sabor = "doce."
print 'Suco #{sabor}'
print "Suco #{sabor}"

OBS: Note que também aproveitei para testar o método print da aula anterior.
Ao testar o projeto aparecerão duas janelinhas do windows uma após a outra, cada uma com uma única opção("OK"), istoa contece por que o método print foi utilizado duas veses no exemplo acima. Cada uma das veses que esta janelinha apareceu foi para mostrar a string que está logo após o método print no exemplo acima. Na primeira aparecerá "Suco #{sabor}" e na segunda "Suco doce", isso acontece porque da primira vez foi utilizado uma string com uma única aspa e na segunda uma string de aspas duplas, possibilitando o uso do comando '#{sabor}'(comando que será esplicado futuramente, por agora basta saber a diferença entre strings com uma aspa e strings de aspas duplas).


Expressões Regulares
Qualquer texto representado dentro de barras ( / ) são consideradas Expreções Regulares. Expressões Regulares são valores muito complexos, mas muito importantes para criação de determinaods scripts, e portanto, serão melhor esplicados somente em aulas futuras.
Exemplo de expressão regular:
/meu nome é DarkChocobo, e não Dark Chocobo u_u/

Array
Array é um tipo de valor muito interessante, pois ele em si não tem qualquer valor, na verdade as Array servem para guardar vários valores em uma única variável, incluindo outras Arrays. As Arrays podem guardar uma quantidade ilimitada de valores em uma única variável, colocando estes valores numa ordem específica dentro de chaves, cada valor é separado por uma vírgula.
OBS: É importante lembrar que na da array pode-se guardar qualquer tipo diferente de valor, incluindo outras Arrays.
Exemplo de Array:
[0, 16, -42]
['Esta é uma String', "Esta também é uma string", 'E esta é ' + 'outra string.']
[16, "Suco doce.", -42, 1_000_000_000]
# Todas estas acima são Arrays.
# Note como cada valor é separado por vírgula independente do tipo de valor.

Como os valores da Array ficam em grupo, cada um deles tem um ID (é o número de sua ordem na lista, começando do 0)
Exmeplo 1:

[0, 16, -42]
# Nesta Array, 0 (zero) tem ID 0, pois é o primeiro da lista.
# 16 tem ID 1, pois é o segundo.
# -42 tem ID 2, pois é o terceiro.
# Agora vamos para uma outra Array:
[16, "Suco doce.", -42, 1_000_000_000]
# Nesta Array, 16 tem ID 0, pois é o primeiro da lista.
# "Suco doce." tem ID 1
# -42 tem ID 2
# 1_000_000_000 tem ID 3

Exemplo 2:
[4, [0, 16, -42], 'Suco doce.', 1_000_000_000]
# Preste bem atenção no valor de ID 1 desta Array.
# O valor de ID 1 é: [0, 16, -42]
# É uma Array dentro da própria Array.
# Neste caso ela funcionará do mesmo jeito, sem qualquer problema.
OBS: Note que, como as Arrays não têm limite de tamanho, uma Array pode conter quantas Arrays você quiser dentro dela, e estas Arrays podem, por sua vez, ter outras Arrays dentro de si e assim por diante (apesar de isso não ser nem um pouquinho comum de encontrar ^^)


Hash
Hashes são muito parecidas com as Arrays pelo fato delas também guardarem vários valores dentro de si, porém, as Hashes, diferente das Arrays, tão têm uma ordem fixa por IDs, cada um de seus valores é representado por um número ou uma string.
Para criar uma hash é utilizado chaves( "{" e "}" ), diferente de colchetes como é com arrays. Deve-se colocar, para cada valor, o número ou string que vai representar o calor e depois um "=>" e então o valor a guardar na hash. A princípio parece ser um tanto complicaod mas com o tempo acostuma.
Exemplos de Hash:
{ 0 => 0, 1 => 16, 2 => -42 }
{ "string" => 36, 45 => [1_000_000] }

Se você não entendeu muito sobre hash não se preocupe, hashes são mais complexas, e seu uso não é tão comum, hashes serão melhor esplicadas em aulas futuras.


Range
Range são operadores utilizados entre dois valores para determinar um novo valor que seria todos os valores entre os dois valores determinados. Simplificando, uma range é todo o valor entre um início e um fim especificado. Uma range é identificada por reticências (...) ou dois pontos finais (..), no caso da reticências, a range terá o valor inicial até o final menos 1, mas nos dois pontos duplos a range terá o valor exato entre os dois especificados. (Eu sei que está meio difícil para entender, mas tudo ficará mais simples após o exemplo)
Exemplo:
1 ... 20 # Neste caso, a range terá o valor ENTRE 1 e 20 (de 1 a 19)
1 .. 20 # Neste caso, a range terá todo o valor de 1 à 20

Símbolos
Símbolos são o único tipo de valor com que vocês
não devem ter qualquer tipo de preocupação, eles são instâncias de uma
classe interna do RGSS e são os únicos objetos (do RGSS) que irão
voltar exatatamente da forma que são sempre que forem chamados.
Exemplos de Símbolos:
:class
:lvar
:method
:$gvar
:@ivar
:+

Pseudo-Variáveis
Diferentes dos valores vistos acima, estes são valores especiais conhecidas como Pseudo-Variáveis.
Pseudo-Variáveis não podem ser alteradas. As Pseudo-Variáveis são:
self, nil, true e false.
Self: Self é o próprio objeto, exemplo:
as variáveis tambémpodem representar classes(mas isso será visto na
próxima aula), então quando você escreve ‘self’ dentro desta classe,
está se referindo à variável que está representando esta classe. Não
irei me aprofundar neste tipo de valor, pois para isso, primeiro você
deve saber sobre classes, que só serão dadas na próxima aula.
Nil: Sempre que uma variável não declarada for chamada, ela será
considerada Nil, logo, nil pode ser considerado como um NADA!, como se
a variável não tivece nenhum valor (nem zero).
True/False: São valores especiais que significam simplesmente Verdadeiro (true) ou
Falso (false), são usados em ocasiões especiais, como em condições para
definir coisas como por exemplo se uma janela de comando estiver ativa
ou não. Estes valores são utilisados em uma variável global para
representar as Switches do RPGMaker (true = ON, false = OFF), logo,
tudo que o comando “Alterar Switches” dos eventos faz eh alterar o
valor de uma variável global de true para false(e vice-versa) do mesmo
jeito que o comando “Alterar Variáveis” já citado acima.

domingo, 28 de setembro de 2008

[Unit-1 | Lição-4] Variáveis: O que são e os tipos de variáveis.

O que são e para que servem as variáveis?
As variáveis carregam dados necessários para o funcionamento correto do jogo. As variáveis podem ser consideradas containers de dados, elas ficaram guardando seus dados até que você queira utilizá-los. Em Ruby, as variáveis têm o mesmo propósito das variáveis usadas pelos eventos do RPGMaker, guardar dados para que eles possam ser usados futuramente para um funcionamento correto do jogo, apesar de não serem usadas de mesma forma.

Tipos de variáveis
Em Ruby, existem vários tipos diferentes de variáveis, e qualquer uma delas pode ter vários tipos de valores diferentes. Existem 4 tipos diferentes de variáveis, são elas: Variável Global, Variável de Instância, Variável Local, e Constantes.

Variável Global
As variáveis globais são aquelas que poderão ser utilizadas por qualquer parte do programa (incluindo até mesmo pelos eventos). As variáveis globais são identificadas por conter um prefixo “$” em seu nome.
Exemplo:
$global_variable # Esta é uma Variável Global.

Variável de Instância
As variáveis de instância pertencem a um específico objeto , elas podem ser acessadas apenas pela classe a qual elas pertencem (classes serão vistas na próxima aula). As variáveis de Instância são identificadas por conter um prefixo “@” em seu nome.
Exemplo:
@instance_variables # Esta é uma Variável de Instância.

Variável Local
As variáveis locais são aquelas que podem ser usadas apenas no método a qual ela pertence (métodos serão vistos na próxima classe). As variáveis locais não contém qualquer prefixo em seu nome, mas devem ser iniciadas por uma letra minúscula ou um underline(_).
Exemplo:
local_variable # Esta é uma variável local.

Constantes
Constantes são variáveis que pertencem a classes, classes que incluem modules e modules (serão vistos em aulas futuras). Constantes são identificadas por começarem seu nome com uma letra maiúscula.
Exemplos:
Constante # Esta é uma Constante.
CONSTANTE # Constantes também podem ter seu nome
# formado somente por letras maiúsculas.


Lembrando que qualquer dúvida é só responder o post, para isto clique em "respostas" aqui em baixo. \/