2.1       ループ制御文の種類と使い分け


同じ処理を繰り返し実行するためには、for文while文do〜while文が使われます。


@for文は繰り返しの回数があらかじめ決まっているときに便利です。

  for (式1;式2;式3)
       {           文               }

  式1:初期値の設定
  式2:終了条件
  式3:増減式

式1では、ループに入る前に1度だけ行われる初期化式です。式2はループの終了を判定する条件式です。式3は、式1で初期化した値を最初期化するための式です。これら3つの式は、セミコロン「;」で区切ります。

(例)
    for ( i=5 ; i<10 ; i++ )           i=5から始め、iを+1しながら10未満(9まで)の間繰り返す。
    for ( i=10 ; i>0 ; i-- )           i=10から始め、iを−1しながらiが0より大きい間繰り返す。


Awhile文は繰り返し回数が決まっていないループを行うときに便利です。

while(式)
  {         文          }

まず、( )内の式が評価され、それが真なら{ }内の文が実行されます。そして再び式が評価され真の間は、{ }内の文が繰り返されます。式が偽になるとwhileループから抜け出します。


Bdo〜whileループは、whileループとほとんど同じですが、実行文の後から条件を判定します。ループの中身が1回は必ず実行されるためメニュー入力のチェックには最適です。

do{     文         }
   while(式);

while文同様、条件式が真の間繰り返し文を実行しますが、while文と条件判定の位置が違うので実行した後からの条件判定となります。

(例)住所録メニューで、ユーザーから正しい入力をもらうまで、入力要求を繰り返すプログラム

#include <stdio.h>
main( )
{
   int choise;

   printf("住所録メニュー\n");
   printf("  1. 住所を入力する\n");
   printf("  2. 住所を削除する\n");
   printf("  3. 検索する\n");
   printf("  4. 印刷する\n");
   printf("  5. 終了する\n");

   do{
       printf("番号を入力して下さい\n");
       scanf("%d,&choise);
   }while(choise<1||choise>5);            /*   番号が1から5以外のときは、もう一度番号を入力させる */
}

 


「もくじへ」