【Javaプログラミング超入門 #13】繰り返し(1):while文・フローチャート

 

みのる
こんにちは。笑顔で感謝!✨ みのるコーチです。
今回も、ご覧いただき、ありがとうございます。

今回は

Java超入門 #13
繰り返し(1):while文・フローチャート

というテーマでお送りします。

この 繰り返し処理をマスターすると
プログラムの幅がグッと広がってきます。

一緒に 取り組んでいきましょう。

彩香
また、新たな領域に入っていく感じですね。

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

剛留
頑張りどころな感じですね…。よろしくお願いします。
みのる
それでは 早速 いってみましょう。

【Youtube版】

Youtubeでもお伝えしていますので
是非チェックしてくださいね。

 

【1】繰り返しとは

① 基本構造の1つ

プログラムの処理の流れは
基本的な3つの構造で表すことができます。

これは #04 プログラム全体像 でお話した
「基本構造」というものです。

覚えていますか?

以下の記事でお伝えしています。
ぜひ参考にして頂けたらと思います。

【Javaプログラミング超入門 #04】プログラム全体像

【Javaプログラミング超入門 #04】プログラム全体像

ここでも 簡単に復習しておきましょう。

プログラムの処理の流れは
基本的な3つの構造で表すことができます。

まずは、順次です。通常のプログラムでは
上から下に向かって 処理を順番に実行していきます。

そして、次が条件分岐。

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

そして、今回 学んでいく 繰り返し(反復)です。

これを理解すると、基本構造を全て理解できます。

基本構造の学びの 最後の一山ですね。

② 条件により処理を繰り返す

繰り返しとは
✅ 条件によって処理を繰り返す
  基本構造(制御構造)。

✅ Java では、条件が true の間
  処理を繰り返す。

彩香
条件分岐の時には、条件によって処理が分岐しましたが。
今度は、条件によって処理を繰り返すという事ですね。

ここまでは、理解できました…。

剛留
if 文の条件で、boolean型の 真偽値 の勉強をしたから
それが、繰り返しの条件でも活きてきそうですね。

続きも、全集中で見ていきます!

③ 繰り返しの例

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文とは

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 に戻って「条件式」を見る。

これを覚えておきましょう。

そして、while の 条件式 が false になった場合に
処理を抜けることになります。

全体の流れをイメージして
プログラミングしていきましょうね。

彩香
フローチャートの大枠の流れを頭の中で想像すれば、while文が
書きやすいように思いました。ひきつづき、頑張ります。
剛留
少し複雑と思っても、流れを追いながら考えると
分かってきた気がします。

④ 処理の流れと変数の値

今回の例の 処理の流れと 変数の値の変化を
見ておきましょう。

まず、初期化式で 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(条件式) で「繰り返し」継続の判断を 行っていること…

この部分も、イメージしながら
プログラミングできると良いですね…。

ただし、最初から完璧に考えなくて大丈夫です。

真似て 書いているうちに
掴めてくる事も 多いものですので。

彩香
繰り返しで、プログラムが動きましたね。

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

剛留
ループのプログラムを どんどん書いていこうと思います。

【まとめ】

【1】繰り返しとは
・ 基本構造の1つ。
・ 条件により処理を繰り返す。
・ 基本パターン
   ➊初期化式
   ❷条件式
   ❸繰り返し処理
   ❹条件変化式
  この❷条件式 により
  ❸・❹を繰り返し実行する。
【2】while 文
・ while文は 繰り返し の構文。
・ 条件式が true の間
  while ブロックを実行する。
・ 基本構文
  while (条件式) {
   条件式が true の間
   ブロックを実行する
  }
・ 処理の流れと変数の値の変化を
  イメージすると効果的。