電話 0422-27-7828チャットで質問無料相談を予約

武蔵野個別指導塾の特徴

【情報I】共通テストの情報I の解き方を図解で総まとめ—問題の型・プログラムの読み方・時間配分|武蔵野個別指導塾

【情報I】共通テストの情報I の解き方を図解で総まとめ—問題の型・プログラムの読み方・時間配分のアイキャッチ 武蔵野個別指導塾
X LINE Facebook

条件を拾う順序、変数を追うトレース表、割合を比べる例題を通して、情報Iの答案の根拠を整理します。保留した問題へ戻るためのメモや、家庭での短い練習にも役立ててください。

よくあるのは、職員室前の廊下の長椅子で演習の問題冊子を開き、先生に質問しようとしても「どこがわからないのか」を言葉にできないという場面です。用語は見覚えがあり、プログラムも短いのに、選択肢を読むたびに別の答えが正しく見えます。途中まで計算した余白には数字が並び、どの値を使えばよいのかも見失っています。

この状態をほどくには、知識を増やすことと、知識を使う順序を整えることを分けて考えます。問題が求めるものを決め、必要な条件を取り出し、処理の途中を記録できると、止まった場所を具体的に示せます。「配列の添字の意味が曖昧」「割合の分母を取り違えた」という形になれば、復習先も選べます。

ここでは、問題の型ごとに根拠を残す方法を学びます。読む速さだけを目指すのではなく、読み直すときの出発点を残すことが目標です。時間配分も、問題を解く力とは別の特別な技術ではありません。今わかっていることと、まだ確かめることを区別する習慣から組み立てられます。

この単元で身につけること

これらは、中学校で学んだ表や割合の読み方と、情報Iで学ぶ変数・条件分岐・データ分析を、一つの問題の中で結び付ける学習です。知識問題、プログラム問題、データ分析問題という呼び方は、解き方を整理するための分類です。実際には、データを集計するプログラムのように複数の型が重なることもあります。型を決めたら必ず一つの方法だけで解く、という意味ではありません。

基本の考え方

設問から出発して、条件を探す

長い文章に取りかかるときは、まず何を答える設問なのかを確かめます。そのうえで、資料や会話文の状況を読み、答えに必要な条件を拾います。設問だけを読んで本文を省く方法ではありません。読む目的を先に決めることで、本文のどこに注意を向けるかが明確になるということです。

知識を適用する問題では、「用語の定義」と「この場面の目的」を対応させます。たとえば、データを小さくすることと、元のデータへ完全に戻せることは別の条件です。「圧縮できる」という説明だけでは、復元の条件を満たすとは限りません。選択肢の名詞だけでなく、「必ず」「すべて」「完全に」といった主張の範囲にも線を引くと、どこまで確かめるべきかが見えます。

プログラムの問題では、入力、処理、出力を分けます。入力が何を表す値か、処理でどの変数を更新するか、最後に何を表示するかを順に確かめます。途中の合計を求めているのに、条件を満たす個数を答えてしまう誤りは、処理の理解以前に出力の対象を取り違えています。

データ分析の問題では、1行や1点が何を表しているかから読みます。1点が1人を表す散布図と、1点がある集団の平均を表す散布図では、言えることの範囲が違います。軸の名前、単位、対象、期間、集計の方法をそろえて初めて比較ができます。

図1 問題の型に応じて根拠を選び答えへ進む流れ

図1のように、どの型でも出発点は「問い」で、最後は「根拠」を持って答えに進みます。知識なら条件と定義の対応、プログラムなら途中の状態、データなら表やグラフの具体的な値が根拠です。選択肢がもっともらしく見えることと、資料から確かめられることを分けましょう。

疑似言語は、処理の意味に置き換えて読む

疑似言語は、アルゴリズムを説明するための表記です。共通テスト用のプログラム表記を読むときも、普段使う言語の記号をそのまま当てはめず、問題に示された定義や説明を確認します。特に配列の添字の始まり、繰り返しの開始値と終了値、増減の仕方、除算の扱いは、実行結果に直結します。

読む順序は、変数の意味、初期化、繰り返す範囲、条件、更新、出力です。変数は「今の合計」「条件を満たした個数」など、日本語で役割を書き添えます。代入は右辺を現在の値で計算し、その結果を左辺の変数へ入れる処理です。同じ変数が左右にあっても、数学の等式として解くのではありません。

たとえば、次は代入の順番だけを確かめるPythonの例です。共通テストの表記を再現したものではなく、手で追った結果を実行結果と比べるための短い練習に使います。

x = 2
x = x + 3
y = x + 1
print(x, y)

出力は次のとおりです。

5 6

最初にxへ2を入れ、次にその2へ3を足してxを5に更新します。yを計算する時点でxはすでに5なので、yは6です。最初の2をずっと使い続けるとyを3にしてしまいます。各行は、原則としてそれまでの処理が終わった状態から読む必要があります。

繰り返しでは、実行する回数と最後に条件を調べる回数を混同しないようにします。条件が成り立つ間だけ処理する場合、条件が成り立たなくなったことを確かめて終了します。更新がどの範囲に入っているかも重要です。条件分岐の内側にある更新は、その条件が真のときだけ行われます。

時間配分は、途中の状態を残して組み立てる

取りかかる前に、全体を見て必要な作業を把握します。短い根拠で判断できそうな設問、表を書けば進めそうな設問、読み直しが必要そうな設問を区別します。見た目の文章量だけで難しさを決めず、「次に何をすれば進むか」を目安にします。

演習では、設問ごとの所要時間に加え、止まった理由を残します。理由が用語の未理解なら知識の復習、同じ行の読み直しならトレース表の練習、分母の取り違えなら単位の書き込みが次の課題です。この記録から自分の作業の見通しを立て、全体を解く時間と、保留した設問へ戻る時間と、解答欄を確かめる時間を分けます。

保留するときは、「ここまでの値は確定」「次は条件の範囲を確認」のように続きを短く記します。根拠が増えないまま同じ選択肢を眺め続けるより、再開できる形にして別の設問へ進むほうが、残った作業を管理しやすくなります。ただし、前の設問の結果を使う場合は依存関係も確かめます。先に進める設問まで一緒に保留しないことと、未確定の値を確定した値として使わないことの両方が必要です。

例題で解き方を確かめる

例題1 知識を条件に当てはめる

ある記録ファイルを保存するため、容量を減らす方法を選びます。条件は「復元後のデータが元のデータと完全に一致すること」です。Aは可逆圧縮、Bは非可逆圧縮を用います。この条件を満たす方法を選び、理由を述べましょう。圧縮後の具体的な容量は問わないものとします。

  1. 問われている条件を「完全に元へ戻せること」と言い直します。容量が小さいかどうかだけで選ばないためです。
  2. 可逆圧縮は元のデータを完全に復元できる圧縮、非可逆圧縮は完全な復元を保証しない圧縮と整理します。見た目や聞こえ方が近いことと、データが一致することを区別するためです。
  3. 条件に定義を当てはめてAを選びます。圧縮率の比較を計算しても、今回の復元条件の代わりにはならないからです。

答え:Aの可逆圧縮です。元のデータを完全に復元する条件に対応します。

ここでの根拠は、「ファイルだからA」ではありません。同じ種類のデータでも、求める品質や用途によって判断は変わります。問題文の条件を取り去ったときにも同じ答えを選んでしまうなら、場面の印象で答えていないかを見直します。

例題2 条件を満たす値だけを合計する

次のプログラムが出力する値を求めましょう。dataは整数のリストで、totalは合計を記録する変数です。Pythonのfor文は、ここではリストの要素を先頭から順番にvへ入れます。

data = [3, 7, 4, 6]
total = 0
for v in data:
    if v >= 5:
        total = total + v
print(total)
  1. totalの初期値0を表の最初に書きます。処理前の値がないと、最初の加算の出発点が曖昧になるためです。
  2. vと「vが5以上か」の判定を並べます。すべての値を加える処理と、条件付きの加算を区別するためです。
  3. 1回の繰り返しが終わった時点のtotalを書きます。更新前と更新後の値を同じ列に混在させないためです。
  4. 繰り返しの外側にある表示を確認します。途中の値ではなく、全要素を調べた後の値が求められているからです。
状態 v vが5以上 処理後のtotal
初期化後 — — 0
1回目 3 偽 0
2回目 7 真 7
3回目 4 偽 7
4回目 6 真 13
図2 条件付きの加算で合計が更新される過程

図2のように、条件が偽のときも合計の値は次の段階へ引き継がれます。「加えない」は「0へ戻す」ではありません。3回目のvは4ですが、その時点のtotalは7のままです。リストの要素を表すvと、積み重ねた結果を表すtotalの役割を分けると追いやすくなります。

出力は次のとおりです。

13

答え:13です。

例題3 終了条件の境目を確かめる

次のプログラムが出力する2つの値を求めましょう。nは次に足す整数、totalはそれまでの合計です。whileの条件は、繰り返しの本体を実行する前に調べます。

n = 1
total = 0
while total < 10:
    total = total + n
    n = n + 1
print(total, n)
  1. 初期状態をtotalが0、nが1と記録します。条件を調べるときの値と、加算後の値を分けるためです。
  2. 条件が真の間だけ、加算とnの更新を順に実行します。途中でtotalが境目に達しても、その回の残りの命令を勝手に省かないためです。
  3. 次の条件判定へ戻り、totalが10未満かを確かめます。「10未満」と「10以下」の差が終了位置を決めるからです。
  4. 最後に表示する変数を読みます。nは最後に加えた数ではなく、更新済みの次の数だからです。
実行した回 加算前のtotal 加えたn 加算後のtotal 更新後のn
1 0 1 1 2
2 1 2 3 3
3 3 3 6 4
4 6 4 10 5

次にtotalが10未満かを調べると偽になるので、本体はもう実行しません。もし条件が10以下なら、totalが10の状態でもう1回実行します。この違いは、境目の値を条件へ直接入れると判断できます。

出力は次のとおりです。

10 5

答え:totalは10、nは5です。

例題4 人数と割合を分けて読む

ある案内を見た人について、方法Aでは40人中24人、方法Bでは60人中30人が「内容を理解できた」と答えました。この集計の理解できた人の割合を求め、どちらが高いかを答えましょう。また、この結果だけで案内方法の違いが理解の差を生んだと言い切れるかを考えます。

  1. 比べたい量が人数か割合かを確かめます。理解できた人数だけならBが多いですが、設問は対象者に占める割合を求めているためです。
  2. 方法ごとに分母をそろえます。AはAの対象者40人、BはBの対象者60人を分母にし、異なる集団の人数を混ぜないためです。
  3. Aは24÷40=0.6、Bは30÷60=0.5と計算します。百分率では60%と50%なので、Aのほうが10ポイント高くなります。
  4. 比較から言える範囲を確かめます。対象者の事前知識などが異なる可能性があり、観察された差だけで方法の因果的な効果を確定できないためです。

答え:Aは60%、Bは50%で、Aが10ポイント高いですが、この集計だけでは因果関係を断定できません。

なお、10ポイントの差と10%の増加は同じではありません。Bの50%を基準にした相対的な増加率なら、0.1÷0.5=0.2で20%です。設問が差を聞くのか増加率を聞くのかによって式が変わります。解答に単位や比較の基準を書き添えることは、計算後の飾りではなく、何を求めたかの確認になります。

つまずきやすいところと直し方

誤り1 添字と中身を同じ値だと思う

誤った書き方は、「dataが[3, 7, 4, 6]なので、dataの添字2の値は2」です。どこが違うかというと、添字は要素の位置を指定する番号で、その位置に入っている値とは別です。Pythonのこのリストでは添字0の値が3、添字1の値が7、添字2の値が4、添字3の値が6になります。

正しい書き方は、「Pythonのdata[2]は4」です。問題の表記で添字が別の番号から始まると説明されていれば、その指定に従います。配列を紙に写すときは、上段に添字、下段に要素を書き、位置を指す変数と中身を取り出した値を別々に記録します。普段の言語の習慣だけで番号を補うと、全体が一つずつずれる原因になります。

誤り2 多い人数を、そのまま高い割合と読む

誤った書き方は、「例題4では30人が24人より多いので、Bの理解できた割合が高い」です。どこが違うかというと、比較する集団の人数が異なります。分子の大小だけでは、分母に対してどれくらいを占めるかは決まりません。

正しい書き方は、「Aは24÷40、Bは30÷60なので、割合はAのほうが高い」です。図3のように同じ0%から100%の尺度で描くと、割合を直接比較できます。棒の長さは理解できた人数ではなく、各方法の対象者に占める割合を表しています。

図3 同じ尺度で示す理解できた割合の比較

データ分析では、さらに「差がある」と「方法が差を生んだ」を区別します。散布図で2つの量が一緒に増える傾向が見えても、別の要因が両方に関係している可能性があります。相関があれば直ちに因果関係がある、という読み方はできません。また、一部の回答者の結果を、回答していない人を含む全員へそのまま広げることにも注意が必要です。選択肢が資料の対象を越えていないかまで確認します。

誤り3 保留を空白のままにして戻れなくなる

誤った書き方は、余白に「あとで」とだけ記して次へ進むことです。どこが違うかというと、再開するときに何が確定していたかがわからず、本文を最初から読み直す負担が増えます。解けなかった理由が知識なのか計算なのかも区別できません。

正しい書き方は、「合計は7まで確認。次は4の判定から」や「割合は計算済み。因果の選択肢を確認」のような記録です。演習の見直しでは、保留した設問に戻ったときに、このメモだけで次の操作が選べるかを試します。解答欄の記入位置も最後に別の作業として点検します。答えの根拠を考える作業と、答えを正しい位置に記録する作業は、両方を終えて初めて一つの解答になります。

練習問題

練習1 条件と用語の対応

復元後のデータが元と完全に一致する保存方法を選びたいとき、「人が見て違いを感じにくければ、非可逆圧縮でも条件を必ず満たす」という説明は適切でしょうか。例題1の条件に照らし、理由も1文で答えましょう。

練習2 個数を数える処理

次のPythonプログラムの出力を求めましょう。countが変化するタイミングを、各要素について記録してから答えてください。例題2とは更新する値が違います。

data = [5, 2, 5, 8]
count = 0
for v in data:
    if v >= 5:
        count = count + 1
print(count)

練習3 条件を変えた繰り返し

例題3でwhileの条件だけを「totalが10以下の間」に変えます。ほかの命令と初期値は変えません。最後に表示されるtotalとnを求め、元のプログラムから何回多く本体を実行したかも答えましょう。

練習4 分母をそろえた比較

ある資料を読んだ人のうち、方法Cでは50人中35人、方法Dでは80人中48人が内容を説明できました。説明できた割合と、その差をポイントで求めましょう。また、「この資料を読むすべての人にCのほうが効果的である」と結論してよいでしょうか。集計に含まれる人の範囲にも注意して答えます。

答えと解説

練習1の答えは、不適切です。見た目の違いを感じにくいことは、データが完全に一致することの証明になりません。要求された復元条件に対応するのは可逆圧縮です。品質の印象を述べる言葉と、元のデータとの一致を述べる言葉を区別します。

練習2の答えは3です。条件を満たす要素は先頭の5、次の5、最後の8で、countは各回の後に1、1、2、3と変化します。同じ値の5が2回現れても、別々の要素なのでそれぞれ数えます。出力は次のとおりです。

3

練習3の答えはtotalが15、nが6で、元より1回多く実行します。totalが10のときも条件が真になるため、次のnである5を加え、その後nを6へ更新します。次の判定で15が10以下ではないため終了します。最後に足した値5と、終了時のnの値6を区別してください。

練習4の答えはCが70%、Dが60%で、Cが10ポイント高いです。ただし、全員にCが効果的だとは結論できません。この集計の対象における割合の差は言えますが、対象者の条件の違いや、集計に含まれない人への適用までは確かめられていません。計算結果と、そこから主張できる範囲を分けて答えます。

次の単元へのつながりと家庭での確かめ方

次の学習では、間違いを単元名だけで分類せず、「条件の読み取り」「途中状態の記録」「結論の範囲」のどこでずれたかまで調べます。これは、プログラムの不具合を直したり、集めたデータから提案を作ったりするときにも使う考え方です。正解と一致したかだけでなく、別の入力や条件でも同じ説明が通るかを確かめる方向へ進みます。

家庭で5分でできる確かめ方の1つ目は、例題2の数値を一つだけ変え、実行前に表で答えを予測することです。特に境目の5を入れると、条件の意味を理解しているかが見えます。2つ目は、例題4の表を見て、「人数で比べた文」と「割合で比べた文」をそれぞれ作ることです。どちらの文も、何を分母にしたかまで説明できるようにします。

個別指導では、トレースが止まった場合は代入の1行へ、割合で止まった場合は分母が表す集団へ戻って確かめます。お子さまの学習を家庭で見守る際も、正誤に加えて「どの行までは説明できるか」を聞くと、次に確かめる場所を共有しやすくなります。

まとめ

選択肢を選んだ後、その理由を問題文の条件や途中の値へ戻して説明してみましょう。理由が残らない正解は、条件が変わったときの判断材料にしにくいものです。一方、途中で誤っていても、値を更新した行や比較の分母が残っていれば、修正する箇所を特定できます。演習後の余白には、正解の番号に加えて、自分の判断が変わった場所を残します。

情報Iの解答を支えるのは、問いの条件から結論まで途切れずにたどれる根拠です。

本気になった日が、入塾の日。

お子様の教育、迷ったら「丸投げ」してください。必ず、期待以上の結果で返します。武蔵野で育む、武蔵境で学ぶ。

電話は年中無休。365日、24時間、お電話可能。

お電話 チャットで質問チャット