
武蔵野個別指導塾の特徴
高校情報I アルゴリズムと流れ図—順次と分岐と反復を処理の順に読み取る|武蔵野個別指導塾

判定前後の値と出口を追跡表に残し、反復0回の場合や入力異常、読み取り失敗の道筋も自分でたどれます。
よくあるのは、分岐の矢印を逆にたどって処理を続ける場面です。条件が成り立つかを確かめず、近くにある箱へ進むと、その後の計算が合っていても結果が変わります。流れ図は上から順に箱の文字を読むだけでなく、今いる位置から矢印の向きに進む図です。授業の範囲表やノートと照らし、使う記号や条件の書き方を確認しながら、途中の値と通った道を記録しましょう。
何を答える問題か
出方の1つは、入力値を与えられ、終了までに通る処理や出力を答える型です。分岐では条件に合う出口を選び、通らなかった側の処理は実行しません。矢印が合流してからの処理は、どちらの道から来ても実行します。通った箱に番号を付けると、図の左右の位置に惑わされにくくなります。
次は、同じ場所へ戻る反復を読み、処理の回数や最後の値を求める型です。判定の前に何が変わったかを記録し、戻るたびに条件をもう一度調べます。初めから条件を満たさないときには本体を1回も通らない図もあります。判定した回数と本体を通った回数は別に数えます。
もう1つは、意図した処理になるよう、条件や矢印を補う型です。正常に処理できる入力だけでなく、範囲外の入力や外部の道具から結果を受け取れない場合もたどります。問題文に失敗時の指示がなければ、勝手に再試行や終了を加えず、図から読み取れる範囲で答えます。
矢印が決める処理の道筋
アルゴリズムは、目的を果たすための手順です。流れ図はその手順を記号と矢印で表します。開始と終了は端を示し、長方形は処理、平行四辺形は入力や出力、ひし形は条件の判定を表します。授業で扱う記号の形が異なる場合は、問題に付いた説明を優先してください。
図1のように、順次は矢印に沿って処理を続ける形です。分岐は判定結果によって進む出口が変わり、反復は矢印が前の判定などに戻ります。図の配置が似ていても、出口に書かれた「はい」「いいえ」と矢印の向きを見なければ、どちらに進むかは決まりません。

図1の反復では、条件が成り立つ間に処理を通り、成り立たなくなったら出口へ進みます。これは前で判定する例であり、すべての流れ図が同じ向きに分岐するわけではありません。出口のラベルは図ごとに読みます。矢印の交差や合流を見落とすと、存在しない道を作ってしまうので、線のつながりを指で追います。
追跡表には、判定の直前の値、条件の結果、選んだ出口、処理後の値を分けて書きます。値を入れ替える処理は「右側の計算を更新前の値で行い、その結果を左側の値にする」と読みます。ここで使う数は学習用に決めたもので、値の単位が必要な場合は問題の中で示します。添字や除算は以下の例では使いません。
表の行を増やす際は、戻り先の判定から再開します。途中の箱を飛ばさないことも大切です。
条件に「以上」とあれば等しい値を含み、「より大きい」なら含みません。境界とその両側を試すと、出口の付け違いに気づきやすくなります。反復の外に出た後で何を出力するかも、終了記号までたどって確かめます。
判定の前と後で同じ名前の値が異なる場合、表のどちらの列を参照するかも重要です。たとえば、箱の中に「数を1増やす」とあれば、箱に入る前の値から新しい値を作ります。箱に入る前の値と処理後の値を同じ欄に重ね書きせず、矢印で結べば、どこで値が変わったかが残ります。判定の箱そのものは条件を調べる場所なので、特に指示がなければ値を増やしません。
流れ図の読み取りでは、終了に到達することも確かめます。反復の中で条件に関係する値が変わらず、初めの判定が繰り返し同じ結果になるなら、出口に到達しない場合があります。そのような図に対して、何回かで勝手に終わると答えてはいけません。問題に上限があればその上限を使い、なければ示された矢印に沿って判定が続くことを説明します。道具からの応答を待つ処理についても、時間切れの扱いが定められていなければ、いつ次の箱へ進むかは決められません。
基本例題:回数を数えて出口へ進む
次の流れ図を考えます。初めに数nを0にし、nが3より小さいかを判定します。「はい」ならnを今の値より1大きくして判定に戻り、「いいえ」ならnを出力して終了します。出力する整数と、数を大きくする処理を通る回数を答えてください。
図2のように、判定の「はい」は更新へ、「いいえ」は出力へ向かいます。更新後は必ず判定へ戻り、条件が成り立つかを新しい値で調べます。

1行ずつたどると、次のようになります。判定欄はその行の更新前の値で調べます。
| 判定前のn | nが3より小さい | 選ぶ出口と処理後 |
|---|---|---|
| 0 | はい | 更新して1 |
| 1 | はい | 更新して2 |
| 2 | はい | 更新して3 |
| 3 | いいえ | 出力して終了 |
最初は0なので条件を満たし、更新後は1です。次は1から2、その次は2から3へ変わります。3は3より小さくないため、4に増やさず出力します。答えは出力が3、更新は3回です。判定は最後の「いいえ」も含めて4回ですが、更新の回数には含めません。
答えを元の図へ戻すと、0から1ずつ3回進めた値が3であり、その値では「いいえ」から出力へ進みます。3回目の更新の直後に終了するのではなく、最後の判定を通って出口を選ぶ点まで書くと、理由が伝わります。図2の条件を「nが0より小さい」に変えた場合は、初期値0で直ちに「いいえ」となり、更新0回で0を出力します。
少し難しい例題:失敗時も含めて道を追う
資料を読み取る外部の道具を使う手順を考えます。残りの試行回数rを2にし、まずrが0より大きいか判定します。「はい」なら道具に1回読み取りを依頼します。成功したら「取得」を出力して終了し、失敗したらrを1減らして最初の判定に戻ります。「いいえ」なら「取得できず」を出力して終了します。道具の応答は毎回、成功か失敗のどちらかとします。各場合の出力と依頼回数を答えてください。
1回目に成功すれば、rは2のまま「取得」を出力し、依頼は1回です。1回目に失敗し2回目に成功すれば、rは2から1になり、次の成功で「取得」を出力します。依頼は2回です。どちらも成功後に回数を減らす矢印はないので、成功の後に失敗側を通ってはいけません。
両方失敗すると、rは2から1、さらに0になります。0は0より大きくないので、次の判定から「取得できず」を出力します。依頼は2回で、3回目の依頼はありません。初めのrを0に変更した場合は、道具に依頼せず「取得できず」となります。各結果を元の手順へ戻すと、失敗のたびに残りが1減り、成功または残り0で終了することを確かめられます。
時間切れや壊れた応答が起こる状況を考える場合は、その結果を失敗として扱うと問題で定める必要があります。そう定めれば上の失敗側をたどれますが、定めがなければ成功と失敗のどちらに分類するかは図だけでは決まりません。例外が起きても自動的に再試行されると決めつけず、失敗の出口や打ち切り条件が明示されているかを確認します。
誤答から出口を修正する
基本例題で「nが3より小さい」に対し、nが3のとき「はい」へ進んで4を出力したとします。誤答は出力4、更新4回です。原因は「より小さい」に等号を含めたことと、判定結果に対応する出口を確認せず更新へ進んだことです。
図3のように、判定前の3と基準の3を比べ、等しいので「いいえ」を選びます。修正後は更新せず3を出力します。矢印を逆向きに戻って更新箱に入ることもできません。条件の言葉と出口の表示を指さしで対応させ、判定のたびに選んだ方へ印を付けましょう。

失敗時の手順にも同じ読み方を使います。道具が失敗したのに成功の出口から「取得」と出力すれば、実際に取得できたという条件と食い違います。応答がない場合は、問題が時間切れを失敗に含めると定めているかを先に見ます。含めるなら失敗側へ進み、定めがなければ行き先は未指定と答えるのが筋道です。
入力に異常がある場合も、エラー表示の箱へ進む矢印があるか確かめます。正常な値の結果を推測して先へ進むと、図にない処理を付け足すことになります。想定外の値で図が止まるのか、検査して終了するのかは、その図の条件と出口から判断します。
練習:道と結果を記録する
次の4問はそれぞれ独立しています。数字は練習用に決めた値です。各問で通る出口を記録し、指定された形で答えてから、後の解答と比べてください。
- 整数xを入力し、xが5以上なら「可」、そうでなければ「不可」を出力して終了します。xが4、5、6の場合の出力を、この順に答えてください。
- 数aを1にし、aが4より小さい間、aを2大きくして判定に戻ります。条件を満たさなくなったらaを出力します。出力する整数と更新回数を答えてください。
- 整数yを入力し、まずyが0以上か判定します。「いいえ」なら「入力異常」を出力して終了します。「はい」なら、次にyが7以下か判定し、「はい」で「受付」、「いいえ」で「範囲外」を出力して終了します。yが負の2、7、8のときの出力を順に答えてください。
- 送信を1回試み、成功なら「送信済み」、失敗なら「未送信」と出力して終了します。時間切れと壊れた応答は失敗として扱います。成功、時間切れ、壊れた応答の各場合の出力と、それぞれの送信を試みる回数を答えてください。
答えとたどり方
-
順に「不可」「可」「可」です。4は5以上ではなく、5は境界と等しいので含まれ、6は5より大きいからです。各入力を条件へ戻すと、境界の左右で出口が変わり、5は「はい」側に入ります。出力後は終了するため、もう一方の表示を続けて出しません。
-
出力は5、更新は2回です。1は4より小さいので3に、3も4より小さいので5になります。5は4より小さくないため出力します。元の手順に戻して1から2ずつ2回増やすと5になり、最後の判定は「いいえ」です。更新回数と判定回数3回を区別します。
-
順に「入力異常」「受付」「範囲外」です。負の2は最初の判定で「いいえ」となり、次の判定には進みません。7は0以上で、かつ7以下なので両方「はい」です。8は最初が「はい」、次が「いいえ」です。各値を条件へ戻し、7を含む出口と8の出口が異なることを確かめます。
-
順に「送信済み」「未送信」「未送信」で、試みる回数はいずれも1回です。時間切れと壊れた応答は問題の定めにより失敗側へ進みます。どの出口も出力後に終了するので、再送する矢印はありません。元の手順に照らすと、失敗した2例でも成功したときの表示を出さず、回数を増やさないことが確かめられます。
失敗の分類が書かれていない別の問題なら、時間切れや壊れた応答を当然にどちらかへ入れることはできません。また、範囲外の値に対する出口が示されない図では、その後の出力を勝手に補えません。問題文の前提と図の両方を確認する練習にしてください。
覚えておくこと
順次は矢印の順に処理し、分岐は判定結果に合う出口を選びます。
反復は戻るたびに値と条件を調べ、最後の判定まで記録します。
境界、反復0回、異常や失敗の出口も試します。
どこで道を間違えたか
答えが違ったときは、最後の数字だけでなく、最初に表と図が食い違った行を探します。判定前の値が合っていて出口が違うなら、条件の意味や矢印の向きを確認します。出口は合っているのに次の値が違うなら、更新前の値を使って処理できたかを確かめます。表に書かれた回数と実際に通った箱の数が違うときは、判定と更新を別々に数え直します。
個別指導では、本人が図に付けた印と追跡表を照合し、境界の入力、最初から反復しない入力、失敗の出口を自分の言葉で説明できるかを見ます。正しい答えを写す前に、どの矢印を選び、その理由が何かを示せれば、別の配置の流れ図にも応用できます。条件と矢印を結び付ける記録が、処理の道筋を確かなものにします。
読んで終わりにするか、ここから変えるか。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




