C言語入門 (6) 同じ処理を複数回を行う

Posted: 2012年02月28日

処理を複数回行いたい時にはどうすればよいか
例えば5回max関数を呼び出す場合
max関数を5回記述することで実現が可能です。

しかしこのやり方では欠点が存在します。

  • プログラムが読みづらくなる。
  • 10回に変更されたときに修正が面倒
  • 変更により、間違えて11回行うバグを生む可能性もある

ではどうすればよいか?

プログラミング言語ではfor文などループが記述できる構文があります。
その他には、言語によって様々ありますがC言語の場合は

  • for文
    for (初期化; 条件; 後処理)
  • while文
    while (条件)
  • do-while文
    do { } while (条件)

が存在します。

具体的にどのように使用するか見てみましょう

プログラムプログラム:

 #include  <stdio.h>
 #include  <math.h>

 int main(void)
 {
     const cnCount = 5; // ループ回数
     int nIndex = 0;    // ループIndex
     int nResult = 0;   // 結果

     // For文
     for (nIndex = 0; nIndex < cnCount; nIndex++) {
         nResult = max(nIndex, nResult);
     }

     // While文
     nIndex = 0;
     while (nIndex < cnCount) {
         nResult = max(nIndex, nResult);
         nIndex++;
     }

     // do-while文
     nIndex = 0;
     do {
         nResult = max(nIndex, nResult);
         nIndex++;
     } while (nIndex < cnCount);

     return nResult ;
 }

解説解説:

ループ分は皆同じような処理をすることができます。
どのループ分を使用するかは、プログラマに任されています。センスが問われる感じ?

私は、

for文は、後処理が必要な場合を
while文は、後処理がいらないまたは、無限ループ
do-while文は、ほぼ使用しない

話を戻しますと
このようにプログラムを組むことで

const cnCount = 5;

を変更するだけでループ回数が変更できます。

ループ分は条件が入るため処理が遅くなりますが (数クロック程度)
定数回ループする場合は、コンパイルする際に
例えば”max関数を5回記述する”といった処理に変更してくれます。
これは、ソースは変更されないため見づらくなることはありません。

練習練習:

  1. 50回ループする処理をプログラムを作成してください。
  2. 10回ループし、ループ内でループ回数が表示されるプログラムを作成してください。

例)
 1回
 2回

  1. 無限ループ(ずーとループする)プログラムを作成してください。
     ※ずーと処理をするため、プログラムを起動する前にタスクモニターを起動しておいたほうがいいともいます。
カテゴリー: プログラム, 入門 | タグ: , | コメント無し »

コメント