
武蔵野個別指導塾の特徴
共通テスト情報I 条件分岐—境界の値を入れて実行される処理を見分ける|武蔵野個別指導塾

以上と超えるの境目や、2回判定する場合と連続分岐の違いを表で追い、実行経路から条件分岐を読み解きます。
よくあるのは、境界の値を入れた高校生が、条件に並ぶ二つの処理をどちらも実行すると考える場面です。条件の文が二つ見えても、そのつながり方によって実行される処理は変わります。値が境目と等しいか、最初の判定が次の判定に影響するかを、一行ずつ確かめましょう。
どこで道が分かれるか
条件分岐では、入力された値と条件を比べ、成立したときに進む処理を決めます。問われる型には、境界の前後でどの処理が動くかを選ぶもの、複数の判定を通った後の値を求めるもの、意図した処理になるよう条件や分岐のつながりを選ぶものがあります。どの型でも、先に答えを想像するより、条件の成立と実際の処理を別々に記録することが役立ちます。
たとえば、数が基準以上なら処理A、そうでなければ処理Bという連続分岐では、同じ判定からAかBの一方へ進みます。一方、Aの条件とBの条件を独立して書けば、前の判定の結果にかかわらず後の条件も判定します。条件が重なる値では両方が動き、どちらにも合わない値では両方が動かないこともあります。両者の違いは条件の内容だけでなく、処理のつながりにあります。
境界と判定のつながり
「10以上」は10を含み、「10を超える」は10を含みません。「10未満」は10を含まず、「10以下」は10を含みます。整数を扱う場合、境目の10とその両隣の9、11を調べると、等号を含むかどうかを見分けやすくなります。実数を扱う問題では隣の整数だけで区間全体を確かめたことにはならないため、境界そのものと、その直前・直後にあたる値を考えます。
図1のように、まず入力値と境界を比較し、その真偽を記録します。次に、独立した判定か連続分岐かを読んで、実行する処理を決めます。条件が真であることと、その条件の行に到達することは同じではありません。連続分岐では先の条件が真なら、後の条件が数値上は真でも、その判定に進まない書き方があります。

図1の比較と接続を分けると、値の読み違いと分岐の読み違いを別々に直せます。以下の自作記法では「←」は右の値を左の変数に入れる操作です。「なら」は条件が成立したときに字下げされた処理を実行します。「そうでなく、もし」は直前までの連続分岐でどの条件も成立しなかった場合に限って判定し、「それ以外」はそれらがいずれも成立しなかった場合に実行します。出力は示された時点の値です。配列、添字、整数除算、剰余、反復は使いません。
基本例題:整理券の区分
受付で使う自作の処理です。入力xは0以上の整数とし、xは待機人数を表します。次の処理にxとして7を入れたとき、出力される区分を文字で答えてください。
もし xが7以上なら
区分 ← 「混雑」
そうでなければ
区分 ← 「通常」
区分を出力する
最初の条件は「7以上」です。7は境界と等しいので条件は成立します。「混雑」を代入した後、同じ分岐の「そうでなければ」の中には入りません。したがって答えは混雑です。図2のように6、7、8を並べると、等しい7がどちらに入るかをはっきり確認できます。

図2の6は7以上ではないので通常、7は等しいので混雑、8は7より大きいので混雑です。境界の片側だけを試すと、「以上」を「超える」に取り違えても、8では同じ結果になります。7を入れる検査が違いを見つけます。出力が一度だけなのは、区分の代入先が分岐の両側にあり、出力が分岐の後にあるためです。
処理の失敗を探すときも同じ表を使います。もし意図が「7以上を混雑とする」なのに条件が「7を超える」なら、6は通常、8は混雑で意図に合う一方、7は通常となり意図に反します。入力が0なら条件は偽で通常です。これは失敗ではなく、与えられた範囲での正常な処理です。負の数や文字が入力された場合の扱いはこの問題に定義されていないので、出力を推測せず範囲を確認します。
条件を続けるか、別々に調べるか
次は自作の作業時間の判定です。入力tは0以上の整数で、単位は分です。代入と出力の記法は基本例題と同じです。両方の処理にtとして12を入れたとき、最後の点数を整数で答えてください。
処理P
点 ← 0
もし tが12以上なら
点 ← 点 + 2
もし tが12以下なら
点 ← 点 + 1
点を出力する
処理Q
点 ← 0
もし tが12以上なら
点 ← 点 + 2
そうでなく、もし tが12以下なら
点 ← 点 + 1
点を出力する
「+」は整数の加算です。Pは二つの「もし」が独立しています。tが12のとき最初の条件は真なので点は0から2に変わります。次の条件も12以下なので真です。現在の2に1を足して3となり、3を出力します。Qでは最初の条件が真となって点が2になった時点で連続分岐の残りを通りません。2を出力します。数値として12以下も成立することと、その条件を実際に判定することを区別します。
境界の前後も追います。tが11なら最初の条件は偽、次は真で、PもQも1です。tが13なら最初は真、次の条件は数値上偽で、どちらも2です。したがって、この3値では12のときに結果が分かれます。Pにおける0は最初が偽、次が真で1です。Qでも同じく1です。入力範囲の外を調べても、範囲内で意図した動作をするかの代わりにはなりません。
「12以上なら2点、それ以外なら1点」という目的ならQの形で実現できます。Pでは12が両方の条件に含まれ、目的と異なる3点になります。逆に、二つの条件をそれぞれ満たすたびに加点する目的なら、12で両方を加算するPが合います。結果の違いを見つけた後は、目的の文に戻ってどちらが正しいか判断します。
誤った追跡を直す
基本例題のxが7のとき、条件が真なのに「通常」も代入して、最後の出力を通常とする誤答を考えます。原因は、字下げされた二つの処理を上から必ず実行すると読んだことです。通常を代入する行は、7以上という条件が偽だった場合の行き先です。図3のように、7では真の側を通り、偽の側を通らないと線で区別します。

図3では、混雑への経路が実行され、通常への経路は選ばれません。修正するときは「7以上は真」と書いた後、真と偽のどちらの枝に属する代入かを確かめます。最後の出力行には到達しますが、その直前に通常の代入を通ったわけではありません。
反対の誤りとして、独立した二つの「もし」を見て、最初が真なら次を調べないと決めることもあります。処理Pの12では2点で止めると1点分を落とします。最初の分岐の終わりまで戻り、次の「もし」が「そうでなく、もし」につながっていないかを読み直してください。条件の真偽を丸暗記するより、到達した判定と実行した代入を順に書くと、誤りの箇所が見えます。
練習:まず自分で経路を書く
各問は独立した自作の処理です。入力は指定された整数で、代入、加算、出力、連続分岐の記法は上と同じです。配列や反復は使いません。答えは問題の後にまとめています。
問1
水の量yは0以上の整数で単位は本です。「yが5を超えるなら表示を『多い』、そうでなければ『少ない』にする」。yが4、5、6のときの表示を順に文字で答えてください。
問2
入力nは0以上の整数です。点を0にしてから、nが4以上なら点に3を足し、その後、独立してnが4以下なら点に2を足します。最後の点を出力します。nが3、4、5のときの出力を順に整数で答えてください。
問3
入力aは0以上の整数です。aが9以上なら「上」、そうでなく、もしaが6以上なら「中」、それ以外なら「下」を表示します。aが5、6、8、9のときの表示を順に文字で答えてください。
問4
入力bは0以上の整数です。目的は「bが3以下なら『短い』、4以上なら『長い』を1回表示する」ことです。候補アは「bが3未満なら短い、そうでなければ長い」、候補イは「bが3以下なら短い、そうでなければ長い」です。目的に合う候補を記号で答え、両候補をbが2、3、4のときに確かめてください。
答えと道筋
問1の答えは少ない、少ない、多いです。4は5より小さく、5は5と等しいため、どちらも「超える」が偽です。6だけが5より大きく真となります。5を「多い」とする間違いは、境界を含めて読んだことが原因です。0も範囲内であり、5を超えないので少ないと出ます。答えを元の条件に戻すと、各表示は比較の真偽に対応しています。
問2の答えは2、5、3です。3では最初が偽で、後が真なので0から2になります。4では両条件が真です。0から3、さらに5と変化します。5では最初が真で3となり、後は偽なので3のまま出力します。4で3と答えた場合は、二つ目の判定を飛ばしていないか確かめます。0も最初が偽、後が真で2です。二つの独立した条件を元の数に戻して調べれば、境界で両方が実行される理由が見えます。
問3の答えは下、中、中、上です。5では最初も次も偽なので下、6と8では最初が偽で次が真なので中です。9は最初が真なので上となり、次の判定に進みません。9が6以上でも中を追加表示しない理由は、連続分岐の接続にあります。0は二つの条件がともに偽で下です。各答えを区間に戻すと、6は中の下端、9は上の下端です。
問4の答えはイです。アでは2は短い、3と4は長いです。3は目的では短いので失敗します。イでは2と3が短く、4が長いです。0以上の整数で3以下なら条件が真、4以上なら偽となるため、範囲内のどの整数も目的の区分に入ります。どちらも連続分岐なので表示は1回です。2と4で両候補が一致するため、その2値の成功だけではアの誤りを見つけられません。
条件の抜けと重なりを試す
条件を作る問題では、境界の値で失敗する場合に加え、どの条件にも入らない値を探します。たとえば入力zを0以上の整数とし、独立した判定で「zが3未満なら低」、「zが3を超えるなら高」を表示する処理を考えます。2は低、4は高と表示されますが、3はどちらの条件も満たしません。表示が0回になる失敗です。3を低に含める目的なら前者を「3以下」に変えると、3は低、4は高となります。境界の前後が意図に合うことも、元の目的と照合します。
反対に「3以下なら低」と「3以上なら高」を独立して実行すると、2は低、4は高ですが、3では低と高の両方が表示されます。1回の表示を求める目的では失敗です。後者を「3を超える」に変える方法のほか、前者の後を「そうでなければ高」とする方法もあります。前者の修正は二つの条件が重ならないことを示し、後者の修正は一方を通れば他方に入らないことを使います。目的と入力範囲が同じかを確かめて選びます。
問題文に範囲外の入力や不正な値への対処が書かれていなければ、そこに適当な区分を作らないことも読み取りの一部です。実際に処理を設計する場合は、入力の検査やエラー時の行き先を別途決めます。ここでは与えられた整数の範囲内で、表示が0回になるケースと2回になるケースの両方を調べました。正しいケースと同様に、どの条件が真かを行ごとに記録すると、抜けと重なりを区別できます。
条件を変えた後は、失敗した値だけでなく、先ほど成功した両側の値も再び通します。修正で別の境界を壊していないかを確かめるためです。
手元に残す要点
境界と等しい値を含むか、条件の言葉で確かめます。
独立した判定は前の結果にかかわらず次も調べます。
連続分岐は先に成立した枝を実行し、残りを通りません。
出力時点の値を、問題の目的に戻して照合します。
つまずいた位置を探す
個別指導で確かめるなら、まず境界とその前後の表を自分で埋めてもらいます。真偽は合っていて出力が違う場合は、どの判定に到達し、どの代入を実行したかに戻ります。真偽から違う場合は「以上」と「超える」の境界そのものを比較します。目的に合わない入力が見つかったら、その1行を根拠に条件か接続を直し、前後も再検査します。境界の1値が、分岐の読み違いを映します。
もう「日東駒専」を目標にしないでください。
武蔵境駅徒歩30秒、講師1人に生徒1人の完全1対1。授業のあいだ、先生は隣を離れません。いまの詰まりを、無料相談でそのまま話してください。
まず15分だけ電話で話したい方は、無料電話相談(15分)から。塾からお電話を差し上げます。
本気になった日が、入塾の日。
お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。
電話は年中無休。365日、24時間、お電話可能。




