回答編集履歴

1

追加

2020/08/19 09:14

投稿

amiya
amiya

スコア1218

test CHANGED
@@ -11,3 +11,71 @@
11
11
  `num`が`3`になった瞬間にループが終わる訳ではありません。
12
12
 
13
13
  次の周に入るまではそのまま継続されます。
14
+
15
+
16
+
17
+
18
+
19
+ > whileは条件がfalseになった瞬間に、繰り返しは終了するという認識でよいですか
20
+
21
+ 参考書にはそのように書いてありましたが、どちらが正しいのでしょうか?
22
+
23
+
24
+
25
+ whileにそのような機能はありません。
26
+
27
+ おそらく、参考書の、
28
+
29
+ > while文は、**条件が成立する間**、繰り返します。
30
+
31
+
32
+
33
+ という文の誤読かと思われます。
34
+
35
+ 「条件が成立するする間繰り返す」→「条件が成立しなくなった瞬間に繰り返しは終わる」
36
+
37
+ という読み方は出来なくはありません。
38
+
39
+ (実際、そういう誤解をしている人を時々見かけます)
40
+
41
+
42
+
43
+ しかし、whileの機能は、
44
+
45
+
46
+
47
+ ①、条件部の値を見る
48
+
49
+ ②、真であれば、次の文(ブロック)を実行する
50
+
51
+ ③、①に戻る
52
+
53
+
54
+
55
+ というシンプルなものです。
56
+
57
+ あくまで、次の文(ブロック)を実行するかどうかを、
58
+
59
+ 条件部の値によって分岐させているに過ぎません。
60
+
61
+
62
+
63
+ これは、if文等でも同じです。
64
+
65
+ ```
66
+
67
+ if(n==3){ // nが3の時に以下を実行
68
+
69
+ println(n);
70
+
71
+ n=5; // nが3じゃ無くなる
72
+
73
+ println(n); // nが3じゃ無いから実行されない?
74
+
75
+ }
76
+
77
+ ```
78
+
79
+ そんな事はないですよね?
80
+
81
+ ifもwhileも、条件が有効なのは判定されるその瞬間だけです。