慶應義塾大学SFC 2016年情報入試問題解説

神奈川県立柏陽高等学校情報科教諭 間辺広樹先生

1.はじめに

2016年度、慶應SFCの総合政策学部と環境情報学部にて情報入試が実施されました。両学部共に数学と情報から受験生がどちらかを選ぶ形になっていますが、それぞれに100余名もの受験生が情報を選択したと聞きました。高校で情報を指導する立場とすれば、情報入試の他大学への拡大や情報入試受験生の増加はとても喜ばしいことです。今後も情報入試が盛んになっていくことを願って、本レポートでは2016年度慶應SFC情報入試の特徴を解説すると共に、どのような対策が効果的かを考察いたします。

 

2.慶應SFC情報入試の概要

SFC情報入試問題の構成は総合政策学部、環境情報学部両学部共通で、数学と情報の試験問題がセットになった冊子から、どちらかの科目を選択するようになっています。情報は4つの大問(情報-1~情報-4)で構成され、すべての大問が必修です。出題内容も両学部で共通していて、情報-1 では情報関連の法規と情報セキュリティの問題、情報-2 では情報科学の基礎となる2進数やアルゴリズムの問題、情報-3 ではデータベースやネットワークに関する応用的な問題、情報-4 では日本語で記述されたプログラミングが題材となっています(表1)。

表1 総合政策学部と環境情報学部の問題

難易度は問題が進むに従って高くなっています。情報-1 は知識中心で、「知っていれば」答えられる問題です。情報-2 は知識、計算、論理的な考え方が総合的に問われる問題ですが、個々の問題の難易度は決して高くありません。落ち着いて得点を重ねることが大切です。情報-3 はデータベースやネットワークなどの情報技術が題材です。難易度が上がるため、深い理解と洞察力が要求されます。情報-4 はプログラミングを扱った難問です。それまでのプログラミング経験や思考力、当日のひらめきの違いなどで差が生じるでしょう。

 

合格者の得点平均は8割を超えています。従って難易度の低い情報-1 と情報-2 で確実に得点し、難易度の高い情報-3 と情報-4 の中の小問を一つでも多く正解できた受験生が高得点を取れたと思われます。

 

◆慶應義塾大学入試問題

2016年度 総合政策学部

2016年度 環境情報学部

 ※情報入試研究会のサイトより

●解答例はこちら⇒慶應義塾大学SFC情報入試問題を振り返る

 ※情報処理学会・情報入試研究会協力

 

3.問題毎の解説

それでは、両学部の情報入試問題について解説し、入試対策について考えてみましょう。

 ◆情報-1(法とセキュリティ)

情報-1 は、主に情報セキュリティ上の脅威となる様々な手口と、情報関連の法規を扱う知識問題です。両学部とも(ア)〜(コ)の10の小問から構成されていて、それぞれに「正しいもの」や「誤っているもの」を5つの選択肢から選ぶ形式です。文脈から正答を予測できるものもありますが、あらかじめ正しい知識を身に付けておくことで、確実に得点が取れるようになるでしょう。

 

両学部の問題を「情報セキュリティ(◆)、情報関連法規(▲)、その他(◎)」で分類し、解説いたします。

 

総合政策学部

総合政策学部は、情報セキュリティ(◆)が3問、情報関連法規(▲)が7問出題されていました(表2)。

表2 総合政策学部・情報-1の各小問の解答またはキーワード

情報セキュリティ(◆)の3問((ア)(イ)(ウ))はすべて、セキュリティを脅かす手法の説明が記され、その名称を選択肢から選ぶ問題です。個々の問題の選択肢には、DoS攻撃、オレオレ詐欺といった古典的な手口もありますが、水飲み場型攻撃やリフレクタ攻撃、ランサムウェアなど近年になって聞くようになった手口もあります。いずれもIPA『情報セキュリティ白書2014』や総務省『平成25年度版情報通信白書』が出典となっています。

 

情報関連法規(▲)の7問は、問題文に書かれた権利名を選ぶ問題((エ)(ク))と、問題文にある法規の適用範囲や解釈を問う問題((オ)(カ)(キ)(ケ)(コ))に分かれます。難易度は法規の適用範囲や解釈を問う問題の方が難しく、例えば(コ)では、「ストーカー規制法ではSNS上でストーカー行為を行うことは禁止していない」や「出会い系サイト規制法では、18歳未満の児童に対して、異性交際を求める書き込みをすることが禁止されている」などの正誤の判断に迷った受験生もいたのではないでしょうか。

 

環境情報学部

環境情報学部は情報セキュリティ(◆)が2問、情報関連法規(▲)が4問、総合政策学部と異なり、その他(◎)が4問出題されていました(表3)。

 

表3 情報-1の各小問の解答またはキーワード

情報セキュリティ(◆)の2問((ア)(イ))は、セキュリティを脅かす手法の説明が記され、その名称を選択肢から選ぶ問題です。どちらの問題も、パスワードリスト攻撃、ゼロデイ攻撃という近年になって聞くようになった手口が解答になっていて、IPA『情報セキュリティ白書2014』と総務省『平成25年度版情報通信白書』が出典です。

 

情報関連法規(▲)の4問は、問題文から法規名を選ぶ問題((ウ))と、問題文にある法規の適用範囲や解釈を問う問題((カ)(キ)(ク))に分かれました。難易度は法規の適用範囲や解釈を問う問題の方が難しく、例えば(カ)では、「誹謗中傷をネットに書き込んだ情報発信者が刑法によって罪に問われる可能性がある」などの正誤の判断に迷った受験生もいたのではないでしょうか。

 

その他(◎)の4問((エ)(オ)(ケ)(コ))はそれぞれに変わった問題です。スマートフォンに関する(エ)と迷惑メールに関する(オ)は、情報機器を適切に使うための姿勢を問うような問題でした。また、Winnyに関わる(コ)は、裁判の判決文からその解釈を問う問題でした。

 

情報-1の対策

両学部合わせると、情報セキュリティ(◆)が5問、情報関連法規(▲)が11問、その他(◎)が4題出題されていました(表4)。

 

表4 両学部の情報−1出題傾向

情報セキュリティ(◆)については、その多くが用語を知っていれば解ける問題ですが、比較的新しい用語が取り上げられているため、最新の情報を確認することが必要です。IPA『情報セキュリティ白書2014』や総務省『平成25年度版情報通信白書』が出典となっていることから、次の試験では、これらの2015年版や2016年版を熟読して臨みたいところです。

 

情報関連法規(▲)については用語と事例から正誤と判断する問題に分けられます。それぞれの法規の名前、役割、施行年度などを整理しましょう。その上で、法律の適用範囲を理解しましょう。例えば、それぞれの法規について、何が適用の対象となり、何が対象とはならないか、いろいろなケースを想定しておくと良いでしょう。法規の中でも、プロバイダ責任制限法や著作権法は両学部で出題されていますから優先的に学習をしましょう。

 

その他(◎)の問題については、決定的な学習法があるようには思えませんが、日頃から情報セキュリティを意識して情報機器を扱う態度が必要と言えそうです。

 

これらの内容を総括して学習できるサイトとして、「国民のための情報セキュリティサイト」があります。一部のページの記述が問題にも使われているようですので、しっかりとチェックしておきましょう。

 

※「国民のための情報セキュリティサイト」

http://www.soumu.go.jp/main_sosiki/joho_tsusin/security/basic/legal/index.html

 

 ◆情報-2(情報科学・基礎)

情報-2 は情報量、アルゴリズム、論理演算、符号化など情報科学に関する基本的な知識や考え方を問う問題です。両学部とも3つの小問で構成されています。

総合政策学部

(ア)はMiB(メビバイト)という記憶容量の単位を問う知識問題です。2の20乗を1MiBと表しますが、広く使われている単位ではないので、戸惑った受験生が多かったのではないかと思います。KiB(キビバイト)、GiB(ギビバイト)、TiB(テビバイト)といった単位もありますので、合わせて覚えておきましょう。

 

(イ)は4枚のカードを使った2進数の問題です。例えばAのカードに書かれた数は、「2進表示した時、一の位に1を使う数」であることが見抜ければ、難しくはないでしょう。

 

(ウ)はソート(整列・並べ替え)のアルゴリズムに関する問題です。交換法(バブルソート)に似ていますが、教科書に書かれているようなバブルソートは、データが5個であれば比較と交換を行う1巡の回数が 4回→3回→2回→1回と減っていくため、並べ替えが済むまでの合計の比較回数は 4+3+2+1=10 と固定の値になります。データがN個であれば  (N-1)+(N-2)+…+2+1=N(N-1)/2回 となって選択肢の(2)になるわけです(それを錯乱肢として選択肢に入れておいたのかと思われます)。しかし、出題されているソート法は、「1巡は必ず4回を繰り返す」ことと「交換がなくなるまで繰り返す」ことが異なります。従って、最初から整列された交換がない状態であれば、4回の比較(1巡)で終了します。しかし、逆順に並んでいる場合4回の比較を4巡繰り返す必要があるため、合計で 4×4=16回 の比較が必要になります。これがN個の数字があった場合は N×N回 となるわけです(この問題はN×Nが選択肢に用意されていなかったために無効となり、受験生全員に加点されました)。

 

環境情報学部

(ア)は論理演算を扱った問題です。集合のベン図を描いて考えることもできますが、かえって複雑になってしまいます。ここでは以下のような論理演算から求めることができます。

(イ)は2進数に関する問題です。2進数と10進数の変換、2進数と16進数の変換、2の補数表現、誤差など教科書レベルの内容です。10進数から2進数に変換したときに誤差が生じるものを選ぶ問題では、(a)0.1 や(d)8.025 が2の累乗の加減算で表すことができないことから答えになります。これら個々の基礎項目について、なぜそうなるのかの理屈を理解できていれば、無理なく答えられる問題です。

 

(ウ)符号化に関する問題です。ABCDの4つの文字を0と1だけで表す符号化の方法がいくつか示されていて、効率化や復元性に関して問われています。「文字をビット列で表す」や「符号化には固定長や可変長がある」などの基本的な考え方を押さえておけば、説明文を読んで答えられる問題です。

 

情報-2の対策

情報-2 は情報科学の基本的な問題ばかりです。まずは教科書で基礎を確認しましょう。ITパスポート試験や基本情報技術者試験の午前問題などにも同種の問題がたくさん出題されていますので、それらを使って力試しすることも効果的でしょう。

 

ただし、問題が易しい分、間違えると命取りになるかも知れません。計算ミスや問題文を誤って解釈しないよう、細心の注意を払いましょう。

 

 ◆情報-3(情報科学・応用)

情報-3 は情報科学に関する応用的な内容が出題されました。総合政策学部ではデータベース、環境情報学部ではネットワークの各分野が扱われています。難易度は総合政策学部の方が高く、環境情報学部の問題は比較的易しかったと言えるでしょう。

 

総合政策学部

リレーショナルデータベースの問題です。データベースは、高校情報科の中でも最も実習しにくく、また、理解しにくい内容の一つであるため、受験生の多くが苦戦したのではないかと思われます。特に、リレーショナルデータベースには、「正規化」「リレーションシップ(関連付け)」「主キー」など特有の概念がありますが、この問題はこれらの理解が不十分な状態では手が付かなかったのではないでしょうか。

 

この問題を解くポイントは、個々のテーブルが何を管理するかを問題文から読み取って、空欄部分のフィールド名を適切に選び、その上で、テーブル間がどのように関連し合ってデータベース全体を構成しているかを掴むことです。ただし、試験の冊子は複数のページにまたがって説明がなされているので、図1のようなテーブル名とフィールド名が一覧でわかる図を作り、フィールド名やリレーションシップなどがわかったところから、図に書き加えていくとよいでしょう。

 

図1 データベースのイメージ1

(ア)は、「顧客管理テーブル」の問題です。一般的に顧客管理と言えば、フィールドに住所や電話番号などを想像しますが、ここでは問題文に「顧客毎にポイント情報と、プレミアム会員かどうかの情報を管理する」とありますから、(4)ポイント残高を選択します。また、「通常会員は100ポイントを支払うと、次の日から100日間プレミアム会員となることができる」とあることから、日にちの管理が重要であると判断し、(6)プレミアム会員登録日を選択することになります。

 

(イ)は、「製品管理テーブル」と「価格管理テーブル」の問題です。問題文に、「このテーブルでは、過去にどの商品をいくらで販売したかを振り返ることができるようにしたい」とあることから、商品の価格は変動するものであり、その管理のために必要な情報として「価格管理テーブル」のフィールドには、(2)単価、(3)販売開始日、(4)販売終了日が適切です。

 

(ウ)は、「購入・ポイント履歴テーブル」の問題です。問題文に「どの会員がどの商品をどのような時期に購入しているかを解析するため」とありますから、それらが特定できるフィールドを選ぶ必要があります。ここで、(1)顧客名(2)商品名を選ばないように注意する必要があります。なぜなら、これらは一意に識別できるとは限らないからです(例えば同姓同名の顧客がいるかも知れない)。このような矛盾を防ぐため、データベースでは一意に識別するためのコードを用意し、主キーに設定します。この問題ではテーブル毎に「〜〜ID」というフィールドが用意されていますから、これら (6)顧客ID(7)商品管理IDが適切な答えということになります。また、ポイントがどのように利用されたのかを履歴として残すのですから、(4)使用ポイント数も答えになります。

 

(エ)は、4つのテーブルがどのように利用されるのかを問う問題です。データベースはテーブルに対して「データの更新」「データの追加/削除」「データの選択」などの操作を行いながら運用されていくものですが、問題では「テーブルのうち3つはレコードの追加のみが可能なテーブル」で、「残り一つは日常的にフィールドが書き換えられるテーブル」であるとして、その残り一つを選択させています。ここで、「製品管理テーブル」を例にとると、新しい商品が出てきたら、新しいレコードとして追加されます。まれに商品名が変わることはあるかも知れませんが、「日常的」とは言えないでしょう。従って、「製品管理テーブル」は「レコードの追加のみが可能なテーブル」と判断します。「価格管理テーブル」も単価が変わることはあるかも知れませんが、それは新しいレコードとして追加されます。「購入・ポイント利用履歴テーブル」も客が商品を購入するごとに新しいレコードが追加されます。しかし、「顧客管理テーブル」については、常にプレミアム会員であるかどうか、ポイント残高は何ポイントか、というデータが書き換えられていきます。従って、(1)顧客管理テーブルが正答と判断します。

 

(オ)は、客が商品を購入したときのデータの動きを聞く問題です。ポイントの利用の有無があるため、その振る舞いは複雑です。データベース全体の構成を再確認しましょう。ここまでの問題で、すべてのフィールド名が埋まりました。テーブル間のリレーションシップも設定すると、次のように全体を表すことができます(図2)。

 

図2 データベースのイメージ2

理解のポイントは、「購入する商品が複数あった場合、商品毎に購入番号が割り当てられ、購入と使用ポイント数の履歴が購入・ポイント利用履歴テーブルに記録される」ことを掴めるかどうかです。つまり、ユーザが一度の買い物で5種類の商品を購入したら、購入・ポイント利用履歴テーブルに5つのレコードが記録される、ということです。これらを踏まえて各設問を見てみましょう。

 

 まずはユーザに促した「使用したいポイント数」の処理を行っています。ユーザの誤入力や誤った判断などに起因する処理の矛盾を防ぐために、システムの方でそれらを未然に防ぐ措置がとられているということです。ここでは使用したいポイント数が(18)総購入額(24)ポイント残高を超えている場合、再入力を促すようにしています。次に上記で見たように、決済時は(21)商品管理IDごとに、(15)購入・ポイント利用履歴テーブルに、(14)使用ポイント数を記録していきます。すると、顧客はポイントを減らすことになると共に、新しく購入に伴うポイントを得たことにもなるので、(16)顧客管理テーブル(24)ポイント残高を更新することが必要です。

 

環境情報学部

ネットワークの問題です。総合政策学部のデータベース問題に比べるとかなり易しくなっています。(43)〜(46)にはウェブブラウザ、URL、ドメイン名、DNSなどよく聞く言葉が入ります。受験生は迷うことはなかったでしょう。(47)〜(49)はDNSの仕組みについて階層化やTDLの知識を問うています。(50)〜(54)はIPアドレスとそのビット数の問題です。(55)〜(57)はIPアドレスをネットワーク部とホスト部に分ける構造を聞いています。

 

情報-3の対策

データベースは、そこに使われる概念がわかりにくく、高校の授業でもあまり深く学習されていない分野ではないかと考えられます。受験生にとっては、この差を独力で埋める必要がありますから、学習に時間が掛かってしまうかも知れません。

 

そのような状況の中で、サクセス〜sAccess〜(http://saccess.eplang.jp)は、短期間に独力で学ぶことができるお薦めのデータベース学習環境です。いくつかのサンプルが用意されているので、射影・選択・結合などのデータベース操作を実習を通して学ぶことができます。また、学校の先生が説明のために作ったわかりやすいスライドも公開されています。使っていくうちに「こういうことだったのか」と気付くことがたくさんあるでしょう。

 

その上で、ITパスポート試験の過去問題を解くと良いでしょう。データベースの設計や正規化を扱った小問がたくさん出題されているので、これらを解いていくうちに、SFC入試問題レベルを解ける実力が付いていくはずです。

 

ネットワークには多くの専門用語が使われます。まず、それらの意味を理解しましょう。URLやDNSとアルファベット表記される言葉もありますが、単に文字列を覚えるのではなく、元の意味(Uniform Resource LocatorやDomain Name System)を知ることで理解が深まるでしょう。また、ネットワークには計算問題もよく出題されます。環境情報学部に出題されたIPv4アドレスのビット数を元にして、サブネットマスクによって分けた場合のホスト数などが情報処理技術者試験でもよく出題されています。今回の問題ができたからといって安心するのではなく、これらの問題を解けるようにしておくことも必要です。

 

情報-3 では、情報システムの開発、モデル化とシミュレーション、マルチメディア表現など、他の学習分野が出題される可能性もあります。どの分野が出題されても、柔軟に対応できるよう教科情報の学習範囲全般を押さえておきたいところです。

 

 ◆情報-4(プログラミング)

情報-4 はプログラミングの問題が出題されました。

 

総合政策学部

総合政策学部は、プロジェクトマネージメントとプログラミングを関連させた複合問題でした。プロジェクトマネージメントだけの前半部分は表から全体の流れと先行作業との関係を示したアローダイアグラムなどを使って整理できれば、比較的易しい問題です。一方後半のプログラミングの問題は、集合の定義やそれ集合を使った反復構造が使われているため、問題の意図の読み取りに時間が掛かった受験生が多かったのではないでしょうか。

 

図3 作業のアローダイアグラム

(ア)は作業時間に関する問題です。まず、「作業を始めてから完成までの最短時間」が問われています。図3のようなアローダイアグラムを作っていれば、ルートを辿っていってその合計を計算することは容易です。ただし、各作業とその先行作業との関係が重要ですので、しっかりと理解して各問に答えましょう。例えば作業Dは作業Aと作業Bが先行作業ですが、両作業が終わらないと作業Dに進むことができません。そのため、作業Dが終わるのは作業開始から30分+30分の60分後となります。問われているTminは「最短時間」ですが、最も時間が掛かるルートを答えとしなくてはいけないことに注意しましょう。全体ではそれが「B→D→G→H」となりますので、合計66分となります。

 

図の見方がわかると、他の問題は簡単に答えられるでしょう。例えば作業Cが5分延びた場合、「C→E→G→H」の合計も同様に66分ですが、10分延びると71分になるため、「5分延びてもTminは変わらないが、10分延びるとTminが長くなってしまう」作業に該当するわけです。

 

(イ)は(ア)を応用した問題です。集合やプログラミングの考え方も使わなければ解けない難問と言えるでしょう。

 

この問題を解く鍵となるのは変数Dの役割を見抜くことでしょう。他の変数は問題文に説明がありますが、変数Dは説明がないため、プログラムや問題文から推測することになります。そもそもこの問題は「作業ωが何分遅れると、作業を初めてから完成までの時間に遅れるかを計算する」ことと問題文にあります。そして、11行目の「変数Dの値を0にする」と15行目の「変数D の値を[   ]」に変数Dが使われています。このことから、Dはその遅れを計算する変数であると予想できます。そして、プログラムの最後に「結果として変数[D]の値を出力する」とすれば辻褄が合うのです。

 

さらに、(ア)の結果から「作業A は6分遅れると全体に影響する」ことが容易に想像できるはずですが、この「6分」が作業Aに対する変数Dの値となります。同じようにAからG のそれぞれの作業をω として手作業で遅れる時間を調べてみると(表5)のようになります。このようにωとして作業を指定し、その作業の遅れが完成に影響を与える時間D を自動的に求めるのがこのプログラムです。

 

表5 作業毎の「全体に影響を与える遅れの時間」

次に、プログラムを読み解きましょう。その際、1行ずつ解釈しようとするよりも、まずは全体の流れを掴み[1.全体]、変数の役割を意識し[2.変数]、ブロック単位で何を処理しているか細部を理解するようにする[3.ブロック単位の処理]と良いでしょう。以下、この順番で説明します。

 

[1.全体]

プログラムは全体として、処理A、処理B、処理Cという3つの繰り返しのブロックから構成されていて、処理Cは処理Bの中に含まれています。それぞれの繰り返しには、繰り返しの条件が設定されていて、それが満たされている間(または満たされていない間)、処理が繰り返されます(図4)。

 

問題文の「まず遅れがない場合の最短時間を計算し」に対応して、処理Aでは遅れがない場合の最短時間を計算しています(3行目〜9行目)。また、問題文の「次に作業ωの遅れを1分ずつ増やしながら最短時間が延びるかどうかを判定する」に対応して、処理Bはωの所要時間を1分ずつ増やし、その都度完成までの時間を計算しています(14行目〜29行目)。その完成までの時間の計算が処理Cとなるわけですが、処理Aとアルゴリズムが同じであるため、空欄部分はすべて処理Aと同じになっています。

 

図4 プログラムの流れ

[2.変数]

 

この問題では以下の多くの変数と集合としてUが用いられています。個々の変数の役割と変数同士の関係を掴むことも必要です。

 

x:作業を表す(作業Aから作業Hが該当し、集合Uの要素として使われる)

U:作業全体を表す。U={作業A, 作業B, 作業C, 作業D, 作業E, 作業F, 作業G, 作業H}

T(x):作業毎の所要時間を表す。例えば、xが作業Eであれば、T(x)=35です。

P(x):先行作業の集合を表す。xが作業Eであれば、P(x)={作業A, 作業C}です。

M(x):作業を始めてからxが完了するまでの最短時間である。xが作業Eであれば、先行作業に掛かる時間が20分、作業Eに掛かる時間が35分であるから、M(x)=20+35=55です。

z:全体の完成に対応する作業を表す。ここでは作業Hが該当します。

ω:プログラムを実行する際に指定する作業です。

D:前述したように、作業ωの遅れが全体の遅れに影響を与える時間です。

 

[3.ブロック単位の処理]

 

プログラムは集合Uを定義するところから始まります。

 

処理Aでは、x毎にP(x)や、xを始めるまでの作業時間T(y)を使いながらM(x)を求め、終わったら集合Uからその要素を取り除きます。そして、別のxについてM(x)を求め…という流れで進め、集合Uに要素がなくなるまで続けるという繰り返しの構造を有しています。イメージ的にはアローダイアグラム(図3)の左側から処理が進み、最後の作業Hに対するM(x)が求められたところで、Uは空集合となるので、処理Aが終わります(図5)。

 

図5 繰り返し条件のイメージ

処理Aが終わった時のM(x)が、遅れがない場合の最短時間となりますので、これをTminにセットします(10行目)。そして、作業ωの遅れを表す変数Dに初期値0をセットし(11行目)、Dの変化に対応させた全体の作業時間Tdelayの初期値をあらかじめ初期値Tminをセットします(12行目)。これで、準備完了、Dを変化させる処理Bへと進みます。以上より、ここまでのプログラムの前半(1行目〜12行目)は、以下のようになります(図6)。

図6 処理Aのプログラム

処理Bでは、プログラム実行時に指定された作業ωの時間を1分ずつ増やしていって変数Dにセットし、全体の作業時間Tdelayが、処理Aで計算した最短時間Tminと異なったとき、繰り返しの処理をやめます。そして、遅れ始めた値がセットされている変数Dを結果として出力します。その際、処理AでUが空集合になったままですので、18行目で再定義しています。以上より、13行目以降のプログラムは以下のようになります(図7)。尚、処理Cの「全体の作業時間を計算する」というアルゴリズムは処理Aと同じであり、プログラムも全く同じになるため、省略します。

図7 処理Aのプログラム

環境情報学部

環境情報学部は数学的な題材を扱った問題でした。再帰アルゴリズムが使われていますが、受験生はそれを知らなくても、数学BIで学習する漸化式の考え方に帰着させることで、問題の意味は理解できたと思います。

 

また、この問題ではn の値を1から順に増やしていき、f(1), f(2), f(3), …と順に求めていくことで、関数fの振る舞いが予測できます(表6)。

 

表6 nとf(n)の関係

(ア)はfが何を求める関数かを聞いていますが、上記の表から選択肢の (1)nを2進数で表した時の1の個数を値とするが正答とわかります。

 

(イ)は、fと同じ計算をするプログラムについて聞いています。nが入力されたときの、f(n)を求めるものですが、表でf(1)から順に作っていったアプローチではなく、f(n)からnの値を減らしていって、f(0)で終わるプログラムを作ることに気を付けなければいけません。その流れで関数fの振る舞いを見てみましょう。例えば、入力値がn=9であれば、 

次に、プログラムを読み解きます。総合政策学部の問題と同様に、1行ずつ解釈しようとするよりも、まずは全体の流れを掴み[1.全体]、変数の役割を意識し[2.変数]、ブロック単位で何を処理しているか細部を理解するようにする[3.ブロック単位の処理]と良いでしょう。以下、この順番で説明します。

 

 [1. 全体]

 

全体の構成はシンプルです。まず、初期設定を行った後、処理Aが繰り返し実行されます。これは再帰的にfの値を計算し続けるものです。その際、問題文にあるように「nは0以上の整数とする」とありますから、これを繰り返しの条件に設定することになります。

 

処理Aの中は処理Bと処理Cに分かれます。処理Bでnが偶数の時の計算、処理Cでnが奇数の時の計算をします。そして、処理Aが終わったら最後に結果を出力する、というのがプログラム全体の流れになります(図8)。

 

図8 プログラム全体の流れ

[2.変数]

 

このプログラムでは変数はnとaの2種類しかありません。nは問題文から入力値であることがわかります。問題は変数aですが、問題文には説明がないことから、自分でその役割を判断することになります。その判断が、この問題を解く鍵となります。とは言え、最終的にf(n)の値を計算し、出力しなくてはいけませんから、f(n)をaと考えることが妥当です。また、この問題ではnの値を変化させていく必要があります。仮にnが9から始まったとしても、最終的にはnを0にして終わらせなければいけません。これらを踏まえてブロック単位の処理を考えましょう。

 

[3.ブロック単位の処理]

 

プログラムは入力値を変数nに記憶し、変数aを0にするところから始まります。

 

処理Aでは変数nを変化させていって、n=0になるまで繰り返します。処理Aの中に処理Bと処理Cがあり、nが奇数であれば処理B、偶数であれば処理Cと条件分岐します。処理Bでは奇数の場合のf(n)の定義式である「1を引いて2で割る」処理をした後、出力値aに1を加算します。処理Cでは偶数の場合のf(n)の定義式である「2で割る」処理をします。

 

nが0になったところで、処理結果aを出力します。

 

図9 各処理のプログラム

(ウ)はなぜこのプログラムが無限ループに陥ることなく、有限回の繰り返しで終了するのかの根拠を聞いています。入力値nがどんな数であっても必ず0に帰着することの説明をすればいいのですが、このような形式の設問はあまり見られませんから、受験生は戸惑ったことでしょう。ただし、考え方としては、nが0以上の整数だけからなる数列であり、繰り返しの処理がnk > nk+1を保証するものであるなら、いずれは0になることは感覚的にも理解できるかも知れません。このことから(2), (4), (6), (9)が正答になります。

 

情報-4・対策

総合政策学部は出題意図の読み取りに時間が掛かる問題です。じっくりと問題を読んで、何を処理するプログラムかを掴みましょう。プログラムには空欄が多いですが、同じ番号が多いため、見た目程多くの問いに答える必要はありません。そのため、まずは、どことどこが同じ答えになるかを整理すると良いでしょう。また、このことは答えを考えるヒントにもなるはずです。わかったところから埋めていくようにしましょう。

 

環境情報学部は数学的な問題が出題されました。総合政策学部に比べると、アルゴリズムも単純で、変数も少ないため、比較的易しかったと言えます。

 

一般的にプログラムを読み解くのは、 [1.全体の流れ]を掴み、[2. 変数]の役割を知り、プログラム内の[3. ブロック単位の処理]を整理するという流れで解いていくとわかりやすいです。また、両学部の問題とも、問題文に説明のない変数が1つずつありました。そして、その変数がプログラムの実行結果を格納し、表示することに使われました。同様の出題の仕方は次の入試でも十分にあり得ますので、プログラムを読み解く際の着眼点にしてください。

 

プログラミングの問題は、実際にプログラムを書くわけではありませんが、日頃からプログラムを書く習慣を付けておくことが最も効果的な勉強法と言えるでしょう。プログラミング言語は特に指定されているわけではありませんから何でもいいのですが、C言語やJavaでは初学者はコンパイルエラーなどに悩まされるでしょうから、使えるレベルになるまで時間が掛かります。そのため、JavaScriptやPython、Rubyなどの扱いやすいスクリプト言語を用いると良いかも知れません。問題はプログラミング言語自体の知識を問うものではなく、アルゴリズムを実装することが主眼となっていますから、そこに力点を置いた学習が良いでしょう。

 

また、ある程度の経験を積めば、コンピュータを使わなくてもプログラミングの学習ができるようになります。実際の試験でもコンピュータを使って試行錯誤しながら考えられるわけではありません。そのため、コンピュータを使わずに学習することも必要です。例えば「アルゴリズムとデータ構造」「アルゴリズムパズル」といったタイトルの書籍などから題材を選んで、イメージトレーニングすることも効果があるでしょう。

 

慶應義塾大学SFC 2016年情報入試を振り返って

<合格者座談会> 

2016年度初めて実施された情報入試の受験者・合格者(入学者)に、情報入試に向けて行った対策、問題の難しさなど受けた感想から、必須科目である小論文対策まで、入試を振り返ってもらいました。12月からでもできる対策も。

 

2016年度一般入学試験「情報」の各問題について〜入学者アンケート

大問ごとに出題内容や難しさ、さらには、受験対策などを記入してもらいました。

 

文系の高校2年生が慶應SFC情報入試に挑戦

神奈川県立柏陽高等学校 情報科教諭 間辺広樹先生

2016年に実施された慶応義塾大学SFCの環境情報学部の入試問題を、2年生32名に解いてもらいました。その結果から今後の入試対策を考察します。

 

◆慶應義塾大学入試問題

2016年度 総合政策学部

2016年度 環境情報学部

 ※情報入試研究会のサイトより

●解答例はこちら⇒慶應義塾大学SFC情報入試問題を振り返る

 ※情報処理学会・情報入試研究会協力

 

<関連記事>

慶應義塾大 新「情報」入試特集

情報処理学会(情報処理教育委員会)・情報入試研究会協力 対策動画

ミスiD2015近藤那央さんによる 「『情報』科目で慶應SFCを目指そう!」

〜2014年、2015年のオープンキャンパスで実施された参考試験の問題解説が、動画版や文章版でもあります