ITスクールの授業7日目のまとめ2:制御文ー反復文(for)
前書き
今回は、反復文の中で反復の回数が決まってある「for」文をまとめてみる。
コードを反復するということは、コードの量やユーザーのプログラミング能率的なところから見ると、すごく効率な作動である。10回ぐらいの、人間の作業でできる範囲を超えて10000回、もしくは無限にコードを繰り返す場合には反復文を使うしかない。
for文だとしても、回数が決まってない反復ができないということではないが、その場合はwhile文を使うことが多いらしい。
for文
for文に形式は下記のようである。
for(初期化式; 条件式;変化式){
条件式がTRUEであるとき実行するコード
}
for文の詳しい作動方式は下記のようである。
- for文が始まると、まず括弧の中の初期化式を実行する。
- 初期化した式が、条件式に当たっているか(TRUEであるか)を検査する。
- 条件式がTRUEであれば、ブロックの中のコードを実行する。
- 条件式がFALSEであれば、ブロックを飛ばしてfor文を終了する。
- 3番でコードの実行が終わると、括弧の中の変化式を実行する。
- 変化式で値が変わった初期化式で、再び条件式を検査する。
- 変化式実行->条件式検査の結果がFALSEになるまで、3~6番を反復する。
実際のコード例文を見せる前に、初期化式について詳しくまとめる。
上の規則によって、実際にfor文を作ってみたら下記のようになる。
//for文を使って、1から10まで出力する例文
for(int i = 1; i <= 10; i++) { // iが1から10まで1づつ増えて、コードを10回繰り返す。
//繰り返すたび、初期化したiの値が1づつ増える。
System.out.print(i + " ");
}
System.out.println();
次は、for文の外で宣言した変数を、for文の中で使う例文である。
int sum = 0;
int i;
for(i = 1; i <= 100; i++) { // 1から100まで1づつ増えて、100かい繰り返す。
sum += i;
}
System.out.printf("1から%dまで足した値 : %d", i-1, sum);
次は、for文の初期化式、条件式、変化式に実数を使った場合の例文。実数はfor文の括弧のところでは使わないべきである。
for(double x = 0.1; x <= 1.0; x += 0.1){
System.out.println(x); //実行してみると、0.1づつ的確に増えず、少しの誤差ができてしまう。
//下のスクリーンショットを見てください。
}
次は、for文の中にif文を使って、if文の条件に当たる場合、当たらない場合を分けて特定の規則を作る例文である。
int count = 0;
for(int i = 1 ; i <= 10; i++) {
if(i%2 == 0) {
count += 1;
}
}
System.out.println("1~10までの偶数の数: " + count);
多重for文(だいたい二重まで)
while文をまとめるとき作成したように、for文も内部にfor文を作成することができる。このようなfor文を多重for文[1]という。
2重for文を例にすると、外側のfor文と内側のfor文に分けられる。外側のfor文が1回反復するたび、内部のfor文はfor文を全体反復するので、内部のfor文の反復回数は、自分自身の反復回数に外側の反復回数を掛け算した分になる。
次は、2重for文を使って九九の1~9段を全部出力する例文である。
for(int m = 2; m <= 9; m++) { // ここ(外側)の反復が1回済むと、内部のfor文は全体を1回反復する。
System.out.println("---九九の " + m + "段 :---");//各段の始まりに出力
for(int n = 1; n <= 9; n++) { // 外側のfor文が1回反復するたび、このfor文は全体を1回反復する。
//つまり、m*nの回数ほど、下のコードが実行される。
System.out.printf("%d X %d = %d\n", m, n, m*n);
}
}
以上で、反復分のfor文についてまとめてみた。括弧の初期化式、条件式、変化式の3つで反復をしていく仕組みを理解すると、すごく複雑な形でないと使うことに難しいところはないと思う。
しかし、よく使われる文法でもあり、人間の目に見えない反復を内部で実行して結果だけを見せる特徴があって、反復するコードがうまくできていないとエラーもすごくでてくる文法であるので、これからも使っていくながら練習することが大事だと思う。
-
とはいえ、だいたい二重までしか使わないらしい。 ↩︎
Discussion