ほとんどのプログラミング言語で、繰り返し処理にはfor文とwhile文が存在しています。
すると、これらをどう使い分けるのか、疑問がわいてくる人もいるかと思います。
これは、公式に決まっているわけではありませんが、世の中のプログラムではこれらが使分けられているのも事実です。
for文は、カウンタの初期化・条件式の設定・カウンタの更新が1文で簡単に記述できる一方で、複雑な条件式や複雑なカウンタの更新になるとコードが分かりづらくなるという特徴があります。
一方のwhile文は、カウンタの初期化・条件式の設定・カウンタの更新を分けて記述する必要がある一方で、複雑な条件式や複雑なカウンタの更新でもコードが分かりやすいという特徴があります。
よって、繰り返す回数が分かっている場合(例:探索や並べ替え等)はfor文、
繰り返す回数が分からない場合や、複雑な処理を行う場合はwhile文が向いていると言えます。
もちろん、全ての繰り返し処理はどちらでも実現可能ですが、プログラムでは「コードの節約」や「コードの分かりやすさ」のバランスというのも重要なのです。
ですので実のところ、繰り返し構造の基本に載せたプログラムは、後半のパターン3~5のプログラムは更新のタイミングが複雑なのでwhile文の方が良いですが、前半は単純な繰り返しなのでfor文の方が向いています。
以下は、for文とwhile文の特徴が分かりやすいプログラムの例です。※C言語で一部分のみとなっています。
「Hello!」を5回出力する(for)
for(i=0; i<5; i++){
printf("Hello!\n");
}
とてもスッキリしていて分かりやすい!
「Hello!」を5回出力する(while)
i = 0;
while(i < 5){
printf("Hello!\n");
i++;
}
5回繰り返すだけなのにプログラムが長い・・・
0が入力されるまで「Hello!」を出力する(for)
scanf("%d", &num);
for(; num!=0; ){
printf("Hello!\n");
scanf("%d", &num);
}
for文の中身が少し分かりにくい・・・
0が入力されるまで「Hello!」を出力する(while)
scanf("%d", &num);
while(num != 0){
printf("Hello!\n");
scanf("%d", &num);
}
条件式の内容が分かりやすい!
あなたもジンドゥーで無料ホームページを。 無料新規登録は https://jp.jimdo.com から