↓↓クリックして頂けると励みになります。
【07 | while】 << 【ホーム】 >> 【09 | 論理演算】
Rubyのfor文は、指定した範囲やコレクションの要素を順番に処理するためのループ文です。
Visual Studio Codeで次の繰り返しのプログラムを作ってみましょう。
新規作成 【fortest1.rb】
# fortest1.rb for i in 1..5 do puts 'ようこそ!Rubyの世界へ!' + '(i = ' + i.to_s + ')' end
このプログラムは、for文という構文を使っています。
for 変数 in 範囲 do end
変数の指定は必ず行います。
範囲で指定した回数分繰り返しを続けます。
ではプログラムを見ていきましょう。
変数 i
を宣言して、範囲で指定した「1〜5」の値を順に変数i
に代入しながらループします。
変数i
の値が5になったらループが終わります。
メッセージは全部で5個表示されます。
これを、While文で書き換えると次のようになります。
i=1 while i<=5 do puts 'ようこそ!Rubyの世界へ!' + '(i = ' + i.to_s + ')' i += 1
出力結果です。
~/Desktop/Programming/RB $ ruby fortest1.rb ようこそ!Rubyの世界へ!(i = 1) ようこそ!Rubyの世界へ!(i = 2) ようこそ!Rubyの世界へ!(i = 3) ようこそ!Rubyの世界へ!(i = 4) ようこそ!Rubyの世界へ!(i = 5)
他にも色々な繰り返しのプログラムを作ってみましょう。
Visual Studio Codeで以下のRubyプログラムを作成します。
新規作成 【fortest2.rb】
# fortest2.rb puts 'まだループの外です。' for count in 1..5 do puts 'ループの中です。:' + count.to_s end puts 'ループの外に出ました。'
出力結果です。
~/Desktop/Programming/RB $ ruby fortest2.rb まだループの外です。 ループの中です。:1 ループの中です。:2 ループの中です。:3 ループの中です。:4 ループの中です。:5 ループの外に出ました。
Visual Studio Codeで次の繰り返しのプログラムを作ってみましょう。
新規作成 【fortest3.rb】
# fortest3.rb loop do x = rand(0.1..0.9) puts 'x=' + x.to_s if x > 0.5 then break end end puts 'ブレイクしてループを抜けました。'
for文では条件を指定しないで無限ループを作ることが出来ません。
無限ループを作りたい時はloop do
メソッドを使います。
出力結果です。
~/Desktop/Programming/RB $ ruby fortest3.rb x=0.662483820487922 ブレイクしてループを抜けました。
Visual Studio Codeで次の二重ループするプログラムを作ってみましょう。
新規作成 【fortest4.rb】
# fortest4.rb for x in 1..9 do for y in 1..9 do if x*y < 10 then print (x*y).to_s + ' ' else print (x*y).to_s + ' ' end end puts '' end
では、プログラムの内容をみていきましょう。
rubyではループの中でループを記述することができます。
これは、九九を表示するプログラムです。
まず、変数xの値は1をとっています。
そのまま、もう一つのループに入ります。
変数 y の値が1〜9まで繰り返された後にループを抜けて、今度は変数xの値が2になります。
変数 xの値が2のまま、変数yの値が1〜9まで繰り返され、ループを抜けて変数xの値が3になります。
この作業を最後まで繰り返すと九九の表ができあがります。
ここで、if文を使っている次の文を見てください。
for y in 1..9 do if x*y < 10 then print (x*y).to_s + ' ' else print (x*y).to_s + ' ' end end puts ''
これは、10未満の値(一桁の値)のときの条件を記述しています。
表にしたときにずれると嫌なので、一桁の場合数字の前に半角スペースを一つ入れるような処理をしています。
そうすることによって、表の数字が縦横きれいに揃います。
puts
の代わりにprint
を使うと、改行なしで出力することが出来ます。
出力結果を見てみましょう。
~/Desktop/Programming/RB $ ruby fortest4.rb 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
Visual Studio Codeで次の二重ループするプログラムを作ってみましょう。
新規作成 【fortest5.rb】
# fortest5.rb for x in 1..20 do if x < 10 then print ' ' print x.to_s + ':' else print x.to_s + ':' end for y in 1..20 do if x%y == 0 then print y.to_s + ',' end end puts '' end
このプログラムは約数を求めるプログラムです。
約数とは割り切ることができる数字です。
例えば、8は1と2と4と8で割り切れますから、約数は1、2、4、8の4つとなるわけです。
このプログラムも二重ループを使っています。
最初のループでは変数xが1から20になるまで繰り返されます。
内のループも変数yの値が1から20になるまで繰り返されます。
ここで、次の文を見てください。
if x%y == 0 then print y.to_s + ',' end
これが実際に約数を求めている部分になります。
もし、x÷y
の余りが0(ゼロ)の場合という意味です。
実行結果は次のようになります。
~/Desktop/Programming/RB $ ruby fortest5.rb 1:1, 2:1,2, 3:1,3, 4:1,2,4, 5:1,5, 6:1,2,3,6, 7:1,7, 8:1,2,4,8, 9:1,3,9, 10:1,2,5,10, 11:1,11, 12:1,2,3,4,6,12, 13:1,13, 14:1,2,7,14, 15:1,3,5,15, 16:1,2,4,8,16, 17:1,17, 18:1,2,3,6,9,18, 19:1,19, 20:1,2,4,5,10,20,
Visual Studio Code次の二重ループするプログラムを作ってみましょう。
新規作成 【fortest6.rb】
# fortest6.rb for x in 1..9 do for y in 1..9do if y<=x then print '*' end end puts '' end
二重ループで「*
」を表示させ、三角形を表示させるプログラムです。
今までのプログラムがわかればこの内容もわかると思います。
~/Desktop/Programming/RB $ ruby fortest6.rb * ** *** **** ***** ****** ******* ******** *********
このプログラムを書き換えて、出力結果を逆三角形にしてみます。
Visual Studio Codeで以下のRubyプログラムを作成してください。
新規作成 【fortest7.rb】
# fortest7.rb array = [9,8,7,6,5,4,3,2,1] for x in array do for y in 1..9 do if y<=x then print '*' end end puts '' end
変数arrayに [9,8,7,6,5,4,3,2,1]
という配列を格納しています。
for文の範囲に配列を渡すことで、変数xに9,8,7,6...1
と順番に代入されます。
実行結果です。
~/Desktop/Programming/RB $ ruby fortest7.rb ********* ******** ******* ****** ***** **** *** ** *
【07 | while】 << 【ホーム】 >> 【09 | 論理演算】
↓↓クリックして頂けると励みになります。