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

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

Ruby | 07 | while

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



06 | if】 << 【ホーム】 >> 【08 | for

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



Rubyのwhile文は、指定した条件が真の間、繰り返しブロック内の処理を実行するためのループ文です。


Visual Studio Codeで、次の繰り返しのプログラムを作成します。


新規作成 【whiletest1.rb】

# whiletest1.rb

puts 'ループに入る前です。'

i = 0; 

while i < 10 do

	puts 'ここはループの中です。' 
	i += 1 
end

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



では、プログラムの内容をみていきましょう。
このプログラムでは、while文という構文を使っています。

while 条件 do

end



もし、whileのあと条件に当てはまれば、そのあとのdo~endの処理が実行されます。
条件が当てはまっているうちは永遠にdo~endの処理が実行されます。


気をつけなければならないのは、終わらないような条件を入れてしまうと無限ループになってしまうということです。
その場合、プログラムを実行したときに終わることなく永遠に動き続けてしまいます。
もし、気づかず無限ループになってしまってそのまま実行し、プログラムが止まらなくなってしまったら、コントロールボタン(Ctrl)とCボタンを同時に押す(Ctrl+C)とプログラムを強制終了することができます。


では、プログラムの内容を見ていきましょう。
最初の条件は、次のように宣言されています。
i = 0
これは、while文に入る前に宣言し、変数 i を初期化しています。
i=0なのでそのままwhile文の中に入ります。
ここで、次の文が実行されます
i += 1
これは、変数 i1を足すという意味です。
これを、インクリメントといいます。


このプログラムでは、まず i がインクリメントされて、変数 i の値が1になります。
その後、またwhile文に入り、インクリメントが繰り返されます。
i の値が10になったらループを抜けます。


出力結果を見てみましょう。

~/Desktop/Programming/RB $ ruby whiletest1.rb 

ループに入る前です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ここはループの中です。
ループの外に出ました。



もう一つ、違う形のプログラムを見てみましょう。
Visual Studio Codeで以下のプログラムを作成します。


新規作成 【whiletest2.rb】

# whiletest2.rb

i = 0
x = 1

while true do 

	if x > 1000000 then
		break
	end

	x *= 2
	i += 1 
end

puts '2の' + i.to_s + ''  + ' > 1000000' 



ここでは、while文の条件にtrueを使っています。
これを使うと、わざと無限ループを作ることができます。
しかし、このままでは終わらないプログラムになってしまいます。
そこで、breakを使います。
このbreakが読まれた時点で、ループから抜けることができます。


このプログラムでは、if文の条件に当てはまるまでループします。


次の文も見てみましょう。
x *= 2
これは、次の文と同じ意味です。
x = x*2
どちらで書いても同じですが、x *= 2と書く方が一般的です。


出力結果を見てみます。

~/Desktop/Programming/RB $ ruby whiletest2.rb 

220乗 > 1000000



もう一つ、プログラムを作成します。
Visual Studio Codeで以下のプログラムを作成してください。


新規作成 【whiletest3.rb】

# whiletest3.rb

x = rand(0.1..0.9)

puts 'x=' + x.to_s

while x < 0.5 do 
	x = rand(0.1..0.9)
	puts 'x=' + x.to_s 
end

puts 'ループから抜けました。' 



0.1から1.0未満の間で数字がランダムに出てきます。
0.5以上になるまで表示が続き、0.5以上になると「ループから抜けました」とプリントされループを抜けます。


なお、出力結果は一例で、ループにいる回数や数字は実行する度に違います。

~/Desktop/Programming/RB $ ruby whiletest3.rb

x=0.7802903128041748
ループから抜けました。

~/Desktop/Programming/RB $ ruby whiletest3.rb

x=0.24167179124361138
x=0.5006452544942649
ループから抜けました。



「whiletest3.rb」と同じ出力結果になるようにプログラムを書き換えてみます。
Visual Studio Codeで以下のプログラムを作成します。


新規作成 【whiletest4.rb】

# whiletest4.rb

while (x = rand(0.1..0.9)) < 0.5 do 
	puts 'x=' + x.to_s
end

puts 'ループから抜けました。' 



実行結果です。

~/Desktop/Programming/RB $ ruby whiletest4.rb

ループから抜けました。

~/Desktop/Programming/RB $ ruby whiletest4.rb

x=0.33705701681315176
x=0.1524316077841541
x=0.4669202734204715
ループから抜けました。



これらの応用で、このような繰り返しのプログラムも書けます。
Visual Studio Codeで以下のプログラムを作成します。


新規作成 【whiletest5.rb】

# whiletest5.rb

puts 'ループの中に入ります。' 
	
count = 0 

while true do 
	if count > 9 then 
		break 
	end

		puts 'ループの中です:' + count.to_s 
		count += 1 

end

puts 'ループから抜けました。' 



実行結果です。

~/Desktop/Programming/RB $ ruby whiletest5.rb

ループの中に入ります。
ループの中です:0
ループの中です:1
ループの中です:2
ループの中です:3
ループの中です:4
ループの中です:5
ループの中です:6
ループの中です:7
ループの中です:8
ループの中です:9
ループから抜けました。




06 | if】 << 【ホーム】 >> 【08 | for





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