AR삽질러

Ruby 戻り返し処理 본문

Ruby/Ruby-日本語

Ruby 戻り返し処理

아랑팡팡 2023. 12. 18. 19:41
728x90

 

Ruby 戻り返し処理

 

繰り返し処理を行いたい特に使う、次のメソッドを学習。

each

for

times

while

upto, downto

step

loop, braeak, next

 

1. 繰り返し処理 each

 配列やハッシュ.each do |変数|
 	# 繰り返し実行したい処理。
 end

 - 配列の要素を最初から最後まで順番に取り出しながら、処理を実行する。

 

例題1 each

1) 配列numbersを作成 (1, 2, 3, 4, 5)

2) 配列の要素を一つづつ取り出して出力

def number
    numbers = [1, 2, 3, 4, 5]

    numbers.each do |number|
        puts number
    end

    numbers.each {|number|
        puts number
    }

    numbers.each {|number| puts number }
end

number

 

例題2 each 

1) 配列colorsを作成  red, green, blue

2) 配列の要素を一つづつ取り出して出力

def color
    colors = ['red', 'green', 'blue']

    colors.each do |color|
        puts color
    end
end

color

 

2. 繰り返し処理 for

forループはeachと同様の方法で動作しますが、ルビーでは一般的にeachの方が好まれます。

for 変数 in 配列やハッシュ do
	# 繰り返し実行したい処理。
end

 

例題1 for

1) 配列numbersを作成 (1, 2, 3, 4, 5)

2) 配列の要素を一つづつ取り出して出力

def number_for
    numbers = [1,2,3,4,5]

    for number in numbers do
        puts number
    end
end

number_for

 

forは原則使わない

慣習としてeachでもforでも書ける時は、eachを用いる。

"for"は、どうしても使わなければいけない明確な理由が明言できる人以外は、使ってはいけません。: The Ruby Style Guideより。

 


1. 繰り返し処理 ( ハッシュの場合)

例題 each (ハッシュ利用)

 1. ハッシュで生徒のごとの点数scoresを用意

  - { luke: 100, jack: 90, robert: 70 }

 2. 配列の要素を一つづつ取り出して出力

def socres_each
    scores = { luke: 100, jack: 90, robert: 70 }
    scores.each do |k, v|
        # puts "Value : " + v.to_s
        if v >= 80
            puts "#{k} : #{v}"
        end
    end
end

socres_each

 

 

3. 繰り返し処理 times

 - 配列を使わずに、単純にn回処理を繰り返してい場合は、Integerクラスのtimesメソッドを使うと便利

 - timesメソッドは、与えられた回数だけブロックを繰り返し実行します。

繰り返し回数.times do |i|
	# 繰り返し実行したい処理。
end   

 |i|は省略可能

 

例題

timesを使って、5回 ’Hello!' と出力する。

def tiems_roof
    5.times do |i|
        puts "#{i} : Hello!"
    end
end

tiems_roof

 

 

4. 繰り返し処理 while

while 条件式 do
	# 繰り返し実行したい処理。
end

 - whileループは、与えられた条件が真の間にコードブロックを繰り返し実行します。

 

例題 while

 - 数字0から9まで、10個出力するプログラムをwhileを使って書いてみましょう。

def while_example
    i = 0
    while i < 10 do
        puts i
        i += 1
    end
end

while_example

 

 

5. 繰り返し処理 upto, downto

uptoとdowntoは数字の範囲のために使用されます。 uptoは開始値から終了値まで増加し、downtoは開始値から終了値まで減少しながらブロックを実行します。

 

upto

 - nからmまで数値を1づつ増やしながら何かしらの処理を実行したい場合に使う

 

構文

開始直.upto( 終了値 ) { 繰り返し実行したい処理 }

 

例題1

 - 数値を10から14まで1づつ増やしながら、値を出力

 - uptoを使用する

def upto_example
    10.upto(14) { |n| puts n }
end

upto_example

 

downto

 - nからmまで数値を1づつ減らしながら何かしらの処理を実行したい場合に使う

 

構文

開始直.downto( 終了値 ) { 繰り返し実行したい処理 }

 

例題2

 - 数値を10から14まで1づつ減らしながら、値を出力

 - downtoを使用する

def downto_example
    14.downto(10) { |n| puts n }
end

downto_example

 

 

6. 繰り返し処理 step

 - nからm までxずつ値を増やしながら、何かしらの処理を実行したい時に利用。1, 3, 5, 7, 9

 -ステップメソッドは、開始値から終了値まで指定された間隔だけ増加または減少しながらブロックを実行します。

 

構文step

 開始式.step(上限値、一度に増減する大きさ ) {}

 

例題1

 - 数値を1から10まで2ずつ増やしながら出力する。

def step_example
    1.step(10, 2) { |n| puts n }
end

step_example

 

例題2

 - 数値を10から1まで2ずつ減らしながら出力する。

def step_example
    1.step(10, 2) { |n| puts n }

    10.step(1, -2) { |n| puts n }
end

step_example

 

 

7. 繰り返し処理 loop, braeak, next

 1) 繰り返し処理 loop

  - あえて無限ループを作りたい時に利用する。

  - loopは無限ループを生成します。 一般的にbreakやnextと一緒に使用してループを制御します。

 

  - break:ループを完全に終了します。

  - next:ループの現在の反復をスキップし、次の反復に進みます。

 

構文 loop

loop do
	# 繰り返し実行したい処理
end

 

例題1

 - loopメソッドを使って、変数の値を0から1ずつ増やしながら出力。

def loop_example
    i = 0
    loop do
        puts i
        i += 1
    end
end

loop_example

 

例題2

 - whileで書き換える

def loop_example
    i = 0
    while true
        puts i
        i += 1
    end
end

loop_example

 

例題3

 - 0から 9まで出力するプログラムをloopを使って、書く。

def loop_example
    i = 0

    loop do
        puts i
        i += 1
        break if i > 9
    end
end

loop_example

 

例題3

 - 配列 [1, 2, 3, 4, 5 ]の値が、奇数の場合のみ、画面に出力する処理。

 - eachとnextを利用

def loop_example
    numbers = [1, 2, 3, 4, 5]
    numbers.each do |n|
        # next if n % 2 == 0
        next if n.even?
        puts n
    end
end

loop_example

 

 

例題4

 - 配列 [1, 2, 3, 4, 5 ]に入った数値が、偶数の場合のみ、画面に出力する処理。

 - eachとnextを利用

def loop_example
    numbers = [1, 2, 3, 4, 5]
    numbers.each do |n|
        next if n % 2 != 0
        puts n
    end
end

loop_example

 

def loop_example
    numbers = [1, 2, 3, 4, 5]
    numbers.each do |n|
        # next if n % 2 != 0
        next if n.odd?
        puts n
    end
end

loop_example

 

 


 

問題 1-1
 - Eachを使って配列要素を出力する
 - 配列[1, 2, 3, 4, 5] の各要素を出力するプログラムを作成

def example
    arr = [1, 2, 3, 4, 5]
    arr.each do | number | 
        puts number
    end
end

example

 

問題 1-2

 - Timesを使用して文字列を繰り返し出力する
 - 文字列"Hello Ruby!"を5回出力するプログラムを作成してください。

def example
    n = 5
    n.times do
        puts "Hello!"
    end
end

example

 

問題 2-1
Whileを使用して条件を満たすまで数字を足す
0から始めて数字を1つずつ加えて、合計が100を超えると止まるプログラムを作成してください。

def example
    i = 0
    sum = 0
    while sum <= 100
        i += 1
        sum += i
    end

    puts "最後の i : #{i}"
    puts "sum : #{sum}"
end

example

 

問題 2-2

Uptoを使用して九 を出力する
2 段を出力するプログラムを作成してください。

def example
    gugu = 1
    gugu.upto(9) do |i|
        puts "2 * #{i} = #{2 * i}"
    end
end

example

 

問題 3-1
Stepを使用して偶数のみ出力する
1 から 100 までの数字の中から偶数のみを出力するプログラムを作成してください。

def example
    i = 2
    i.step(100, 2) do |number|
        if number.even?
            puts number
        else
            puts number
        end
      end
      
end

example

 

 

 

 

 

 

 

728x90
반응형
LIST

'Ruby > Ruby-日本語' 카테고리의 다른 글

Ruby Class例題 - 銀行口座管理システム  (1) 2023.12.19
Ruby オリジナルのクラスを作成する  (0) 2023.12.18
Ruby ハッシュ  (0) 2023.12.18
Ruby 配列  (2) 2023.12.18
Ruby 出力puts, print, p, pp  (0) 2023.12.16