
今回は
というテーマでお送りします。
この 繰り返し処理をマスターすると
プログラムの幅がグッと広がってきます。
一緒に 取り組んでいきましょう。

プログラミング出来る範囲が広がると嬉しいですので
今回も、頑張ります。よろしくお願いします。


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

① 基本構造の1つ
プログラムの処理の流れは
基本的な3つの構造で表すことができます。
これは #04 プログラム全体像 でお話した
「基本構造」というものです。
覚えていますか?
以下の記事でお伝えしています。
ぜひ参考にして頂けたらと思います。
【Javaプログラミング超入門 #04】プログラム全体像
ここでも 簡単に復習しておきましょう。
プログラムの処理の流れは
基本的な3つの構造で表すことができます。
まずは、順次です。通常のプログラムでは
上から下に向かって 処理を順番に実行していきます。

そして、次が条件分岐。
学習してきた「 if 文 」「 switch 文 」は
この条件分岐の基本構造を実現するものでした。

そして、今回 学んでいく 繰り返し(反復)です。
これを理解すると、基本構造を全て理解できます。

基本構造の学びの 最後の一山ですね。
② 条件により処理を繰り返す
基本構造(制御構造)。
✅ Java では、条件が true の間
処理を繰り返す。

今度は、条件によって処理を繰り返すという事ですね。
ここまでは、理解できました…。

それが、繰り返しの条件でも活きてきそうですね。
続きも、全集中で見ていきます!
③ 繰り返しの例
0から2まで表示する場合を考えましょう。
この方式が考えられます。
0を表示する。
1を表示する。
2を表示する。
上から順に実行する【順次】ですね。
この方法でOKです。
この場合には、最も良いプログラムかと思います。

そして、その次に考えてみましょう。
例えば、この 0 から 2 までのところが
50 から 1000 までになった時を考えましょう。
3行 だったプログラムですが
951行 も書かなければなりませんね。
行のコピーをして該当の箇所を直していって
労力もかかりますし、間違いも入りやすくなります。

私だったら、どこかで絶対に間違えてしまいます。
このように、同じような処理を何回も行う場合に
【繰り返し】の処理を行います。
この例の場合には「~を表示」の部分は、毎回同じです。
0, 1, 2 の部分が違うようですね。

こちらが、今回の例を
【繰り返し】を使って書いたパターンです。

まずは、フローチャートで考えてみましょうね。
先程お話した、毎回の処理で違いがある部分は
0, 1, 2 の部分ですが、ここは変数にする事を考えます。
変数 という 箱 の中の値を変えながら 処理ができますからね。
ここでは、変数名を cnt (カウント) としています。
最初に 0 を表示したいので、cnt には 0 を代入します。
そして、その後に継続する条件式を書きます。

今回の例では、0 から 2 まで処理をしたいので cnt < 3 とします。
3 に達しない間は処理するという意味ですね。
最初の評価時には 0 < 3 となり true ですね。
true の場合には、下にいって繰り返し処理を実行します。
処理としては、cntを表示。cntの値の表示という意味です。
0が表示されます。

その後に、繰り返しを行うにあたっての
条件式の対象(この場合、cnt の値)を変化させます。
この場合には、1 足しながら処理したいので
インクリメント演算子を使って、cnt に 1 を足します。

そして、線が左側から条件式の直前に戻っています。
処理がここに戻るということです。

ここに戻ったら、再度 条件式を評価します。
cnt < 3 の部分は、1 < 3 ですので、true ですね。
繰り返しのが継続されます。
1が表示されます。
その後に、またcntに1を足します。
そして、線が左側から条件式の直前に戻り
再度、条件式を評価します。
cnt < 3 の部分は、2 < 3 ですので、true ですね。
また、処理が継続します。
2 が表示されます。
その後に、また cnt に 1 を足します。
そして、線が左側から条件式の直前に戻り
再度、条件式を評価します。
cnt < 3 の部分は、3 < 3 になるので、今度は false。
ここで、処理から抜けて。処理終了となります。

結果として…
0 を表示
1 を表示
2 を表示
が実行される事となります。

【順次】で書いたことと同じ結果ですね。
これが、繰り返しの例となります。
この例の中には、繰り返しの基本が詰まっています。
次のコーナーで、見ていきましょう。
④ 繰り返しの基本パターン
それでは、繰り返しの基本パターンを見ていきましょう。
先程の例が左側、基本パターンを右側に書いてあります。

対応を見ながら 説明していきますね。
例の cnt = 0 の部分ですが、ここは 初期化式にあたります。

これは、条件の対象の変数の初期化など行います。
次に、ひし型の中に書いた cnt < 3 という部分は
条件式にあたります。

ここでの条件式は、継続条件の判定を行います。
true であれば継続です。
フローチャートでは、下に進んで継続します。
false になったら、右側から繰り返しを抜けて
次の処理に進んでいきます。
cnt を表示 の部分は、繰り返しの中の処理です。
複数の処理を行うことができます。

cnt++ は、条件変化式です。
次の条件式の評価の前に 対象の値の変化 を記述する部分です。

これが、基本パターンとなります。
繰り返しの処理を考える場合に
まずは、この『基本パターン』をイメージしましょう。

繰り返しの時には、思い出すようにします。

なんだか、分かってきましたよ~。
【2】while 文

① while文とは
条件式が true の間
while ブロックを継続する。
while文では、まず
キーワード while の後に丸括弧を書いて
その中に条件式を書きます。

そして、その後にブロックを記述。
条件式が true の間、このブロックの中を
実行します。

そして、
ブロックを1回実行した後には、条件式を再度 評価し
true であればブロックの中を実行します。
最終的に 条件式が false になったら
ブロックを抜けることになります。

② while文の例
最初に見てきた例題を while 文で書くと
このようになります。

右側の赤枠で囲んだ部分が、while文です。次のコーナーで
フローチャートとの対応を 見ていきましょう。
③ フローチャートとの対応
それでは、順に見ていきましょう。
まず、初期化式として cnt = 0 。
Javaでは while文の前に、記述します。

次に繰り返し「継続」判断のひし型の中の cnt < 3 は
while の後の丸括弧の中に書きます。

丸括弧の後には、ブロックを記述します。
このブロックの範囲は
繰り返しの中で実行する全ての処理です。

繰り返しの中で実行する処理「cntを表示」ですが…
今回は System.out.println を使って
“回数:” に続けて表示する事としましょう。
また、繰り返しの処理は複数文を記述する事ができます。
今回は、簡単に考えて1行の表示に留めておきましょう。
cnt++ という条件変化式です。

while文では、ブロックの中に記述します。
繰り返しの直前で記述すると 分かりやすいですね。
そして、フローチャートで考えた時に、1回の繰り返し処理が
終わったら 左側から条件式の直前に戻る線を 書いていましたね。
while文の場合には、ブロックの終端に達したら
再度 while に戻って、条件式を判断する事になります。

プログラミングが 全くの初心者のかたは
この部分の概念が 掴みづらい場合があります。
Javaプログラムだけを見ると 分かりにくい場合には
フローチャート のイメージを思い出して 考えてみましょうね…。
while に戻って「条件式」を見る。
これを覚えておきましょう。
そして、while の 条件式 が false になった場合に
処理を抜けることになります。
全体の流れをイメージして
プログラミングしていきましょうね。

書きやすいように思いました。ひきつづき、頑張ります。

分かってきた気がします。
④ 処理の流れと変数の値
今回の例の 処理の流れと 変数の値の変化を
見ておきましょう。
まず、初期化式で cnt に 0 を代入します。
そして、while文に入ります。
cnt は 0 で 条件式 cnt < 3 は true ですね。

…ですので while のブロックの中に入ります。
ブロック内の処理で、”回数:”とcntの値を
文字列連結して表示します。
回数:0となりますね。

そして、条件変化式です。
次の条件式の判断のために cnt に 1 を足します。
cnt の値は 0から1に変わります。

そして、while ブロックの終端に達したので
while に戻って、条件式を見ます。
cnt は 1 で 条件式 cnt < 3 は true ですね。

ですので while のブロックの中に入って
処理を行います。
今度は、回数:1 と表示します。
cnt には 1 が入っていますからね…。
条件変化式では、cnt に 1 を足します。
cnt の値は 1から2に変わりますね。
while ブロックの終端に達したので
while に戻って、条件式を見ると
cnt は 2 で 条件式 cnt < 3 は true ですね。

処理を行って、回数:2 を表示します。
条件変化式では、cnt に 1 を足して
cnt の値は 3になります。
while ブロックの終端に達したので
while に戻って、条件式を見ます。
cnt は 3 で 条件式 cnt < 3 は false ですね。

ここで、繰り返し処理を抜けて、while ブロックの
次の行に進むこととなります。
結果的に、処理は
「回数:0」 の表示
「回数:1」 の表示
「回数:2」 の表示
と 3 回 実行される事となります。

このように、変数の値が変化していきながら
while(条件式) で「繰り返し」継続の判断を 行っていること…
この部分も、イメージしながら
プログラミングできると良いですね…。
ただし、最初から完璧に考えなくて大丈夫です。
真似て 書いているうちに
掴めてくる事も 多いものですので。

処理の流れと、データの変化をイメージして
理解するように頑張ります。

【まとめ】

・ 条件により処理を繰り返す。
・ 基本パターン
➊初期化式
❷条件式
❸繰り返し処理
❹条件変化式
この❷条件式 により
❸・❹を繰り返し実行する。
・ 条件式が true の間
while ブロックを実行する。
・ 基本構文
while (条件式) {
条件式が true の間
ブロックを実行する
}
・ 処理の流れと変数の値の変化を
イメージすると効果的。
今回も、ご覧いただき、ありがとうございます。