繰り返し命令--- for命令


■ for 命令の書き方

繰り返し命令がなぜ必要かは、言うまでもありません。 コンピュータは人間と違って同じことを繰り返しさせても何も文句を言いませんし、しかも正確に実行します。 プログラムを書く人間にとっても、「これを100回繰り返して下さい」というだけで良いので大変好都合です。 そのために、ほとんどのプログラミング言語に繰り返し命令というのが準備されています。 Java言語でも同様で、いくつかの繰り返し命令がありますが、その中で代表的なfor命令と while命令をここで説明しておきます。

for命令は、配列のところですでに使いました。 ここでは、それをもう一度簡単に説明しておきましょう。 for命令の書き方は、次のようになります。

   for(初期化の式、繰り返すかどうかを調べる式、変化のための式){
             繰り返し実行させる処理
          }

例えば、次のプログラムは「繰り返しています」というメッセージを5回繰り返し出力し、繰り返しが終了したら、「繰り返しが終了しました」と表示するプログラムです。

// 「繰り返します」を指定回数ほど表示する。

public class LoopFor1{
    public static void main(String[] arges) {
	int i;

                   for(i=1;i<=5;i++){
                        System.out.println("繰り返しています。");
                      }
                  System.out.println("繰り返しは終了しました。");
    }
}
上記のプログラムでは、変数 i を「繰り返し回数を数えるための領域」に使っています。

変数 i に、始め1を代入し、iの値が5を越えていないかを検査します。越えていなければ「繰り返しています。」を出力します。その処理を1回繰り返すたびに1を加え、そのたびに i が5を越えていないかを検査します。iが5以内であれば「繰り返しています。」を出力し、5を越えていたら、「繰り返しています。」は出力せず、for命令を終了し、「繰り返しは終了しました。」を出力します。

上記プログラムの実行結果を以下に示します。

[egi@taro]$ java LoopFor1
繰り返しています。
繰り返しています。
繰り返しています。
繰り返しています。
繰り返しています。
繰り返しは終了しました。
[egi@taro]$
■ for命令を使ったプログラム例1

このようにfor命令は、回数を数える変数を指定して、実行回数を数えながら繰り返すことが特徴です。回数を数える変数は、iである必要はありません。 また、その変数は回数を数えるだけに使用するとは限りません。

次のプログラムでは、繰り返し回数を出力するように使っています。したがって、このプログラムでは、iを繰り返し回数を数えるためと、メッセージで表示するための番号の2通りに使っています。 このように回数を数える変数をうまく処理に利用することにより、効果的な手続きを記述することができます。

// 「繰り返します」を指定回数ほど表示する。

public class LoopFor2{
    public static void main(String[] arges) {
	int i;

                  for(i=1;i<=5;i++){
                        System.out.println(i+"番目の繰り返しをしています。");
                      }
                  System.out.println("繰り返しは終了しました。");
    }
}
上記プログラムの実行結果を以下に示します。
[egi@taro]$ java  LoopFor2
1番目の繰り返しをしています。
2番目の繰り返しをしています。
3番目の繰り返しをしています。
4番目の繰り返しをしています。
5番目の繰り返しをしています。
繰り返しは終了しました。
[egi@taro]$ 
■ for命令を使ったプログラム例2

for命令を使って、*文字を10個印刷するためには、次のようなfor命令を記述すれば良いですね。
  
    for(i=1;i=<10;i++){
             Systemu.out.println("*");
        }
この記述を使って、始めは*を1個表示し、2回目には2個、3回目には3個と、順に増やして最後に10個表示するには、どうしたら良いでしょうか。 次のプログラムは、それを実現しています。
  
// *を1〜10個と変化させながら表示する。

public class LoopFor3{
    public static void main(String[] arges) {
	int i,j;

                  for(i=1;i<=10;i++){
                       for(j=1;j<=i;j++){
                              System.out.print("*");
                           }
                       System.out.print("\n");
                    }
                  System.out.println("----------");
    }
}
このプログラムの実行結果を次に示します。

  
[egi@taro prog]$ java LoopFor3
*
**
***
****
*****
******
*******
********
*********
**********
----------
[egi@taro prog]$ 

上記のプログラムは、for命令の中でfor命令が使われています。外側の繰り返し1回づつにそれぞれ内側の繰り返しが行われます。上記のプログラムは、1行に何個の*を表示するかが1から10まで変化しますので、それを外側のfor命令で変化させています。外側のfor命令で出力する*の数が決まれば、内側のfor命令でその個数ほど*を繰り返し出力しています。

このような繰り返しを多重繰り返しあるいは多重ループと呼びます。 また、このようなプログラムの形(繰り返しの中に繰り返しがある)をネスト構造と呼び、プログラムでは良く使われます。 多重は、このプログラムのように二重だけでなく三重や四重など、必要に応じて多重化することができます。


プログラミング / 江木