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

学生向けにプログラミングを解説。Java、C++、Ruby、PHP、データベース

Rubyプログラミング入門その6 繰り返しのプログラム for

<<前  [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



出力結果です。
f:id:MrRadiology:20180112160145p:plain


他にも色々な繰り返しのプログラムを作ってみましょう。


【fortest2.rb】

# fortest2.rb

puts 'まだループの外です。' 

for count in 1..5 do 
	puts 'ループの中です。:' + count.to_s 
end

puts 'ループの外に出ました。'



出力結果です。
f:id:MrRadiology:20180112160822p:plain


メモ帳を開いて次の繰り返しのプログラムを作ってみましょう。


【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メソッドを使います。


出力結果です。
f:id:MrRadiology:20180112163400p:plain


メモ帳を開いて次の二重ループするプログラムを作ってみましょう。


【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を使うと、改行なしで出力することが出来ます。


出力結果を見てみましょう。
f:id:MrRadiology:20180112170411p:plain


メモ帳を開いて次の二重ループするプログラムを作ってみましょう。
【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(ゼロ)の場合という意味です。


実行結果は次のようになります。
f:id:MrRadiology:20180112172304p:plain


メモ帳を開いて次の二重ループするプログラムを作ってみましょう。


【fortest6.rb】

# fortest6.rb

for x in 1..9 do 
	for y in 1..9do
		if y<=x then 
			print '*'
		end
	end
	puts ''
end



二重ループで「*」を表示させ、三角形を表示させるプログラムです今までのプログラムがわかればこの内容もわかると思います。


f:id:MrRadiology:20180112172804p:plain


このプログラムを書き換えて、出力結果を逆三角形にしてみます。


【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と順番に代入されます。


実行結果です。
f:id:MrRadiology:20180113100149p:plain


<<前  [TOP]  次>>