for文で説明したのは「5回繰り返す」のように、「繰り返す回数が最初から分かっている」という場合の繰り返し方法です。繰り返し(ループ)処理では、この他にもう一つ、「繰り返す回数が最初は分からない」という処理があります。これには、while文で対応します。
while文のプログラムを次に示します。
「1+2+3・・・+nと加算していき、その和が100を初めて超えるまで、nとwaの値を表示する」プログラムです。
<while文>
9〜13行目が「繰り返す回数が最初は分からない」ときに用いる繰り返しであるwhile文です。while文ではループ(繰り返し)のたびごとにループ条件を見て、それが正しければループ処理を続行します。条件が正しくなければ、ループ処理を打ち切ります。
このwhile文の記述は次の意味を持ちます。
ここでループ条件は、
wa<100 ・・・waが100未満の間ループしろ
ということになっています。これは別の表現をすれば、
waが100以上になったらループ終了
を意味します。
また、このループ条件のポイントとなる変数waの値は、ループ範囲の中の実行文のどれかで、毎回のループごとにその値が更新されるという形に記述されていなければなりません。
このプログラムでは、ループごとに
wa=wa+n; ( wa ← wa+n )---最初のwaの値にnをプラスして、それを新たなwaの値にせよ
を実行して、変数waに新しい数値を読み込んでいます。
この変数waの値の塗り替えを行わずに、「wa=wa+n;」を書かないプログラムにすると、変数waの値が最初のままで変化しないので、終了条件100以上が変数waに入らなくなり、無限ループになってしまいます。
※ 無限ループとは、終了条件が正しく認識されないため永久に繰り返し処理を続けてしまうことです。
また、和の計算の処理回数を数えているnも塗り替えを行う必要があります。
n=n+1; ( n ← n+1 )---最初のnの値に1をプラスして、それを新たなnの値にせよ
この処理プログラムでは和の計算をした後に、次の和の計算ができるようにするために、nが1ずつ増えるようにしてあります。
<whileループの前処理(値の初期化)>
5、6行目は変数宣言とともに、これから行うwhileループのための前処理を行っています。ここでは初期化で値設定をしています。まず、このプログラムの場合、nの値は1から始まるのでn=1;と初期化しておきます。また、waに関しては、最初変数waには何も入っていない状態にしておくという意味でwa=0;としておきます。この変数の値の初期化は、計算結果を正しく出すために必要な処理です。
<whileの決まり文句>
while文を使うときにも、決まり文句(標準パターン)があります。それは次の通りです。
whileの決まり文句を利用した簡単な例を挙げてみます。for文の
と同じ働きをするプログラムをwhile文で作ると、次のようになります。
<プログラムの流れ>
フローチャートは、次のようになります。では、続いてデータの繰り返し入力のプログラムの例を見てみましょう。