はじめての C

[Learning GNU C]

4.3. ループ

ループは コマンドを くり返す 方法を 備え それが 何回 くり返されるかを 調整する。 例えば スクリーン上に アルファベットを 表示したいときは printf() を 呼び出すことで 実行できる。 これも 1つの 答だが それでは あまり うまくは 拡張 scale されない。 仮りに 1行で 1 から 1000 までの 数を 全て 表示したいとすると 巨大な 1つの printf() か 多数の printf() を 呼び出して 処理されたとしても それぞれの 仕事を コンピュータに 実行させるためには プログラムの 中の 興味のある 箇所に かかわるための 多くの 時間が 失われてしまう。

4.4. while

もっとも 基本的な C の ループが while ループだ。 while 命令文は if 命令文の くり返しのような ものだ。 if 命令文と 同じく 条件文 test condition が 真であれば 命令文が 実行される。 異なるのは 命令文が 実行された後に 再び 条件文が チェックされることだ。 それが なお 真ならば 再度 命令文が 実行される。 このサイクルは 条件文が 偽だと 評価されるまで くり返す。 初めの 時点で 条件文が 偽ならば 命令文は まったく 実行されない。 その一方 もし 条件文が 絶対に 偽と 評価されなければ loop は 永遠に 続くだろう。 その code で ループが 実行される 回数を 調整するには 条件文の 中に それに 続く code の ブロックで 変化する 変数を 通常 少なくとも 1つ もつことだ。 これが ある時点で 条件文が 偽と なるようにする。

これが 期待されているだろう 即製の 例題だ。 それは ある人が 非常に 簡単な 暗号 code を 書き その答を 求めるという 単純な ゲームだ。 このプログラムを 試してみるときは 何回か まちがった 答が 引き出されるの 覚えておくこと。

Example 4-3. guess_my_number.c

int
main()
{
const int MAGIC_NUMBER = 6;
int guessed_number;

printf("ぼくの 考えてる 数が なにか 当ててみて\n");
printf("ヒント -- それは 1から 10 までの 数\n");

printf("じゃ 入力してみて: ");
scanf("%d", &guessed_number);
while (guessed_number != MAGIC_NUMBER) {
printf("残念、もう 1回: ");
scanf("%d", &guessed_number);
}
printf("当たり!\n");

return 0;
}

while 命令文の 後の code の ブロックは プレーヤーが 数を '6' だと 判断するまで くり返し 実行される。