繰り返し処理をフローチャートで表現するには主に2つのパターンがあります。
①流れ線を利用した繰り返し処理
②ループ端(ループたん)記号を使った繰り返し処理
情報活用編プラス
第3章「コンピュータとプログラミング」
IP02-05
繰り返し(反復)処理
学習の目的
1.繰り返し処理をフローチャートで表現
2.前判定型・後判定型・中間判定型
繰り返し処理をフローチャートで表現しましょう。
繰り返し処理をフローチャートで表現するには主に2つのパターンがあります。
①流れ線を利用した繰り返し処理
②ループ端(ループたん)記号を使った繰り返し処理
流れ線を利用して繰り返し処理の前に戻ることで、同じ処理を何度も実行する方法です。
繰り返し処理の流れから抜けるために、「判断記号」を使用します。

この繰り返し処理から抜ける判定には、「継続条件」を使用する事が多いです。
これは、条件が真だったら、繰り返し処理を実行する。偽だったら繰り返し処理から抜けるので、「継続」条件と言っています。
上記のフローチャートの形は、「Yes」の時に繰り返し処理を実行しているため、「継続条件」となります。
前のスライドで見ました。
フローチャートには、繰り返し処理を表現するための「ループ端(ループたん)記号」があります。

ループ端記号は、開始と終了の記号をセットで書き、それぞれに同じ名前のループ名を記載します。
その間に繰り返しする処理を記述します。
ループ端記号内に、繰り返し処理を継続する条件を記述します。
ループ端記号(終了)に処理が到達したら、処理の流れがループ端記号(開始)に戻り、継続条件の判定を行います。
例外はありますが、ループ端記号以外の場所で繰り返し処理から抜けることはありません。
ループ端記号の方が、線が少なくてスッキリしているよね。
継続条件以外の書き方のパターンを紹介します。
まずは、以下のフローチャートを確認しましょう。

変数 i の値が、1から4まで1ずつ加算しながら繰り返す。
このように、特定の変数を規則的に動かす場合は、以下のように書き換える事ができます。

「i = 1」 、「i ≦ 4」 、 「i = i + 1」
この三つが一つにまとまった感じですね。
元々、ループ端記号では終了条件が使用されていました。
条件が真になったら、繰り返し処理を抜ける条件です。
また、国家試験などでも、フローチャートには終了条件が使用されています。
現在はプログラミング言語の仕様に合わせて、一般的に継続条件を使用することが多くなってきています。
継続条件と終了条件で条件の式が変わってくるので、注意してください。
なんで終了条件ではなくて継続条件を使用する事が多いんですか?
よく利用されているプログラミング言語のほとんどが、繰り返し処理の構文として「継続条件」を採用しているので、フローチャートでも継続条件を利用する事が多いんです。
流れ線とループ端記号は、使い分けがあるんですか?
特に、使い分けの必要はありません。
自分が書くときは、使いやすい方を選んでください。
ただし、他の人が書いたフローチャートを見ることもあるので、どちらも理解できるようにしておいてください。
繰り返し処理は、繰り返し処理から脱出する条件の位置により、前判定型・後判定型・中間判定型の3つのパターンがあります。
前判定型は、繰り返し処理の前に判定の条件があります。

前判定型の特徴として、繰り返し処理に入るときにすでに条件が偽の場合、1度も繰り返し処理を実行しない事があります。
今まで見たフローチャートはみんな前判定型ですね。
そうですね。実際には、前判定型が最も多く使用されています。
でも、一回も実行しない繰り返し処理って必要がないんじゃないですか?
いい質問ですね。例えば、繰り返しの回数が定まっていない繰り返しがあったとします。
プリントの宿題を終わらせるフローチャートを見てみてください。

これは、繰り返し処理に入る前に宿題の枚数を変数(i)に代入し、
繰り返し処理の中で1枚ずつプリントを終わらせて、全て終わったら、つまり i の値が0になったら繰り返しを終了します。
継続条件が0より大きいだから、1枚でも残っていたら繰り返しプリントを片付けるわけですね。
これがもし、宿題が無い日であれば、i には0が入力されることになります。
その場合は、繰り返し処理は1回も実行せずに、宿題を終わりにできるんです。
なるほど、時と場合によって繰り返しの回数が変化する場合、0回の繰り返しってこともありえるから、それに対応しているんですね。
後判定型は、繰り返し処理の後に判定の条件があります。
ループ端記号では、下の記号に継続条件を記入します。

後判定型の特徴として、どのような場合においても、繰り返し処理を最低1回は実行します。
最低1回は実行する繰り返し処理か。どんなものがあるんですか?
例えば、食事でお腹を満たすフローチャートを考えてみましょう。

ここでは、空腹具合を数値化して、最初に変数iに格納しています。
まずは1回ご飯を食べましょう。
なるほど、1回の繰り返しで空腹具合が10減って、まだお腹が減っていたら繰り返し食べるわけですね。
1回の繰り返しで、空腹具合が10減少します。
そして、空腹具合が、20未満になったら食べるのをやめます。
腹8分目っていうからね!!
中間判定型は、繰り返し処理の途中に判定の条件があります。
ループ端記号には継続条件は記入しません。

中間判定型では、継続条件より前の「必ず一回は実行する部分」と、継続条件より後の「場合によっては1回も実行しない部分」に分かれます。
繰り返しの途中で条件が偽になった場合に、繰り返し処理から抜けることができるんだね。
その通りです。前判定型と後判定型の両方の性質があります。
|
ループ端記号 |
繰り返し処理を表現するフローチャートの記号。 |
|
継続条件 |
真であれば繰り返しを続ける条件。 |
|
前判定型 |
繰り返し処理の前に継続条件式を書く形式。 場合によっては、繰り返し処理を1回も実行しない事がある。 |
|
後判定型 |
繰り返し処理の後に継続条件式を書く形式。 最低でも1回は繰り返し処理を実行する。 |
|
中間判定型 |
繰り返し処理の間に継続条件式を書く形式。 最低でも1回は繰り返し処理を実行する部分と、場合によっては繰り返し処理を1回も実行しない部分がある。 |