共通テスト「情報」最適化の原則 Vol.7 2025年度共通テスト本試験「情報I」のプログラム問題を見てみよう.

 

第7回目となる今回は,共通テスト教科本試験「情報I」のプログラム問題を解いてみたいと思います.

 

問題(令和7年1月19日公開)PICTO式で解いてみる.

 

では問題を見ていきましょう.
この第3問(22ページから27ページ)がプログラミング,アルゴリズムの問題です.この問題を実際に解いてみたいと思います.

設問2

 まずいきなりですが,図4から見てみましょう.え!いきなり設問1も飛ばして,プログラムと解答群から見るんですか?と驚かれるかもしれませんが,とりあえず見てみましょう.プログラムを実行されたい場合は 図4のプログラム をクリックしてください.

 

今回の試験では,1オリジン(要素番号が1から始まる)の配列が使われました.事前では0オリジンの配列がデフォルトと思われていたので,少し混乱も見られたようです.しかしながら,作問チームがあえて初回の試験で,1オリジンの配列を使用してきたのは,メッセージとしては妥当かと思えます.この問題の場合,1オリジンの部員番号,工芸品番号を扱う際に0オリジンとすると添字に-1がつくことになり,そのズレが原因で,受験者が凡ミスで別の解答を選択する懸念があるからです.以前の「情報関係基礎」の試験では1オリジンで扱うことが通常でした.作問者からすると当然の配慮かと思います.

さて,空欄[ キ ]を考えてみましょう.配列Akibiは他のところで一切参照されていません.使われるとするとこの部分になります.よって正答は(1)か(3)ですが,そのいずれなのかはこれだけではわかりません.ただし,このプログラムから「担当部員は三人いる.それぞれの担当部員にはAkibiという値が設定されている.最もAkibiの値が小さいか最もAkibiの値が大きい担当部員が工芸品を割り当てられる.どちらなのかは,この位置より前のどこかに文章で指定されているはずだ.」この情報を把握してから問題中の自然言語で書かれた文章を読む,つまり解答するのに必要な目的を知ってからその情報が含まれる文を全体から探すのと,そうでなくとりあえず仕様把握を目的に全体をくまなく読むのでは効率が変わってきます.

ー 共通テスト「情報」最適化の原則 ー
繰返し文で配列の要素番号がインデックスで1オリジンなら1から(配列の要素数)まで1ずつ増やしながら繰り返すのが本命

ー 共通テスト「情報」最適化の原則 ー
定義されている変数,配列が使われないことはない

ー 共通テスト「情報」最適化の原則 ー
先にプログラムを読むことで,結果自然文章で書かれている仕様把握が早くなる.

 

 

 

プログラムを実行されたい場合は 図4のプログラム をクリックしてください.

設問3

 まずいきなりですが,図5から見てみましょう.え!いきなりプログラムと解答群から見るんですか?と驚かれるかもしれませんが,とりあえず見てみましょう.

まず[ コ ]を考えてみましょう.次の2つの原則から,[ コ ]は(4)か(3)かと思われます.

ー 共通テスト「情報」最適化の原則 ー
変数が連続代入されることはない

ー 共通テスト「情報」最適化の原則 ー
初期化されていない変数が使われることはない

また,次の原則を使って考えてみます.

ー 共通テスト「情報」最適化の原則 ー
変数や配列の要素の値の単位が何になるか考えよ.

buinsuは人,buin, tantou は人を識別するための番号,kougeihinsuuは個,kougeihinは個数で数えられる(工芸品と思われる)ものの番号.です.

次の原則,
ー 共通テスト「情報」最適化の原則 ー
ある変数の値がある変数に代入や比較されるならば単位はたぶん同じ.

から,[ コ ]が(4)なら,[ ケ ]は(1),[ コ ]が(3)なら,[ ケ ]は(0)か(2)と思われます.

再び次の原則を適用すると

ー 共通テスト「情報」最適化の原則 ー
変数が連続代入されることはない

[ ケ ]は(0)でも(2)でもないことがわかります.(2)は行6で代入されていますし,(0)は行7で代入されています.つまりこれで[ コ ] は(4),[ ケ ]は(1)の組み合わせであることがわかります.

次に[ サ ],[ シ ]をみてみましょう.まず配列Nissuのインデクスに入りうるのはkougeihinでしょうか?tantouでしょうか?kougeihinは工芸品の番号で1-9, tantouは人の番号で1-3でした.Nissuの要素数は9でこれはkougeihinsuの9です.つまりは入るのはkougeihinと考えられます.また,tantouだとすると配列要素4-9の値は使われないことになってしまいます.そういう見方もありです.つまり次の2つの原則を使用します.

ー 共通テスト「情報」最適化の原則 ー
変数や配列の要素の値の単位が何になるか考えよ.

ー 共通テスト「情報」最適化の原則 ー
定義されている変数,配列が使われないことはない

すると[ サ ],[ シ ]は(0),(2),(4)のいずれかだとわかります.10行目の表示関数の文字列 Akibi[tantou] , “日目〜”, Akibi[tantou] + [ サ ], “日目” と期間を記載しています.期間ですので,例えば5日目から4日間の日数だと範囲としては5日目から(5+4-1)日目となります.つまり[ サ ]の解答は(2)であるとわかります.
10行目のAkibi[tantou] , “日目〜” という表記から,どうもAkibi[tantou]は作業を開始する開始日であるとわかります.よって次の作業の開始日はおそらくAkibi[tantou]+Nissu[kougeihin]である.つまり[ シ ]の解答は(0)であると思われます.(4)のように配列要素のインデックスに-1が含まれる解が候補となるかは,次の原則

ー 共通テスト「情報」最適化の原則 ー
繰り返し文は1回目の繰り返しを考えて当てはめてみる.

を適用するとNissu[0]となってしまい,今回は1オリジンなので,これが不適であり,解の候補から外れることがわかります.
図4や図5とも完全なプログラムが分かれば,そこから逆に自然言語で書かれている説明文の空欄を埋めていくのは遥かに容易な作業になります.

 

プログラムを実行されたい場合は 図5のプログラム をクリックしてください.

最後に

以上が,2025年度共通テスト「情報I」のプログラム問題の解説でした.一見テクニック集かと思われるかもしれませんが,いずれもデバッグやリファクタリングの際に行なっているプログラミングの自然な行為なのです.

 

 

 

Comments are closed.