ちぇりーの館

1−11 C言語プログラミング講座 プログラムの繰り返し処理 〜while文〜



こんにちは! 前回は、繰り返し処理のfor文について説明しました。今回は、同じ繰り返し処理である while文について説明します。このwhile文とfor文の明確な違いはありませんが、 for文は繰り返し回数が判っている場合に使用し、while文は繰り返し回数が判らない場合 に使用する事が多いです。まあ、明確な区別はないので、最終的には使いたい方を使ってプログラムを書いても全然問題ありません。 それでは、while文の説明に入ります。まずは、前回のおさらいからです。for文で、1 〜 100までの 数を足すプログラムを書いて見ましょう。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int i;
	int kekka;

	for(i=0; i<100; i++)
	{
		kekka = kekka + i;
		printf("1 〜 %dまでの足し算結果:%d\n",i, kekka);
	}
	scanf("a");
	return 0;
}


このプログラムは、変数"i"が0から始まり、条件である100以下の間、足し算の処理を繰り返します。 次に、このプログラムをwhile文に書き直して見ます。

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int i;
	int kekka;

	kekka = 0;
	i = 0;
	while(i < 100)
	{
		kekka = kekka + i;
		printf("1 〜 %dまでの足し算結果:%d\n",i, kekka);
		i ++;
	}
	scanf("a");
	return 0;
}

どうでしょうか、while文とfor文の大きな違いは、初期値がセットできない事と、 ループカウントの計算を行わない事です。従って、上記プログラムでは、while文の処理が 始まる前に自分で"i"を初期化し、ループの最後の処理で"i"に1づつ足して条件を満たすようにしています。 ちなみに、"i"を増加させないと、終了条件が満たされないので、 永久にループが終わらない無限ループと呼ばれる現象になります。 それでは、詳しくwhile文について見てみましょう。

【while文の構造】

while文の説明

while文は、for文と異なりループカウントの設定を行いません。従って、 終了条件のみを設定する事になります。それが、"(" 〜 ")"までの間に書かれている 条件文になります。そして、この条件文が満たされている間は処理が繰り返されます。

【while文の流れ】

while文の処理

上記の図で示した通り、while文は、一番最初が条件判定となります。 そして、条件判定を満たした場合は繰り返し処理が実行されます。条件を満たせない場合は while文が終了となります。

【break文とcontinue文】

 基本的にfor文やwhile文を終了させるためには、条件判定で否と判定されなければなりませんが、 プログラムによっては、繰り返し処理の途中でfor文やwhile文を終了させたい場合もあります。 その際使用するのが、break文です。break文は、switch文の説明で出てきたと思いますが、 { 〜 } までの間に入れる事によって強制的に"}"の外まで処理を移す事ができます。  また、繰り返し処理の途中で強制的に条件判定に処理を移す事もできます。 その際、continueという文を使います。break文やcontinue文は、非常に便利ですが、 処理の流れを強制的に変える事になるので、注意して使用しましょう。

while文の処理の流れ

break文の処理の流れ

continue文の処理の流れ

それでは、最後にwhile文を使ったサンプルプログラムを示します。 このプログラムは、ユーザーが"."を入力したら処理が終わるプログラムです。

#include <stdio.h>
#include <stdlib.h>

/*******************************/
/*  入力文字を表示する    */
/*******************************/
int main(void)
{
	int i;
	char cWork;
	cWork = NULL;
	printf("半角で1文字だけ入力してください。『.』を入力したら終了します。\n");
	while(cWork != '.')
	{
		cWork = getchar();
	}
	scanf("a");
	return 0;
}

while文の実行結果

このプログラムは、ユーザーが『.』を入力するまで処理が終了しません。つまり、何回 getchar()が実行されるかわからないので、for文ではなくwhile文を使用しています。ちなみに、 getchar関数は、入力された文字をcWorkに格納する関数です。


 今回は、ここまでとなります。今回まで説明した事でかなり多くのプログラムを書く事ができるように なりました。せっかくですので、次回は今までの復習をかねて色々なプログラムを書いてみようと思いますので、 次回もよろしくお願いします。毎回の事ですが、疑問・質問等がありましたら時間の許す 限りお答えしよう思いますのでどしどしメールを送ってください。でわでわ、お疲れ様でした (^_^)/

< 一覧ページへ戻る


当サイトが面白いと感じた方は、お手数ですが下記リンクをクリックしてください。
クリック毎に当ホームページの評価が上がります。ご協力お願いします!
inserted by FC2 system