第九章 制御文
for文(繰り返し)
決められた回数だけ処理を繰り返す命令です。
int num=3;
for(int i=0; i<num; i++){
処理;
}
事前に繰り返しの回数が分かっているなら
迷わずこれだ。
繰り返し制御では、
最も使用頻度が高いのではないだろうか。
目次
1.使い方
まずは動かしてみましょう。
//Sample38_51.java
class Sample38_51 {
public static void main(String[] args){
for(int i=0; i<3; i++){
System.out.println(i);
}
}
}
コマンドライン
> javac Sample38_51.java
> java Sample38_51
0
1
2
2.書式
書式
for ( 初期化式 ; 条件式 ; 変化式 ){
処理;
}
最も一般的な形
int num=3;//繰り返す回数
for(int i=0; i<num; i++){//変化式で i が一つずつ増える
System.out.println(i);
}
「()」カッコの中は、3つに仕切られています。
「;」は、「文末のコレ;」とは関係ありません。ただの区切り文字です。
「i++」って
インクリメントだっけ?
その通りだ!ちなみに
前ぷらぷらでも同じ結果になるが、
普通に後ろぷらぷらを使ってくれ。
混乱する。
3.解説
以下のイメージに沿って説明していきます。
forの実行イメージ
画像の説明
- for文 に入って 初期化式 (int i=0) を実行します。
初期化式 が実行されるのは、最初の 1回だけです。
- 条件式 (i<3) を評価します。
ここでは i==0 なので、(i<3) は true です。
条件式が true のときは、処理 を実行します。
- 処理 が終わったら、変化式 (i++) を実行します。
- (2.)に戻って 条件式 (i<3) を評価します。
条件式が true の間(2~4) を繰り返します。
.
.
.
- i==3 になると、条件式が false になるので、for文 を抜けます。
ループカウンタ変数
繰り返し回数をカウントする変数を「ループカウンタ変数」と呼びます。
ここでは「i」のことですね。
ループカウンタ変数は「 i, j, k, l, m, n 」といった
1文字の変数を使う習慣があります。
4.while文との使い分け
for文は、以下の様な while文 を定型化したものと思ってください。
//Sample38_52.java
class Sample38_52 {
public static void main(String[] args){
int num=3;//繰り返す回数
int i=0;//初期化
while(i<num){
System.out.println(i);
i++;//変化式
}
}
}
必須項目の 初期化式 ; 条件式 ; 変化式 を1か所にまとめて可読性を向上しているのです。
for文で書けるものは for文がオススメです。
この形に当てはまらない場合は、while文も候補になります。
5.ループカウンタ変数 i のスコープ
スコープとは、有効範囲のことです。
変数は、宣言したブロックの中が、有効範囲になります。
while文 の i は、ブロックの外で宣言。
for文は、ブロックの中で宣言している違いがあります。
for文は、繰り返しの後に不要になる変数を、ブロック内で破棄して後に残しません。
お上品な書き方と言えるかもしれません。
変数のスコープについては、
後でじっくり説明しよう。
でも、慣れるまでは while文 の方がわかりやすいんだよね。
お疲れ様でした。