2012年4月12日木曜日

【Java】繰り返し

プログラム組んでると、同じ(様な)処理を何度も繰り返すようなことがあります。
例えば次のような場合。
int i = 0;
i++;
System.out.println(i + "回目");  // "1回目"と表示
i++;
System.out.println(i + "回目");  // "2回目"と表示
i++;
System.out.println(i + "回目");  // "3回目"と表示
i++;
System.out.println(i + "回目");  // "4回目"と表示
i++;
System.out.println(i + "回目");  // "5回目"と表示

5回の繰り返しくらいならまだ良いですが、10回、100回、1000回、、、
とてもじゃないけど書けません。
それにタイプミスしてバグを生みます(バグを見つけるのも大変)。

こんなときに、for文を使用します。

for (初期化部; 繰り返しの条件式; 更新部;) { 
    繰り返す内容 ;
}

for (int i = 1; i < 6; i++) {
    System.out.println(i + "回目");  
}

こうコーディングすることで、先に書いたソースと同様の内容を
画面に表示することができます。

詳細を説明しますね。

まず初期化部、"int i = 1;"の部分です。
初期化部では変数を宣言できます。
宣言した変数のスコープはループのブロック内のみ(for文内だけで抜けると使えないってこと)で、
上のソースではfor文内だけで使えるint型の変数 i を宣言し、1を代入しています。

次に繰り返しの条件、この部分は必ずboolean型になります。
上のソースでは"i < 6"の部分で、変数 i が6未満のときTRUEとなります。
for文は条件式がTRUEの間、繰り返します。
つまり変数 i が6未満の間だけ、ブロック内の処理を繰り返すと言う事です。

最後に更新部、"i++"の部分です。
更新部はfor文の繰り返しの際のブロックが終了する後に実行される処理です。
上のソースでは、"System.out.println(i + "回目");" が完了した後に
"i++;"が実行され、変数 i を更新します。

=== ここで補足 ===
多分"i++"始めて出てきたと思います。
"++"はインクリメントといい、指定した変数に1を加算します。
インクリメントには"++i"(前置インクリメント)と"i++"(後置インクリメント)がありますが、
この説明はまた今度。
因みに"--"はデクリメントといい、指定した変数に1を減算します。
================

つまり上のソースは、
1. for文の中でのみ使用可能な変数 i を宣言し、1を代入
2. 条件式"i < 6"を判定する
3. i == 1 の為、条件式はTRUEの為、for文のブロックへ
4.  "System.out.println(i + "回目");" を実行
5. 更新部"i++"が実行され、i に i + 1が代入される
6. 条件式がFALSEになるまで2.~5.を繰り返し
を行っています。

for文って便利ですね。
次回はwhile文の繰り返しについて書きますね~

0 件のコメント:

コメントを投稿