0からのゲームプログラミング > while 文

Back Next
更新日 2003.09.10
while 文

 人間が同じことをするのはすごく時間がかかるのに、コンピュータに同じことをさせると、あっという間にやってくれます。今回は、その反復処理についてやります。

 書き方は、while(式) で、式の値が真(0 以外)の場合繰り返し処理されます。

サンプルコード

#include	<stdio.h>

void main(void)
{
	int	i = 0;

	// 同じ文を 100 回表示させる
	while(i < 100)
	{
		printf("吾輩は猫である。\n");
		i++;	// i = i + 1; と同じ意味
	}
}

実行結果(以下の文が100回繰り返し表示される。)
吾輩は猫である。


 今のパソコンの性能だと、一瞬で表示されたかと思います。中括弧 { と } の間に書く文が一つの場合には、中括弧は省略出来ます。中括弧を書いても、コンパイラによって最適化されるので処理速度に影響はありません。

 ++演算子は、インクリメント演算子といい、変数の値に 1 を加えます。逆に、--演算子は、デクリメント演算子といい、変数の値から 1 を引きます。

 ++ , -- は変数の前か後ろのどちらに書いても構いませんが、他の命令と組み合わせた場合に若干意味が違ってきます。次の例で確認してみて下さい。

サンプルコード

#include	<stdio.h>

void main(void)
{
	int	i, answer;

	i = 0;

	// i の値を answer に格納してから、i に 1 を加える
	answer = i++;
	printf("answer = %d, i = %d\n", answer, i);

	i = 0;

	// i に 1 を加えてから、i の値を answer に格納する
	answer = ++i;
	printf("answer = %d, i = %d\n", answer, i);
}

実行結果
answer = 0, i = 1
answer = 1, i = 1


 脇道にそれてしまいましたが、while 文に戻ります。今度は、while 文を使って故意に無限ループを作成してみます。以下の例では、while(式) で式の値が真であり続けるため、ループから抜け出すことが出来ません。強制的に×ボタンを押して、プログラムを終了して下さい。ゲーム作成でこれをやると、パソコンをフリーズさせることも出来ます。(笑)

サンプルコード

#include	<stdio.h>

void main(void)
{
	int	i = 0;

	// 無限ループ
	while(1)
		printf("おりゃおりゃ! %d ヒット!!\n", ++i);
}

実行結果(永遠に続く)
おりゃおりゃ! 1 ヒット!!
おりゃおりゃ! 2 ヒット!!
おりゃおりゃ! 3 ヒット!!
おりゃおりゃ! 4 ヒット!!


コラム - インデント / アンインデント

 インデントとは、字下げのことです。その逆がアンインデントです。インデントするには、タブを挿入します。複数行をインデントしたいときには、複数行を選択してから「Tab」キーを押すことで実現出来ます。アンインデントするには、「Shift + Tab」(Visual C++ では)または、「Shift + Ctrl + U」(BCC Developer では)キーを押すことで出来ます。一行一行するより断然楽ですね。
 

【スポンサード リンク】


Back Next

0からのゲームプログラミング > while 文