C言語やJava言語などのプログラミング言語では,繰り返し文が存在する.繰り返し文とは,ある決められた回数繰り返し実行する部分を指示するための構文である.C言語やJavaでは次の三つが用意されている.
繰り返しのことを「ループ」と呼ぶ,「この部分をループさせる」などと呼ぶ.
while文は次のような構文で,条件が成立している間は,中括弧で指定された部分を繰り返して実行する文である.
while(条件式) { 条件が成立している間は実行が繰り返される部分 }
条件式の値が真(true)になる時を,「条件(式)が成立する」と呼ぶ.while文の括弧の中は条件が成立している間だけ実行される.条件が最初から不成立な場合には,繰り返される部分は一度も実行されないこともある点に注意すること.
もしも,「条件が成立している間は実行が繰り返される部分」に実行文が一つだけしか存在しない場合には,中括弧を省略できる.
通常は,「この条件が成立している間は実行が繰り返される部分」を実行したときに「条件式」の条件を変化させるように記述する.そうしないと(条件が変化しなければ)永遠にループし続けることになる.
わざと,永遠に終了しないように書かれたループのことを「無限ループ」と呼ぶ.while文では次のように書く.
while(1) { 無限に繰り返し続ける部分 }
条件式は,成立した時には値1,不成立の時には値0になるため,最初から条件式のところに「1」と書けば,常に成立する条件を書くことができる.
ときどき,繰り返す部分が存在しない空のループを書かないといけないことがある.特に,ロボット制御などでは,単に一定の時間を待つためだけに使用したりする.
while(条件式) ;
このように書くと,実行文なしに,ただループを繰り返す.条件式の所には,一定時間や一定回数を繰り返した後で,終了するような条件を書く.例えば次のように書くと,変数countを0から数え始めて,3000になるまでカウントアップして終了するだけの文となる.
count=0; while(count++ < 3000) ;
do文は次のような構文である.
do { 条件が成立している間は実行が繰り返される部分 } while(条件式)
必ずdoの後にwhileを記述する.繰り返される部分に実行分が一つだけの場合には中括弧を省略することもできる.
動作はほぼwhile文と同じであるが,while文との違う点が一つだけ存在する.それは,「条件が成立しているは実行が繰り返される部分」を,条件にかかわらず必ず最低1回は実行することが保証されている点である.while文の場合,条件式によっては一度も実行されないことがある.
for文は次のように,ループを開始する直前に実行する「初期化式」と,繰り返しの条件を指示するための「条件式」,そして繰り返し部分の最後で実行されてその次の繰り返しのための準備をする「後始末の式」をまとめて指示する文である.
for(初期化式; 条件式;後始末の式) { 条件が成立している間は実行が繰り返される部分 }
これは,次のように動作する.(1)の※初期化式は最初の一回だけ実行され,それ以外は繰り返し何回も実行される.
(1) ※初期化式 (2) 条件式 → 条件を満たさない場合ループを終了して(6)へ (3) 繰り返す部分 (4) 後始末の式 (5) → (2)へジャンプ (6) ※for文の次の命令
もしも,「条件が成立している間は実行が繰り返される部分」に実行文が一つだけしか存在しない場合には,中括弧を省略できる.また,初期化式や条件式,後始末の式は,それぞれ必要なければ空白のままでもよい.
このfor文は,次のwhile文と等価である.
初期化式; while(条件式) { 条件が成立している間は実行が繰り返される部分 後始末の式(次回の繰り返しのための準備); }
このように,for文を利用しなくともwhile文だけプログラムを書くこともできるが,実際のプログラムでは初期化の部分と,後始末の部分が必要になることが多いため,for文で書いた方がわかりやすくなる.例えば次のように使用する.
for(i = 0; i< 3000; i++) { 条件が成立している間は実行が繰り返される部分 }
この例は,変数iを0から一つずつカウントアップして3000になるまで3000回繰り返す.実際のプログラムでは繰り返し部分の中で,変数iを使った計算などを行う,
while文と同様にfor文でも無限ループを記述できる.for文では,初期化式,条件式,後始末の式は必要ない場合には空白にできるため,無限ループは次のように書く.条件式がない場合には,常に条件が成立しているものと見なされるためである.
for(;;) { 無限に繰り返し続ける部分 }
while文やfor文などのループは,break文で強制終了することができる.break文は次のように書く.
break;
break文は,通常次のようにif文と組み合わせて使用する.
for(;;){ 繰り返し処理 if(何か終了条件){ break; } } ...breakの後に実行する部分....