
今回は
というテーマでお送りします。
今回は、繰り返しの最終回です。
繰り返しを中断する方法を学んでいきます。
構造化プログラミングの観点という話もありますので
最後まで楽しんで、ご覧くださいね。

今回も、よろしくお願いします。

全集中で聴いていきます。

【Youtube版】
Youtubeでもお伝えしていますので
是非チェックしてくださいね。
【1】繰り返しの中断

前回まで、色々なの繰り返し処理を 見てきました。
例えば、for ループ。

初期化式を実行して、条件式で継続の判断をして
ブロック内の処理を行った後に、条件変化式を行う。

そして、また条件式により継続の判断…。
この繰り返しをして、最終的に条件式が false に
なったら for ループを抜けるというものでした。

この時、処理のブロックの中で、処理を中断して
ブロック自体を抜けたい場合がありそうです。

あるいは 処理のブロックの中で、その回の処理をスキップして
次の回の処理に移りたい場合もありそうです…。
for 文の場合では、その回は中断して 条件変化式の実行から
条件式の判断へ 移行したい場合です。

Javaでは、このような場合の処理方法が
準備されています。
次のコーナーで、お伝えしていきますね。
【2】break

まずは、break です。
この break 、見覚えがあると思います。
そうですね、switch 文のところで出てきました。
switch 文でも、break を記述すると
該当のブロックを抜けることができました。

そして、この break は、繰り返しの中でも
使うことができます。
この例は for ループで、for 文の 条件式が true の間
処理を実行しています。
その中で、ある条件 により break するパターンです。
回数指定してループしていても、残りの回数は
処理を行わず、for ループを抜けます。

この例では for文ですが…
while文、do-while文でも、同様に break を記述すると
繰り返しのブロックを抜けることとなります。
for 文の例を見てみましょう。
for (int i = 0; i < array.length; i++) {
if (array[i] < 0) {
break;
}
System.out.println(array[i]);
}
まず、int型の配列 array を宣言して初期化しています。
そして、配列の全要素の処理の
基本パターンを行っています。
初期化式 が int i = 0;
条件式が i < array.length;
条件変化式が i++;
各ループの回で、System.out.println で
arrayの i 番目の要素を表示しています。
この中で、array の i 番目の要素が マイナスだったら
forループ自体を抜けたい場合…

このように、入れ子の構造でif文を書いて
break; と記述する事で ループを抜ける事になるのです。

複雑のな条件とか、演習で出てきたらチャレンジしてみます。
【3】continue

次に、continue を見ていきましょう。
この例は for ループで、for 文の 条件式が
true の間 処理を実行しています。

その中で、ある条件 により
continue するパターンです。
その回をスキップして
次の回に移りたい場合にこのように記述します。
この場合には、まず 条件変化式 を実行して
判定を行えるようにしてから
条件式で継続の判定を行います。

continue も、while文、do-while文で
記述することができます。
ただし、while文、do-while文には
条件変化式が明示されていませんので…
continue が指定されると、条件式に移って
継続判定を行うこととなります。
for 文の例を見てみましょう…
for (int i = 0; i < array.length; i++) {
if (array[i] < 0) {
continue;
}
System.out.println(array[i]);
}
まず、int型の配列 array を宣言して初期化しています。
そして、配列の全要素の処理の
基本パターンを行っています。
各ループの回で、System.out.println で
arrayの i 番目の要素を表示しています。
この中で、array の i 番目の要素が マイナスだったら
その回をスキップして次の回に移りたい場合…
このように、入れ子の構造でif文を書いて
continue; と記述します。

この事により、初理は 条件変化式を実行した後に
条件式で継続判定を行う事となるのです。

これも、うまく使えば、楽にプログラムが書けそうですね。
活用していきます。
【4】構造化の観点から

以前に基本構造のお話をした時に
こんなお話をしました。
処理は、順次・条件分岐・繰り返しの
3種類だけで表すことができて
これに従って プログラミング する事を
『構造化プログラミング』 といいいます。

覚えていますか…?
構造化プログラミングをすると、プログラムの見通しを良くして
大人数でも協力して設計・開発ができるのです。
さて、今回学んでいる、break と continue
ですが、これは 構造化プログラミングの観点からは
少しだけ逸脱している考えです。

この例は、繰り返しの基本パターンです。

初期化式が i = 0 、条件式が i < 10 、
条件変化式が i++ のパターンなので
i が 0 から 9 まで処理をする事になります。
この中で、条件分岐の条件式により
break する処理を書くと
if ブロックの中で、その外側の forループを
飛び越える(抜ける)処理を書くことに なってしまいます。

continue の場合にも同様で
実際の処理を飛ばして 条件変化式を実行…
その後に 条件式 で継続判断という事になります。

実際に、1つのループの中で break や continue を
多用しているプログラムは…
処理が、どこに行ったか
分かりにくくなってしまう場合もあるのです。

とはいえ、break や continue は java で準備された
便利に使える機能です。
break や continue を使わないパターンも検討して
見通しの良いプログラムを 心がけるようにしましょう。


とっても大切ですね。
しっかり、ノートしておきました。

分からないかもですね…。
構造化プログラミングを意識しながら、Javaの便利機能も使って
バランスよくプログラムを書く事を心がけます。
【まとめ】

● break・continue・構造化の観点から
処理を中断して、ブロック自体を
抜けることができる。
・ 処理のブロックの中で、その回の
処理をスキップして、次の回の
処理に移ることもできる。
ブロックを抜けることができる。
・ 対象は、switch文、for文、
while文、do-while文。
ブロックの該当回の処理を
スキップして次の回に進める。
・ 対象は、for文、while文、
do-while文。
・ for文の場合には、条件変化式を
実行してから 条件式により
継続の判断を行う。
構造化プログラミングからは
少し逸脱している。
・ 1つのブロックの中で乱用
すると見通しが悪くなる場合が
あるため、注意が必要。
今回も、ご覧いただき、ありがとうございます。