前に少し for の書式について触れましたが、今回はもっと詳しく話していきます。今はまだよく分からなくても、そのうち分かってくると思うので、今回のうちに全部理解しなくても構いません。
今回の要点は次の通りです。
では、いってみましょう。
以前に話した for の書式を思い出してみましょう。
for(i = 0; i < 10; i++){ ... } 最初 i は 0 で、1回処理を行う毎に i を 1 ずつ増やしていき、i が 10 より小さかったらまた処理を行うのです。 「最初...」が i = 0 にあたり、「1ずつ増やして...」が i++ にあたり、「i が 10 より...」が i < 10 にあたります。 |
このように話しました。
これを見ると、i = 0 を i = 5 に変えたり、i++ を i += 2 に変えたりしても支障はなさそうです。
もしそうしたら、「最初 i は 5 で、1回処理を行う毎に i を 2 ずつ増やしていき、i が 10 より小さかったらまた処理を行う」ということになるはずです。
そのとき i は 5, 7, 9 の値をとるはずです。
では、確かめてみましょう。
プログラム | 実行結果 |
---|---|
// For3.cpp #include <iostream.h> int main() { int i; for(i = 5; i < 10; i += 2) cout << i << endl; return 0; } |
5 7 9 |
思った通りになりましたね。
では、i = 10000 から始めてみましょう。i は 1 ずつ増やします。
上に書いたとおりだとすると、10000 だけは表示されることになります。
プログラム | 実行結果 |
---|---|
// For3b.cpp #include <iostream.h> int main() { int i; for(i = 10000; i < 10; i++) cout << i << endl; return 0; } |
あらら、何も表示されませんね。どうやら、条件の確認は一番初めでも行われるようです。
今度はループの条件を変えてみましょう。変数 a を別に用意して、その値をループの条件にしてしまいましょう。果たして成功するでしょうか?
プログラム | 実行結果 |
---|---|
// For3c.cpp #include <iostream.h> int main() { int i, a = 0; for(i = 0; a < 10; i++) { cout << i << ", " << a << endl; a += 2; } return 0; } |
0, 0 1, 2 2, 4 3, 6 4, 8 |
どうやら成功したようです。
i が まだ 4 + 1 = 5 だというのに、a が 8 + 2 = 10 なので条件から外れてしまいました。なので、4, 8 までしか表示されませんでした。
よくよく考えてみると、上の例では i は何の役にも立っていません。i を削除できたりはしないのでしょうか?
プログラム | 実行結果 |
---|---|
// For3d.cpp #include <iostream.h> int main() { int a = 0; for(; a < 10;) { cout << a << endl; a += 2; } return 0; } |
0 2 4 6 8 |
やはりできるようです。でも、これでは
for(a = 0; a < 10; a += 2)...
と同じですね。実用的には、「i = 0 がもう既に行われているから i = 0 だけを省略する」とか、「i の増減は別の所で行うから、ここでは省略する」とかのように使えるようです。
最初と最後のパラメータは省略できました。では、真ん中のパラメータはどうでしょうか?
プログラム | 実行結果 |
---|---|
// For3e.cpp #include <iostream.h> int main() { int a = 0; for(;;) { cout << a << endl; a++; } return 0; } |
0 1 2 3 4 . . . |
あわわ、無限ループになってしまいました。ということで、無限ループを行いたいときに for(;;) を使うことができます。
では、その際どうやって抜け出せばいいのでしょうか? それは後の章で話します。
いろいろ実験してきた結果をまとめてみたいと思います。
for の書式は、
for(<初期化式>; <条件式>; <ループ式>)<実行文>
のようです。
先ず、初期化式を行って、条件式を評価し、条件が真ならば実行文を実行します。そして、実行文が終わるとループ式を行って、再度条件式を評価します。その繰り返しを行うのが for 文の真の機能なのです。
今回の要点は次の通りでした。
では、さようなら。
第16章 ループと配列変数 | 第18章 もうひとつのループ
Last update was done on 1999.2.28
この講座の著作権はロベールが保有しています