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文がまた始まる時には数が増えていく、という仕組みです。