1999年度 大学入試センター試験

前々回(→マナビシフト『実は1970年代から? 高等学校でのプログラミング教育』を読む)にも触れた通り、大学進学を希望する多くの受験生が受験する「大学入試センター試験」では1997年から2015年までの間、数学の選択問題として「プログラミング」が出題されてきました(『計算とコンピュータ』『算法とコンピュータ』『数値計算とコンピュータ』といった単元に対応する出題)。
様々な難易度の問題が出題されてきましたが、今回紹介するのは、おそらくもっとも易しいとされるものです。もしかしたら、小学生のお子様でも取り組めるかもしれません。

次の流れ図は,0以上の数をいくつか順に入力して,最後に負の数を入力し,入力された数のうち最大のものを出力する方法を示したものである。変数Aが入力された数を表し,変数Bがそれまでに入力された数のなかで最も大きい数を表すとする。

(1) に適するものを,次の 0 〜 7 のうちから選べ。

  1. Aを入力する
  2. Bを出力する
  3. ABを代入する
  4. BAを代入する
  5. Aは負か
  6. Bは負か
  7. ABより大きいか
  8. ABより小さいか

(2) 15, 13, 16, 16, 20, 1, 99, 19, -1 と入力したとき,流れ図の処理 回実行され、キク が出力される。

以下で解説をしていきますので、時間を決めて取り組んでみてください。制限時間は10分〜15分です。

考え方

いかがでしょうか。自信を持って解答できましたか? ここで問われているアルゴリズム(つまり、やりたいこと)は「0以上の数をいくつか順に入力して、最後に負の数を入力し、入力された数のうち最大のものを出力する」ものです。このことから考えれば、難しい問題ではありません。

フローチャート(流れ図)を上から順番に見ていきましょう。まず最初に「Bに0を代入する」とあります。Bは「入力された数のうち最も大きな数を代入する変数(データの入れ物)」ですので、0を代入することでBを初期化しています。次に、は「入出力」なので、0.か1.のどちらかです。このアルゴリズムでは、「0以上の数をいくつか順に入力」することになっていますので、は0.「Aを入力する」です。

は条件判断です。ここで判断した結果が「はい」であれば「して終わり」があることから、は4.「Aは負か」であり(入力された数字が入るのがAです)、は1.「Bを出力する」です。

も条件判断なので、4.〜7. のいずれかです。ここまでに行っていない作業は「一番大きな数を探す」ことですよね。もう一度問題文を見ると、Bは「それまでに入力された数のなかで最も大きい数」とあります。だとすれば、「ABを比べ、A(新たに入力された数)のほうが大きければBを更新する」ことがここでの作業になります。つまりは6.「ABより大きいか」であり、「はい」(入力された数のほうが大きい)のときにには3.「BAを代入する」が入ります。

ここまでできれば、(2)は簡単です。、つまり「Bを更新する」のは、15, 16, 20, 99の4回なので、は4。出力される数字キクは99ですね。もしかしたらを「5」と答えてしまった人もいるかもしれませんが、は「AB より 大きいか」ですので、2回目の16のときにBは更新されません。

今後もこのような問題は出題されるのか?

1999年度以外のセンター試験本試で「フローチャート」のみを問う問題が出題されたことはありません。それ以外の年度の問題ではもう少し複雑なアルゴリズムが扱われ、BASICと呼ばれるプログラミング言語で書かれたプログラムを「読み解く力」が問われています。これから先の大学入試で、本問と同レベル(フローチャートのみを用いて簡単なアルゴリズムを考えさせる)の問題が出題されることは考えにくいでしょう。

それでは、中学入試や高校入試の問題としてはどうなのでしょうか。フローチャートそのものの考え方は決して難しくなく、現行の中学校の技術家庭科でも取り上げられています。また、小学校高学年を推奨年齢としているZ会プログラミング講座 with LEGO® Education発展編でも扱っています。中学入試では「プログラミング」を選択できる学校もありますし、高校入試でも教科横断型の「思考力を問う問題」として教科の枠に収まりにくい新傾向の問題が出題されることも考えられます。中学入試や高校入試の問題としてであれば、簡単なアルゴリズムをフローチャートを用いて考えさせる問題が出題される可能性は否定できないでしょう。

その他年度のセンター試験

センター試験で出題されてきた「プログラミング」の問題では、さまざまなものが題材となっています。有名なアルゴリズムだったり、複雑な計算だったり、面白い設定だったり……。その中でも、設定が面白い問題の一部を紹介し、本稿を終わりにしましょう。

** 2001年 数学IA**

100 グラム未満のみかんを小玉, 100 グラム以上のものを大玉と呼ぶことにする.次のプログラムはみかんを小玉と大玉の 2 種類に分類して、種類別に袋詰めするとき,袋の中のみかんの種類と総重量を表示するものである.
コンピュータ化された選別機械をモデルとした設定です。実際の選別機械はもっと複雑な条件を処理しますが、基本的な部分を取り出して問題としています。

** 2005年数学IIB**

ある銀行では毎期末に預金残高に対し 5% の利率で利息がつく.この銀行に,たとえば a万円を一期間預金すると,期末には  1.05×a 万円の預金残高になることになる.

第 1 期の初めに, A さんはこの銀行に b 万円の預金を持っている. A さんは、まず b 万円から第 1 期分 m 万円を引き出す.残りの預金に対し第 1 期末に 5% の利息がつく.ここで, b>mとする.第 2 期目からも毎期初めにこの預金から m 万円ずつを引き出す予定である.ただし、預金残高が m 万円に満たないときには,その全額を引き出すものとする.(以下、少しずつ条件を変えながらプログラムを作っていく)

「金利」の計算は、現代社会において重要なテーマです。試験会場で本問を目にした受験生は戸惑ったかもしれませんが、「プログラミング」の枠を超えて学習しておくべきテーマです。そして「プログラミング教育」という観点からも、目的(この場合は資産運用の検討)があってプログラムを書く、という例を示すことができるものです。

今回はこれ以上触れませんが、ほかにも面白いテーマや見ておくべきアルゴリズムが多々出題されています。教科「情報」の大学入試を考える際、過去のセンター試験で扱われたテーマを見ておくのも悪くないかもしれません。

【次回予告】

次回は、慶應義塾大学の問題です。Z会プログラミング講座の担当が思わずにやりとしてしまったものです。

Z会のプログラミング講座ラインナップ

公開日:2018/09/26
最終更新日:2018/11/26