while文
繰り返し処理を行う別の方法として「while」文について確認します。まずは書式から確認します。
while (条件式) 実行する処理;
実行する処理が複数ある場合は実行する範囲を「{」と「}」で囲んで指定します。
while (条件式){ 実行する処理1; 実行する処理2; 実行する処理3; .... }
「while」文では条件式を評価し真の間は繰り返し処理を行います。「for」文とは異なり条件式で使われる変数の値をどのように変化させるかは指定していません。その為、実行される処理の中で別途記述する必要があります。(変化させなければ無限ループとなります)。
「for」文は指定した回数だけ繰り返しを実行する場合に利用されることが多いですが、「while」文は条件が満たされるまで繰り返し処理を継続するような場合に利用されることが多いです。例えばパスワードを入力してもらい一致するまで繰り返し処理を行う場合などには「while」文が適しています。
パスワードを入力してもらう while (パスワードが正しいかどうか判別){ パスワードを入力してもらう }
上記の場合には正しいパスワードが入力されるまで繰り返しは継続することになります。
実際には次のように記述します(今までの学習範囲でサンプルを作成するためfor文の場合と似たようなサンプルとなります)。
int i = 0; while (i < 2){ printf("こんにちは¥n"); i++; }
上記は次のような動作を行います。
変数「i」に「0」を格納する 変数「i」の値が「2」より小さいかどうか評価する = 真 「こんにちは」を出力する 変数「i」の値に「1」を加えて「1」にする 変数「i」の値が「2」より小さいかどうか評価する = 真 「こんにちは」を出力する 変数「i」の値に「1」を加えて「2」にする 変数「i」の値が「2」より小さいかどうか評価する = 偽 繰り返し処理終了
「while」文では「for」文と同じく1回目の繰り返し処理が行われるよりも前に条件判断が行われます。その為、場合によっては一度も繰り返し処理が行われない事もあります。
サンプルプログラム
では簡単なサンプルプログラムを作成して試してみます。
#include <stdio.h> int main(void){ int num = 50; int i = 1; printf("数値=%dの約数を求めます¥n", num); while (i <= num){ if (num % i == 0){ printf("約数=%d¥n", i); } i++; } return 0; }
上記を「test3-1.c」の名前で保存します。まずコンパイルを行います。
コンパイルが終わりましたら「test3-1」と入力して実行します。
( Written by Tatsuo Ikura )