学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Ruby | 08 | for

↓↓クリックして頂けると励みになります。



07 | while】 << 【ホーム】 >> 【09 | 論理演算


繰り返しのプログラム for
繰り返しのプログラム for



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 | 論理演算




↓↓クリックして頂けると励みになります。