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

[Ruby] Aula 4 - Condições e Estruturas de Controle

Iniciado por Raizen, 12/03/2013 às 15:00

Citação de: NetinhoMaker online 27/07/2013 às 20:52
Faltou corrigir o meu Raizen, que está acima do Mepps.
Me desculpe eu não havia visto D:

Citação de: NetinhoMaker online 27/07/2013 às 02:52
O exercício fácil, mas acho que não é assim a verificação se é impar ou par. :rei:
class Netinho
  laranjas = 12
  hora = 12
  if laranjas == 12
    p "uma dúzia"
  else
    p "não tem 12"
  end
  if hora = 
  if horas = 0 or 2 or 4 or 6 or 8 or 10 or 12 or 13 or 14 or 15 or 16 or 18 or 20 or 22 or 24
    p "par"
  else
    p "impar"
  end
  
end



Esse intermediário foi um pouco fácil também, só não entendi direito o segundo ponto pedido.
"Crie um método de somar, em que os argumentos sejam 2 números, porém que imprima se a soma é acima de 10, ou abaixo de 10."
red = 5
if red >= 1 and red <= 5
  p "red está entre 1 e 5"
else
  p "red não é nenhum dos anteriores"
end


Posso melhorar em alguma coisa?!

então o segundo não vou bem corrigir, pois é bem diferente do pedido xD, acho que não entendeu muito, bem, seria um método de somar tipo.

def soma(x, y)....

e ai ele imprime se a soma é mais que 10, ou menor que 10.

O primeiro, acho melhor vc testar no maker para ver o erro que dará, tem alguns erros ai :P, um de digitação, e o de par o ideal é usar isso daqui. %, isso é simbolo de resto, então dá para fazer uma verificação com o resto, tem outro modo que seria o .even, mas tente fazer com o resto(%).

28/07/2013 às 01:15 #16 Última edição: 28/07/2013 às 03:25 por NetinhoMaker
Obrigado Raizen pela correção, me dei uma segunda chance, espero que não seja incomodo:
class Netinho
  def laranja
    laranjas = 12
    if laranjas == 12
      p "Você tem uma dúzia"
    else
      p "Você não tem uma dúzia"
    end
  end
  def hora
    horas = 14
    if horas % 2 == 0
      p "Par"
    else
      p "Impar"
    end
  end
end

result = Netinho.new
result.laranja
result.hora

Optei pelos níveis fáceis e intermediários x3

Fácil
1. Crie uma Constante, que indica o número de laranjas, esse número é colocado pelo usuário, e se tiver um número exato a 12, imprima "uma dúzia".

module Orange_Number # O módulo do número de laranjas
  ORANGE_NUMBER = 12
end

class Orange_Print # A classe que vai checar e printar o número de laranjas
  include Orange_Number
  def print
    if ORANGE_NUMBER == 12
      p 'Uma dúzia'
    end
  end
  print = Orange_Print.new
  print.print
end


2. Crie uma condição aonde eu imprima a hora, que é colocado pelo usuário e que imprima se a hora é ímpar, ou ela é par.

hour = 13

if hour % 2 == 0
  p "A hora atual é #{hour}, que é par."
else
  p "A hora atual é #{hour}, que é ímpar."
end

[close]

Intermediário
1. Optimize o código a seguir com o que foi aprendido nessa aula.

código antigo:
red = 5
if red == 1 then
  p "red eh 1"
else 
  if red == 2 then
    p "red eh 2"
  else
    if red == 3 then
      p "red eh 3"
    else
      p "red nao é nenhum dos anteriores"
    end
  end
end


código novo:
red = 5
if red == 1
  p "red eh 1"
elsif red == 2
  p "red eh 2"
elsif red == 3
  p "red eh 3"
else
  p "red nao é nenhum dos anteriores"
end


2. Crie um método de somar, em que os argumentos sejam 2 números, porém que imprima se a soma é acima de 10, ou abaixo de 10.

def addition(a1,a2)
  a12 = a1 + a2
  if a12 >= 10
    p "O resultado da soma foi maior ou igual à 10"
  else
    p "O resultado da soma foi menor que 10"
  end
end

addition(3,2)
print "\n"
addition(4,6)
print "\n"
addition(6,19)
 
[close]

Espero que goste de meus humildes códigos PAKSPOAKS' u_u
"Pode-se enganar a todos por algum tempo; pode-se enganar alguns por todo o tempo; mas não se pode enganar a todos todo o tempo."

Ei, você, você mesmo! Tá afim de ver um projeto legal? Clica embaixo!


30/07/2013 às 19:37 #18 Última edição: 30/07/2013 às 20:04 por Ryugo
Opa,terminei as tarefas dessa aula(não fiz avançado,porque é avançado  :lol: )

Fácil:
Spoiler
Laranja:
class Laranja
def laranjas(x)
  laranjas = x
  if laranjas == 12
    p "Uma duzia"
  elsif laranjas < 12
    p "Menos que 12"
  else
    p "Mais que 12"
    end
  end
end

seila = Laranja.new
seila.laranjas(12)


Hora:
class Tarefa_horas
  def hora(x)
    horas = x
    if horas >= 25
      p "Não é uma hora"
    elsif horas %2 == 1
      p "Impar"
    else
      p "Par"
    end
  end
end
result = Tarefa_horas.new
result.hora(16)


Spoiler
Edit: Fiz do jeito que era esperado agora,esta ali em cima,mas deixo aqui o antigo:
class Horas
  def hora(x)
    hora = x
    case hora
    when 1
      p "Hora impar"
    when 3
      p "Hora impar"
    when 5
      p "Hora impar"
    when 7
      p "Hora impar"
    when 9
      p "Hora impar"
    when 11
      p "Hora impar"
    when 13
      p "Hora impar"
    when 15
      p "Hora impar"
    when 17
      p "Hora impar"
    when 19
      p "Hora impar"
    when 21
      p "Hora impar"
    when 23
      p "Hora impar"
    when  
      if hora >= 25
        p "Não é uma hora"
      else
        p "Hora par"
      end
    end
  end
end

seila = Horas.new
seila.hora(10)

Eu sei que não é assim o da hora,eu fiz do jeito que achei que era,e agora vim ler os posts e vi que não fiz do jeito mais fácil. Vou fazer do jeito que você mostrou e depois dou um edit aqui.
[close]
[close]

Intermediário:
Spoiler
Adaptar código:
red = 5
if red == 1
  p "red eh 1"
elsif red == 2
  p "red eh 2"
elsif red == 3
  p "red eh 3"
else
  p "red nao é nenhum dos anteriores"
end


Soma de dois valores mostrando se é maior ou menos que 10:
class Tarefa_interme
  def somar(x, y)
    soma = x + y
    if soma == 10
      p "O resultado é 10 exato"
    elsif soma > 10
      p "O resultado é maior que 10"
    else
      p "O resultado é menor que 10"
    end
  end
end

result = Tarefa_interme.new
result.somar(3, 3)
[close]

Está aí,não entendi nenhum dos dois avançados,aí fui olhar a tarefa dos outros,e quem fez avançado usou uns código que não conheço  :ded:

E já aproveito pra perguntar: Essas aulas você esta ensinando ruby(e não rgss em si).Então tudo aprendido nas suas aulas poderá ser usado no rgss1,rgss2 e no 3 néh?!
E quais são as particularidades de cada rgss?A diferença de programar nas 3 é muita?


Té  :wow:

@Netinho: bem melhor :D, agora tentar as outras tarefas mais difíceis  :malvado:

@Ryugo: Sobre o de horas, bom qualquer modo que mostrou está correto, apenas que como pode ver, usar o resto(%), é beeem mais fácil :P. Mas de resto está bem legalz.
Sobre sua pergunta, o RGSS é só uma biblioteca, não é todo feito em Ruby o RGSS, porém aquela parte de scripts que editamos lá no editor é, para o RGSS1/2, pelo que eu sei, ele tem 95% de todos os comandos/classes de Ruby, então sem problemas, e o RGSS3 tem ele inteiro(até agora pelo menos :D).
Você aprendendo Ruby, você programa em qualquer RGSS, você aprendendo RGSS, tem mais dificuldade para transitar de um para outro  :=p:, então sim, pegando bem a linguagem, você programa em qualquer versão.
  Tem mais diferença apenas na hora de usar comandos de RGSS, por exemplo $game_player.x, ou algo que é da biblioteca mesmo, mas sabendo o Ruby, você mexe em todos sem problema. Basta ver que os scripters mais avançados no dia que o Ace foi lançado, já tinha vários scripts saindo.


@SuperPig:  Bão bão xD, eu não usaria um método/objeto com nome de print, não é politicamente correto kk, é que tem a função print no Ruby, e você está basicamente usando o mesmo nome o que daria erro.
E nada a comentar dos outros 2, eles estão bons :D.





Boa sorte com as lições, qualquer dúvida podem mandar aqui, ah e sempre testem, é bom para ver como está rodando o código.

26/01/2014 às 00:27 #20 Última edição: 26/01/2014 às 00:29 por SuperPig
Opa, hola Raizen! Como estou persistindo no RGSS3, voltei aqui para te mostrar os exercícios avançados que fiz, acredito que estejam certos. ^^

1:
Spoiler

def divisores(d)
  d1 = d % 3
  d2 = d % 4
  d3 = d % 5
  p "Divisível por 3" if d1 == 0
  p "Divisível por 4" if d2 == 0
  p "Divisível por 5" if d3 == 0
end

divisores(90)
[close]

2: (OBS: Obrigado pela dica dos floats ^^)
Spoiler

class Aleatory
  def metho1(a,b)
    @a = a
    @b = b
    if a % b == 0
      p metho2
    else
      p metho3
    end
  end 
  def metho2
    return @a / @b
  end
  def metho3
    return @a / @b
  end
end

test = Aleatory.new
test.metho1(6.0,2.0)
[close]

Dá uma olhada aí, ^^
"Pode-se enganar a todos por algum tempo; pode-se enganar alguns por todo o tempo; mas não se pode enganar a todos todo o tempo."

Ei, você, você mesmo! Tá afim de ver um projeto legal? Clica embaixo!


Citação de: SuperPig online 26/01/2014 às 00:27
Opa, hola Raizen! Como estou persistindo no RGSS3, voltei aqui para te mostrar os exercícios avançados que fiz, acredito que estejam certos. ^^

1:
Spoiler

def divisores(d)
  d1 = d % 3
  d2 = d % 4
  d3 = d % 5
  p "Divisível por 3" if d1 == 0
  p "Divisível por 4" if d2 == 0
  p "Divisível por 5" if d3 == 0
end

divisores(90)
[close]

2: (OBS: Obrigado pela dica dos floats ^^)
Spoiler

class Aleatory
  def metho1(a,b)
    @a = a
    @b = b
    if a % b == 0
      p metho2
    else
      p metho3
    end
  end 
  def metho2
    return @a / @b
  end
  def metho3
    return @a / @b
  end
end

test = Aleatory.new
test.metho1(6.0,2.0)
[close]

Dá uma olhada aí, ^^

Muitoooo bom :D, de verdade. Não vejo como poderia ser muito melhor, fico feliz de estar acompanhando, agora faltam poucas aulas pela frente :)

Mais um dever pronto, fiz os fáceis e os intermediários
#-------------------------------------------------------------------------------
#                           Dever de Condições
#-------------------------------------------------------------------------------

#Fáceis

class Links1
  def laranjas
    laranja = 10
  if laranja = 12
    p "Tenho uma dúzia de laranjas"
  else
    p "Não tenho uma dúzia de laranjas"
  end
end
  def horas
    hora = 20
  if hora % 2 == 0
    p "A hora é par"
  else
    p "A hora é ímpar"
  end
end
  end
  resultado1 = Links1.new
  resultado1.laranjas
  resultado1.horas
  
#Intermediários

#Original
red = 5
if red == 1 then
  p "red eh 1"
else 
  if red == 2 then
    p "red eh 2"
  else
    if red == 3 then
      p "red eh 3"
    else
      p "red nao é nenhum dos anteriores"
    end
  end
end

#Reduzido
red = 5
if red == 1
  p "red eh 1"
elsif red == 2
  p "red eh 2"
elsif red == 3
  p "red eh 3"
else
  p "red não é nenhum dos anteriores"
end

class Links2
  def somar(x, y)
    soma = x + y
  if soma > 10
    p "A soma é maior que 10"
  else
    p "A soma é menor que 10"
  end
end
  end
  resultado2 = Links2
  resultado2.somar(7, 6)

Só não entendi uma coisa, o segundo intermediário eu fiz só que quando testo dá erro, o que fiz de errado? Obs.: Esses números depois das palavras é por que acho que pode dar conflito com os scripts das outras aulas.

Citação de: Linksplays online 24/05/2015 às 21:05
Mais um dever pronto, fiz os fáceis e os intermediários
#-------------------------------------------------------------------------------
#                           Dever de Condições
#-------------------------------------------------------------------------------

#Fáceis

class Links1
  def laranjas
    laranja = 10
  if laranja = 12
    p "Tenho uma dúzia de laranjas"
  else
    p "Não tenho uma dúzia de laranjas"
  end
end
  def horas
    hora = 20
  if hora % 2 == 0
    p "A hora é par"
  else
    p "A hora é ímpar"
  end
end
  end
  resultado1 = Links1.new
  resultado1.laranjas
  resultado1.horas
  
#Intermediários

#Original
red = 5
if red == 1 then
  p "red eh 1"
else 
  if red == 2 then
    p "red eh 2"
  else
    if red == 3 then
      p "red eh 3"
    else
      p "red nao é nenhum dos anteriores"
    end
  end
end

#Reduzido
red = 5
if red == 1
  p "red eh 1"
elsif red == 2
  p "red eh 2"
elsif red == 3
  p "red eh 3"
else
  p "red não é nenhum dos anteriores"
end

class Links2
  def somar(x, y)
    soma = x + y
  if soma > 10
    p "A soma é maior que 10"
  else
    p "A soma é menor que 10"
  end
end
  end
  resultado2 = Links2
  resultado2.somar(7, 6)

Só não entendi uma coisa, o segundo intermediário eu fiz só que quando testo dá erro, o que fiz de errado? Obs.: Esses números depois das palavras é por que acho que pode dar conflito com os scripts das outras aulas.

resultado2 = Links2

Não faltou o .new xD? Para instanciar a classe :)?

Do jeito que fez daria certo de outro modo, mas ai é nas aulas avançadas que verá, mas acho que só faltou isso mesmo.

Citação de: Raizen online 25/05/2015 às 10:15
Citação de: Linksplays online 24/05/2015 às 21:05
Mais um dever pronto, fiz os fáceis e os intermediários
#-------------------------------------------------------------------------------
#                           Dever de Condições
#-------------------------------------------------------------------------------

#Fáceis

class Links1
  def laranjas
    laranja = 10
  if laranja = 12
    p "Tenho uma dúzia de laranjas"
  else
    p "Não tenho uma dúzia de laranjas"
  end
end
  def horas
    hora = 20
  if hora % 2 == 0
    p "A hora é par"
  else
    p "A hora é ímpar"
  end
end
  end
  resultado1 = Links1.new
  resultado1.laranjas
  resultado1.horas
  
#Intermediários

#Original
red = 5
if red == 1 then
  p "red eh 1"
else 
  if red == 2 then
    p "red eh 2"
  else
    if red == 3 then
      p "red eh 3"
    else
      p "red nao é nenhum dos anteriores"
    end
  end
end

#Reduzido
red = 5
if red == 1
  p "red eh 1"
elsif red == 2
  p "red eh 2"
elsif red == 3
  p "red eh 3"
else
  p "red não é nenhum dos anteriores"
end

class Links2
  def somar(x, y)
    soma = x + y
  if soma > 10
    p "A soma é maior que 10"
  else
    p "A soma é menor que 10"
  end
end
  end
  resultado2 = Links2
  resultado2.somar(7, 6)

Só não entendi uma coisa, o segundo intermediário eu fiz só que quando testo dá erro, o que fiz de errado? Obs.: Esses números depois das palavras é por que acho que pode dar conflito com os scripts das outras aulas.

resultado2 = Links2

Não faltou o .new xD? Para instanciar a classe :)?

Do jeito que fez daria certo de outro modo, mas ai é nas aulas avançadas que verá, mas acho que só faltou isso mesmo.

Caraca não acredito que não vi isso vei, vlw ai.
Agora sim:
[code]#-------------------------------------------------------------------------------
#                           Dever de Condições
#-------------------------------------------------------------------------------

#Fáceis

class Links1
  def laranjas
    laranja = 10
  if laranja = 12
    p "Tenho uma dúzia de laranjas"
  else
    p "Não tenho uma dúzia de laranjas"
  end
end
  def horas
    hora = 20
  if hora % 2 == 0
    p "A hora é par"
  else
    p "A hora é ímpar"
  end
end
  end
  resultado1 = Links1.new
  resultado1.laranjas
  resultado1.horas
  
#Intermediários

#Original
red = 5
if red == 1 then
  p "red eh 1"
else 
  if red == 2 then
    p "red eh 2"
  else
    if red == 3 then
      p "red eh 3"
    else
      p "red nao é nenhum dos anteriores"
    end
  end
end

#Reduzido
red = 5
if red == 1
  p "red eh 1"
elsif red == 2
  p "red eh 2"
elsif red == 3
  p "red eh 3"
else
  p "red não é nenhum dos anteriores"
end

class Links2
  def somar1(x, y)
    soma = x + y
  if soma > 10
    p "A soma é maior que 10"
  else
    p "A soma é menor que 10"
  end
end
  end
  resultado2 = Links2.new
  resultado2.somar1(7, 6)


kkkkk

Cara ótimas aulas, estou gostando muito, ai esta meu dever de casa:

Fáceis:

Laranja = 24
if Laranja == 12
  p "Você possui uma dúzia de laranjas"
elsif Laranja < 12
  p "Você possui menos que uma dúzia de laranjas"
else
  p "Você possui mais que uma dúzia de laranjas"
end


horas = 15
if horas % 2 == 0
  p "É par"
else
  p "É impar"
end


Intermediário:

red = 5
case red
if red == 1 then
  p "red é 1"
elsif red == 2 then
  p "red é 2"
elsif red == 3 then
  p "red é 3"
else
  p "red nao é nenhum dos anteriores"
end


def soma(x, y)
  z = x + y
  if z > 10
    p "A soma é maior que 10"
  elsif z < 10
    p "A soma é menor que 10"
  else
    p "A soma é igual a 10"
  end
end

soma(3, 8)


Avançado:

def verifica (x)
  if x % 3 == 0
    p "O número é divisivel por 3"
  end
  if x % 4 == 0
    p "O número é divisivel por 4"
  end
  if x % 5 == 0
    p "O nùmero é divisivel por 5"
  end
end

verifica(15)


class Qualquer
  def metodo1(x, y)
    @x = x
    @y = y
    if x % y == 0
      p metodo2
    else
      p metodo3
    end
  end
  def metodo2
    return @x / @y
  end
  def metodo3
    if @x > @y
      return @x / @y
    else
      return @y / @x
    end
  end
end

q = Qualquer.new
q.metodo1(3.0, 4.0)

11/07/2016 às 00:39 #26 Última edição: 11/07/2016 às 00:42 por Nunnu
@Raizen

Rapaz... que dificuldade que eu tive no último do avançado, acho que não foi como tu queria, mas foi o máximo que consegui encontrar de lógico para se fazer. Me corrija se eu errei em alguns dos exercícios:


Nível Fácil: Exercício 1
Spoiler
#-------------------------------------------------------------------------------
#               Exercício 1 Aula 4 do Raizen RGSS3: NÍVEL FÁCIL
#-------------------------------------------------------------------------------
class Laranja
  def laranjas
    a = 12
    if a == 12
      print "uma dúzia"
    else
      print a
    end
  end
end
var = Laranja.new
var.laranjas
[close]


Nível Fácil: Exercício 2
Spoiler
#-------------------------------------------------------------------------------
#             Exercício 2 Aula 4 do Raizen RGSS3: NÍVEL FÁCIL
#-------------------------------------------------------------------------------
class Tempo
  def horas
  hrs = 12
    if hrs % 2 == 1
      print "Número ímpar."
    else
      print "Número par."
    end
  end
end
var = Tempo.new
var.horas
[close]


Nível Intermediário: Exercício 1 e 2
Spoiler
#-------------------------------------------------------------------------------
#          Exercício 1 e 2 Aula 4 do Raizen RGSS3: NÍVEL INTERMEDIÁRIO   
#-------------------------------------------------------------------------------
class Red_class
  def red
    red = 5
    if red == 1 then p "red eh 1"
    else 
      if red == 2 then p "red eh 2"
      else 
        if red == 3 then p "red eh 3"
        else
          p "red nao é nenhum dos anteriores"
        end
      end
    end
  end          
#-------------------------------------------------------------------------------
  def red1(a, b)
    if a + b > 10
      print "acima de 10"
    elsif a + b == 10
      print ""
    else
      print "abaixo de 10"
    end
  end
end
var = Red_class.new
var.red
var.red1(5, 5)
[close]


Nível Avançado: Exercício 1
Spoiler
#-------------------------------------------------------------------------------
#              Exercício 1 Aulas 4 do Raizen RGSS3: NÍVEL AVANÇADO
#-------------------------------------------------------------------------------
class Number
  def divo(a)
    if a % 3 == 0 then print "É divisível por 3.\n" end
    if a % 4 == 0 then print "É divisível por 4.\n" end
    if a % 5 == 0 then print "É divisível por 5.\n" end
    if a % 3 != 0 and a % 4 != 0 and a % 5 != 0
      print "Não é divisível por nenhum."
    end
  end
end
var2 = Number.new
var2.divo(3)
[close]


Nível Avançado: Exercício 2
Spoiler
#-------------------------------------------------------------------------------
#              Exercício 2 Aulas 4 do Raizen RGSS3: NÍVEL AVANÇADO
#-------------------------------------------------------------------------------
class Nunnu
  def met1
    @x = 2.0
    @y = 4.0
    if @x / @y % 1 == 0
      p met2
    else
      p met3
    end
  end

  def met2
    @x = 2
    @y = 4
    if @x > @y == true
      @x / @y
    else
      @y / @x
    end
  end

  def met3
    if @x > @y == true
      @x / @y
    else
      @y / @x
    end
  end
end
var = Nunnu.new
var.met1
[close]


Desculpe ter que fazer tu trabalhar mais xD, tá cheio de exercício pendente. Mas é que realmente é importante pra mim aprender Ruby atualmente, preciso saber se estou indo no caminho certo. As tuas aulas são muito boas e tal, mas o que eu mais gosto são dos exercícios, se não fosse isso não lembraria tão facilmente do que aprendi.

Resumindo, está muito bom seu trabalho, continue com as aulas se já não terminou.

OBS: Desculpem em reviver o tópico, mas é importante pra mim saber meu desempenho.
Feito por:   King Gerar          ManecBR3
                   
                   (um gato)            (outro gato)