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

[Ruby] Aula 5 - Estruturas de Repetição

Iniciado por Raizen, 26/04/2013 às 11:30

Citação de: Nunnu online 15/07/2016 às 20:10
@Raizen
Tive bastante dificuldade no dos números primos e no da raiz quadrada, o do números primos eu não usei repetição, não consegui encontrar um jeito, mas aprendi umas coisas que talvez eu consiga agora, mas já to sem saco de ficar mais um tempo tentando nesse. De qualquer forma, o da raiz quadrada tive uns problemas com arredondamento, já que a soma de "0.01" não é exata, até fiz um tópico pedindo ajuda, se puder avaliar agradeço.


FÁCEIS:
Spoiler
#-------------------------------------------------------------------------------
#               Exercício 1 Aula 5 do Raizen RGSS3: NÍVEL FÁCIL               
#-------------------------------------------------------------------------------
a = 0
while a != 20
  a += 2
  p a
end


#-------------------------------------------------------------------------------
#               Exercício 2 Aula 5 do Raizen RGSS3: NÍVEL FÁCIL               
#-------------------------------------------------------------------------------
Mult = 10
for a in Mult..Mult * 10
  if a % Mult == 0 then p a end
end
[close]


MÉDIO:
Spoiler
#-------------------------------------------------------------------------------
#               Exercício 1 Aula 5 do Raizen RGSS3: NÍVEL MÉDIO               
#-------------------------------------------------------------------------------
class Nunnu
  def operações
    @a = 2
    @b = 2
    loop do
      soma
      subtração
      multiplicação
      divisão
    end
  end

  def soma
    loop do
      p @a + @b
      break
    end
  end
  
  def subtração
    loop do
      p @a - @b
      break
    end
  end
  
  def multiplicação
    loop do
      p @a * @b
      break
    end
  end
  
  def divisão
    loop do
      p @a / @b
      break
    end
  end
end
nun = Nunnu.new
nun.operações


#-------------------------------------------------------------------------------
#               Exercício 2 Aula 5 do Raizen RGSS3: NÍVEL MÉDIO               
#-------------------------------------------------------------------------------
class Nunnu
  def mmc
    a = 6
    b = 4
    c = 1
    while c % a != 0 or c % b != 0
      c += 1
    end
    p c
  end
end
nun = Nunnu.new
nun.mmc
[close]


DIFÍCEIS:
Spoiler
#-------------------------------------------------------------------------------
#              Exercício 1 Aula 5 do Raizen RGSS3: NÍVEL DIFÍCIL               
#-------------------------------------------------------------------------------
class Nunnu
  def met1(a)
    if a == 1
      print "Não é um número primo."
      return
    end
    if a == 2 or a == 3
      print "É um número primo."
      return
    end
    if a % 2 == 0 or a % 3 == 0 or a % 5 == 0
      print "Não é um número primo."
    else
      print "É um número primo."
    end
  end
end
nun = Nunnu.new
nun.met1(3)

#-------------------------------------------------------------------------------
#              Exercício 2 Aula 5 do Raizen RGSS3: NÍVEL DIFÍCIL               
#-------------------------------------------------------------------------------
a = 25
b = 1.00
while b * b  < a
  b += 0.01
  b * b
end
p b.round(2)
[close]

Eu não consigo pensar em outra forma de fazer o primeiro exercício dos difíceis, o dos números primos, a não ser a forma que o nunnu fez, apenas encontrei um pequeno erro, que é: quando eu coloco o numero 5 a ser testado, ele retorna a resposta de que o numero 5 não é primo, tomei a liberdade de corrigir no próprio código e ficou assim:

Spoiler
class Nunnu
  def met1(a)
    if a == 1
      print "Não é um número primo."
      return
    end
    if a == 2 or a == 3 or a == 5
      print "É um número primo."
      return
    end
    if a % 2 == 0 or a % 3 == 0 or a % 5 == 0
      print "Não é um número primo."
    else
      print "É um número primo."
    end
  end
end
nun = Nunnu.new
nun.met1(5)
[close]

não encontrei mais erros, mas não sei se é possível fazer esse exercício com os comandos de repetição (eu pelo menos não consigo pensar em uma forma de fazer isso)

já o segundo exercício sobre raiz quadrada, não consigo nem de longe pensar numa forma de resolver, e não entendi muito bem nem vendo o código do nunnu, se puder me passar a resposta pra eu tentar entender eu agradeço Raizen  :*-*:

e tenho uma pequena duvida, o que seria esse comando "return" dentro do if? obrigado  :XD:
YO :3

11/01/2017 às 20:50 #16 Última edição: 11/01/2017 às 20:57 por Conspiracy
Citação de: Akugam online 11/01/2017 às 20:15
Spoiler
Citação de: Nunnu online 15/07/2016 às 20:10
@Raizen
Tive bastante dificuldade no dos números primos e no da raiz quadrada, o do números primos eu não usei repetição, não consegui encontrar um jeito, mas aprendi umas coisas que talvez eu consiga agora, mas já to sem saco de ficar mais um tempo tentando nesse. De qualquer forma, o da raiz quadrada tive uns problemas com arredondamento, já que a soma de "0.01" não é exata, até fiz um tópico pedindo ajuda, se puder avaliar agradeço.


FÁCEIS:
Spoiler
#-------------------------------------------------------------------------------
#               Exercício 1 Aula 5 do Raizen RGSS3: NÍVEL FÁCIL               
#-------------------------------------------------------------------------------
a = 0
while a != 20
  a += 2
  p a
end


#-------------------------------------------------------------------------------
#               Exercício 2 Aula 5 do Raizen RGSS3: NÍVEL FÁCIL               
#-------------------------------------------------------------------------------
Mult = 10
for a in Mult..Mult * 10
  if a % Mult == 0 then p a end
end
[close]


MÉDIO:
Spoiler
#-------------------------------------------------------------------------------
#               Exercício 1 Aula 5 do Raizen RGSS3: NÍVEL MÉDIO               
#-------------------------------------------------------------------------------
class Nunnu
  def operações
    @a = 2
    @b = 2
    loop do
      soma
      subtração
      multiplicação
      divisão
    end
  end

  def soma
    loop do
      p @a + @b
      break
    end
  end
  
  def subtração
    loop do
      p @a - @b
      break
    end
  end
  
  def multiplicação
    loop do
      p @a * @b
      break
    end
  end
  
  def divisão
    loop do
      p @a / @b
      break
    end
  end
end
nun = Nunnu.new
nun.operações


#-------------------------------------------------------------------------------
#               Exercício 2 Aula 5 do Raizen RGSS3: NÍVEL MÉDIO               
#-------------------------------------------------------------------------------
class Nunnu
  def mmc
    a = 6
    b = 4
    c = 1
    while c % a != 0 or c % b != 0
      c += 1
    end
    p c
  end
end
nun = Nunnu.new
nun.mmc
[close]


DIFÍCEIS:
Spoiler
#-------------------------------------------------------------------------------
#              Exercício 1 Aula 5 do Raizen RGSS3: NÍVEL DIFÍCIL               
#-------------------------------------------------------------------------------
class Nunnu
  def met1(a)
    if a == 1
      print "Não é um número primo."
      return
    end
    if a == 2 or a == 3
      print "É um número primo."
      return
    end
    if a % 2 == 0 or a % 3 == 0 or a % 5 == 0
      print "Não é um número primo."
    else
      print "É um número primo."
    end
  end
end
nun = Nunnu.new
nun.met1(3)

#-------------------------------------------------------------------------------
#              Exercício 2 Aula 5 do Raizen RGSS3: NÍVEL DIFÍCIL               
#-------------------------------------------------------------------------------
a = 25
b = 1.00
while b * b  < a
  b += 0.01
  b * b
end
p b.round(2)
[close]

Eu não consigo pensar em outra forma de fazer o primeiro exercício dos difíceis, o dos números primos, a não ser a forma que o nunnu fez, apenas encontrei um pequeno erro, que é: quando eu coloco o numero 5 a ser testado, ele retorna a resposta de que o numero 5 não é primo, tomei a liberdade de corrigir no próprio código e ficou assim:

Spoiler
class Nunnu
  def met1(a)
    if a == 1
      print "Não é um número primo."
      return
    end
    if a == 2 or a == 3 or a == 5
      print "É um número primo."
      return
    end
    if a % 2 == 0 or a % 3 == 0 or a % 5 == 0
      print "Não é um número primo."
    else
      print "É um número primo."
    end
  end
end
nun = Nunnu.new
nun.met1(5)
[close]

não encontrei mais erros, mas não sei se é possível fazer esse exercício com os comandos de repetição (eu pelo menos não consigo pensar em uma forma de fazer isso)

já o segundo exercício sobre raiz quadrada, não consigo nem de longe pensar numa forma de resolver, e não entendi muito bem nem vendo o código do nunnu, se puder me passar a resposta pra eu tentar entender eu agradeço Raizen  :*-*:

e tenho uma pequena duvida, o que seria esse comando "return" dentro do if? obrigado  :XD:
[close]

Então, (me intrometendo aqui, para te responder.) o "return" é um comando utilizado que encerra a função.
Utilizando o return, ao invés da função terminar no end. Ela ignora todos os comandos depois dele, e finaliza.
Como em:
def minha_funcao
  for var in 0..10
    return if var == 2
  end
end

No código acima, a funcao "retorna" quando var for 2, e não chega nos valores 3 ou mais.
obs.: o return tem outras funções, mas o raizen deve falar disso depois.
Writing codes. Writing novels. Writing... Fates.

Entendo... Obrigado pela explicação XD
Deu pra pegar a ideia, parece realmente útil.
YO :3

class John 
  def tarefa_parte1
    for a in 0..20
      if a % 2
      p a 
      a +=1
    end
  end
end
   
   def tarefa_parte2
     for b in 0..20
       if b % 5 == 
         p b
         b +=1
      end
    end
  end  
end


resultado = John.new
resultado.tareta_parte1
resultado.tareta_parte2

Citação de: nomefausoJOHN online 27/07/2019 às 02:41
class John 
  def tarefa_parte1
    for a in 0..20
      if a % 2
      p a 
      a +=1
    end
  end
end
   
   def tarefa_parte2
     for b in 0..20
       if b % 5 == 
         p b
         b +=1
      end
    end
  end  
end


resultado = John.new
resultado.tareta_parte1
resultado.tareta_parte2

Boa! Tente fazer os outros mais complicados também depois!  :ok:
A tarefa 2 está faltando algo, a 1 está quase 100% ok, você só não precisa disso
a +=1

O for por padrão já soma 1 no ruby, ele é um while que tem essa soma imbutido nele.

De qualquer forma, está de parabéns, você está comendo código haha, umas 2h antes disso estava começando a aprender  :o: , se tiver alguma dúvida só chamar!