Forums » RGSS

[Básico] Aula 4: Variáveis, Arrays, Estruturas

    • 683 posts
    4 de junho de 2015 12h42min42s ART

    Aula 4: Variáveis, Arrays, Estruturas

     

    Imagem Postada
    www.mundorpgmaker.com
    This work is licensed under a Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Unported License.

     

    Índice de todas as aulas aqui

     

    Índice
    • 4.0 - Detalhando variáveis
    • 4.1 - Condicionais
    • 4.2 - Estruturas de repetição
    • 4.3 - Arrays
    • 4.4 - O for
    • 4.5 - Ufa!!Última teoria!!
    • 4.6 - Conclusão
    • 4.7 - Dever de casa

     

    4.0 - Detalhando variáveis

     

          Então, até o presente momento eu havia falado superficialmente de variáveis, tipo:"devemos sempre atribuir um objeto a uma variável", etc. Porém, até agora eu não havia dado detalhes. Agora irei dar. Primeiro: o que são variáveis? Variáveis de RGSS são idênticas a variáveis dos eventos. Elas guardam coisas, como números, objetos, textos e, sem elas, muitos dados seriam perdidos no meio dos scripts.Não há muito sobre o que falar.


          Só há um grande detalhe:as variáveis de evento não armazenam tantas coisas diferentes quanto as do RGSS. Além disso, as variáveis RGSS possuem vários tipos, assunto do qual falarei agora.

     

    Tipos de variáveis quanto ao escopo(visão)

     

          O escopo seria de onde que essa variável é acessível. Por exemplo. Nas variáveis dos eventos, temos as variáveis locais: cada evento tem a sua, e a variável local de cada evento só é acessível a ele.Todas as variáveis são nulas(tem valor nil;não é o mesmo que zero), até que você atribua um valor a cada uma delas.Quanto ao escopo, no RGSS temos:


    Variáveis Globais

          São acessíveis em qualquer lugar de qualquer script, assim como as variáveis comuns do evento. Para indicar que uma variável é global e é acessível em qualquer local, colocamos o cifrão no início do seu nome.Exemplo:


    $texto ="Oi"
    Variáveis Locais

          São variáveis acessíveis apenas na sua classe respectiva, assim como as variáveis locais dos eventos são acessíveis apenas para seu evento.Para indicar que uma variável é local e é acessível apenas em sua classe, colocamos um arroba no início do nome. Exemplo


    classExemplo   def algo     @texto="Oi"   endend
    Variáveis comuns

          Não sei o verdadeiro nome delas, mas as chamo assim.Elas são acessíveis apenas onde atribuídas. Exemplo:


    def algo   texto ="Oi"end

          Como a variável no caso foi atribuída dentro de um método, ela só é utilizável nesse método.

     

    Tipos de variáveis quanto ao que elas guardam

     

    Variáveis númericas

          Guardam números. Exemplo:


    num1 =2 num2 =3.4
    Variáveis booleanas

          Guardam valores booleanos, ou seja, true ou false.Exemplo:


    b =true b2 =false
    Variáveis string

          Guardam texto(que são chamados de string).


    Variáveis objeto

          Guardam qualquer outra coisa.

     

    4.1 - Condicionais

     

          No RGSS, existem as condicionais. Elas servem para que determinadas ações ocorram somente se algumas condições e aplicarem.É, por exemplo, o "Se...Senão" dos eventos.Irei ensinar agora todas as condicionais que o RGSS tem.São elas:

     

    Se(If)

     

          Analiza uma certa expressão, se essa expressão for true, o que estiver dentro do if é executado.Se for false, a expressão não é executada.Exemplo:


    if algo   executar algo end

    [lohan]

          Esquecer o end ao terminar um if é um erro de sintaxe. Sendo um erro de sintaxe, o RGSS irá acusar o erro imediatamente quando o jogo rodar.Para não esquecer o end, aconselho sempre a colocá-lo quando começar a escrever o if, e logo depois ir digitando as ações dentro dele.

    [/lohan]

     

    [lohan]

          A expressão de checagem do if pode ser composta.No caso, a expressão de checagem foi uma variável chamada "algo", que com certeza deve ser booleana.Nas expressões compostas, podemos testar se um valor é igual, maior ou igual, e todas essas coisas.Os sinais das espressões compostas são:== ,  >= ,  > ,  <= ,  < e !=, que checam se a tal coisa é igual, maior ou igual, maior, menor ou igual, menor e diferente de outra coisa.Exemplo:


     

    if var1 == var2   p "Var1 é igual a Var2"end

     


          No caso, o if testa se as duas variáveis do caso são iguais.Se elas são,  "Var1 é igual a Var2" é  mostrado.

    [/lohan]

     

     

    Se...Então(if...else)

     

          Analiza uma certa expressão, se essa expressão for true, o que estiver dentro do if é executado.Se for false, o que estiver dentro do else é executado.Exemplo:


    if sou_maior_de_idade   p "posso beber"else   p "não posso beber"end

    [lohan]

          É um erro comum colocar dois end para o else e o if.O if...else é um só, e só um end é necessário.

    [/lohan]

     

     

    Se...Então Se...Então(if...elsif...else)

     

          Analiza uma certa expressão, se essa expressão for true, o que estiver dentro do if é executado.Se for false, uma nova expressão é analizada no elsif.Se a nova expressão for true, o que estiver no elsif é executado.Se ela for false, o que estiver no else é executado.Exemplo:


    if tenho_11_anos   p "11 anos"elsif tenho_13_anos   p "13 anos"else   p "idade desconhecida"end

    [lohan]

          É um erro comum colocar vários end para o else, o elsif e o if.O if...elsif...else é um só, e só um end é necessário.

    [/lohan]

     

    [lohan]

          Num código desse, poderia haver a retirada do else ou do elsif, ou a inclusão de um novo elsif.Exemplo:


     

    if algo   fazer_algo elsif algo2   fazer_algo2 elsif algo3   fazer_algo3 end

     


          Observe que há um elsif a mais do que eu tinha demonstrado e o else a menos.Isso pode ocorrer sem problemas. Há variás combinações.

    [/lohan]

     

     

    Caso...quando...quando...padrão(case...when...when...else)

     

          Analiza o valor de uma expressão/variável e executa diferentes ações para cada valor.Se nenhum valor conferir, uma ação padrão pode ser executada no else.Exemplo:


    case variavel when0   p "sou zero!"when1   p "sou um!"when2   p "sou dois!"else   p "não sei o que sou!"end

    [lohan]

          É um erro comum colocar vários end para o case. Só um end é necessário.

    [/lohan]

     

     

    4.2 - Estruturas de repetição

     

          São estruturas utilizadas para repetir mesmas ações várias vezes.São úteis para não deixar os scripts com muitas operações repetidas, dentre outras coisas.As estruturas de repetição são:

     

    ciclo fazer(loop do)

     

          Executa as ações infinitamente até que o loop seja quebrado com um break. Funciona como o ciclo dos eventos.Exemplo:


    loop do   if e_para_quebrar_loop     break   endend

     

    Enquanto(while)

     

          Executa ações até que uma condição seja falsa.O break também pode ser usado para quebrá-lo.Exemplo:


    while number <0   number +=1end

          O loop executa enquanto number for menor que zero.Dentro do loop, o number é somado, até que ele seja igual a zero, e o loop pare de executar.


    [lohan]

          É um erro comum colocar uma condição que sempre é verdadeira no while.Se isso acontecer, o loop rodará forever, isto é, para sempre, até que você feche o jogo.Às vezes, isso pode ser incômodo e não desejável.

    [/lohan]

     

    [lohan]

          Para somar um número qualquer a uma variável, ou realizar qualquer operação com ela, podemos usar esses sinais abreviados: +=, -=, *=, /=, %=. Por exemplo, var *= 8 multiplicaria a variável var por 8.

    [/lohan]

     

     

    4.3 - Arrays

     

          Existe um tipo de variável, da qual eu não havia falado até agora: arrays. Antes de começar a falar realmente delas, queria que uma coisa fosse entendida. Que as variáveis são como caixinhas, onde você pode guardar as coisas para não perder. As caixinhas tem nome e tem alguma coisa dentro:quando elas não tem nada, elas na verdade tem dentro delas o valor nil, sobre o qual eu já havia falado.As arrays são variáveis especiais: elas não guardam uma coisa só, como variáveis comuns: elas guardam várias.


          Tomemos como exemplo uma variável interessante,  $game_party.actors. Essa variável é uma array, que guarda todos os personagens que estão no grupo, no jogo.Para acessar os valores que essa variável especial guarda, usamos uma notação diferente.No caso, para acessarmos o primeiro personagem do grupo, teríamos:


    $game_party.actors[0]

            Para acessar o segundo...


    $game_party.actors[1]

            O que está entre colchetes([0], [1]) é o número chamado índice. Cada valor guardado numa array tem seu índice. Isso torna as arrays bem úteis, caso você queira armazenar muitas coisas do mesmo tipo(no caso, personagens que estão grupo) ou coisas que são ordenadas por números(índices).


          Para criar uma array:


    array =[]

          No caso, foi criado uma array vazia.Poderíamos criar uma array assim:


    array =["Oi1","Oi2"]

          Observe que se usassemos , nocaso, array[0], teríamos "Oi1". Se usassemos array[1], teriamos "Oi2".


    [lohan]

          Observe que, no caso, a variável exemplo guarda apenas textos. Porém, uma array pode guardar valores de vários tipos.Porém ainda, é melhor usar uma array para guardar valores de apenas um tipo, caso queira usar outro tipo, é recomendado criar outra array diferente(não que não se possa usar vários tipos numa array só).

    [/lohan]

     

          Para substituir um valor de uma array:


    array[indice]= valor

          Onde "indice" deve ser o número índice.


    [lohan]

          Para adicionar um novo valor a uma array e ao final dela, basta fazer isso:


     

    array.push(valor)

     


          Por exemplo:


     

    array =[1,2] array.push(3)

     


          A array resultante será: [1, 2, 3].

    [/lohan]

     

    [lohan]

          Um erro comum é esquecer os colchetes na declaração de array, ou ainda esquecer de colocar vírgula entre os valores.

    [/lohan]

     

     

    4.4 - O for

     

          Das estruturas de repetição, eu não havia falado apenas de uma: o for. Por que eu deixei de falar? Porque o for tem uma relação direta com arrays.A estrutura do for padrão é:


    for i in array   fazer_algo end

          O for é um pouco complicado de se entender. O que acontece é o seguinte: uma variável é criada, (o nome dela é especificada depois do for, no caso, "i"), daí essa variável assume o primeiro valor da array(array[0]), e o que estiver no for é executado. Depois disso, o "i" assume o segundo valor da array, array[1], e o que estiver no for é executado. Isso acontece até que o "i" tenha assumido todos os valores da array, daí o loop termina. Outra estrutura para o for é:


    for i in n...n2   fazer_algo end

          Dessa forma, em vez de o i assumir valores de uma array, ele assume os valores de n até n2. Por exemplo,  for i in 1...5 fará com que o i assuma valores de 1 a 5, em ordem.

     

    4.5 - Ufa!!Última teoria!!

     

    O método initialize

     

          Lembra-se de como se cria um objeto através de uma classe?Eu havia falado sobre isso na aula passada: basta escrever NomeDaClasse.new. Às vezes, nós scripters queremos que, logo após que o objeto seja criado, ele execute todas as operações necessárias para que tudo ocorra bem.Por exemplo, uma classe que exibe imagem teria que inicializar(carregar) sua imagens antes de exibi-las. Para isso, exsite o método initialize.


          O método initialize é bem simples: no exato instante que um objeto é criado, ele executa, caso exista um método initialize nesse objeto.Por exemplo:


    classExemplo   def initialize     p "Inicializado"   endend exemplo_objeto =Exemplo.new

          Quando esse código for executado,  "Inicializado" será exibido, pois o método initialize é chamado imediatamente depois de o objeto ter sido criado. COOL!

     

    Comentários

     

          Assim como nos eventos, no RGSS temos os comentário e, assim como nos eventos, os comentários não praticam nenhuma ação, servem apenas para facilitar a leitura do seu código. Eu particularmente recomendo o uso de comentários não exageradamente, pois eles facilitam até que você mesmo modifique seu script.Observe que os comentários ficam em verde no editor de scripts.Existem dois tipos de comentários:


    De múltiplas linhas

          Tudo o que estiver entre =begin e =end será um comentário de múltiplas linhas.Usado geralmente no início de qualquer script, para explicar como usar e o que ele faz.


    De uma única linha

          Tudo o que estiver depos de # na presente linha será um comentário.

     

    4.6 - Conclusão

     

          Então pessoal, espero que tenham gostado dessa quarta aula, eu mesmo tive muito trabalho para fazer e organizar bem os assuntos para que ficassem preparados para a próxima aula, que vai ser apenas prática, e vamos aprender o que realmente interessa no RGSS,  a parte gráfica.

     

    4.7 - Dever de casa

     

          Crie um método somar.Esse método deve criar uma array com números.Após criar a array o método deve somar todos os valores da array usando o for. Depos de somar os valores, o método deverá imprimir o valor dessa soma.

     

          Crie uma classe Teste que contenha um método initialize. O método initialize deve chamar o método somar do dever anterior.Além disso ele terá que inicializar uma variável local chamada @texto.A classe deve conter também um método imprimir_meu_texto , que será chamado no initialize depois da inicialização da variável @texto, e irá imprimir o valor dela.


    [center]:mrm: :mrm: :mrm: