2021年04月27日

共通テスト 情報科サンプル問題解説(第2問)

 令和7年度大学入学共通テストから出題予定の情報科「情報T」。
 そのサンプル問題・解答が大学入試センターのWebで公開されています。
   https://www.dnc.ac.jp/kyotsu/shiken_jouhou/r7ikou.html

 情報科の教員としてはどんな問題が出題され、どんな力が要求されるのか気になるところ。
 そこで問題を解いて自分なりに解説を書いてみました。解説を書くのは意外に時間がかかるので、大問一つずつ順次?アップしていきます。今回は第2問の解説です。

第2問≪比例代表選挙の当選者数を計算するプログラム≫
問1(プログラミング)

ア―Bが正解。最初のKさんMさんの会話文とプログラムがどう対応しているかを照らし合わせながら考えればよい。プログラムの05〜07行目は会話文の「得票の総数を議席数で割る・・これを基準得票数とよぶ・・」が対応する。これに、それぞれ総数=sousuu、これを求めるための各政党の得票数=tokuhyo、議席数=giseki、基準得票数=kizyunsuu という変数を割り当てている。プログラムの06行目では、票の総数(sousuu)を求めるために、各政党の得票数=tokuhyoのm番目に格納されている数値を順番に加えて求めているので、
mには0〜3の数字が入ることがわかる。ちなみにtokuhyo〔m〕とは配列tokuhyoの中のm番の数値(例えばtokuhyo〔0〕ならtokuhyoの中の0番の得票数=1200)を指す。

イ―G、ウ―bが正解。プログラムの10・11行目を、会話文と対応させると「各政党の得票数をこの基準得票数で割る」が該当する。よってイ・ウには各政党の得票数=tokuhyo〔m〕を基準得票数=kizyunsuuを割るので、それぞれG、ⓑが入る。

問2
図7の手順を書きだした文章と図8の変化を対応させて確認すればよい。
 手順としては、まず配列Hikakuの数値から最大の数値=Hikaku〔maxi〕を見つける。1回目ではHikaku〔2〕=1440が該当する。次に配列Tosenの中の対応するTosen〔maxi〕の値に1を加えた数値に置き換える。1回目ではTosen〔2〕を0に1を加えた数値=1に置き換える。
 次にもとの政党の得票=Tokuhyoの中の対応するTokuhyo〔maxi〕を、Tosen〔maxi〕の値に1を加た数値で割った数値で、Hikaku〔maxi〕の値を置き換える。1回目ではTokuhyo〔2〕=1440をTosen〔2〕=1に1を加えた2で割って、Hikaku〔2〕をその数値=720に置き換える。

エ―b ケ―@が正解。2回目の最大数値はHikaku〔0〕=1200となるので、対応するTosen〔0〕に1を加え、次にTokuhyo〔0〕=1200をTosen〔0〕=1に1を加えた2で割って、Hikaku〔0〕をその数値=600に置き換える。配列Hikaku、Tosenの他の数値は変化しないので、エ―ⓑ720、ケ―@1と前の手順後のままの数値が入る

オ―H コ―Aが正解。3回目はHikaku〔2〕=720が最大値になるので、Tosen〔2〕=1に1を加え、Tokuhyo〔2〕=1440をTosen〔2〕に1を加えた数値(2+1=3)で割った値(1440÷3=480)で、Hikaku〔2〕を置き換える。よってオ―H480、コ―A2が正しい。

カ―H キ―H サ―A シ―Aが正解。4回目はHikaku〔1〕=660が最大値になるので、Tosen〔1〕=0に1を加え、Tokuhyo〔1〕=660をTosen〔1〕に1を加えた数値(1+1=2)で割った値(660÷2=330)で、Hikaku〔1〕を置き換える。5回目はHikaku〔0〕=600が最大値なので、Tosen〔0〕=1に1を加え、Tokuhyo〔0〕=1200をTosen〔0〕に1を加えた数値(2+1)で割った値(1200÷3=400)で、Hikaku〔0〕を置き換ええる。よってHikaku〔2〕、Tosen〔2〕は変化しないのでオ・コと同じ数値が入る。
 
ク―F ス―Bが正解。6回目はHikaku〔2〕=480が最大値なので、Tosen〔2〕=2に1を加え、Tokuhyo〔2〕=1440をTosen〔2〕に1を加えた数値(3+1)で割った値(1440÷4=360)で、Hikaku〔2〕を置き換える。よってク―F360 ス―B3が正しい。

問3
セ―Aが正解。問3のプログラムは、問2で扱った図7の手順をプログラムにしたものであるので、手順を対応させていけばよい。プログラム08行「(セ)<gisekiの間繰り返す」
とあるので、どのような条件まで繰り返せば考えればよい。図7の手順4に「手順2と手順3を当選者の合計が議席数の6になるまで繰り返す」とあるので、これに対応するプログラムであることがわかる。つまり当選者の合計=tosenkeiが、議席数=gisekiに達するまで繰り返すので、(セ)にはAtosenkeiが入ることがわかる。

ソ―Aが正解。09〜13行のプログラムは、図7手順2の「配列Hikakuの要素の中で最大の値を調べ」の部分に対応する。11行から12行はその方法の記述で、Hikaku〔i〕が現在の最大値〔max〕より大きければ、最大値〔max〕をHikaku〔i〕の数値に置き換え、配列Hikakuの次の数値と比較し同様のことを繰り返しながら最大値を求める手順をとる。(ソ)は下線部の手順にあたるので Amax=Hikaku〔i〕 が入るとわかる。

タ―B チ―Gが正解。16行目のプログラムは、図7手順3の「Tokuhyo〔maxi〕をTosen〔maxi〕+1で割った商をHikaku〔maxi〕に格納する」に対応する。ゆえにタ―BTokuhyo〔maxi〕、チ―G(Tosen〔maxi〕+1)が入る。

ツ―⓪ テ―⓪が正解。候補者が足りなくなった場合の対応なので、最大値を探す条件に、最大値となる政党の当選者が増えた場合の人数=Tosen〔i〕+1が候補者=Koho〔i〕より同じか少ないことを条件に入れればよい。両方が成り立つことが必要なのでツ―⓪andが入り、テには⓪Koho〔i〕>= Tosen〔i〕+1が入る。

印象
 プログラミングの問題ですが特定の言語の知識ではなく、変数や配列などプログラミングの一般的な考え方や、文章の読解力が問われる印象です。もちろんコードによるプログラミングを経験しておく方が有利と思いますが、経験がなくても丁寧に文章とプログラムを対応させていけば読み解けると思います。
posted by okamon at 20:17| Comment(0) | TrackBack(0) | 情報科共通テスト