なんとなくわかるJava入門#8 繰り返し編その②
こんにちは。
今回は繰り返し編その②です。今回の目標は「for文を理解する」です。
これまでの復習
前回学習したwhile文について簡単に復習してみましょう。読むだけでも良いですが、可能であれば、Eclipseを起動し、次の名前のプロジェクトとJavaファイルを作って下さい。やり方が分からない人は、実際に動かしてみる編の記事を参照してください。
プロジェクト名:LoopWhile
クラス名:LoopWhileMain
public class LoopWhileMain {
public static void main(String[] args) {
System.out.println("復習します。");
int sum = 0;
int count = 0;
while( count < 5 ) {
sum += 2;
count++;
}
System.out.println("合計:" + sum);
}
}
このプログラムは、sumという整数型の値を扱う変数と、countという繰り返し回数をカウントする変数を用意し、{}内の処理をcountの値が5未満のあいだ繰り返し実行します。結果として、5回{}内の処理が実行されることになります。
繰り返しの回数を制御している部分は、
・int count = 0;
・count < 5
・count++;
になります。
while文は、実行したい目的処理( sum += 2;)と、繰り返し回数を制御する処理が同じ {} 内に記述されます。したがって、単純な n 回繰り返しの処理であっても、ちゃんとコードを読まないと何回繰り返しされるのかがわかりません。例えば、 {} が1万行あった場合、その中から count の値を操作している行を見つけ出して、どのような繰り返しが行われるか考える必要があります。
”単純な”繰り返し処理を簡素に記述できる構文として、for文があります。
繰り返し処理 - その②
for文
for文を利用することで、繰り返し回数を制御する処理を分けて記述することが出来ます。
今回もプログラムの書き方から覚えていきましょう。
このような for から始まるひとまとまりの文のことを、「for文」と呼びます。
初期化式には、繰り返し処理の最初の一回のみ実行される式を記述します。一般には繰り返し回数を制御する変数の初期化を行います。
条件式には、繰り返し処理を実行するか判定する式を記述します。この式の評価結果はboolean型の値(つまり、true or false)でなければいけません。典型的なものとしては、比較演算子( == とか、> とか)が用いられている式を記述します。
更新式には、繰り返し処理の後に実行される式を記述します。一般には繰り返し回数を制御する変数の値を加算等で更新します。
実行順としては、
- まず、初期化式が実行され、
- その後、条件式を実行します。
- その結果が真であれば、直後の「{}」の中の繰り返し処理が実行されます。
- 次に、更新式を実行し、2に戻る
※ 条件式の評価結果がが真である限り、2、3、4を繰り返し実行
このようにfor文は、 () 内に繰り返し回数を制御する処理、 {} 内に目的の処理で分けて記述することができ、簡素な記述となります。厳密には、() 内に繰り返し回数の制御とは関係のないことも書けますが、記述が分かりづらくなってしまうので避けましょう。
では、復習のプログラムの繰り返し処理について、このfor文を使って確認してみましょう。以下のようにプログラムを書き換えます。
public class LoopForMain {
public static void main(String[] args) {
System.out.println("復習します。");
int sum = 0;
for(int i = 0; i < 5; i++ ) {
sum += 2;
}
System.out.println("合計:" + sum);
}
}
単純な n 回繰り返しの処理であれば、while文よりも分かりやすくなりました。
※ これまで繰り返し回数をカウントする変数の名前はcountとしていましたが、ここでは、i としています。countでも問題ありませんが、慣習として、for文の場合は i とすることが多いです。
以上のように、for文を使うことで、これまでは単純に上から下に行われていた実行の流れが、条件を満たす間繰り返し実行するといった流れを実現できるようになります。
こまけぇハナシ
while文とfor文の使い分け
for文とwhile文はどちらも繰り返し処理を表現するための構文で、同じ内容の処理をどちらを使っても記述することができます。分かりやすい簡素なプログラムを記述するために、繰り返し処理の特徴に応じて、for文とwhile文を使い分けるようにしましょう。
for文は、繰り返し回数が最初から決まっている場合にはwhile文と比較して、簡素に記述することができます。これは、for文は繰り返しの回数を制御する部分と、目的の処理の部分を分けて記述することができるからです。
一方で、「繰り返し回数が最初から決まっていない場合」、「目的の処理が、繰り返しの回数の制御に密に関わっている場合」は、while文の方が簡素に記述することができます。例えば、以下のようなプログラムは、合計金額 (total_price) が1000未満の間、商品金額 (price) の加算と商品数 (items) のカウントを続ける繰り返し処理です。何回繰り返しを行うかはpriceによって変わります。
int total_price = 0;
int items = 0;
while( total_price < 1000 ) {
total_price += price;
items++;
}
(一部省略)
終わりに
といことで、繰り返し編その②は以上です。次回は配列です。
ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。