繰り返し処理-for-

1から100までの和をコンピュータに計算させる際に、繰り返し処理が必要になります。

ここでは、繰り返し処理の代表である「for」について解説します。

1から100までの総和を求めるプログラム

ここでは、

  • 1から100までの総和
  • 100以下の奇数の総和
  • 100以下の偶数のの総和

を計算するプログラムを作成します。

コーディング

ボタンを押した際のプログラムを以下のように記述します。

class Test
{
	public static void main(String[] args)
	{
		int number=100;
		int sum[]=new int[3];

		for(int i=0;i<3;i++){
			sum[i]=0;
		}
		for(int i=1;i<=number;i++){
			sum[0]=sum[0]+i;
		}

		for(int i=1;i<=number;i=i+2){
			sum[1]=sum[1]+i;
		}

		for(int i=2;i<=number;i=i+2){
			sum[2]=sum[2]+i;
		}

		//値の表示
		for(int i=0;i<3;i++){
			System.out.println("sum["+i+"]="+sum[i]);
		}
	}
}

実行すると

sum[0]=5050

sum[1]=2500

sum[2]=2550

と表示されます。

解説

for文の構文は以下のようになります。

for(初期状態;繰り返し条件;繰り返し時の処理){
   処理
}

初期状態に変数のはじめの状態を書きます。例えば

for(int i=0;i<=number;i++)

なら「int i=0」なので初期状態がi=0になります。ですから、i=0から処理がスタートします。

そして「i<=number」は繰り返して処理をする条件となります。i<=numberを満たす限り処理を行います。

最後の「i++」は繰り返し時の処理は、繰り返しを実行した際の処理となります。

i++はi=i+1と同じで、iがひとつ繰り上がります。

よって、

for(int i=0;i<=number;i++)

なら、

i=0,

i=1,

i=2,

i=number

の処理が実行されます。

プログラミングでは

		for(int i=0;i<3;i++){
			sum[i]=0;
		}

によりsum[i]をすべてゼロにしています。

そして、

		for(int i=1;i<=number;i++){
			sum[0]=sum[0]+i;
		}

により

 1+2+3+\cdots+100

を計算させています。これを暗算すると

 1+2+3+\cdots+100=100\times (100+1)/2=50\times 101=5050

となります。

		for(int i=1;i<=number;i=i+2){
			sum[1]=sum[1]+i;
		}

の場合は

 1+3+5+\cdots+99=50\times 100/2=2500

となります。

最後の

		for(int i=2;i<=number;i=i+2){
			sum[2]=sum[2]+i;
		}

 2+4+6+\cdots+100=50\times 102/2=2550

となります。

著者:安井 真人(やすい まさと)