
今回は
というテーマでお送りします。
繰り返しの構文で while文と for文を学びました。
書けるプログラムは多くなってきたと思います。
今回は、制御構文のネストの話をしたあと
do-while文を学んでいきましょう。

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


目次
【Youtube版】
Youtubeでもお伝えしていますので
是非チェックしてくださいね。
【1】制御構造のネスト

① ネストとは
制御構造の中に別の制御構造を
含む多重構造。
✅ 入れ子ともいう。
「条件分岐の中に条件分岐」や
「繰り返しの中に条件分岐」など…
色々なパターンがあります。
次のコーナーで、例を見ていきましょう。
② if文の中にif文の例
if – else 文の中に if – else 文が
存在するパターンです。

この例では、まず、英語の点数が
80点以上の条件で分岐しています。
そして 更に、分岐したそれぞれの中で
数学の点が80点以上の条件で分岐して…

“A評価”~”D評価”までを 決定しています。
1つの if で表現できない条件などの場合に
使われる事が多いものです。
③ for文の中にfor文の例
九九の表を表示するプログラムです。
フローチャートの黄色い部分は、1 の段から 9 の段までの
9 行の処理を行うループです。

最初は水色の中を1つの処理とみなして
1 行目から 9 行目までの各行の処理をして改行すると考えます。
ここでは、初期化式が i = 1、条件式が i <= 9、
条件変化式は i++ です。
i が 1 から 9 まで実行される事が分かりますね。

そして、水色の中の処理が、1 行分の処理です。
各行の i に掛け算する j を 1 から 9 までループしています。
ここでは、初期化式が j = 1、条件式が j <= 9、
条件変化式は j++ です。
水色の枠の中で j が 1 から 9まで
実行されることが分かります。

処理は、 i * j を表示しています。
java のプログラムの例では、System.out.print で掛け算結果と
区切りの” “(スペース)を 文字列連結して表示しています。

そして 1 行分の処理の最後に、改行処理を行っています。
外側のループは
i をカウンタとした基本パターンで…
内側のループが
j をカウンタとした基本パターンです。
このように、ループの中でループを行う事を
といいます。
④ for文の中にif文の例
この処理は まず、水色の部分を1つの処理と考えます。

すると、外側は繰り返しの基本パターンです。
i が 0 から 9 まで繰り返すパターンですね。
for ループで記述してあります。
初期化式は i = 0、条件式は i < 10、
条件変化式は i++ です。
そして、この水色の枠の中で、条件分岐を行っています。
i % 3 が 0 だったら、これは 3 で割った余りが 0 だったら
ということで、3 の倍数だったらという意味になります。

条件式が true の場合、iの値(3の倍数)と表示して
そうでなかったら iの値だけを表示します。

プログラミングしていると、このように ループをしている中で
条件により処理を分岐することは 多く出てきます。
頻出パターンとして、押さえておきましょうね。

言いましたが、このネストは、その代表選手みたいですね。
ところで、質問です。
この、ネストは、何重にでも深くできるんですか?

何重にでも深くできますかっていう質問ですね。
これは、その通り、何重にでも深くできます。
ただし、プログラムの見やすさという観点からは
あまり深いネスト構造はお勧めできません。
このあたりも、ポイントの1つですね。

勉強してきた事が 組み合わさって出てきますね。
頑張って 復習しながらやっていきます。

特に、ループの中で条件分岐する事は 多いと思いますので
演習問題に 取り組んでいきます。
【2】do-while文

① do-while文とは
条件式が true の間
do-while ブロックを継続する。
✅ 条件式の判断は
継続する処理の後に行われる。

何が違うんですか…?

while文と 一緒ですね。
ただ、その処理の後に条件式を見て判断するので
必ず1回以上は処理が実行されます。
なので、1回は処理を実行したい時に
do-while 文は使われるんです。
do-while文は、予約語 do を書いて
その後に 条件式が true の間 実行するブロックを書きます。
そして、その後に while を書いて 丸括弧。
この 丸括弧の中に 継続するための条件式を書きます。

そして、丸括弧の後には ; セミコロンが必要です。
ここで ポイントは、先程もお話したように…
まず、ブロックの中を実行してから
条件式で、継続の判断をするということです。

フローチャートで書くと、こうなります。
まず最初に、処理をして、その後に条件式で継続の判断。
true であれば、左から上に戻って 再度処理を実行します。

最終的に 条件式が falseになったら
下に進んで do-while文を抜けることになります。

② do-while文の例
do-while文の例を見てみましょう。
この例では、まずキーボードから入力を受け付けて
それに応じた処理を行います。

そして、その後に 条件式 を見て
true だったら 上に戻って再度、処理を実行します。
この例の場合には、文字列が “exit” 以外だったら
do-whileを継続することになります。

input.equals(“exit”) の左側に 論理否定の !(not)が
ついていますので、”exit” 以外だったらとなります。
そして再度、キーボードから入力を受け付けて
それに応じた処理を行います。
最終的に、入力した文字列が “exit” になったら
do-while文を抜けることになるのです。


繰り返しの中で 条件分岐が出てきたので理解が深まりました。
この調子で進めていきます。

引き続き、頑張ります。
【まとめ】

● 制御構造のネスト(入れ子)・do-while文
制御構造の中に別の制御構造を
含む多重構造。
・ 入れ子ともいう。
条件式が true の間
do-while ブロックを継続する。
・ 条件式の判断は
継続する処理の後に行われる。
・ 1回は処理を実行したい時に
使われる
今回も、ご覧いただき、ありがとうございます。