![]() |
|
制御文その1−while文条件が成り立つあいだくり返す文、whileの性質を知る while文 〜条件が成り立つあいだくり返す〜
while文は「式」が「真」であるあいだ、「文」をくり返す制御文です。この文は制御文の中で一番単純で、かつ多く使われます。では、次の例はどうなるでしょう。まだルールも良く分かっていませんが、実行結果からwhile文を理解してみましょう。
つまり、iの値が10になったら条件にあわなくなるのでくり返しをやめます。つまり、「i++;」を10回評価したことになります。そのため、画面には「10」が表示されます。では、もし最初から条件にあわなかったらどうなるでしょうか。
iには最初から10が入っているので、「i<10」は偽になります。画面には何も表示されませんでしたね? つまりwhile文は、次のルールに従って動いていることが分かります。
このルールのため、[1.]でいきなりはね飛ばされ、文を実行できなかったので、画面には何も表示されなかったのです。このようになっては不都合がある場合のために、式を最後に評価する制御文もあります。 whileのもう一つの顔、do while文
do while文では、まず最初に文が実行され、その後に式が評価されます。前のページでやったように、ブロックを使って文を2つ以上実行させることができます。
プログラムを実行すると、1から10までの数字が縦に並びます。ここで、「inti = 0;」を「int i = 10;」と書きかえるとどうなるでしょう。do while文の例では、1度だけ「11」という文字が表示されるはずです。これがwhile文と、do while文の違いです。「えーいどうでもいいじゃんか、そんな事ぉ」と思わないでくださいね。どうしてもdo while文じゃないと、効率的に処理できない、そんな場面にいつか出くわすはずです。 書き方についての余談: while文などの場合、ブロックの始まりを意味する「{」は、「while(式)」や「do」のすぐ後に書くのが一般的です。また、コードの中に「/*」「*/」がありますが、C言語では「/*」と「*/」で囲まれた文字を無視するので、このように好きなことを書く事ができます。これをコメントと言います。あまりにもコメントを入れるのは考えものですが、必要な場所に必要なコメントを書いておくと、プログラムを後で見なおしたときに非常に楽にないようを把握することができるようになります。 「式」の意味を再確認ところで、条件式を書くところには「式」を書けばいいわけですから、こんな書き方もできる、と気づきましたか?
勘のいい方ならすぐに想像がつくでしょう。これを実行すると画面に永遠に文字を表示しつづけます。なぜなら式が「1」、つまり常に「真」だからです。しかしこの技法はよく用いられるので、覚えておくとためになります。ただしこれだけ紹介しても、いつまでたっても抜け出せない無限ループしか作れないので、そこから抜け出す文も紹介しておきましょう。それはbreak文です。上の例を少し書き換えてみます。
この例では文字が一度しか表示されません。文字を表示した後に、「break;」があるために、while文のループから抜け出しているからです。 まとめ。
質問(1997/01/31 公開, 1999/03/13 改) ちょっと休憩のコーナー
|
![]() |
著作権は全て小出 俊夫にあります。KID's World © 1996-2003 Toshio Koide.