Looping

Nesta aula iremos ver comandos como each, times, until, while, que são comandos utilizados para execução de loopings na linguagem ruby.

assinaturaAssine nossa Comunidade

Looping(laço)

Estruturas de Repetição em Ruby(loop).

  • while
  • until
  • loop
  • times
  • for
  • each
  • map

Exemplo while, note que o parênteses é opcional, enquanto index for menor que 5 ele irá imprimir o valor de index na tela.

      
        index = 0
        while index < 5 
          puts index
        end
      
    

Esse código imprime a mensagem 5 vezes no console incrementando o index a cada loop.

      
        index = 0
        puts "O index é #{index+=1}" while index < 5 
      
    

Esse código imprime o valor de i na tela a cada loop.

      
        10.times do |i|
         puts i
        end
      
    

Aula Prática

Como de praxe copie o arquivo padrão das aulas anteriores para seguir conforme o padrão.

      
        top = 4
        now = 0
        while now < top
            puts "while #{now} .. #{top}"
            now += 1
        end          
      
    

While em 1 linha

      
        top = 4
        now = 0
        print "#{now+=1} " while now < top
        print "\n"             
      
    

Until

      
        top = 4
        now = 0
        until now > top
            puts "until #{now} .. #{top}"
            now += 1
        end                     
      
    

Until em 1 linha

      
        top = 4
        now = 0
          puts "until #{now += 1} .. #{top}" until now >= top              
      
    

Loop infinito

      
        loop do |index|
          puts "oi"
        end             
      
    

Para parar a execução use Control + C

Código com tratamento evitando o Loop infinito, ele vai "quebrar" o loop assim que index for maior que 20

      
        index = 0

        loop do
          puts index
          index += 1

          break if index > 20
        end             
      
    

No código abaixo temos o comando next que pula a execução pro próximo loop assim que a condição for verdadeira, neste caso pulando a exibição do numero 5 e 8, observe que desta forma devemos iterar antes do next para que não entre em loop infinito.

      
        index = 0

        loop do
          index += 1
          next if index == 5 or index == 8
          puts index

          break if index > 20
        end             
      
    

Times uma linha

      
        5.times{ |index| puts index } 
      
    

Times em bloco

      
        5.times do |index|
          puts index
        end
      
    

For - esse script pega os numeros ímpares até 7

      
        for i in 0..7
          next if i % 2 == 0
          puts i
        end
      
    

Observação: O range 0..7 executa 8 vezes, para que execute somente 7 vezes deve utilizar três pontos no range: 0...7

Comparação do Times com For - esse script pega os numeros ímpares até 7

      
        8.times do |i|
          next if i % 2 == 0
          puts i
        end
      
    

Times - esse script pega os numeros pares até 7

      
        8.times do |i|
          next if i % 2 != 0
          puts i
        end
      
    

Each

      
        (1..7).each{|i| puts i}
      
    

Observação: O range é um objeto, (0..7).class retorna a classe Range.

Select - Faz uma filtragem em um array com base num valor lógico

      
      a = [1,2,3,4,5].select{|i| i > 4}
      puts a.to_s
      
    

Map - Faz uma filtragem em um array de um dado já formatado

      
      a = [1,2,3,4,5].map{|i| "oi - #{i}"}
      puts a.to_s
      
    

Map com Each

      
      a = [1,2,3,4,5].map{|i| "oi - #{i}"}
      a.each do |i|
        puts i
      end
      
    

Looping

Nesta aula iremos ver comandos como each, times, until, while, que são comandos utilizados para execução de loopings na linguagem ruby.

Próximas Aulas:
assinaturaAssine nossa Comunidade

Looping(laço)

Estruturas de Repetição em Ruby(loop).

  • while
  • until
  • loop
  • times
  • for
  • each
  • map

Exemplo while, note que o parênteses é opcional, enquanto index for menor que 5 ele irá imprimir o valor de index na tela.

      
        index = 0
        while index < 5 
          puts index
        end
      
    

Esse código imprime a mensagem 5 vezes no console incrementando o index a cada loop.

      
        index = 0
        puts "O index é #{index+=1}" while index < 5 
      
    

Esse código imprime o valor de i na tela a cada loop.

      
        10.times do |i|
         puts i
        end
      
    

Aula Prática

Como de praxe copie o arquivo padrão das aulas anteriores para seguir conforme o padrão.

      
        top = 4
        now = 0
        while now < top
            puts "while #{now} .. #{top}"
            now += 1
        end          
      
    

While em 1 linha

      
        top = 4
        now = 0
        print "#{now+=1} " while now < top
        print "\n"             
      
    

Until

      
        top = 4
        now = 0
        until now > top
            puts "until #{now} .. #{top}"
            now += 1
        end                     
      
    

Until em 1 linha

      
        top = 4
        now = 0
          puts "until #{now += 1} .. #{top}" until now >= top              
      
    

Loop infinito

      
        loop do |index|
          puts "oi"
        end             
      
    

Para parar a execução use Control + C

Código com tratamento evitando o Loop infinito, ele vai "quebrar" o loop assim que index for maior que 20

      
        index = 0

        loop do
          puts index
          index += 1

          break if index > 20
        end             
      
    

No código abaixo temos o comando next que pula a execução pro próximo loop assim que a condição for verdadeira, neste caso pulando a exibição do numero 5 e 8, observe que desta forma devemos iterar antes do next para que não entre em loop infinito.

      
        index = 0

        loop do
          index += 1
          next if index == 5 or index == 8
          puts index

          break if index > 20
        end             
      
    

Times uma linha

      
        5.times{ |index| puts index } 
      
    

Times em bloco

      
        5.times do |index|
          puts index
        end
      
    

For - esse script pega os numeros ímpares até 7

      
        for i in 0..7
          next if i % 2 == 0
          puts i
        end
      
    

Observação: O range 0..7 executa 8 vezes, para que execute somente 7 vezes deve utilizar três pontos no range: 0...7

Comparação do Times com For - esse script pega os numeros ímpares até 7

      
        8.times do |i|
          next if i % 2 == 0
          puts i
        end
      
    

Times - esse script pega os numeros pares até 7

      
        8.times do |i|
          next if i % 2 != 0
          puts i
        end
      
    

Each

      
        (1..7).each{|i| puts i}
      
    

Observação: O range é um objeto, (0..7).class retorna a classe Range.

Select - Faz uma filtragem em um array com base num valor lógico

      
      a = [1,2,3,4,5].select{|i| i > 4}
      puts a.to_s
      
    

Map - Faz uma filtragem em um array de um dado já formatado

      
      a = [1,2,3,4,5].map{|i| "oi - #{i}"}
      puts a.to_s
      
    

Map com Each

      
      a = [1,2,3,4,5].map{|i| "oi - #{i}"}
      a.each do |i|
        puts i
      end