「C言語超入門(第21回)」では、プログラミングをする上で欠かせない処理の一つとして、for文を使った繰り返し処理をご説明いたしました。
今回のC言語超入門は、while文を使った繰り返し処理がテーマです。
for文もwhile文も繰り返し処理を行う場合に使用しますが、両者には明確な違い(使い分け)があります。
不定回数を反復して処理させる方法
for文を使っての繰り返し処理は、指定回数を反復するとき有効に機能します。
一方で、反復の回数が定まっていないときーーある特定の条件が満たすまで繰り返したいときーーは、for文を使うことができません。
このように反復の回数が決まっていない不定回数の繰り返し処理を行いたいときは、while文を使います。
while文を使って不定回数を反復処理させるには、次のように記述します。
``` while (繰り返し条件式) { 繰り返し対象の処理 } ```
繰り返しの条件を満たしている間は、繰り返しの対象となる処理を永遠に実行し続けます。
ポイントは、「繰り返し処理」よりも前に、「繰り返し条件式」があることです。
これはすなわち、繰り返しの条件を満たしませんと、一度も繰り返し対象の処理が実行されないことを意味します。
while文を使ったサンプルプログラム
以下のプログラム1は、while文を使って文字列の文字数を表示するサンプルプログラムです。
``` // ※プログラム1 #include <stdio.h> main() { char moji[]="Windows"; int i=0; while (moji[i]!=0) { i++; } printf("文字列 %s は%d文字です\n", moji, i); } ```
※プログラム1の実行結果
文字列 Windows は7文字です
文字配列mojiの文字列の終端には0 (ゼロ)が入ります。(参考:C言語超入門(第15回)の「文字列の取り扱い」)
プログラム1は、文字列の終端には0(ゼロ)が入るという文字列のルールを利用し、配列の先頭から順に0 (ゼロ)が見つかるまで配列の値を確認することを繰り返すことで、文字数をカウントしています。
このように、繰り返す回数が事前に分からないときはfor文を使うことができませんから、while文を利用します。
無限ループの使い方
「C言語超入門(第21回)」でfor文を使った無限ループを紹介しましたが、while文でも無限ループがあります。
``` while (1) { 繰り返し対象の処理 } ```
上記のように記述することで、無限に繰り返し処理を実行し続けます。
for文のループは、
for (;;)
と記述しましたが、記述方法が少しトリッキーな感じがしませんか。
for文でもwhile文でも無限ループを作ることができますが、while文の方がソースコードがスッキリ見えるかもしれませんね。
ただ、無限ループを使うににあたって、どちらが良い、悪いはありませんので、好みで使ってください。
C言語超入門の第22回まとめ
for文を使った繰り返し処理は、指定の回数を繰り返すことに適しています。
繰り返しの回数が決まっておらず、特定の条件が成立するまで繰り返す、といった不定回数の繰り返し処理にはwhile文が適しています。
同じ繰り返し処理を行うfor文とwhile文ですが、状況に応じて上手に使い分けて利用することが必要です。
ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。