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

Looping(laço)

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

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
      
    



Próximas Aulas


Hash

Nesta aula iremos aprender um objeto muito importante para programadores ruby. O Hash te ajuda a map...

Funções

Nesta aula iremos aprender como criar e estruturar uma função em ruby, veremos como retornar e passa...

Funções recursivas

Nesta aula iremos aprender um pouco mais sobre funções, iremos ver mais uma forma de utilizar a funç...

Orientação a objetos - instância e construtor

Nesta aula iremos aprender o como criar uma classe, uma instância e a utilização de construtores em ...

Orientação a Objetos - Accessors

Nesta aula iremos aprender como criar propriedades em uma classe ruby, iremos criar propriedades de ...

Orientação a Objetos - Herança

Nesta aula iremos aprender sobre herança, mais uma aula de orientação a objetos em Ruby, com a heran...

Orientação a Objetos - public, private, protected

Nesta aula iremos aprender as marcações public, private, protected e veremos as diferenças entre ela...

Orientação a objetos - Polimorfismo e Overload

Nesta aula iremos aprender como fazer polimorfismo no Ruby, também iremos ver como funciona o overlo...



Danilo

Arquiteto de software, analista, programador, professor. Danilo criou o projeto torne-se um programador, para passar o seu conhecimento para a nova geração. Com o intuito de ser um bom pai, Danilo trabalha muito motivado para garantir o futuro de sua filha.

ELEVE SEUS GANHOS E POTENCIALIZE SUA PERFORMANCE

Receba nossa Ebook de LÓGICA DE PROGRAMAÇÃO

© Didox Business & Technology - CNPJ: 12.127.195/0001-14