whileは、常にその条件を見張っているわけではありません。
あくまでも、処理が一周して次の周に入るかどうかのタイミングで、判定しているに過ぎません。
ループの途中で条件を外れるようなことがあっても、
whileは一切それを感知しません。
num
が3
になった瞬間にループが終わる訳ではありません。
次の周に入るまではそのまま継続されます。
whileは条件がfalseになった瞬間に、繰り返しは終了するという認識でよいですか
参考書にはそのように書いてありましたが、どちらが正しいのでしょうか?
whileにそのような機能はありません。
おそらく、参考書の、
while文は、条件が成立する間、繰り返します。
という文の誤読かと思われます。
「条件が成立するする間繰り返す」→「条件が成立しなくなった瞬間に繰り返しは終わる」
という読み方は出来なくはありません。
(実際、そういう誤解をしている人を時々見かけます)
しかし、whileの機能は、
①、条件部の値を見る
②、真であれば、次の文(ブロック)を実行する
③、①に戻る
というシンプルなものです。
あくまで、次の文(ブロック)を実行するかどうかを、
条件部の値によって分岐させているに過ぎません。
これは、if文等でも同じです。
if(n==3){ // nが3の時に以下を実行
println(n);
n=5; // nが3じゃ無くなる
println(n); // nが3じゃ無いから実行されない?
}
そんな事はないですよね?
ifもwhileも、条件が有効なのは判定されるその瞬間だけです。