O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

[Ruby] Aula 3 : Variáveis e operações

Iniciado por Raizen, 20/12/2012 às 22:18

20/12/2012 às 22:18 Última edição: 16/12/2015 às 10:31 por Raizen
[box class=windowbg1]
Índice das aulas básicas
  • Aula 1 - Introdução
  • Aula 2 - Objetos
  • Aula 3 - Operações
  • Aula 4 - Condições
  • Aula 5 - Repetição
  • Aula 6 - Arrays
  • Aula 7 - Hashes
    [/box]
    [box class=windowbg1]
    Índice das aulas avançadas
  • Aula 8 - Superclasses e instâncias
    [/box]
    [box class=windowbg1]
    Índice das aulas de algoritmos
  • Aula 1 - Sort
  • Aula 2 - Busca
  • Aula 3 - Recursividade
    [/box]

    [box class=windowbg2]
    Variáveis e operações
    [/box]

    [box class=catbg2]
    Introdução
    [/box]
    [box class=information]
       Está é a terceira aula de Ruby, para poder aproveita-la ao máximo, sugiro que tenha lido as duas aulas anteriores, especialmente a de classes, módulos e métodos. A aula é sobre as variáveis, existem vários tipos de variáveis em Ruby, e essas diferenças são para que o programador possa escolher aquele que mais se adequa a aquele momento, dando preferência em relação ao que abrange aquela variável.[/box]

    [box class=catbg2]
    Variáveis
    [/box]
    [box class=information]
      No Ruby as variáveis são associadas de acordo com a nomenclatura, e cada variável permite sua utilização de acordo como ela foi nomeada, quando se programa em Ruby, é interessante que se utilize as variáveis de "menor impacto" possível, sendo assim preferir pela variável local, caso não seja possível pela de instância e assim em diante.
    As variáveis são as seguintes.
  • local  - inicia-se com letra minúscula ou undeline, mesma nomenclatura de métodos, e funcionam apenas dentro de métodos, elas não mantém seu valor,  e por isso são preferencialmente usadas quando possíveis.
  • @instância - A nomenclatura para variáveis de instância no Ruby é as palavras precedidas por @, por exemplo, @variável. As variáveis de instância mantêm o seu valor e podem ser acessadas por todo o objeto aonde foi inicializado a variável. Variáveis de instância podem ser acessadas fora do objeto se usado como atributo daquele objeto, em breve falaremos mais sobre isso.
  • $globais- As variáveis globais podem ser acessados de qualquer parte do programa, essas variáveis inclusive são utilizada pelos eventos do RPG Maker (switches e variáveis).
  • Constantes – Apesar de não ser no pé-da-letra uma variável, é importante ressaltar  e explicar como ele funciona. As constantes no Ruby, diferente de muitas outras linguagens, podem ser mudadas, porém é altamente não recomendado. As constantes como o nome diz devem ser usadas para valores que não mudam através do programa.[/box]

    [box class=catbg2]
    Valores
    [/box]
    [box class=information]
    Agora que falamos as variáveis diferentes, vamos falar sobre os diferentes valores que cada variável pode ter.  Nas versões do Ruby presentes em qualquer engine da Enterbrain, é facultativo a declaração do tipo de variável, como em alguns casos, por exemplo C, em que é necessário dizer o tipo de variável em que está trabalhando.
    Os seguintes valores estão presentes nas variáveis.
  • Boolean – true/false, é a variável mais simples que tem, ela simplesmente diz se é verdadeiro ou falso o valor da variável.
  • Integer – Números inteiros.
  • Float – Numeros fracionários.
  • String – Textos, sempre dentro de aspas "", "Isso eh uma string".
  • Symbol – caracteres especiais que são usados para facilitar a programação, semelhantes a strings que podem ter boa parte dos caracteres neles e serem usados para diferenciar os valores, porém sem as propriedades das strings, basta preceder  a palavra com :, :symbol.
      As principais razões por diferenciarmos os valores das variáveis será explicado em futuras aulas, porém é necessário que saiba quais são e como funcionam.[/box]

    [box class=catbg2]
    Operações
    [/box]
    [box class=information]
    Agora iremos fazer as operações básicas, essa é uma das partes mais simples da aula, caso tenha aprendido bem oque foi feito anteriormente. E já adicionando que o símbolo #, serve para comentários, ou seja ele é ignorado no código, um modo de se organizar e programar mais limpo.

    Operações, são utilizados os símbolos comuns de operações.
    Adição +
    Subtração –
    Divisão /
    Multiplicação *
    Resto % # Para Integers
    variavel1 = 40 - 30 # a variavel1 terá o valor 10 e será considerado um Integer.
    

    variavel2 = "30" + "20" # a variavel2 terá o valor de "3020" e será uma string.
    

    variavel3 = "30" + 20 # retorna um erro, pois o programa não consegue somar
    # uma string com um integer
    

    variavel4 = 35 + 20.2 # a variavel4 terá valor 50.2, ele faz sozinho a conversão
    # e será um Float
    

    variavel6 = 3*5 # a variavel6 terá valor 15
    

    variavel7 = 10 % 3 # a variavel7 terá valor 1
    


    É possível simplificar as contas, caso use na operação a própria variável, por exemplo.
    variavel8 = variavel8 * 7
    

    Por simplesmente
    variavel8 *= 7
    

    [/box]

    [box class=catbg2]
    Juntando o aprendizado, voltando a métodos
    [/box]
    [box class=information]Como sabem, agora estamos na parte em que pegamos o que aprendemos anteriormente e juntamos ao que estamos aprendendo, espero que todos tenham entendido as variávels locais.

    Nos métodos, é possível fazer uma declaração de variável local no momento que o chama, adicionando as variáveis nos parâmetros. basicamente o seguinte.

    def somar(x, y)
      soma = x + y
      p soma
    end
    somar(2, 4)
    somar(3, 3)
    


    eu criei um método de somar, ele pega o x soma com y e ai imprime o resultado, no momento que eu chamar somar(2, 4) e depois somar(3, 3) ele faz a seguinte operação.
    x = 2
    y = 4
    soma = 2 + 4
    p 6
    x = 3
    y = 3
    soma = 3 + 3
    p 6
    

    Se forem ver fica muito mais pratico criar códigos e reutiliza-los!, no caso do código anterior ele vai imprimir na tela 6 e depois 6[/box]

    [box class=catbg2]
    Dever de casa
    [/box]
    [box class=information] Agora junte tudo que aprendeu nas 3 aulas, vai ser necessário tudo para o dever que irei dar. Quero uma classe que contenha algo do seu Nick no nome da classe, com os 4 métodos das operações e que o programa imprima (p), lembrando que tem que chamar o método fora da classe! Boa sorte no dever, pensem bem pois é um grande passo para serem programadores :)[/box]

07/03/2013 às 18:18 #1 Última edição: 08/03/2013 às 10:12 por hitmanlm
def somar(x, y)
  soma = x - y
  p soma
end
somar(4, 4)
somar(4, 4)

--------------------------------

def somar(x, y)
  soma = x + y
  p soma
end
somar(5, 5)
somar(5, 5)

--------------------------------

def somar(x, y)
  soma = x % y
  p soma
end
somar(3, 9)
somar(3, 9)

--------------------------------

def somar(x, y)
  soma = x * y
  p soma
end
somar(3, 10)
somar(3, 10)

Sim x], mas ai você não está fazendo todas as operações u_u, veja você só fez um método com uma operação de subtrair, falta somar, multiplicar e dividir :D

Citação de: Raizen online 07/03/2013 às 22:46
Sim x], mas ai você não está fazendo todas as operações u_u, veja você só fez um método com uma operação de subtrair, falta somar, multiplicar e dividir :D

pode deixar que depois eu faço to morrendo de sono vlw ate amanha!

Ei Raizen, você pode conferir se o dever está correto? Valew!

class Link
 def somar(x, y)
   soma = x + y
   p soma
 end
 def subtrair(x, y)
  subtracao = x - y
  p subtracao
 end
 def multiplicar(x, y)
  multiplicacao = x * y
  p multiplicacao
 end
 def dividir(x, y)
  divisao = x / y
  p divisao
 end
end

somar(2, 4)
somar(7, 1)

subtrair(7, 2)
subtrair(10, 3)

multiplicar(2, 9)
multiplicar(3, 7)

dividir(10, 2)
dividir(4, 4)

@Scrapper: sim digo, quase *--*, ficou bem perto do que era para ser, faltou só o seguinte.
COmo foi mostrado na aula 2.
class Aula
  def metodo1
    p "55"
  end
end
aula1 = Aula.new
aula1.metodo1


Seu code corrigido :)
Spoiler
class Link
 def somar(x, y)
   soma = x + y
   p soma
 end
 def subtrair(x, y)
  subtracao = x - y
  p subtracao
 end
 def multiplicar(x, y)
  multiplicacao = x * y
  p multiplicacao
 end
 def dividir(x, y)
  divisao = x / y
  p divisao
 end
end

objeto = Link.new

objeto.somar(2, 4)
objeto.somar(7, 1)

objeto.subtrair(7, 2)
objeto.subtrair(10, 3)

objeto.multiplicar(2, 9)
objeto.multiplicar(3, 7)

objeto.dividir(10, 2)
objeto.dividir(4, 4)
[close]

Ah tah, entendi ^^
Obrigado Raizen e parabéns pela aula!

Raizen, vou te encher o saco, resolvi me aperfeiçoar nos scripts(aprender mais, só sei um pouco)

class Felipef
   def somar(x, y)
     soma = x + y
     p soma
   end
   def dividir(x, y)
     divide = x / y
     p divide
   end
   def multiplicar(x, y)
     multiplica = x * y
     p multiplica
   end
   def subtrair( x, y)
     subtrai = x - y
     p subtrai
     end
     end
   conta = Felipef.new
   conta.somar(2, 4)
   conta.dividir(4, 2)
   conta.multiplicar(5, 2)
   conta.subtrair(2, 2)

  

Perfeito felipe *--*, parabéns man, e sim as aulas são basicas xD, tirando a de Array/Hash, essas são levemente mais elaboradas, e bom, espero que possa ver você nesse mundo dos scripts em breve =D

E ae Raizen, to igual o felipe, venho perturbar kk quero me tornar um maker completo e para isso devo aprender Scripts, algo que sempre quis, porém a preguiça era muita kkk não, era a fata de tempo mesmo, porém, to aprendendo e vi que não é um bicho de 7 cabeças, é um de 40 cabeças UHSAHUASUH, agora no começo, enfim, vê o que acha do que fiz. ^^


=begin
################################################################################
                              Treinamento de Scripts
################################################################################
=end

class Ryan
  def soma(x,y)
    soma = x + y
    p soma
  end
  def subtracao (x,y)
    subtracao = x - y
    p subtracao
  end
  def divisao (x,y)
    divisao = x / y
    p divisao
  end
  def multiplicacao (x,y)
    multiplicacao = x * y
    p multiplicacao
  end
end

resultado = Ryan.new

resultado.soma(10,40)
resultado.subtracao(11,11)
resultado.divisao(10,2)
resultado.multiplicacao(344, 203)


ISSO  :wow: , mas algo que não deixei explicito na aula, tente evitar usar nomes de variáveis igual a nomes de métodos e objetos, apenas por causa de uma razão interna xD, tentamos não deixar nomes de variáveis iguais a de métodos ou classes, enfim.

Tipo
def somar(x, y)
posso usar soma por exemplo para.
soma = x + y

Isso é por bons modos de programação, que quando estiver avançando será importante xD, apenas isso kk, de resto parabéns.

Opa Raizen, olha aqui o resultado final:
class Netinho
  def somar(x, y)
    soma = x + y
    p soma
  end
  def subtrair(x, y)
    subtracao = x - y
    p subtracao
  end
  def multiplicar(x, y)
    multiplicacao = x * y
    p multiplicacao
  end
  def dividir(x, y)
    divisao = x / y
    p divisao
  end
end

result = Netinho.new
result.somar(6, 4)
result.somar(7, 3)
result.subtrair(2, 4)
result.subtrair(25, 15)
result.multiplicar(21, 91)
result.multiplicar(35, 14)
result.dividir(32, 2)
result.dividir(155, 6)


Mas eu quebrei a cabeça com algo:
- Quando tentei apenas com 1 operação, recebia erro. Veja como foi que tentei:
class Netinho
  def somar(x, y)
    soma = x + y
    p soma
  end
end
item = Netinho.new
result.somar(6, 4)
result.somar(7, 3)

porque não existe a variável result x].

Seria isso na verdade.
class Netinho
  def somar(x, y)
    soma = x + y
    p soma
  end
end
item = Netinho.new
item.somar(6, 4)
item.somar(7, 3)


Boa sorte nas aulas.

Nossa, como eu não vi isso ?!
kkkk, enfim, realmente funcionou. Estou gostando muito das aulas.

Aqui esta o meu dever Raizen

# Classe Com Meu nome
class Mepps

# Operações

def adicao(x,y);
adicao = x + y;
end

def subtracao(x,y);
subtracao = x - y;
end;

def divisao(x,y);
divisao = x / y;
end

def multiplicacao(x,y);
multiplicacao = x * y;
end

def fracao(x,y);
fracao = Rational(x,y);
end;

def raiz(x);
raiz = Math.sqrt(x).to_i;
end;
end;

# Resultados

resultados = Mepps.new
resultados.adicao(1,2)
resultados.subtracao(10,9)
resultados.divisao(12,6)
resultados.multiplicacao(50,2)
resultados.fracao(1,2)
resultados.raiz(9)

# Resultados que eu Obtive

adicao => 3
subtracao => 1
divisao => 2
multiplicacao => 100
fracao => 1/2
raiz => 3