<<前 [TOP] 次>>
メモ帳を開いて次の繰り返しのプログラムを作ってみましょう。
【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
出力結果です。
他にも色々な繰り返しのプログラムを作ってみましょう。
【fortest2.rb】
# fortest2.rb puts 'まだループの外です。' for count in 1..5 do puts 'ループの中です。:' + count.to_s end puts 'ループの外に出ました。'
出力結果です。
メモ帳を開いて次の繰り返しのプログラムを作ってみましょう。
【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
メソッドを使います。
出力結果です。
メモ帳を開いて次の二重ループするプログラムを作ってみましょう。
【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
を使うと、改行なしで出力することが出来ます。
出力結果を見てみましょう。
メモ帳を開いて次の二重ループするプログラムを作ってみましょう。
【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(ゼロ)の場合という意味です。
実行結果は次のようになります。
メモ帳を開いて次の二重ループするプログラムを作ってみましょう。
【fortest6.rb】
# fortest6.rb for x in 1..9 do for y in 1..9do if y<=x then print '*' end end puts '' end
二重ループで「*」を表示させ、三角形を表示させるプログラムです今までのプログラムがわかればこの内容もわかると思います。
このプログラムを書き換えて、出力結果を逆三角形にしてみます。
【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と順番に代入されます。
実行結果です。
↓↓クリックして頂けると励みになります。