箱のプログラミング日記。

渋谷の自社開発企業でRails書いてます。

rubyにおけるwhile文の仕組みについて

rubyにおけるwhile文の仕組み

 

よくif文と混同されることがありますが、

while文もif分も「この条件の時にこれをしてくださいよ」と指示をするものです。

 

if分の場合、処理を行うかどうかの条件はtrueかfalseによって判断されます。

つまり、基本形は「これがtrueならこうしてくださいよ」「これがfalseならこうしてくださいよ」という指示です。

 

 

while文の定型


 while 条件式 do
 実行させたい処理
 end

while文は「条件式の結果がtrueの間はdoより下の処理を繰り返してくださいよ」と指示するものです。

 

 

 

例)numberが10になるまでの間、2をかけた数値を表示する


number = 0
 
while number < 10 do
puts number * 2
number += 1
end
 
 上の例は、
number < 10 の結果がtrueの間はdoより下の処理を繰り返してくださいよ」
 という指示になります。
 
number < 10 の結果がtrueの間」を言い換えると、
「numberが10より小さい間」ということになります。
 
つまり、
「numberが10より小さい間、numberに2をかけた数値をputsしてくださいよ」
という指示になります。
 
 
ただこれだけでは、最初に定義したnumberは0のまま変化しないので
endの前に「number += 1」を持ってくることにより、
 
「numberが10より小さい間、numberに2をかけた数値をputsしてくださいよ。
そのあとnumberに1を足してから終わっといてくださいよ」
 
という指示をしています。
 
 
while文は条件式がtrueの間繰り返されるので、
次に繰り返す時は、前回の繰り返しで1足された状態のnumberをもとに
「10より小さいかどうか」の判断が下される、というわけです。
 

number = 0
 
while number < 10 do
puts number * 2
number += 1
end
 
 
※最初にnumber = 0と定義されていますが、numberは変数なので更新されていきます。
endの前で1足すことにより、次にwhile文がまた始まる時には数が増えていく、という仕組みです。