2017年12月14日

師匠のJava道場~第4回・繰り返しの命令!forとwhileじゃ!

師匠T:はああああ! 見よ、B-Magaはっ!

弟子D:赤く萌えているぅぅぅぅぅ!!

師匠T:ふぅ、いい汗をかいたのう、弟子よ。さて、今回のJava道場は繰り返しの命令について説明していくぞ。

弟子D:おぉっ!

師匠T:それでは、いくとするぞ!!

▽まずはfor文じゃ!▽

師匠T:まずは、for文から説明していくとするぞ。これはこのように書く。

===============================================================
for (カウンタ変数の初期化;ループの継続条件;カウンタ変数の変化)
例:for (int i=0;i<10;i++) {

}
===============================================================

師匠T:まずは、カウンタ変数の初期化から説明していくぞ。これは、継続条件となる変数に最初の値を入れるところじゃ。書き方は、通常の変数の代入と同じじゃ。例でいえば、変数iに0を入れておるわけじゃな。

弟子D:ふむふむ。

師匠T:なお、例ではintが頭についておるが、既に変数が宣言されておる場合は、別につける必要はない。

弟子D:なるほど、わかりました。

師匠T:では次、ループの継続条件じゃ。こちらは、条件を書くのじゃが、for文は、この条件が満たされている間、{と}の間の処理を繰り返すのじゃ。

弟子D:ということは……。

師匠T:うむ。条件が成立しなくなったら、繰り返しから抜けるというわけじゃな。上の例でいえば、iが10未満の間、繰り返す。つまり、iが10以上になったらループを終えるわけじゃ。

弟子D:なるほど。そしてカウンタ変数の変化はそのまま、ループの最後まで行ったときに、変数の値を変える処理を書くわけですね?

師匠T:……。

弟子D:ど、どうされましたか?

師匠T:まさか、おぬしがそれをわかるとは……。誰じゃ、弟子の脳をいじくった者は!?

弟子D:……。

師匠T:こほん。おぬしの言うとおりじゃ。例でいえば、ループの最後まで行ったあと、変数のiの値に1を足すわけじゃ。

弟子D:なるほど……あれ?1を足すのなら、i=i+1なのでは?

師匠T:おぉ、それを説明し忘れておったの。++はインクリメント演算子と言って、左辺の変数に1を足して、その値をそのままその変数に入れる、という処理をする演算子なのじゃ。これに似たものとして、1を引いて入れるデクリメント演算子というのもあるぞ。こちらは--じゃ。

弟子D:なるほど。

師匠T:なお、for文のこれらの記述は全て省略してこのように書いてやることも可能じゃ。

===================
for (;;) {

}
===================

弟子D:こうするとどうなるのですか?

師匠T:うむ。終了条件も何もないので、ループを永遠に繰り返すことになるぞ。

弟子D:うわ、それはとても困るのでは。

師匠T:心配はいらぬ。breakを入れれば、そこでループから抜ける。これを、条件分岐と組み合わせてやればよいのじゃ。

弟子D:なるほど。終了条件を満たしたときに、break文を実行するように、if文を書けばいいわけですね。こんな風に。

===================
for (;;) {
  if (i>10) {
    break;
  }
}
===================

師匠T:うむ、その通りじゃ。では次に進むぞ。

▽while文じゃ!▽

師匠T:さて、次はwhile文じゃ。これも、forと似ており、条件式が成立している間、{ と } の間の処理を繰り返す、というものじゃ。このように書くぞ。

===================
while (条件式) {

}
===================

師匠T:また、これと似たようなもので、do~whileというものもある。

===================
do {

} while(条件式)
===================

弟子D:この二つはどう違うのですか?

師匠T:条件式が成立している間繰り返すというのは、先のwhileと同じじゃ。ただ、このdo~whileの場合は、条件が成立していなくても、最低一回だけ繰り返す、というところが違うのじゃ。

弟子D:なるほど。うまく使い分けることが肝要ですね。

師匠T:そうじゃな。

▽breakとcontinueについて▽

師匠T:最後に、breakともう一つ、continueについて教えておこう。breakについてはわかっておるな。

弟子D:はいっ!……えーと、なんでしたっけ?

師匠T:たわけがっ!!(飛び蹴り)

弟子D:うわぁっ。

師匠T:おぬしの頭は容量が1KBしかないのか。breakを実行すると、そこでループを終了し、} の次の命令に処理を移すのじゃ。

弟子D:な、なるほど。それではcontinueは?

師匠T:うむ。こちらは、実行されると、そこでループの先頭に戻って次の繰り返しを始めるのじゃ。図にするとこうなるぞ。

java171213-01.jpg
▲ break

java171213-02.jpg
▲ continue

弟子D:なるほど。こちらも使い分けることが肝要ですね。

師匠T:うむ、その通りじゃ。さて、次回は、繰り返しと組み合わせて使うと強力な配列について説明するぞ。復讐をしっかりとやっておくがよい。

弟子D:あの、師匠。ふくしゅうの字が違います。

師匠T:気にするな。



※次回の更新は12月18日、URA URA GAME REVIEW!の予定です。お楽しみに!
posted by 裏編 at 09:31| 師匠のJava道場 | 更新情報をチェックする