pulpul 日本の試験

基本情報技術者 過去問題

基本情報技術者 2016年 春期 午後 問題

基本情報技術者 2016年 春期 午後の問題文31問です。図・表・別冊資料と正解は掲載していませんので、出典の公表資料またはアプリでご確認ください。

共通の文章

次の問1は必須問題です。必ず解答してください。 問1 Webサーバに対する不正侵入とその対策に関する次の記述を読んで,設問に答えよ。 A社は,口コミによる飲食店情報を収集し,提供する会員制サービス業者である。会員制サービスを提供するシステム(以下,A社システムという)を図1に示す。 (1) FW,Webサーバ及びDBサーバがあり,スマートフォンなどの利用者端末とはインターネットを介して接続されている。 (2) WebサーバはDMZに置かれており,DBサーバはLANに置かれている。また,利用者端末からWebサーバへの接続には,セキュリティを考慮してTLSを用いている。 (3) 会員登録を行った利用者(以下,会員という)には,IDとパスワードが発行される。 (4) DBサーバには,会員情報(氏名,メールアドレス,訪れた飲食店情報,ログイン情報(IDとパスワード)など)と公開情報(飲食店情報,評価情報)が保管されている。 (5) 会員は,公開情報を閲覧することができる。また,Webサーバにログインすることで,DBサーバに保管してある自分の会員情報と自らが書き込んだ公開情報の更新,及び新しい公開情報の追加が行える。 (6) 非会員は,公開情報の閲覧だけができる。 (7) 会員がWebサーバにログインするには,IDとパスワードが必要であり,A社システムはDBサーバに保管してあるログイン情報を用いて認証する。 (8) Webサーバ及びDBサーバでは,それぞれでアクセスログ(以下,ログという)が記録されており,システム管理者が定期的に内容を確認している。また,システム管理者は,通常,LANからWebサーバやDBサーバにアクセスして,メンテナンスを行っている。 なお,外部からTelnetやSSHでWebサーバに接続して,インターネットを介したリモートメンテナンスが行えるようにしてあるが,現在はリモートメンテナンスの必要性はなくなっている。 ある日,システム管理者が,ログの確認において,通常とは異なるログが記録されているのを発見した。そのログを詳しく調査したところ,システム管理者以外の者が管理者IDと管理者パスワードを使ってWebサーバに不正侵入したことが明らかになった。 そこで,システム管理者は上司と相談し,会員制サービスを直ちに停止した。次に,今回の不正侵入に対する被害状況の特定と対策の検討を行った。不正侵入による被害状況と対策の一部を抜粋したものを表1に示す。 また,パスワードの変更に合わせて,パスワードの強度(パスワードの候補数)の検討を行った。これまでパスワードは,英小文字26文字だけを受け付け,長さは6文字だった。これに対し,他の3通りのパスワードの強度を比較した。その比較結果を表2に示す。 この強度の比較結果を踏まえ,次のようにA社システムを変更し,対策を実施した後に会員制サービスを再開することにした。 (1) パスワードの文字種としては,英大文字と英小文字,数字,記号を受け付ける。 (2) 長さが8文字以上16文字以下から成るパスワードを受け付ける。 (3) 辞書に登録されている文字列など推測されやすいパスワードは受け付けない。 図1 図1「A社システム」。左側に「利用者」枠があり,その中に「利用者端末」。利用者端末から「インターネット」を介してA社システムへ接続する。A社システム内にはFWと,破線枠のDMZ内にあるWebサーバがある。FWからLANへ接続され,LAN内にDBサーバがある。DBサーバ内には「会員情報」と「公開情報」の領域がある。会員情報の項目は氏名,メールアドレス,訪れた飲食店情報,ログイン情報(IDとパスワード),など。公開情報の項目は飲食店情報,評価情報。図中の注記は「FW:ファイアウォール」「DB:データベース」。 表1 表1「不正侵入による被害状況と対策(抜粋)」。列見出しは「被害状況」「対策」。行1:被害状況「Webサーバへの不正侵入があったことが確認された。秘密鍵への不正アクセスがあったかは確認できなかった。」対策欄は空欄a。行2:被害状況「FWを経由し,Webサーバに不正侵入され,さらにそこからDBサーバに不正侵入された。」対策欄には「リモートメンテナンス用ポートについて,」に続いて空欄b。行3:被害状況「一部の会員については会員情報が漏えいしたことが分かっているが,それ以外の会員については漏えいの有無を特定できていない。」対策欄には「パスワードを変更することにし,」に続いて空欄c。 表2 表2「パスワードの強度比較(抜粋)」。列見出しは「パスワードとして受け付ける文字種と長さ」「強度の比較」。行(a)「英小文字,6文字(不正侵入前の設定)」の比較欄は「—」。行(b)「英小文字,8文字」の比較欄は「(a)と比較して d 倍」。行(c)「英大文字・英小文字,8文字」の比較欄は「(b)と比較して e 倍」。行(d)「英大文字・英小文字・数字・記号,8文字」の比較欄は「(c)と比較して更に多い」。

問問1

設問 表1,2中の空欄に入れる適切な答えを,解答群の中から選べ。 aに関する解答群 ア TLSを使用していても不正侵入が行われたことから,TLSの使用を直ちに中止し,通常のHTTPで通信を行う。 イ 新たな秘密鍵と公開鍵を生成し,その鍵に対する公開鍵証明書の発行手続を行う。 ウ 公開鍵証明書の再発行手続を行い,同じ秘密鍵を使用する。 エ 秘密鍵へのアクセスが確認できていないことから,秘密鍵の変更や公開鍵証明書の再発行は行わず,念のため秘密鍵の保管場所を,ネットワーク経由でアクセスできないディレクトリに変更する。 bに関する解答群 ア TelnetやSSH以外にHTTPも利用できるようにするために,HTTPのポートを開放する。 イ インターネットからのアクセスをFWで禁止し,TelnetやSSHのポートは閉じる。 ウ システム管理者がどこからでもすぐにA社システムのメンテナンスができるように,TelnetやSSHのポートの開放は継続する。 エ パスワードやA社システムの実装情報の漏えいを防ぐために,Telnetのポートは閉じ,SSHに限定してポートを開放する。 cに関する解答群 ア 管理者パスワードは変更し,全会員にパスワードの変更を依頼する。 イ 管理者パスワードは変更し,漏えいした会員だけにパスワードの変更を依頼する。 ウ 管理者パスワードはそのままにし,全会員にパスワードの変更を依頼する。 エ 管理者パスワードはそのままにし,漏えいした会員だけにパスワードの変更を依頼する。 dに関する解答群 ア 2×8 イ 26 ウ 2×26 エ 7×8 オ 10×26 カ 26² eに関する解答群 ア 2 イ 2×8 ウ 26 エ 208 オ 2⁸ カ 26⁸

  • A-ア TLSを使用していても不正侵入が行われたことから,TLSの使用を直ちに中止し,通常のHTTPで通信を行う。
  • A-イ 新たな秘密鍵と公開鍵を生成し,その鍵に対する公開鍵証明書の発行手続を行う。
  • A-ウ 公開鍵証明書の再発行手続を行い,同じ秘密鍵を使用する。
  • A-エ 秘密鍵へのアクセスが確認できていないことから,秘密鍵の変更や公開鍵証明書の再発行は行わず,念のため秘密鍵の保管場所を,ネットワーク経由でアクセスできないディレクトリに変更する。
  • B-ア TelnetやSSH以外にHTTPも利用できるようにするために,HTTPのポートを開放する。
  • B-イ インターネットからのアクセスをFWで禁止し,TelnetやSSHのポートは閉じる。
  • B-ウ システム管理者がどこからでもすぐにA社システムのメンテナンスができるように,TelnetやSSHのポートの開放は継続する。
  • B-エ パスワードやA社システムの実装情報の漏えいを防ぐために,Telnetのポートは閉じ,SSHに限定してポートを開放する。
  • C-ア 管理者パスワードは変更し,全会員にパスワードの変更を依頼する。
  • C-イ 管理者パスワードは変更し,漏えいした会員だけにパスワードの変更を依頼する。
  • C-ウ 管理者パスワードはそのままにし,全会員にパスワードの変更を依頼する。
  • C-エ 管理者パスワードはそのままにし,漏えいした会員だけにパスワードの変更を依頼する。
  • D-ア 2×8
  • D-イ 26
  • D-ウ 2×26
  • D-エ 7×8
  • D-オ 10×26
  • D-カ 26²
  • E-ア 2
  • E-イ 2×8
  • E-ウ 26
  • E-エ 208
  • E-オ 2⁸
  • E-カ 26⁸

出典:平成28年度 春期 基本情報技術者試験 午後 問1

共通の文章

問2 リスト構造で管理されているセルとガーベジコレクタに関する次の記述を読んで,設問1,2に答えよ。 あるアプリケーションプログラム(以下,プログラムという)の実行環境では,プログラムからの要求によって,データ領域をセルとして提供する役割を担う供給源を実装している。プログラムは,使用中のセルをリストで管理している。 セルの構造 【セルの構造とその管理方法】セルは,ガーベジコレクタ(以下,GCという)が使用するマークビットという1ビットのフラグ,別のセルへのポインタ,及び固定長のデータ領域をもつ。マークビットの初期値は0。図では後の説明に合わせ,データ領域を省略している。 図1 図1「セルの構造」:セルは左からマークビット,ポインタ領域,データ領域の順に並ぶ。ポインタ領域は別のセルを指す。 図2 セルはメモリ領域の中に連続して格納される。別のセルを指していないポインタにはNULL(終端記号)が格納され,斜線で表す。図2「メモリ領域の中に連続して格納されているセルのイメージ」では,セルがメモリ領域内に連続して並び,各セルのマークビット欄に0が示されている。 供給源の機能 供給源の機能:①プログラムの実行開始時には,全てのセルは未使用セルとして供給源が管理している。未使用セルのマークビットは0で,ポインタにはNULLが格納されている。②プログラムから取得要求があると,管理している未使用セルを提供する。 セルの使用方法と図3の説明 【プログラムでのセルの使用方法】(1) プログラムは新たにセルが必要になると供給源に要求を出し,未使用セルを受け取り,LIVEから始まるリスト(以下,LIVEリストという)に登録して使用する。LIVEリストに登録され,プログラムが使用している状態のセルをLIVEセルという。(2) プログラムで不要になったセルはLIVEリストから切り離すだけで,供給源には返却しない。この状態のセルをガーベジという。ガーベジのままでは使用できない。図3(a)ではLIVEからのポインタXはセルAを指しているが,プログラムの処理が進み,図3(b)ではセルCを指すようになった。このとき,セルAとセルBはLIVEリストから切り離され,供給源の管理下の未使用セルでもなく,ガーベジになっている。図ではLIVEセルを実線,ガーベジを破線で表す。 図3 図3「LIVEリストとガーベジの例」:(a) LIVEのポインタXがセルAを指す。セルAのポインタはセルBを指し,セルAからセルCへのポインタもある。LIVEリストは別のセルを経由して続く。(b) LIVEのポインタXはセルCを指す。セルAとセルBは破線で示されたガーベジで,セルCは実線のLIVEセル。図中のセル間ポインタとLIVEリストのポインタが描かれている。 GCの起動条件 プログラムからのセル取得要求が繰り返されると,供給源が管理する未使用セルがなくなることがある。このときプログラムが新たなセルを要求しても受け取れず,実行が停止する。そこで,ガーベジを未使用セルにするGCが起動される。 マークアンドスイープ方式と図4・図5 設問1の共通説明:GCはLIVEからポインタをたどって全てのLIVEセルを特定できる。また,メモリ領域を先頭から走査して全てのセルを識別できる。未使用セルがない状態では,特定されたLIVEセル以外の全てのセルはガーベジである。マークアンドスイープ方式では,(1) LIVEから到達できる全てのLIVEセルのマークビットを1にする。これをマーキングという。図4はマーキング終了後の例で,LIVEセルのマークビットは1,ガーベジのマークビットは0である。図中の1はマーキングされたことを示す。(2) セルが格納されているメモリ領域中の全てのセルを重複がないように走査し,各セルのマークビットを調べる。マークビットが0なら,そのセルはガーベジなので供給源に未使用セルとして返却する。マークビットが1なら0にする。この処理をスイープという。図5はスイープ開始前のメモリ領域の状態の例で,マークビットが1のセルと0のセルが示され,0のセルは破線で示されている。GCが動作している間,プログラムの実行は一時中断される。中断時間はマーキング及びスイープの処理量に依存する。 図4・図5の図示内容 図4「マーキング終了後のセルの状態の例」:LIVEから到達できるセルのマークビットは1。ガーベジとして破線で描かれたセルのマークビットは0。図中にLIVEのポインタXとセルA,B,C,および各セルへのポインタが示される。図5「スイープ開始前のメモリ領域の状態の例」:セルがメモリ領域に連続して並び,マークビットとして1,0,1,0,1,1,1,1が順に示される。マークビット0のセルは破線で描かれている。 設問1の記号とグラフの軸 設問1で用いる記号:メモリ領域のセル数をM,GC開始時のLIVEセル数をLとする。横軸はL/M,縦軸は単位時間当たりに再び利用できるようになるセルの数(GCの効率)。グラフの横軸にはL/M=1の位置が示されている。

問問2 設問1

GCは,LIVEからのポインタをたどることによって,全てのLIVEセルを特定することができる。また,メモリ領域を先頭から走査することによって,全てのセルを識別することができる。未使用セルが無くなった状態では,特定されたLIVEセル以外のセルは全てガーベジである。GCの処理方式の一つとしてマークアンドスイープ方式がある。この方式によるGC処理に関する次の記述中の空欄a〜dに入る正しい答えを,解答群の中から選べ。セルの数をM,GC開始時のLIVEセルの数をLとしたとき,マーキングの処理量はaに比例する。また,スイープの処理量はbに比例する。このGCの1回の作動で再び利用できるようになるガーベジの数はcと表せる。Mに対するLの割合(L/M)を横軸に,単位時間当たりに再び利用できるようになるセルの数(GCの効率)を縦軸にとってグラフを描いたとき,GCの効率とL/Mの関係を示すグラフの形として,最も適切なものはdである。 a、b、cに関する解答群 ア L イ L−M ウ M エ M+L オ M−L dに関する解答群 ア L/M=0で効率0から始まり,傾きが徐々に小さくなる上昇曲線。L/M=1で効率は正。 イ L/Mが0から途中までは効率が正の一定値。その後は直線で下がり,L/M=1で0となる折れ線。 ウ L/M=0で効率が正の値から始まり,効率がなだらかに減少し,L/M=1で0となる曲線。 エ L/M=0で効率が正の値から始まり,途中で0となった後,上昇してL/M=1で正となる曲線。

  • A-ア L
  • A-イ L−M
  • A-ウ M
  • A-エ M+L
  • A-オ M−L
  • B-ア L
  • B-イ L−M
  • B-ウ M
  • B-エ M+L
  • B-オ M−L
  • C-ア L
  • C-イ L−M
  • C-ウ M
  • C-エ M+L
  • C-オ M−L
  • D-ア L/M=0で効率0から始まり,傾きが徐々に小さくなる上昇曲線。L/M=1で効率は正。
  • D-イ L/Mが0から途中までは効率が正の一定値。その後は直線で下がり,L/M=1で0となる折れ線。
  • D-ウ L/M=0で効率が正の値から始まり,効率がなだらかに減少し,L/M=1で0となる曲線。
  • D-エ L/M=0で効率が正の値から始まり,途中で0となった後,上昇してL/M=1で正となる曲線。

出典:平成28年度 春期 基本情報技術者試験 午後 問2 設問1

問問2 設問2

プログラムの実行開始後,初めてGCが作動した。マーキング終了後の状態において,マークビットが1であるセルについての記述として正しい答えを,解答群の中から選べ。

  • ア 供給源の管理下にある。
  • イ プログラムが使用中である。
  • ウ プログラムの処理が進む過程で,LIVEリストから切り離された。
  • エ マーキングに続いて行われるスイープで,供給源に返却されることがある。

出典:平成28年度 春期 基本情報技術者試験 午後 問2 設問2

共通の文章

問3 遊園地の入園者情報を管理する関係データベースに関する次の記述を読んで,設問1~4に答えよ。 遊園地Yでは,各アトラクションの入り口にICカードの読取り機を設置して,入園者の利用状況を収集するシステムを導入した。入園者は,全てのアトラクションを追加料金なしで利用できるパスポートか,アトラクション利用の都度,料金が課金される入園券のいずれかを購入し,対応するICカードを受け取る。ICカードは退園時に料金を精算してから返却する。ここで,入園者は退園まで遊園地を出ることはないものとする。 遊園地Yでは,システム導入前は入園者の情報を図1に示す表で構成されるデータベースで管理していた。下線付きの項目は主キーを表す。 図1 システム導入前の表の構成とデータの格納例 システム導入前の表構成とデータの格納例。入園者表の列は「入園者番号」(主キー)、「券種」、「入園日」、「入園時刻」。例は 00025987、02、20150115、084517。券種表の列は「券種」(主キー)、「券種名」、「料金」。例は 01、入園券、500 および 02、小学生パスポート、2000。 図2 システム導入後の表の構成とデータの格納例 システム導入後の表構成とデータの格納例。入園者表の列は「入園者番号」、「券種」、「入園日」、「入園時刻」、「退園時刻」。例は 00025987、02、20150115、084517、150851。券種表は「券種」、「券種名」、「料金」で、例は 01、入園券、500 および 02、小学生パスポート、2000。利用表の列は「入園者番号」、「利用時刻」、「アトラクション番号」。例は 00025987、091806、04;00025987、102611、05;00025992、102757、05。アトラクション表の列は「アトラクション番号」、「アトラクション名」、「料金」。例は 01、ジェットコースター、500。 図中の下線付き主キーは,入園者表の入園者番号,券種表の券種,利用表の入園者番号と利用時刻の組,アトラクション表のアトラクション番号である。 図3 会員情報を追加した表の構成とデータの格納例 会員情報を追加した表構成とデータの格納例。会員表の列は「会員番号」、「氏名」、「住所」、「生年月日」、「入会日」。例は 000108、情報太郎、東京都文京区○○○、19920901、20160114。入園者表の列は「入園者番号」、「会員番号」、「券種」、「入園日」、「入園時刻」、「退園時刻」。例は 00028707、000108、04、20160218、100555、182021。会員登録をしていない入園者の会員番号は NULL。 図中の下線付き主キーは,会員表の会員番号と,入園者表の入園者番号である。

問問3 設問1

システムの導入に当たり,データベースの表を図2に示すとおり再設計した。次の記述中の空欄に入れる適切な答えを,解答群の中から選べ。 入園者表に退園時刻の項目を追加することによって,a が分かるようになった。また,利用表を追加することによって,b が分かるようになった。各アトラクションには一意のアトラクション番号を割り振って,利用表から分離したアトラクション表を作成した。 a、bに関する解答群 ア アトラクションの待ち時間 イ 休園日 ウ 入園者数 エ 入園者のアトラクション利用状況 オ 入園者の滞在時間

  • A-ア アトラクションの待ち時間
  • A-イ 休園日
  • A-ウ 入園者数
  • A-エ 入園者のアトラクション利用状況
  • A-オ 入園者の滞在時間
  • B-ア アトラクションの待ち時間
  • B-イ 休園日
  • B-ウ 入園者数
  • B-エ 入園者のアトラクション利用状況
  • B-オ 入園者の滞在時間

出典:平成28年度 春期 基本情報技術者試験 午後 問3 設問1

問問3 設問2

アトラクションごとの延べ利用者数を表示する。次のSQL文の空欄に入れる正しい答えを,解答群の中から選べ。 SELECT 利用表.アトラクション番号, アトラクション表.アトラクション名, [c] FROM 利用表, アトラクション表 WHERE 利用表.アトラクション番号 = アトラクション表.アトラクション番号 GROUP BY 利用表.アトラクション番号, アトラクション表.アトラクション名

  • ア AVG(利用表.アトラクション番号)
  • イ COUNT(*)
  • ウ MAX(利用表.アトラクション番号)
  • エ SUM(利用表.アトラクション番号)

出典:平成28年度 春期 基本情報技術者試験 午後 問3 設問2

問問3 設問3

入園券でアトラクションを利用した入園者のうち,退園時の精算において2,000円以上を支払った入園者について,精算額が多い入園者から降順に,入園者番号と精算額を表示する。入園券の購入者は入園者表の券種に“01”が設定されている。次のSQL文の空欄に入れる正しい答えを,解答群の中から選べ。 SELECT 入園者表.入園者番号, SUM(アトラクション表.料金) AS 支払金額 FROM 入園者表, 利用表, アトラクション表 WHERE 入園者表.入園者番号 = 利用表.入園者番号 AND    利用表.アトラクション番号 = アトラクション表.アトラクション番号 AND    [d] ORDER BY 支払金額 DESC

  • ア 入園者表.券種 = '01' AND アトラクション表.料金 >= 2000 GROUP BY 利用表.アトラクション番号
  • イ 入園者表.券種 = '01' GROUP BY 入園者表.入園者番号 HAVING MAX(アトラクション表.料金) >= 2000
  • ウ 入園者表.券種 = '01' GROUP BY 入園者表.入園者番号 HAVING SUM(アトラクション表.料金) >= 2000
  • エ 入園者表.券種 = '01' GROUP BY 利用表.アトラクション番号 HAVING SUM(アトラクション表.料金) >= 2000

出典:平成28年度 春期 基本情報技術者試験 午後 問3 設問3

問問3 設問4

パスポートを購入する際に提示することで料金が割引になる会員証を発行することになった。そこで,図3に示すとおり,会員情報を格納する会員表を作成し,入園者表に会員番号を格納する項目を追加する。次のSQL文で抽出できるようになる会員についての正しい答えを,解答群の中から選べ。ここで,1回も入園していない会員はいないものとする。また,会員登録をしていない入園者の場合,入園者表の会員番号にはNULLを設定する。 SELECT 会員表.会員番号, 会員表.氏名 FROM 会員表, 入園者表 WHERE 会員表.会員番号 = 入園者表.会員番号 GROUP BY 会員表.会員番号, 会員表.氏名 HAVING MAX(入園者表.入園日) < '20160101'

  • ア 2015年以前に1回も入園していない会員
  • イ 2016年以降に1回以上,入園した会員
  • ウ 2016年以降に1回だけ,入園した会員
  • エ 2016年以降に1回も入園していない会員

出典:平成28年度 春期 基本情報技術者試験 午後 問3 設問4

共通の文章

問4 イーサネットを介した通信に関する次の記述を読んで,設問1,2に答えよ。 IPネットワークにおいて,あるホストが別のホストと通信する場合,通信相手のホストのIPアドレスを指定して通信する。下位層にイーサネットを用いるときには,通信相手のホストのMACアドレス,又は通信相手のホストに到達可能なルータのMACアドレスが必要になる。しかし,IPネットワークで通信を行うアプリケーションでは,通信相手のIPアドレスやホスト名を明示的に指定することはあっても,MACアドレスを明示的に指定することはない。したがって,IPアドレスを手掛かりとして必要なMACアドレスを得るために,IPネットワークではARP(アドレス解決プロトコル)というプロトコルが用いられる。 【MACアドレスに関する説明】 イーサネットとIPをOSI基本参照モデルに当てはめた場合,イーサネットは物理層とデータリンク層に該当し,IPはネットワーク層に該当する。つまり,IPネットワークでの通信で取り扱うIPデータグラムを,下位層のイーサネットで送信するためには,IPデータグラムを[a]したイーサネットフレームを送信する。このとき,イーサネットフレームの宛先を表すアドレスとして用いられるのがMACアドレスである。MACアドレスの長さは48ビットであり,表現可能なアドレスの個数は[b]個となる。 なお,ここではMACアドレスを表記する際,8ビットごとに2桁の16進数00~FFで表し,それぞれの間はコロンで区切る。例えば,00:53:00:12:C5:8Aのように表す。 【ARPの機能の説明】 IPアドレスを基にMACアドレスを得るARPの機能は,問合せとして“ARP要求”を送信し,それに対する回答として“ARP応答”を受け取ることで実現される。 例えば,セグメント10.1.1.0/24において,ホストA(IPアドレス10.1.1.10,MACアドレス00:53:00:DA:C7:0B)がホストB(IPアドレス10.1.1.20,MACアドレス00:53:00:EC:17:27)宛てにIPデータグラムを送信しようとしたとき,ホストBのMACアドレスはARPによって,次のようにして得られる。 (1) ホストAは,IPアドレス10.1.1.20に対するARP要求を送信する。このとき,ARP要求は[c]される。 (2) ARP要求を受け取ったホストBは,そのARP要求が自分のIPアドレスに対する問合せであることを確認すると,自分のIPアドレス10.1.1.20とMACアドレス00:53:00:EC:17:27を格納したARP応答を送信する。同じARP要求を受け取ったその他のホストは,それが自分のIPアドレスに対する問合せではないので,無視する。 (3) ホストAは,ホストBが送信したARP応答を受け取ることによって,IPアドレス10.1.1.20に対応するMACアドレスが00:53:00:EC:17:27であることが分かる。 ホストAは,ホストBのIPアドレスと得られたMACアドレスの対応付けをキャッシュする。キャッシュが破棄されるまで10.1.1.20宛てのIPデータグラムを送る際,イーサネットフレームの宛先MACアドレスとして00:53:00:EC:17:27を使用する。 図1 図1「ある企業の社内ネットワークの構成(一部)」:左側のセグメントは192.168.1.0/24で,ホストEとブリッジCが接続され,ブリッジCの反対側にあるセグメントにはホストDとルータGが接続されている。ルータGとルータHは上部の基幹ネットワークに接続されている。ルータHは右側のセグメントに接続され,そのセグメントにはホストFがあり,ネットワーク表記は172.16.1.0/24。

問問4 設問1

本文中の空欄a~cに入れる正しい答えを,解答群の中から選べ。 aに関する解答群 ア 宛先として格納 イ 送信元として格納 ウ データ部に格納 エ プリアンブルに格納 オ ヘッダ部に格納 bに関する解答群 ア 48 イ 254 ウ 256 エ 2³² オ 2⁴⁸ cに関する解答群 ア TCPセグメントとして送信 イ UDPデータグラムとして送信 ウ ブロードキャスト エ ホストBのMACアドレス宛てに送信 オ ユニキャスト

  • A-ア 宛先として格納
  • A-イ 送信元として格納
  • A-ウ データ部に格納
  • A-エ プリアンブルに格納
  • A-オ ヘッダ部に格納
  • B-ア 48
  • B-イ 254
  • B-ウ 256
  • B-エ 2³²
  • B-オ 2⁴⁸
  • C-ア TCPセグメントとして送信
  • C-イ UDPデータグラムとして送信
  • C-ウ ブロードキャスト
  • C-エ ホストBのMACアドレス宛てに送信
  • C-オ ユニキャスト

出典:平成28年度 春期 基本情報技術者試験 午後 問4 設問1

問問4 設問2

次の記述中の空欄に入れる正しい答えを,解答群の中から選べ。 図1は,ある企業の社内ネットワークの構成(一部)である。 このネットワークにおいて,ホストDが,幾つかの宛先にIPデータグラムを送信しようとするとき,ホストDはARPによって送信に必要なMACアドレスを得る。ここで,ホストDがIPデータグラムを送信しようとしたとき,宛先のMACアドレスはホストDにキャッシュされていないものとする。 ホストEに対してIPデータグラムを送信しようとするとき,ホストDは[d]のIPアドレスに対するARP要求を送信する。 ホストFに対してIPデータグラムを送信しようとするとき,ホストDは[e]のIPアドレスに対するARP要求を送信する。 d、eに関する解答群 ア ブリッジC イ ホストD ウ ホストE エ ホストF オ ルータG カ ルータH

  • D-ア ブリッジC
  • D-イ ホストD
  • D-ウ ホストE
  • D-エ ホストF
  • D-オ ルータG
  • D-カ ルータH
  • E-ア ブリッジC
  • E-イ ホストD
  • E-ウ ホストE
  • E-エ ホストF
  • E-オ ルータG
  • E-カ ルータH

出典:平成28年度 春期 基本情報技術者試験 午後 問4 設問2

共通の文章

問5 スマートフォンを用いた店舗検索システムに関する次の記述を読んで,設問1~3に答えよ。 E社は首都圏に約50店舗をもつ生鮮食料品の販売店である。来店客数の増加を目的として、指定した市区町村にある店舗情報をスマートフォンを用いて検索するシステムを構築することになった。このシステムは、スマートフォン上で動作するアプリケーションソフトウェア(以下、アプリという。)、Webサーバ及びファイルサーバから構成されている。 【システム機能の要件】 (1) 利用者はブラウザを起動し、本システムのURLを指定してWebページを表示する。Webページには、検索を行うための市区町村名の入力欄がある。 (2) 利用者が入力した市区町村名で店舗検索し、その市区町村にある店舗名と住所、電話番号、お気に入り数及び特売情報を抽出して、お気に入りボタンとともに表示する。利用者は表示された店舗を気に入ったならば、お気に入りボタンを押す。 (3) 検索対象となるE社の店舗データは、ファイルサーバ上の店舗データファイルに保管されている。店舗データファイルのレコード様式を図1に示す。 (4) 店舗ごとに、お気に入りボタンが押されるたびに1が加算されるお気に入り数の値を、お気に入りデータファイルに保持する。お気に入り数は、Webページで店舗のお気に入りボタンが押された回数である。お気に入りデータファイルのレコード様式を図2に示す。 【処理の流れ】本システムの処理は、次の処理Aから処理Cの順番で行われる。 処理A:店舗を検索するための市区町村名の入力欄と、検索実行ボタンが含まれるWeb画面を生成し、表示する。 処理B:利用者が入力した「市区町村名」をキーに、読み込んだ店舗データファイルとお気に入りデータファイルを検索する。検索で得られた店舗名、住所、電話番号、特売情報、お気に入り数、お気に入りボタン、再検索を行うための市区町村名の入力欄、及び検索実行ボタンを検索結果画面に表示する。市区町村に複数の店舗がある場合は列挙して表示する。検索実行ボタンが押された場合は、再び処理Bが行われる。 処理C:利用者が検索結果画面に表示されている各店舗のお気に入りボタンを押すと、お気に入りデータファイルの該当する店舗のお気に入り数の値に1を加える処理を行う。続いて、お気に入りデータファイルから新しいお気に入り数を読み込んで、検索結果画面を再表示する。新たに店舗のお気に入りボタンが押された場合は、処理Cを継続する。 【実装方法の設計】システム機能の要件を満たし、処理の流れを実装する方式として、Web方式とWebアプリ方式の二つを比較検討する。それぞれの特徴を表1に、それぞれの方式のシーケンス図を図3、図4に示す。図において、上段が空欄の矢印はメッセージを省略している。 図3の説明:処理Bではファイルサーバは[a]から得た情報を,処理Cではファイルサーバは[b]から得た情報をWebサーバに返却する。 図4の説明:処理Aではファイルサーバは[a]から得た情報を,処理Cではファイルサーバは[b]から得た情報をブラウザに返却する。 新規要件:スマートフォンなどのモバイル端末で用いる無線通信は、有線通信のネットワークに比べて通信不能(以下、圏外という。)になる頻度が高い。そのため、スマートフォンなどのモバイル端末で動作するアプリは、圏外になっても検索の操作が継続できるように設計する。 Web方式の場合,表示する画面は[c]ので,処理Bの実行中に[d]と[e]の間の無線通信が圏外になると,次画面を読み込めなくなる。 一方,Webアプリ方式の場合は,通信を行わなくても,ブラウザが読み込んだWebアプリで処理を行うことができる。処理Bの実行中に[d]と[e]の間の無線通信が圏外になって切断されても,検索の操作を続けることが可能となる。 したがって,Webアプリ方式で実装することにした。 図1 図1「店舗データファイルのレコード様式」:一つのレコードは、左から「店舗番号」「店舗名」「市区町村名」「住所」「電話番号」「特売情報」の6項目。 図2 図2「お気に入りデータファイルのレコード様式」:一つのレコードは、左から「店舗番号」「お気に入り数」の2項目。 表1 表1「Web方式とWebアプリ方式の特徴」。列は「比較項目」「Web方式」「Webアプリ方式」。 ・スマートフォン上で起動されるアプリ:Web方式=ブラウザ。Webアプリ方式=ブラウザと、ブラウザが読み込んだWebアプリ。 ・処理Bを行う主な場所:Web方式=Webサーバ。Webアプリ方式=スマートフォン。 ・画面の生成:Web方式=ブラウザ上の画面を切り替えるたびに、Webサーバが生成した画面の情報をブラウザが読み込み、表示する。Webアプリ方式=ブラウザが読み込んだWebアプリが、まず全ての店舗データファイルの内容をダウンロードする。その店舗データを基にしてWebアプリが画面の情報を生成し、ブラウザが表示する。このとき、画面を切り替えるたびに必ずしもWebサーバにアクセスしなくともよい。 図3 図3「Web方式のシーケンス図」:登場主体は左から「利用者」「ブラウザ」「Webサーバ」「ファイルサーバ」、縦方向は上から処理A、処理B、処理C。 ・処理A:利用者がブラウザにURLを指定する。ブラウザからWebサーバへ要求し、応答がブラウザに戻る。応答後、ブラウザから利用者へ表示される。 ・処理B:利用者が市区町村名を入力し、検索実行ボタンを押す。ブラウザからWebサーバへ要求し、Webサーバからファイルサーバへ要求する。ファイルサーバからの応答後、Webサーバ内で画面を生成し、応答をブラウザ経由で利用者に返す。 ・処理C:利用者がお気に入りボタンを押す。ブラウザからWebサーバへ要求し、Webサーバからファイルサーバへ「お気に入り数に1加えることを要求」を送る。ファイルサーバからの応答後、Webサーバ内で画面を生成し、応答をブラウザ経由で利用者に返す。 図4 図4「Webアプリ方式のシーケンス図」:登場主体は左から「利用者」「ブラウザ」「Webサーバ」「ファイルサーバ」、縦方向は上から処理A、処理B、処理C。 ・処理A:利用者がブラウザにURLを指定する。ブラウザからWebサーバへ要求し、応答がブラウザに戻る。さらにブラウザからファイルサーバへ要求し、応答がブラウザに戻る。 ・処理B:利用者が市区町村名を入力し、検索実行ボタンを押す。ブラウザ内で画面を生成し、表示を利用者に返す。 ・処理C:利用者がお気に入りボタンを押す。ブラウザからファイルサーバへ「お気に入り数に1加えることを要求」を送り、ファイルサーバから応答を受ける。ブラウザ内で画面を生成し、表示を利用者に返す。

問問5 設問1

本文中の空欄に入れる正しい答えを、解答群の中から選べ。 IPA公式解答では,空欄dとeの答えは順不同です。 a、bに関する解答群 ア お気に入りデータファイル イ 店舗データファイル ウ 店舗データファイルとお気に入りデータファイル cに関する解答群 ア ブラウザがWebサーバに都度要求し、Webサーバが生成する必要がある イ ブラウザがファイルサーバに都度要求し、ファイルサーバから取得する必要がある ウ ブラウザが生成するが、生成中に圏外を検知すると停止する エ ブラウザが生成し、都度表示させる必要がある d、eに関する解答群 ア Webサーバ イ ファイルサーバ ウ ブラウザ エ 利用者

  • A-ア お気に入りデータファイル
  • A-イ 店舗データファイル
  • A-ウ 店舗データファイルとお気に入りデータファイル
  • B-ア お気に入りデータファイル
  • B-イ 店舗データファイル
  • B-ウ 店舗データファイルとお気に入りデータファイル
  • C-ア ブラウザがWebサーバに都度要求し、Webサーバが生成する必要がある
  • C-イ ブラウザがファイルサーバに都度要求し、ファイルサーバから取得する必要がある
  • C-ウ ブラウザが生成するが、生成中に圏外を検知すると停止する
  • C-エ ブラウザが生成し、都度表示させる必要がある
  • D-ア Webサーバ
  • D-イ ファイルサーバ
  • D-ウ ブラウザ
  • D-エ 利用者
  • E-ア Webサーバ
  • E-イ ファイルサーバ
  • E-ウ ブラウザ
  • E-エ 利用者

出典:平成28年度 春期 基本情報技術者試験 午後 問5 設問1

問問5 設問2

処理Bでお気に入り数を抽出するための必須項目として正しい答えを、解答群の中から選べ。

  • ア 店舗番号
  • イ 店舗名
  • ウ 市区町村名
  • エ 店舗番号、店舗名
  • オ 店舗番号、市区町村名
  • カ 店舗名、市区町村名

出典:平成28年度 春期 基本情報技術者試験 午後 問5 設問2

問問5 設問3

Web方式とWebアプリ方式ともに、ファイルサーバから情報を取得する。ファイルサーバから見て情報の要求元として正しい答えを、解答群の中から選べ。

  • ア Web方式の場合:Webサーバ。Webアプリ方式の場合:Webサーバ
  • イ Web方式の場合:Webサーバ。Webアプリ方式の場合:ブラウザ
  • ウ Web方式の場合:ブラウザ。Webアプリ方式の場合:Webサーバ
  • エ Web方式の場合:ブラウザ。Webアプリ方式の場合:ブラウザ

出典:平成28年度 春期 基本情報技術者試験 午後 問5 設問3

共通の文章

問6 ソフトウェアパッケージ導入時の調達先選定に関する次の記述を読んで,設問1,2に答えよ。 C社では,会計システムの再構築を考えており,プロジェクト計画の策定中である。本プロジェクトの目的は,業務の効率向上と,標準化による運用保守コストの削減である。目的実現のための方式案として,ソフトウェアパッケージ(以下,パッケージという)の活用を検討している。ここで,業務プロセス及び運用フローについては,パッケージの機能だけで実現する計画である。 【比較検討の進め方】 パッケージの比較検討は,次の手順で進める。 手順1:C社の業務要件に近いと思われるパッケージを調査した結果,有力と判断した3種類のパッケージ製品について,要件定義から本番稼働までの概算見積を含む提案を,それぞれのパッケージベンダ(L社,M社,N社)に依頼する。各社提案について,評価項目に基づいた評価を実施する。 手順2:提案されたパッケージを導入した場合のリスク分析を行い,対策を検討した上で,リスクに対する評価を実施し,総合的に判断する。 比較検討の進め方 比較評価の手順:手順1では,C社の業務要件に近いと考えられる3種類のパッケージについて,L社,M社,N社に要件定義から本番稼働までの概算見積を含む提案を依頼し,評価項目に基づき評価する。手順2では,提案されたパッケージ導入時のリスク分析と対策検討を行い,リスクを評価して総合的に判断する。 表1 各社提案の評価 表1「各社提案の評価」。評価項目は,パッケージ機能の適合度(要求機能数50に対する適合数)・拡張性の有無,ベンダの業界知識,ベンダのプロジェクト経験数,概算見積金額(万円)。評価基準は,適合数が80%以上:4点,60%以上80%未満:2点,60%未満:0点;拡張性あり:2点,なし:0点;業界知識は高:4点,中:2点,低:0点;プロジェクト経験は多:4点,中:2点,少:0点;C社予算上限5,000万円に対する見積額は80%以下:4点,80%超100%以下:2点,100%超:0点。各評価項目の重みは順に20,10,30,20,30。各社の評点は評価項目ごとの評価基準点に重みを乗じた値。表の提案内容/評点:L社は適合数42,有,業界知識高,経験多,見積4,700万円/評点80,20,120,80,60,総合評価360。M社は適合数44,有,業界知識低,経験多,見積3,800万円/評点80,20,0,80,a。N社は適合数32,有,業界知識高,経験中,見積4,500万円/評点欄は適合度部分は網掛けで非表示,拡張性20,業界知識120,経験40,見積60。M社とN社の総合評価欄は網掛けで表示されていない。注記:網掛けの部分は表示していない。 表2 リスク評価マトリックスとリスク対策費用の規則 C社のプロジェクト管理規程では,表2のリスク評価マトリックスを用い,発生確率と影響度の積の値で対策の優先度を決定する。値が6以上のリスク項目は,リスク発生時の対策が必要と判断する。プロジェクト計画時に,対策が必要なリスク項目ごとに,概算見積費用の10%をリスク発生時の対策費用として盛り込む。表2の行は発生確率(高い3,普通2,低い1),列は影響度(小1,中2,大3)。積の値は,高い場合3,6,9;普通の場合2,4,6;低い場合1,2,3。凡例は,9が斜線網掛け「非常に高い優先度」,6が点網掛け「高い優先度」,その他が白地「低い優先度」。 表3 PMによるリスク評価の結果 表3「PMによるリスク評価の結果」。リスク1:要求機能に対するパッケージの適合度が低いので,業務プロセス,運用フローの変更項目が多く,業務設計が遅延する。L社は発生確率低い・影響度大,M社は低い・大,N社は普通・大で,N社のリスク対策内容欄にcがある。リスク2:C社の会計業務に対する理解が進まず,適用可能な業務プロセス,運用フローの合意が取れず,業務設計が遅延する。L社は低い・中,M社は高い・中,N社は低い・中。リスク3:プロジェクト経験数が想定よりも少なく,プロジェクト遂行能力が十分でないので,重大な課題の解決が進まない。L社は低い・大,M社は低い・大,N社は普通・大。表中の網掛け部分は表示されていない。 リスク評価後の選定方法 リスク評価の結果から,例えば項番1のリスクに対するN社パッケージへの対応として,プロジェクト立上げ時点に予防措置を講じていたとしても,dを契機にリスク対策を発動しなければならなくなったときのために,e万円のリスク対策費用を盛り込む必要がある。必要となるリスク対策費用を各社の概算見積金額に加えて評価をやり直した結果,総合評価の大小関係に変わりがない。表1の総合評価の値が最も大きいパッケージを採択して,会計システムを再構築するプロジェクト計画の策定を進める。

問問6 設問1

本プロジェクトのプロジェクトマネージャ(PM)は,手順1に従い,L社,M社,N社からの提案内容を評価した。その結果を表1に示す。評価項目における各社の評点は,評価項目ごとの評価基準に重みを乗じて算出し,評点の合計を総合評価とする。PMが行った作業に関する記述中及び表中の空欄a,bに入れる正しい答えを,解答群の中から選べ。 表1で総合評価の値が最も高いのは[b]社であった。 aに関する解答群 ア 0 イ 60 ウ 120 bに関する解答群 ア L イ M ウ N

  • A-ア 0
  • A-イ 60
  • A-ウ 120
  • B-ア L
  • B-イ M
  • B-ウ N

出典:平成28年度 春期 基本情報技術者試験 午後 問6 設問1

問問6 設問2

手順2でPMが行ったリスク評価,及びパッケージ選択に関する記述中及び表中の空欄c,d,eに入れる最も適切な答えを,解答群の中から選べ。 cに関する解答群 ア C社内のシステムに関するプロジェクトの管理経験を有する,N社以外のベンダ要員を増員する。 イ C社の会計業務に関する業務マニュアルを整備し,N社の要員に研修を実施する。 ウ パッケージの機能をC社の業務向けにカスタマイズするために,N社の要員を増員する。 エ パッケージを適用する際のC社の業務プロセス,運用フローの見直しについて,C社内の有識者社員から成る検討要員を増員する。 dに関する解答群 ア 解決されずに残っている課題の増加 イ 業務プロセス,運用フローの改訂作業量の増加 ウ 業務プロセス,運用フローのレビューでの指摘の増加 エ 作り込み機能の増加 eに関する解答群 ア 380 イ 450 ウ 470 エ 900

  • C-ア C社内のシステムに関するプロジェクトの管理経験を有する,N社以外のベンダ要員を増員する。
  • C-イ C社の会計業務に関する業務マニュアルを整備し,N社の要員に研修を実施する。
  • C-ウ パッケージの機能をC社の業務向けにカスタマイズするために,N社の要員を増員する。
  • C-エ パッケージを適用する際のC社の業務プロセス,運用フローの見直しについて,C社内の有識者社員から成る検討要員を増員する。
  • D-ア 解決されずに残っている課題の増加
  • D-イ 業務プロセス,運用フローの改訂作業量の増加
  • D-ウ 業務プロセス,運用フローのレビューでの指摘の増加
  • D-エ 作り込み機能の増加
  • E-ア 380
  • E-イ 450
  • E-ウ 470
  • E-エ 900

出典:平成28年度 春期 基本情報技術者試験 午後 問6 設問2

共通の文章

問7 販売データの分析に関する記述を読んで,設問1,2に答える。B社は,洋菓子を店舗販売する小売店である。B社は,来期の事業方針として,顧客が自社の商品を繰り返し購入する回数を増やすことによって,売上を増加させることを考えた。そのために,効果的な販売促進活動につなげることを目的として,既に導入しているID-POSを利用して,顧客一人一人の購買履歴を分析した。ID-POSは,各顧客に顧客IDを設定し,顧客IDとその顧客の商品購買履歴を管理するシステムであり,誰が,いつ,何を,幾つ購入したのかが分かる仕組みである。 リピート率の定義・算出式 リピート率の算出式:リピート率=(延べ購入回数-購入人数)÷延べ購入回数×100。リピート率は,延べ購入回数に対して,2回目以降の延べ購入回数(=延べ購入回数-購入人数)の割合を示す指標。図1の例では,延べ購入回数は16回,2回目以降の延べ購入回数は10回であり,リピート率は62.5%。 図1 図1「購入人数と延べ購入回数の説明」。縦軸は購入回数(1回目~5回目),横方向は顧客。5回購入した顧客が2人,3回購入した顧客が1人,1回だけ購入した顧客が3人を丸印で示す。購入人数は6人,延べ購入回数は16回。 図2 図2「2回目以降の延べ購入回数の説明」。図1と同じ購入回数別の顧客の丸印を示し,2回目以降の延べ購入回数に当たる部分を網掛けで示す。その回数は10回。購入人数は6人,延べ購入回数は16回。 表1 各商品の購入人数,延べ購入回数,売上金額 本文記載:B社の商品S~Xは日常的に販売されている。顧客は1回の購入で平均して同一商品を2個購入している。購入回数の大きな偏り(限られた一部の顧客だけが購入を繰り返す状態)はなかった。表の列は商品,購入人数(人),延べ購入回数(回),売上金額(千円)。S:4,782人,5,217回,2,400千円。T:1,321人,1,729回,951千円。U:1,312人,3,465回,2,079千円。V:4,732人,24,121回,4,824千円。W:3,100人,4,013回,1,605千円。X:1,689人,2,712回,1,356千円。 図3 購買履歴の分析結果 図3「購買履歴の分析結果」:バブルチャート。横軸は購入人数(人)で0から6,000、縦軸はリピート率(%)で0から100。バブルの大きさは売上金額を表す。図上の位置はおおよそ、購入人数1,300人・リピート率62%付近に「b」と記されたバブル、購入人数4,800人・リピート率8%付近に「a」と記されたバブル、購入人数1,300人・リピート率24%付近、購入人数1,700人・リピート率38%付近、購入人数3,100人・リピート率23%付近、購入人数4,800人・リピート率80%付近に各1個のバブル。 設問2の条件 商品Uの価格は300円。1回の購入で商品Uを平均2個購入するものとする。効果見積りは過去1年間の実績値に対する値。効果額は売上金額の増加額から広告費用を引いた額。投資効果は広告費用に対する効果額の割合で,その割合が1より大きければ投資効果があると評価する。 表2 費用と効果の見積り 表2「費用と効果の見積り」 費用:広告費用 300千円。 効果:購入人数の増加 600人、延べ購入回数の増加 1,240回(公式正誤表による訂正。印刷された表2では1,240人)。

問問7 設問1

顧客の購買履歴の分析に関する次の記述中及び図中の空欄に入れる適切な答えを,解答群の中から選べ。B社は,ID-POSの購買履歴を活用し,ある商品カテゴリーを対象に,商品を購入した顧客と,その顧客が同じ商品を再び購入する傾向にあるかどうかの分析を行った。分析の方法として,購入人数と延べ購入回数からリピート率を算出した。購入人数は,対象期間中に同一顧客が複数回購入したときも1人としてカウントした場合の人数であり,延べ購入回数は,顧客が購入した延べの回数である。今回分析した商品の中で,商品Vは,購入人数が多くリピート率も高いことから,商品Vを繰り返し購入してくれる顧客が多いと考えられる。商品aは,購入人数は多いが,リピート率が低いので,商品そのものに魅力がないと考えられ,売上を増加させるためには,c必要がある。商品bは,購入人数は少ないが,リピート率が高いので,限られた顧客に人気が高い商品と考えられる。したがって,試食会を開催するなどして,dことによってe,売上の増加が見込まれる。 a、bに関する解答群 ア S イ T ウ U エ W オ X c、dに関する解答群 ア 商品が欠品しないようにする イ 商品の素材や味を見直す ウ 商品の認知度を高める エ より価格が高い商品を勧める eに関する解答群 ア 価格を上げれば イ 購入人数が増えれば ウ 来店客数が増えれば エ リピート率が上がれば

  • A-ア S
  • A-イ T
  • A-ウ U
  • A-エ W
  • A-オ X
  • B-ア S
  • B-イ T
  • B-ウ U
  • B-エ W
  • B-オ X
  • C-ア 商品が欠品しないようにする
  • C-イ 商品の素材や味を見直す
  • C-ウ 商品の認知度を高める
  • C-エ より価格が高い商品を勧める
  • D-ア 商品が欠品しないようにする
  • D-イ 商品の素材や味を見直す
  • D-ウ 商品の認知度を高める
  • D-エ より価格が高い商品を勧める
  • E-ア 価格を上げれば
  • E-イ 購入人数が増えれば
  • E-ウ 来店客数が増えれば
  • E-エ リピート率が上がれば

出典:平成28年度 春期 基本情報技術者試験 午後 問7 設問1

問問7 設問2

売上拡大の施策に関する次の記述中の空欄に入れる適切な答えを,解答群の中から選べ。B社では,広告を行って新規顧客を開拓し,その新規顧客にも繰り返し購入してもらうことで売上の増加を図る計画を立て,商品Uについて効果を見積もってみた。費用と効果の見積りを表2に示す。この施策によって,商品Uのfとなる。したがって,この施策は,商品Uに関してはgすると考えられる。 fに関する解答群 ア 売上金額は1,147千円となり,効果額は444千円 イ 売上金額は1,412千円となり,効果額は-968千円 ウ 売上金額は2,439千円となり,効果額は60千円 エ 売上金額は2,823千円となり,効果額は444千円 gに関する解答群 ア 投資効果はあるが,リピート率は低下 イ 投資効果はないが,リピート率は向上 ウ 投資効果はあり,リピート率も向上 エ 投資効果はなく,リピート率も低下

  • F-ア 売上金額は1,147千円となり,効果額は444千円
  • F-イ 売上金額は1,412千円となり,効果額は-968千円
  • F-ウ 売上金額は2,439千円となり,効果額は60千円
  • F-エ 売上金額は2,823千円となり,効果額は444千円
  • G-ア 投資効果はあるが,リピート率は低下
  • G-イ 投資効果はないが,リピート率は向上
  • G-ウ 投資効果はあり,リピート率も向上
  • G-エ 投資効果はなく,リピート率も低下

出典:平成28年度 春期 基本情報技術者試験 午後 問7 設問2

共通の文章

携帯端末上で稼働する簡易メモ帳の機能のうち、メモの編集処理(メモの追加・削除・変更・移動)を行う部分のプログラムである。図1は、簡易メモ帳に4件のメモ「Aoki」「Imai」「Uno」「Endo」を登録した場合の表示例である。 図1 図1「簡易メモ帳の表示例」:画面に「Aoki」「Imai」「Uno」「Endo」の順にメモを表示し、各行の左に三角形の印がある。画面下部に「追加」「削除」「変更」「移動」のボタンがある。 プログラムの説明(1) メモは画面に表示可能な1バイトで表現できる文字から成る文字列である。各メモは、文字列の前に文字列の長さ(0~255)を1バイトの符号なし2進整数で付け加えて格納する。例として「Hello!」は、長さ6に続いて H、e、l、l、o、! の順に格納する。文字列の長さは10進数で表記し、その値に下線を付けて表す。 プログラムの説明(2) メモの格納と管理には、配列 Memo[]、Data[] と、変数 MemoCnt、MemoMax、DataLen、DataMax を使用する。各メモは Data[] の先頭から順に、1要素に1バイトずつ、文字列の長さ情報に続けて格納し、格納位置の情報を Memo[] に設定して管理する。MemoMax は格納できるメモの最大件数(Memo[] の要素数)、MemoCnt は現在格納されているメモの件数。DataMax は格納できる最大文字数(Data[] の要素数)、DataLen は現在格納されている文字数(文字列の長さ情報を含む)。 プログラムの説明(3) 簡易メモ帳の画面には、Memo[] の要素番号の昇順に、それが指すメモを取り出して表示する。 プログラムの説明(4) 各関数が呼ばれるとき、引数の内容や配列の空き状態などは事前に検査済みで、正しく実行できるものとする。以降の実行例では MemoMax=5、DataMax=25。網掛け部分は配列要素が空きであることを表し、斜線部分は参照されなくなったメモであることを表す。 図2 図2「関数 resetMemo 実行後の配列・変数の状態」:Memo[] の添字0~4はすべて空き。MemoMax=5、MemoCnt=0。Data[] の添字0~24はすべて空き。DataMax=25、DataLen=0。resetMemo() は MemoCnt と DataLen に0を設定する。 図3 図3「関数 addMemo(4件)実行後の配列・変数の状態」:addMemo(4, "Aoki")、addMemo(4, "Imai")、addMemo(3, "Uno")、addMemo(4, "Endo") の順に実行。Memo[0..4]=[0,5,10,14,空き]、MemoCnt=4、MemoMax=5。Data[0..18] は順に 4, A, o, k, i, 4, I, m, a, i, 3, U, n, o, 4, E, n, d, o。DataLen=19、DataMax=25。Memo[] の各値は対応するメモの Data[] 内の格納位置を指す。 図4 図4「関数 deleteMemo 実行後の配列・変数の状態」:図3の状態から deleteMemo(0) を実行。Memo[0..4]=[5,10,14,空き,空き]、MemoCnt=3、MemoMax=5、DataLen=19、DataMax=25。Data[] の添字0~4にある削除された「Aoki」の領域は参照されずに残り、Memo[0..2] はそれぞれ添字5、10、14のメモを指す。 図5 図5「関数 changeMemo 実行後の配列・変数の状態」:図4の状態から changeMemo(2, 3, "Abe") を実行。Memo[0..4]=[5,10,19,空き,空き]、MemoCnt=3、MemoMax=5、DataLen=23、DataMax=25。Data[] では既存の未参照領域をそのまま残し、新しいメモ「Abe」(長さ情報3に続きA、b、e)を添字19~22に格納する。Memo[2] は添字19を指す。 図6 図6「関数 moveMemo 実行後の配列・変数の状態」:図5の状態から moveMemo(2, 0) を実行。Memo[0..4]=[19,5,10,空き,空き]、MemoCnt=3、MemoMax=5、DataLen=23、DataMax=25。Data[] の内容と格納位置は図5のまま。 プログラム(1) プログラムの大域変数は整数型 MemoCnt、MemoMax、Memo[MemoMax]、整数型 DataLen、DataMax、8ビット論理型 Data[DataMax]。resetMemo() は MemoCnt←0、DataLen←0。addMemo(textLen,text) は整数型 i を用い、Memo[MemoCnt]←a、MemoCnt←MemoCnt+1、Data[DataLen]←textLen、DataLen←DataLen+1、iを0からtextLen未満まで1ずつ増やしながら Data[DataLen+i]←text[i]、最後に DataLen←b とする。deleteMemo(pos) は i←c とし、i<MemoCnt の間 Memo[i−1]←Memo[i]、i←i+1 を繰り返し、MemoCnt←MemoCnt−1 とする。 プログラム(2) changeMemo(pos,textLen,text) は整数型 i を用い、Memo[pos]←DataLen、Data[DataLen]←textLen、DataLen←DataLen+1 とし、iを0からtextLen未満まで1ずつ増やしながら Data[DataLen+i]←text[i]、最後に DataLen←b とする。moveMemo(fromPos,toPos) は整数型 i,m を用い、m←Memo[fromPos] とする。fromPos<toPos の場合、iをfromPosからtoPos−1まで1ずつ増やし Memo[i]←Memo[i+1] とする。fromPos>toPos の場合は、iの開始値・条件・増分が空欄dであるループ内で Memo[i]←Memo[i−1] とし、最後に Memo[toPos]←m とする。 配列とメモ格納の条件 図1~図6の例示では MemoMax=5、DataMax=25。メモの格納は Data[] に長さ情報と文字列を連続して記録し、Memo[] にその先頭位置を保持する。削除・変更で参照されなくなった Data[] の領域は残る。

問問8 設問1

プログラム中の空欄 a~d に入れる正しい答えを、解答群の中から選べ。 a、bに関する解答群 ア DataLen イ DataLen + 1 ウ DataLen + textLen エ DataLen + textLen + 1 オ textLen カ textLen + 1 cに関する解答群 ア MemoCnt − pos イ pos − 1 ウ pos エ pos + 1 dに関する解答群 ア fromPos, i ≧ toPos − 1, −1 イ fromPos, i ≧ toPos + 1, −1 ウ toPos, i ≦ fromPos − 1, 1 エ toPos, i ≦ fromPos + 1, 1

  • A-ア DataLen
  • A-イ DataLen + 1
  • A-ウ DataLen + textLen
  • A-エ DataLen + textLen + 1
  • A-オ textLen
  • A-カ textLen + 1
  • B-ア DataLen
  • B-イ DataLen + 1
  • B-ウ DataLen + textLen
  • B-エ DataLen + textLen + 1
  • B-オ textLen
  • B-カ textLen + 1
  • C-ア MemoCnt − pos
  • C-イ pos − 1
  • C-ウ pos
  • C-エ pos + 1
  • D-ア fromPos, i ≧ toPos − 1, −1
  • D-イ fromPos, i ≧ toPos + 1, −1
  • D-ウ toPos, i ≦ fromPos − 1, 1
  • D-エ toPos, i ≦ fromPos + 1, 1

出典:平成28年度 春期 基本情報技術者試験 午後 問8 設問1

問問8 設問2

次の記述中の空欄に入れる正しい答えを、解答群の中から選べ。このメモの管理方法では、削除されたメモや変更前のメモは Data[] 中に参照されない状態で残っている。その結果、DataLen の値は一方的に増加し、やがて Data[] 中の空き要素が枯渇する。次に示す関数 clearGarbage() は、Data[] 中の参照されなくなったメモを取り除き、空き要素を増やすための関数である。プログラムの配列・変数が図6に示す状態のときに clearGarbage() を実行すると、実行が終了した時点で Memo[1] の値は e、Memo[2] の値は f、DataLen の値は g となる。clearGarbage() は DataLen←0 とし、MemoCnt=0 なら return する。mを0からMemoCnt未満まで1ずつ増やし、d←Memo[m]、Memo[m]←DataLen とし、iを0からData[d]以下まで1ずつ増やし、temp[DataLen]←Data[d+i]、DataLen←DataLen+1 を繰り返す。その後 d を0からDataLen未満まで1ずつ増やし、Data[d]←temp[d] とする。 e、f、gに関する解答群 ア 0 イ 3 ウ 4 エ 5 オ 7 カ 9 キ 10 ク 12 ケ 13 コ 23

  • E-ア 0
  • E-イ 3
  • E-ウ 4
  • E-エ 5
  • E-オ 7
  • E-カ 9
  • E-キ 10
  • E-ク 12
  • E-ケ 13
  • E-コ 23
  • F-ア 0
  • F-イ 3
  • F-ウ 4
  • F-エ 5
  • F-オ 7
  • F-カ 9
  • F-キ 10
  • F-ク 12
  • F-ケ 13
  • F-コ 23
  • G-ア 0
  • G-イ 3
  • G-ウ 4
  • G-エ 5
  • G-オ 7
  • G-カ 9
  • G-キ 10
  • G-ク 12
  • G-ケ 13
  • G-コ 23

出典:平成28年度 春期 基本情報技術者試験 午後 問8 設問2

共通の文章

問9 次のCプログラムの説明及びプログラムを読んで,設問1~3に答えよ。 図形の一部を拡大すると,再び同じパターンの図形が現れる自己相似性をもつ図形を,フラクタル図形と呼ぶ。関数print_fracは,文字「*」及び空白文字を二次元の格子状に並べてフラクタル図形を描画するプログラムである。 深さが0の図形は,1行1列の文字「*」から成る。深さが1以上の図形は,深さが0の図形に対して,生成規則を深さの回数だけ繰返し適用して得られる。深さdの図形は,深さがd−1の図形を構成する一つ一つの文字を,文字「*」であるか空白文字であるかに応じて,生成規則のとおりに文字の行列で置換したものである。生成パターンは二次元の配列変数patによって与える。patの各要素の値は,空白文字を表す0,又は文字「*」を表す1である。patの行数,列数及び内容を変更することで,異なるフラクタル図形を描画できる。 関数print_fracの仕様:深さがdのフラクタル図形を描画する。引数dはフラクタル図形の深さ。 関数print_fracで使用している関数exists_atの仕様:深さがdのフラクタル図形のi行j列目が空白文字であるか文字「*」であるかを判定する。iは行数(一番上の行を0行目とする),jは列数(一番左の列を0列目とする),dはフラクタル図形の深さ。返却値は判定結果(0:空白文字,1:文字「*」)。 関数の引数に誤りはないものとする。 図1 図1「関数print_fracが描画するフラクタル図形の例」。深さ0は1行1列の「*」。深さ1の2×2格子は上段が「* *」,下段が「* 空白」。深さ2の4×4格子は,上から「* * * *」,「* 空白 * 空白」,「* * 空白 空白」,「* 空白 空白 空白」。深さ3の8×8格子の例も図示されている。各格子の「*」と空白の配置を示す図。 図2 図2「フラクタル図形の生成規則」。生成パターンの例は2×2行列で,上段が「* *」,下段が「* 空白」。深さd−1の図形を構成する文字「*」はこの生成パターンの行列に置換し,空白文字は同じ大きさで全ての要素が空白文字の行列に置換する。 プログラム プログラム(空欄を含む)。 #include <stdio.h> int pat[2][2] = { { 1, 1 }, { 1, 0 } }; int p_rn = sizeof pat / sizeof pat[0]; int p_cn = sizeof pat[0] / sizeof pat[0][0]; void print_frac(int); int exists_at(int, int, int); void print_frac(int d) { int i, j, rn, cn; rn = cn = 1; for (i = 0; i < d; i++) { [a] } for (i = 0; i < rn; i++) { for (j = 0; j < cn; j++) { putchar(exists_at(i, j, d) ? '*' : ' '); } putchar('\n'); } } int exists_at(int i, int j, int d) { if (d == 0) { return [b]; } else if (exists_at(i / p_rn, j / p_cn, d - 1) == 0) { return [c]; } else { return [d]; } } 設問2の描画結果 設問2に添えられた深さ3の描画結果。図は格子状で,セルには文字「*」又は空白が示されている。図の行列は上から下へ8行,左から右へ27列。 設問1の図 設問1の図。深さ2の図形の斜線部は,第3行第2列のセル(行・列とも0始まり)を示す。深さ3の図形上には①~④の番号付き矢印があり,それぞれ矢印の先で置換部分を示している。

問問9 設問1

深さが2の図形と深さが3の図形は図のとおりである。深さが3の図形において,深さが2の図形の斜線部を置換した部分として正しい答えを,解答群の中から選べ。

  • ア ①
  • イ ②
  • ウ ③
  • エ ④

出典:平成28年度 春期 基本情報技術者試験 午後 問9 設問1

問問9 設問2

配列変数patを変更して,深さが3の図形を描画したところ,図のとおりになった。配列変数patの変更内容として正しい答えを,解答群の中から選べ。

  • ア int pat[2][3] = { { 0, 1, 0 }, { 1, 0, 1 } };
  • イ int pat[2][3] = { { 1, 1, 1 }, { 1, 0, 1 } };
  • ウ int pat[3][3] = { { 0, 1, 0 }, { 1, 1, 1 }, { 1, 0, 1 } };
  • エ int pat[3][3] = { { 1, 1, 1 }, { 1, 0, 1 }, { 1, 0, 1 } };

出典:平成28年度 春期 基本情報技術者試験 午後 問9 設問2

問問9 設問3

プログラム中の空欄に入れる正しい答えを,解答群の中から選べ。 aに関する解答群 ア p_rn += rn; p_cn += cn; イ p_rn *= rn; p_cn *= cn; ウ rn += p_rn; cn += p_cn; エ rn *= p_rn; cn *= p_cn; b、c、dに関する解答群 ア 0 イ 1 ウ pat[i][j] エ pat[i % d][j % d] オ pat[i / d][j / d] カ pat[i % p_rn][j % p_cn] キ pat[i / p_rn][j / p_cn]

  • A-ア p_rn += rn; p_cn += cn;
  • A-イ p_rn *= rn; p_cn *= cn;
  • A-ウ rn += p_rn; cn += p_cn;
  • A-エ rn *= p_rn; cn *= p_cn;
  • B-ア 0
  • B-イ 1
  • B-ウ pat[i][j]
  • B-エ pat[i % d][j % d]
  • B-オ pat[i / d][j / d]
  • B-カ pat[i % p_rn][j % p_cn]
  • B-キ pat[i / p_rn][j / p_cn]
  • C-ア 0
  • C-イ 1
  • C-ウ pat[i][j]
  • C-エ pat[i % d][j % d]
  • C-オ pat[i / d][j / d]
  • C-カ pat[i % p_rn][j % p_cn]
  • C-キ pat[i / p_rn][j / p_cn]
  • D-ア 0
  • D-イ 1
  • D-ウ pat[i][j]
  • D-エ pat[i % d][j % d]
  • D-オ pat[i / d][j / d]
  • D-カ pat[i % p_rn][j % p_cn]
  • D-キ pat[i / p_rn][j / p_cn]

出典:平成28年度 春期 基本情報技術者試験 午後 問9 設問3

共通の文章

問10 次のCOBOLプログラムの説明及びプログラムを読んで,設問1,2に答えよ。 【プログラムの説明】 Z社では,従業員向けの福利厚生施設として,6部屋の客室を有する保養所を運営している。1部屋には4人まで宿泊可能で,宿泊希望者は1~6までの部屋数を指定できる。宿泊日数は1泊だけである。このプログラムは宿泊予約を管理するサブプログラムであり,予約情報を受け取り,予約結果を呼出し元へ返す。 図1 パラメタの様式 図1「パラメタの様式」 予約情報:予約番号 6桁,希望日 8桁,部屋数 1桁。 予約結果:結果 1桁,空き部屋数 1桁。 ① 予約番号には,予約希望に対して一意に割り振られた000001~999999の番号が格納されている。 ② 希望日には,宿泊する日の年,月,日が,それぞれ西暦の4桁,2桁,2桁で格納されている。 ③ 部屋数には,希望する部屋数が格納されている。 ④ 結果には,希望どおりに予約できた場合は0を,できなかった場合は9を設定する。 ⑤ 空き部屋数には,希望どおりに予約できなかった場合に,希望日の空き部屋数を設定する。例えば,3部屋を希望している場合に2部屋しか空きがなかったときは,2を設定する。希望どおりに予約できた場合は,0を設定する。 ⑥ 予約情報に誤りはないものとする。 予約ファイルの説明・図2 (2) 予約ファイルは,日付を主キーとする図2に示すレコード様式の索引ファイルであり,予約状況を管理する。 図2「予約ファイルのレコード様式」 項目:日付 8桁,予約状況(部屋1~部屋6,各6桁)。 ① 日付には,年,月,日が,それぞれ西暦の4桁,2桁,2桁で格納されている。 ② 部屋1~6のうち,予約済みの部屋には予約番号が格納される。予約が入っていない部屋には0が格納されている。 ③ 予約が1部屋も入っていない日のレコードは存在しない。 プログラム プログラム(空欄は原本どおり未補完)。 1 DATA DIVISION. 2 FILE SECTION. 3 FD RSV-FILE. 4 01 RSV-REC. 5 02 RSV-DATE PIC X(8). 6 02 RSV-ROOM OCCURS 6. 7 03 RSV-NO PIC 9(6). 8 WORKING-STORAGE SECTION. 9 77 CNT PIC 9(1). 10 77 GET-ROOM PIC 9(1). 11 LINKAGE SECTION. 12 01 PRM1. 13 02 PRM-NO PIC 9(6). 14 02 PRM-DATE PIC 9(8). 15 02 PRM-ROOM PIC 9(1). 16 01 PRM2. 17 02 PRM-RSLT PIC 9(1). 18 02 PRM-FREE PIC 9(1). 19 PROCEDURE DIVISION USING PRM1 PRM2. 20 MAIN-PROC. 21 OPEN I-O RSV-FILE. 22 MOVE PRM-DATE TO RSV-DATE. 23 READ RSV-FILE INVALID KEY PERFORM RSV-PROC 24 NOT INVALID KEY PERFORM CHK-PROC 25 END-READ. 26 CLOSE RSV-FILE. 27 EXIT PROGRAM. 28 RSV-PROC. 29 INITIALIZE RSV-REC. 30 MOVE PRM-DATE TO RSV-DATE. 31 PERFORM VARYING CNT FROM 1 BY 1 UNTIL CNT > PRM-ROOM 32 [a] 33 END-PERFORM. 34 WRITE RSV-REC. 35 MOVE ZERO TO PRM-RSLT PRM-FREE. 36 CHK-PROC. 37 MOVE ZERO TO GET-ROOM PRM-FREE. 38 PERFORM VARYING CNT FROM 1 BY 1 UNTIL [b] 39 IF RSV-NO(CNT) = ZERO THEN 40 IF PRM-ROOM > GET-ROOM THEN 41 MOVE PRM-NO TO RSV-NO(CNT) 42 ADD 1 TO GET-ROOM 43 END-IF 44 ADD 1 TO PRM-FREE 45 END-IF 46 END-PERFORM. 47 IF [c] THEN 48 REWRITE RSV-REC 49 MOVE ZERO TO PRM-RSLT PRM-FREE 50 ELSE 51 MOVE 9 TO PRM-RSLT 52 END-IF.

問問10 設問1

プログラム中の空欄a~cに入れる正しい答えを,解答群の中から選べ。 aに関する解答群 ア ADD 1 TO GET-ROOM イ ADD 1 TO PRM-FREE ウ MOVE PRM-NO TO RSV-NO(CNT) エ MOVE ZERO TO RSV-NO(CNT) b、cに関する解答群 ア CNT > 6 イ CNT > GET-ROOM ウ CNT > PRM-ROOM エ GET-ROOM < PRM-ROOM オ GET-ROOM = PRM-ROOM カ GET-ROOM > PRM-ROOM

  • A-ア ADD 1 TO GET-ROOM
  • A-イ ADD 1 TO PRM-FREE
  • A-ウ MOVE PRM-NO TO RSV-NO(CNT)
  • A-エ MOVE ZERO TO RSV-NO(CNT)
  • B-ア CNT > 6
  • B-イ CNT > GET-ROOM
  • B-ウ CNT > PRM-ROOM
  • B-エ GET-ROOM < PRM-ROOM
  • B-オ GET-ROOM = PRM-ROOM
  • B-カ GET-ROOM > PRM-ROOM
  • C-ア CNT > 6
  • C-イ CNT > GET-ROOM
  • C-ウ CNT > PRM-ROOM
  • C-エ GET-ROOM < PRM-ROOM
  • C-オ GET-ROOM = PRM-ROOM
  • C-カ GET-ROOM > PRM-ROOM

出典:平成28年度 春期 基本情報技術者試験 午後 問10 設問1

問問10 設問2

予約をキャンセルする場合は,宿泊する日の7日前からキャンセル料が発生する。希望どおり予約できた場合には,キャンセル料の発生開始日もパラメタで返すように,プログラムを変更する。キャンセル料の発生開始日の年,月,日は,それぞれ西暦の4桁,2桁,2桁で表し,予約できなかった場合には0を設定する。キャンセル料の発生開始日を求める処理は2016年~2099年で動作を保証する。表1の空欄d~fに入れる正しい答えを,解答群の中から選べ。 dに関する解答群 ア 行番号25と26の間 イ 行番号35と36の間 ウ 行番号37と38の間 エ 行番号46と47の間 eに関する解答群 ア COMPUTE CAN-DD = 30 + CAN-DD - 7 イ COMPUTE CAN-DD = MONTH-ELM(CAN-MM - 1) - 7 ウ COMPUTE CAN-DD = MONTH-ELM(CAN-MM) + CAN-DD - 7 エ SUBTRACT 7 FROM CAN-DD fに関する解答群 ア QUOTIENT > 100 イ QUOTIENT > 400 ウ URU-SUPPLY = ZERO エ URU-SUPPLY NOT = ZERO

  • D-ア 行番号25と26の間
  • D-イ 行番号35と36の間
  • D-ウ 行番号37と38の間
  • D-エ 行番号46と47の間
  • E-ア COMPUTE CAN-DD = 30 + CAN-DD - 7
  • E-イ COMPUTE CAN-DD = MONTH-ELM(CAN-MM - 1) - 7
  • E-ウ COMPUTE CAN-DD = MONTH-ELM(CAN-MM) + CAN-DD - 7
  • E-エ SUBTRACT 7 FROM CAN-DD
  • F-ア QUOTIENT > 100
  • F-イ QUOTIENT > 400
  • F-ウ URU-SUPPLY = ZERO
  • F-エ URU-SUPPLY NOT = ZERO

出典:平成28年度 春期 基本情報技術者試験 午後 問10 設問2

共通の文章

問11 次のJavaプログラムの説明及びプログラムを読んで,設問1,2に答える。Javaプログラムで使用するAPIの説明は,この冊子の末尾を参照する。 【プログラムの説明】“すべきこと”(以下,ToDoという)を管理するプログラムである。 (1) クラスToDoはToDoを表すクラスであり,コンストラクタで主題,期限,重要度を指定する。期限は,年月日を表す8桁又は年月日時分を表す12桁の数字から成る文字列(以下,日時という)であり,例えば,2016年4月16日を表す文字列は“20160416”,2016年4月16日午後1時0分を表す文字列は“201604161300”である。ここで,日時に誤りはないものとする。主題,期限,重要度を取得する各メソッドと,状態を設定及び取得するメソッド,ToDoを識別するフィールドidをもつ。列挙PriorityはToDoの重要度を表す列挙であり,重要度が低い順にLOW,MIDDLE,HIGHである。列挙StateはToDoの状態を表す列挙であり,NOT_YET_STARTEDは未着手,STARTEDは着手済み,DONEは完了を表す。 (2) クラスToDoListはToDoのリストを保持するクラスである。リスト中に,フィールドidの値が同じToDoを複数個含まないことを保証する。ToDoを追加するメソッドaddと,ToDoの更新を行うメソッドupdate,条件に合うToDoのリストを返すメソッドselectをもつ。メソッドaddの引数に,既にリストに保持されているToDoを指定したとき,及びメソッドupdateの引数に,リストにないToDoを指定したときは何もしない。メソッドselectの引数には,条件を0個以上指定できる。条件を指定したときは,全ての条件に合致するToDoから成るリストを返す。条件を指定しないときは,保持する全てのToDoから成るリストを返す。 (3) インタフェースConditionは,ToDoを選択する際の条件を表すクラスが実装するインタフェースである。メソッドtestは条件に合致するときにtrueを返す。 (4) クラスToDoListTesterは,テスト用のクラスである。 プログラム1(ToDoクラス) 【プログラム1】 import java.util.UUID; public class ToDo { public enum Priority { LOW, MIDDLE, HIGH } public enum State { NOT_YET_STARTED, STARTED, DONE } // 8桁又は12桁の数字から成る文字列と一致する正規表現 private static final String DEADLINE_PATTERN = "\\d{8}|\\d{12}"; private final String id; private String subject; private String deadline; private Priority priority; private State state; private ToDo(String subject, String deadline, Priority priority, String id, State state) { if (!deadline.matches(DEADLINE_PATTERN)) { throw new IllegalArgumentException(); } this.subject = subject; this.deadline = deadline; this.priority = priority; this.id = id; this.state = state; } public ToDo(String subject, String deadline, Priority priority) { this(subject, deadline, priority, UUID.randomUUID().toString(), State.NOT_YET_STARTED); } public ToDo(ToDo todo) { this(todo.subject, todo.deadline, todo.priority, todo.id, todo.state); } public String getSubject() { return subject; } public String getDeadline() { return deadline; } public Priority getPriority() { return priority; } public State getState() { return state; } public void setState(State state) { this.state = state; } public int hashCode() { return id.hashCode(); } public boolean equals(Object o) { return o instanceof ToDo && [a]; } public String toString() { return String.format("主題: %s, 期限: %s, 優先度: %s, 状態: %s", subject, deadline, priority, state); } } プログラム2(ToDoListクラス) 【プログラム2】 import java.util.ArrayList; import java.util.List; public class ToDoList { private List<ToDo> todoList = new ArrayList<ToDo>(); public void add(ToDo todo) { if ([b]) { todoList.add(new ToDo(todo)); } } public void update(ToDo todo) { int index = todoList.indexOf(todo); if (index [c]) { todoList.set(index, todo); } } public List<ToDo> select(Condition... conditions) { List<ToDo> result = new ArrayList<ToDo>(); for (ToDo todo : todoList) { [d]; for (Condition condition : conditions) { selected [e] condition.test(todo); if (!selected) break; } if (selected) { result.add(new ToDo(todo)); } } return result; } } プログラム3(Conditionインタフェース) 【プログラム3】 public interface Condition { boolean test(ToDo todo); } プログラム4(ToDoListTesterクラス) 【プログラム4】 public class ToDoListTester { public static void main(String[] args) { ToDoList list = new ToDoList(); list.add(new ToDo("メール送信", "201604181500", ToDo.Priority.HIGH)); list.add(new ToDo("ホテル予約", "20160420", ToDo.Priority.LOW)); list.add(new ToDo("チケット購入", "20160430", ToDo.Priority.MIDDLE)); list.add(new ToDo("報告書作成", "20160428", ToDo.Priority.HIGH)); list.add(new ToDo("会議室予約", "201605301200", ToDo.Priority.HIGH)); list.update(new ToDo("PC購入", "20160531", ToDo.Priority.HIGH)); for (ToDo todo : list.select()) { todo.setState(ToDo.State.STARTED); list.update(todo); } Condition condition1 = new Condition() { public boolean test(ToDo todo) { return todo.getDeadline().compareTo("20160501") < 0; } }; Condition condition2 = new Condition() { public boolean test(ToDo todo) { return todo.getPriority().equals(ToDo.Priority.HIGH); } }; for (ToDo todo : list.select(condition1, condition2)) { System.out.println(todo); } } } 図1 プログラム4の実行結果 【図1 プログラム4の実行結果】二つの出力行があり,それぞれの表示は「[f],状態: STARTED」及び「[g],状態: STARTED」。 関連API:java.util.List<E> java.util.List<E>:順序付けられたコレクションのためのインタフェース。Iterableを継承する。 ・boolean add(E e):指定された要素をリストの最後に追加する。戻り値はtrue。 ・E set(int index, E e):指定された位置の要素を指定された要素に置き換える。indexは置き換えられる要素のインデックス,eは指定された位置に格納される要素。戻り値は置き換え前の要素。indexが0未満又は要素数以上のときIndexOutOfBoundsException。 ・boolean contains(Object obj):指定された要素がリストにあればtrueを返す。 ・boolean isEmpty():リストに要素がなければtrueを返す。 ・int size():リスト内の要素数を返す。 ・int indexOf(Object obj):指定された要素がリスト内で最初に検出された位置のインデックスを返す。リストになければ-1を返す。 (公式参照資料,物理PDFページ68) 関連API:java.util.ArrayList<E> java.util.ArrayList<E>:Listの配列による実装。メソッドの説明はインタフェースListの項を参照。 ・ArrayList():空のリストを作る。 (公式参照資料,物理PDFページ69) 関連API:java.lang.String java.lang.String ・boolean matches(String regex):この文字列が指定された正規表現と一致するかどうかを判定する。正規表現「\\d{8}|\\d{12}」は,8桁又は12桁の数字から成る文字列と一致する。 ・int compareTo(String str):この文字列と指定された文字列を辞書的に比較する。等しいとき0,小さいとき0より小さい値,大きいとき0より大きい値を返す。 (公式参照資料,物理PDFページ69) 関連API:java.util.UUID java.util.UUID ・static UUID randomUUID():ユニバーサル固有識別をランダムに生成する。戻り値はランダムに生成された固有識別。 (公式参照資料,物理PDFページ69)

問問11 設問1

プログラム中の空欄に入れる正しい答えを,解答群の中から選べ。 aに関する解答群 ア ((ToDo) o).id.equals(id) イ (ToDo) o.id.equals(id) ウ id.equals(id) エ o.id.equals(id) bに関する解答群 ア !todoList.contains(todo) イ !todoList.isEmpty() ウ todoList.contains(todo) エ todoList.isEmpty() cに関する解答群 ア != -1 イ < todoList.size() ウ == -1 エ >= todoList.size() dに関する解答群 ア boolean selected = false イ boolean selected = true ウ int selected = 0 エ int selected = todoList.size() eに関する解答群 ア += イ = ウ == エ |=

  • A-ア ((ToDo) o).id.equals(id)
  • A-イ (ToDo) o.id.equals(id)
  • A-ウ id.equals(id)
  • A-エ o.id.equals(id)
  • B-ア !todoList.contains(todo)
  • B-イ !todoList.isEmpty()
  • B-ウ todoList.contains(todo)
  • B-エ todoList.isEmpty()
  • C-ア != -1
  • C-イ < todoList.size()
  • C-ウ == -1
  • C-エ >= todoList.size()
  • D-ア boolean selected = false
  • D-イ boolean selected = true
  • D-ウ int selected = 0
  • D-エ int selected = todoList.size()
  • E-ア +=
  • E-イ =
  • E-ウ ==
  • E-エ |=

出典:平成28年度 春期 基本情報技術者試験 午後 問11 設問1

問問11 設問2

プログラム4の実行結果を図1に示す。空欄に入れる正しい答えを,解答群の中から選べ。 f、gに関する解答群 ア 主題: PC購入,期限: 20160531,優先度: HIGH イ 主題: 会議室予約,期限: 201605301200,優先度: HIGH ウ 主題: チケット購入,期限: 20160430,優先度: MIDDLE エ 主題: 報告書作成,期限: 20160428,優先度: HIGH オ 主題: ホテル予約,期限: 20160420,優先度: LOW カ 主題: メール送信,期限: 201604181500,優先度: HIGH

  • F-ア 主題: PC購入,期限: 20160531,優先度: HIGH
  • F-イ 主題: 会議室予約,期限: 201605301200,優先度: HIGH
  • F-ウ 主題: チケット購入,期限: 20160430,優先度: MIDDLE
  • F-エ 主題: 報告書作成,期限: 20160428,優先度: HIGH
  • F-オ 主題: ホテル予約,期限: 20160420,優先度: LOW
  • F-カ 主題: メール送信,期限: 201604181500,優先度: HIGH
  • G-ア 主題: PC購入,期限: 20160531,優先度: HIGH
  • G-イ 主題: 会議室予約,期限: 201605301200,優先度: HIGH
  • G-ウ 主題: チケット購入,期限: 20160430,優先度: MIDDLE
  • G-エ 主題: 報告書作成,期限: 20160428,優先度: HIGH
  • G-オ 主題: ホテル予約,期限: 20160420,優先度: LOW
  • G-カ 主題: メール送信,期限: 201604181500,優先度: HIGH

出典:平成28年度 春期 基本情報技術者試験 午後 問11 設問2

共通の文章

問12 次のアセンブラプログラムの説明及びプログラムを読み,設問1~4に答えよ。 【プログラムの説明】 10,000 m 競走に,1チーム8名で,9チーム72名が参加し,各チームの合計タイムを競う。プログラム RACE は,個人別のタイムを所属するチーム番号とともに入力し,チーム別合計タイムを求め,チーム別合計タイムの昇順に,チーム番号とそのチームの1名当たりの平均タイムを出力する。 (1) 個人ごとの入力データ及びチームごとの出力データの形式は図1のとおりとする。ここで,60分以上のデータはないものとする。 (2) プログラム RACE の入力データと出力結果の例を図2に示す。 (3) データの入力処理と出力処理は,それぞれ副プログラム INPUT と OUTPUT を呼び出して行う。 (4) 副プログラム INPUT は,呼ばれるごとに図1に示す形式の個人のデータを1件読み込む。読み込んだデータのチーム番号及び秒数に変換したタイムを2進数で,それぞれ GR1 と GR2 に設定し,GR0 には正の値を設定して,呼出し元に返す。全員のデータを読み終わっている場合は,GR0 に −1 を設定して呼出し元に返す。 (5) 副プログラム OUTPUT は,GR1 と GR2 のそれぞれに2進数で設定されたチーム番号と平均タイム(1秒未満を切り捨てた秒数)を,図1に示す形式に変換して書き出す。 図1 図1「入出力データの形式」。個人データ及びチーム出力データは6文字:チーム番号 n(数字「1」~「9」)、空白文字 △、分 mm(「00」~「59」の数字列)、秒 ss(「00」~「59」の数字列)。60分以上のデータはない。 図2 図2「入力データと出力結果の例」。入力データ(72名分)の図示された例は,5△2708,1△2719,9△2805,…,4△3118,5△3256。出力結果は,1△2835,5△2927,…,8△3029。出力は9チーム分の成績順の平均タイム。 プログラム1 プログラム1「RACE」 RACE START LOOP11 CALL INPUT LD GR0,GR0 JMI IEND ADDA GR2,TOTAL,GR1 ; タイム ST GR2,TOTAL,GR1 JUMP LOOP11 IEND LD GR3,=9 LD GR0,=#7FFF ; 最大値 LOOP12 LD GR2,GR0 LD GR4,=9 LOOP13 CPA GR2,TOTAL,GR4 JPL CHANGE JUMP NEXT CHANGE LD GR2,TOTAL,GR4 ; GR2←新たなタイムの最小値 LD GR1,GR4 ; GR1←そのチーム番号 NEXT SUBA GR4,=1 [a] SRL GR2,3 ; 平均タイム CALL OUTPUT ST GR0,TOTAL,GR1 ; 処理済みとして最大値を設定 SUBA GR3,=1 [b] RET TOTAL DC 0,0,0,0,0,0,0,0,0,0 ; (チーム数+1)個の領域 END プログラム2 プログラム2「OUTPUT」(行番号付き)。 1 OUTPUT START 2 RPUSH 3 OR GR1,=#0030 4 ST GR1,TEAM 5 LAD GR3,TIME 6 LD GR4,=0 7 LD GR5,=3 ; ループ回数 8 LOOP21 LD GR6,DIVISOR,GR4 ; GR6←除数 9 LD GR7,=0 ; GR7←商 10 LOOP22 CPA GR2,GR6 11 JMI SETTIME 12 SUBA GR2,GR6 13 ADDA GR7,=1 14 [d] 15 SETTIME OR GR7,=#0030 16 ST GR7,0,GR3 17 ADDA GR4,=1 18 ADDA GR3,=1 19 SUBA GR5,=1 20 [e] 21 OR GR2,=#0030 22 ST GR2,0,GR3 23 OUT TEAM,LEN 24 RPOP 25 RET 26 TEAM DS 1 27 DC ' ' 28 TIME DS 4 29 LEN DC 6 30 DIVISOR DC 600,60,10 31 END dに関する解答群 プログラム2中の d に関する解答群(選択肢の順):ア JMI LOOP21,イ JMI LOOP22,ウ JPL LOOP21,エ JUMP LOOP21,オ JUMP LOOP22,カ JZE LOOP22。 eに関する解答群 プログラム2中の e に関する解答群(選択肢の順):ア JMI LOOP21,イ JPL LOOP21,ウ JPL LOOP22,エ JUMP LOOP22,オ JZE LOOP21,カ JZE LOOP22。 COMET IIの関連命令仕様(公式別添 p.70~72) COMET IIの命令仕様(公式別添 p.70~72)。GRはGR0~GR7の8個で,算術・論理・比較・シフト演算などに用いる。GR1~GR7は指標レジスタとしてアドレス修飾にも用いる。命令の関係する仕様:LD r1,r2 は r1←(r2),ST r,adr[,x] は実効アドレス←(r),ADDA r1,r2 は r1←(r1)+(r2),SUBA r1,r2 は r1←(r1)−(r2),OR r,adr[,x] は r←(r) OR (実効アドレス),CPA r1,r2 は算術比較を行ってFRの値を設定する。SRL r,adr[,x] は指定ビット数だけ論理右シフトする。 COMET IIの分岐・比較仕様(公式別添 p.71) COMET IIの分岐命令仕様(公式別添 p.71)。JPL adr[,x] はFRの値によって実効アドレスに分岐し,分岐しない場合は次の命令に進む。JMI adr[,x] は符号フラグ SF=1 のとき分岐する。JZE adr[,x] はゼロフラグ ZF=1 のとき分岐する。JUMP adr[,x] は無条件に実効アドレスへ分岐する。CPAの比較結果は,左辺が右辺より大きいとき SF=0, ZF=0,同じとき SF=0, ZF=1,小さいとき SF=1, ZF=0。 COMET IIのCALL・RET仕様(公式別添 p.72) COMET IIのサブルーチン命令仕様(公式別添 p.72)。CALL adr[,x] は戻り番地をスタックに格納して実効アドレスへ分岐する。RET はスタックから戻り番地を取り出して復帰する。 CASL IIの関連仕様(公式別添 p.73~76) CASL IIの関連仕様(公式別添 p.73~76)。プログラムは命令行及び注釈行からなり,1命令は1行に記述する。DCは定数を定義し,DSは指定語数の領域を確保する。RPUSHはGRの内容をGR1,GR2,…,GR7の順序でスタックに格納する。RPOPはスタックの内容を順次取り出し,GR7,GR6,…,GR1の順序でGRに格納する。IN/OUTは入出力を行うマクロ命令。

問問12 設問1

プログラム1中の [a],[b] に入れる正しい答えを,解答群の中から選べ。 a、bに関する解答群 ア JMI LOOP12 イ JMI LOOP13 ウ JPL LOOP12 エ JPL LOOP13 オ JUMP LOOP12 カ JUMP LOOP13 キ JZE LOOP12 ク JZE LOOP13

  • A-ア JMI LOOP12
  • A-イ JMI LOOP13
  • A-ウ JPL LOOP12
  • A-エ JPL LOOP13
  • A-オ JUMP LOOP12
  • A-カ JUMP LOOP13
  • A-キ JZE LOOP12
  • A-ク JZE LOOP13
  • B-ア JMI LOOP12
  • B-イ JMI LOOP13
  • B-ウ JPL LOOP12
  • B-エ JPL LOOP13
  • B-オ JUMP LOOP12
  • B-カ JUMP LOOP13
  • B-キ JZE LOOP12
  • B-ク JZE LOOP13

出典:平成28年度 春期 基本情報技術者試験 午後 問12 設問1

問問12 設問2

同じ合計タイムのチームが複数ある場合,[c]。

  • ア チーム番号の昇順に出力される
  • イ チーム番号の降順に出力される
  • ウ どのチームが先に出力されるかは時々で異なる

出典:平成28年度 春期 基本情報技術者試験 午後 問12 設問2

問問12 設問3

副プログラム OUTPUT を次に示す。プログラム2中の [d],[e] に入れる正しい答えを,それぞれ解答群の中から選べ。 dに関する解答群 ア JMI LOOP21 イ JMI LOOP22 ウ JPL LOOP21 エ JUMP LOOP21 オ JUMP LOOP22 カ JZE LOOP22 eに関する解答群 ア JMI LOOP21 イ JPL LOOP21 ウ JPL LOOP22 エ JUMP LOOP22 オ JZE LOOP21 カ JZE LOOP22

  • D-ア JMI LOOP21
  • D-イ JMI LOOP22
  • D-ウ JPL LOOP21
  • D-エ JUMP LOOP21
  • D-オ JUMP LOOP22
  • D-カ JZE LOOP22
  • E-ア JMI LOOP21
  • E-イ JPL LOOP21
  • E-ウ JPL LOOP22
  • E-エ JUMP LOOP22
  • E-オ JZE LOOP21
  • E-カ JZE LOOP22

出典:平成28年度 春期 基本情報技術者試験 午後 問12 設問3

問問12 設問4

出力されたデータが 7△2708 のとき,プログラム2の行番号12の SUBA 命令は [f] 回実行された。

  • ア 9
  • イ 17
  • ウ 20
  • エ 270
  • オ 299

出典:平成28年度 春期 基本情報技術者試験 午後 問12 設問4

共通の文章

問13 次の表計算のワークシート及びマクロの説明を読んで,設問1,2に答えよ。 【表計算の説明】 卸売業のP社は,家庭用品部門で販売している商品の取扱いを見直すことにした。そこで,販売管理システムから対象商品の連続した過去3年間の販売データを抽出し,表計算ソフトを利用して販売状況の分析を行い,今後の取扱いを検討することにした。対象商品は,商品コードA001,A002,B101,B201,C010,C011,C012,D070及びD080の9商品である。販売データは,各年の1月1日から12月31日までの1年を単位として分析し,分析する対象の各年で売上高が0の商品はない。 【ワークシート:販売分析】 対象商品の販売状況を分析する指標を計算して,今後の取扱いを判定するワークシート「販売分析」を作成した。ワークシート「販売分析」の例を図1に示す。 図1 図1「ワークシート『販売分析』の例」。セルA1~L21が売上高分析表。列はA~Lで、商品コードがC2~K2に昇順で並ぶ。商品コードはA001,A002,B101,…,D070,D080。年ごとに、売上高、対前年比率、構成比率、構成比率累計、管理区分の順に表示する。例の数値(単位:千円):2013年売上高はA001 35,376、A002 11,544、B101 13,005、…、D070 7,480、D080 12,310、合計151,847。対前年比率は「-」。構成比率は23.3%、7.6%、8.6%、…、4.9%、8.1%。構成比率累計は23.3%、81.6%、65.8%、…、100.0%、74.0%。管理区分はA、B、A、…、C、B。2014年売上高は36,592、10,376、12,510、…、7,110、15,230、合計155,194。対前年比率は103.4%、89.9%、96.2%、…、95.1%、123.7%、合計102.2%。構成比率は23.6%、6.7%、8.1%、…、4.6%、9.8%。構成比率累計は23.6%、90.1%、76.6%、…、100.0%、68.5%。管理区分はA、C、B、…、C、A。2015年売上高は39,480、9,032、13,392、…、6,170、12,830、合計159,524。対前年比率は107.9%、87.0%、107.1%、…、86.8%、84.2%、合計102.8%。構成比率は24.7%、5.7%、8.4%、…、3.9%、8.0%。構成比率累計は24.7%、90.6%、70.2%、…、100.0%、78.3%。管理区分はA、C、B、…、C、B。判定部(C~K列)は「売上高2年連続減」「対前年比率85%未満」「管理区分2年連続C」の条件をY/Nで示し、取扱方針を表示する。例では各商品の取扱方針が順に「維持」「見直し」「維持」「…」「見直し」「注意」。構成比率累計列の一部は斜線表示。注記:対前年比率、構成比率及び構成比率累計は、%形式で小数第2位を四捨五入した値を表示している。 図1の説明 図1の定義と処理条件。①C2~K2には対象商品の商品コードが昇順に格納される。②マクロSales_Totalを実行すると、A3、A8、A13に分析する過去3年の西暦年が昇順に格納され、C3~K3、C8~K8、C13~K13には対象商品の当該年の売上高が千円未満を四捨五入した千円単位の値で格納される。③対前年比率は各商品の前年売上高を基準にした当該年売上高の割合。④構成比率は当該年の対象9商品の売上高合計に占める各商品の売上高の割合。⑤構成比率累計は当該年の各商品の構成比率を大きいものから順に当該商品まで累計した値。同じ構成比率の商品が複数あるときは,当該商品の分だけを加算する。⑥管理区分は,各商品の構成比率累計が表1の範囲のどの区分に属するかを判定した結果で,商品の管理方法を決定する指標。⑦C18~K20には表2に示す各条件の真偽を商品ごとに判定した結果を設定する。C21~K21には各条件の真偽の組合せに基づく各商品の今後の取扱方針を設定する。 表1 表1「管理区分の判定基準」:管理区分Aは構成比率累計が0%を超え70%以下,商品管理方法は重要管理商品。Bは70%を超え90%以下,通常管理商品。Cは90%を超え100%以下,簡易管理商品。 表2 表2「今後の取扱方針を判定する条件」。3条件の組合せ(上から「直近の2年の売上高が連続して前年より減少」「直近の年の対前年比率が85%未満」「直近の2年の管理区分が連続してC」)ごとの取扱方針を、各列の順に示す。条件値の組合せ:NNN→維持、NNY→維持、NYN→注意、NYY→見直し、YNN→注意、YNY→見直し、YYN→注意、YYY→見直し。Yは条件が真、Nは条件が偽。取扱方針は,条件の真偽が各列の組合せに該当する商品の今後の取扱方針を表す。 図1の説明 図1のセルA23~E27にある「管理区分表」には、表1と同じ管理区分と構成比率累計の範囲を格納する。セルA29~J34は「取扱判定表」。C31~J34には取扱方針判定用の条件の組合せと方針を表2のとおり格納する。C30~J30の判定コードは、C31~J33の各列の条件のYを1、Nを0として、上から順に2進数の3桁(3桁目、2桁目、1桁目)とみなし10進数に変換した値。 図2 図2「ワークシート『販売データ』の例」。列見出し:A 年、B 月、C 日、D 商品コード、E 得意先コード、F 単価、G 数量。行2以降は販売年月日、商品コード、得意先コード、単価、数量を格納し、年を第1キー、商品コードを第2キーとして昇順に整列。例:2行目は2013年1月4日、A001、得意先1109、単価800、数量300。3行目は2013年1月5日、A001、1115、800、170。4行目は2013年1月6日、A001、1119、800、180。5行目は2013年1月6日、A001、1107、800、50。6行目は2013年1月7日、A001、1104、800、120。2292行目は2014年12月24日、D080、1118、単価1,000、数量90。2293行目は2014年12月28日、D080、1106、1,000、230。2294行目は2015年1月4日、A001、1117、800、220。2295行目は2015年1月6日、A001、1104、800、110。対象商品の連続した過去3年間のデータを抽出して格納。未格納セルの値はnull。 Sales_Totalマクロ 【マクロ:Sales_Total】数値型変数はdata_row、total_row、total_col、subtotal。初期処理:data_row←0、total_row←0、subtotal←0。続いて「相対(販売データ!A2, data_row, 0) ≠ null」の間、相対(A3, total_row, 0)←相対(販売データ!A2, data_row, 0)、total_col←0とする。内側の条件「相対(A3, total_row, 0) = 相対(販売データ!A2, data_row, 0)」の下に空欄e、その後に空欄f、data_row←data_row+1が並ぶ。内側の処理後、相対(C3, total_row, total_col)←四捨五入(subtotal/1000,0)、subtotal←0、total_col←total_col+1。さらに空欄gが続く。相対表記は基準セルからの行・列位置を表す。 表計算ソフト仕様 表計算ソフトの関連仕様(公式別添、物理ページ78~82)。数値範囲の合計は合計(セル範囲)。条件付個数(セル範囲, 検索条件)は条件を満たすセルの個数を返す。整数部(算術式)は小数部を切り捨てた整数を返す。四捨五入(算術式, 桁位置)は指定桁に丸め、桁位置0は小数第1位を四捨五入する。水平照合(式, セル範囲, 行位置, 検索指定)は範囲の上端行を左から右に走査し、検索指定0なら一致値、1なら式以下の最大値を検索(後者は昇順整列が必要)し、指定行位置の値を返す。照合一致(式, セル範囲, 検索指定)は範囲を走査し、検索指定0なら一致値、1なら式以下の最大値、−1なら式以上の最小値を探す(1は昇順、−1は降順が必要)。相対(セル変数, 行位置, 列位置)は、セル変数のセルを基準に指定された行・列位置だけ離れたセルを表す。マクロでは「相対(販売データ!A1, data_row, 5)」のように別シートのセルを指定できる。 マクロ仕様 公式別添のマクロ仕様(物理ページ81~82)。マクロには数値型、文字列型、論理型の変数を宣言して使用できる。セルを変数として使用するセル変数は宣言不要。処理内で式、関数、変数、セル変数又は配列要素を使用できる。繰返しは条件が成立する間に処理を行い、相対(セル変数, 行位置, 列位置)はセル変数のセルを基準にした相対セルを表す。 別添の表引き仕様(物理p80) 表引き(セル範囲, 行の位置, 列の位置)では、セル範囲の左上端から行・列をそれぞれ1始まりで数え、指定した行・列の位置にあるセルの値を返す。例えば、表引き(A3:H11, 2, 5)はE4の値を返す。 条件付合計の公式別添仕様(物理p81) 条件付合計(検索のセル範囲, 検索条件の記述, 合計のセル範囲)では、同じ行数・列数の二つの範囲を指定する。検索範囲で比較条件に合う各セルを探し、その左上端からの位置と合計範囲で同じ位置にあるセルの値を合計する。条件付個数の戻り値は個数で、異なる関数である。 条件分岐と論理演算(公式別添物理p79) IF(論理式, 式1, 式2)は真の場合に式1、偽の場合に式2の値を返す。論理積(論理式1, 論理式2, …)は全て真の場合にtrue。論理和(論理式1, 論理式2, …)は少なくとも一つが真の場合にtrue。それぞれ他の場合はfalse。

問問13 設問1

設問1 ワークシート「販売分析」の作成に関する記述中の空欄に入れる正しい答えを,解答群の中から選べ。 (1) セルL3、セルL8及びセルL13には,当該年の対象9商品の売上高の合計を求める式を入力する。 (2) セルC4~L4には「-」を入力する。セルC9~L9及びセルC14~L14には,対前年比率を求める式を入力する。 (3) セルC5~K5、セルC10~K10及びセルC15~K15には,構成比率を求める式を入力する。 (4) セルC6には,構成比率累計を求める次の式を入力し,セルD6~K6、セルC11~K11及びセルC16~K16に複写する。 (5) セルC7には,管理区分を表示する次の式を入力し,セルD7~K7、セルC12~K12及びセルC17~K17に複写する。 (6) セルC18には,直近2年の売上高が連続して前年よりも減少しているかどうかを判定する次の式を入力し,セルD18~K18に複写する。 (7) セルC19~K19には,当該商品の直近の年の対前年比率が85%未満かどうかを判定する式を入力する。 (8) セルC20~K20には,当該商品の直近2年の管理区分が連続して「C」かどうかを判定する式を入力する。 (9) セルC21には,「取扱判定表」の条件がセルC18~C20の値と一致する列に対応する取扱方針を表示する次の式を入力し,セルD21~K21に複写する。 aに関する解答群 ア 条件付合計($C5:$K5, > C5, $C5:$K5) イ 条件付合計($C5:$K5, > C5, $C5:$K5) + C5 ウ 条件付合計($C5:$K5, ≥ C5, $C5:$K5) エ 条件付合計($C5:$K5, ≥ C5, $C5:$K5) − C5 bに関する解答群 ア 表引き($A$25:$A$27, 条件付個数($B$25:$B$27, < C6), 1) イ 表引き($A$25:$A$27, 条件付個数($D$25:$D$27, ≤ C6), 1) ウ 表引き($A$25:$A$27, 照合一致(C6, $B$25:$B$27, 1), 1) エ 表引き($A$25:$A$27, 照合一致(C6, $D$25:$D$27, −1), 1) cに関する解答群 ア IF(論理積(C9<1, C14<1), 'Y', 'N') イ IF(論理積(C9>1, C14>1), 'N', 'Y') ウ IF(論理和(C9<1, C14<1), 'Y', 'N') エ IF(論理和(C9>1, C14>1), 'N', 'Y') dに関する解答群 ア 水平照合(IF(C18='Y',3,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 4, 0) イ 水平照合(IF(C18='Y',3,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 5, 0) ウ 水平照合(IF(C18='Y',4,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 4, 0) エ 水平照合(IF(C18='Y',4,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 5, 0)

  • A-ア 条件付合計($C5:$K5, > C5, $C5:$K5)
  • A-イ 条件付合計($C5:$K5, > C5, $C5:$K5) + C5
  • A-ウ 条件付合計($C5:$K5, ≥ C5, $C5:$K5)
  • A-エ 条件付合計($C5:$K5, ≥ C5, $C5:$K5) − C5
  • B-ア 表引き($A$25:$A$27, 条件付個数($B$25:$B$27, < C6), 1)
  • B-イ 表引き($A$25:$A$27, 条件付個数($D$25:$D$27, ≤ C6), 1)
  • B-ウ 表引き($A$25:$A$27, 照合一致(C6, $B$25:$B$27, 1), 1)
  • B-エ 表引き($A$25:$A$27, 照合一致(C6, $D$25:$D$27, −1), 1)
  • C-ア IF(論理積(C9<1, C14<1), 'Y', 'N')
  • C-イ IF(論理積(C9>1, C14>1), 'N', 'Y')
  • C-ウ IF(論理和(C9<1, C14<1), 'Y', 'N')
  • C-エ IF(論理和(C9>1, C14>1), 'N', 'Y')
  • D-ア 水平照合(IF(C18='Y',3,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 4, 0)
  • D-イ 水平照合(IF(C18='Y',3,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 5, 0)
  • D-ウ 水平照合(IF(C18='Y',4,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 4, 0)
  • D-エ 水平照合(IF(C18='Y',4,0)+IF(C19='Y',2,0)+IF(C20='Y',1,0), $C30:$J34, 5, 0)

出典:平成28年度 春期 基本情報技術者試験 午後 問13 設問1

問問13 設問2

設問2 図2に示すワークシート「販売データ」のデータを基に,【ワークシート:販売分析】の説明の(1)の②で示した処理を実行するマクロSales_Totalを作成して,ワークシート「販売分析」に格納した。マクロSales_Totalの空欄に入れる正しい答えを,解答群の中から選べ。 eに関する解答群 ア 相対(C2, 0, total_col) = 相対(販売データ!D2, data_row, 0) イ 相対(C2, 0, total_col) ≠ 相対(販売データ!B2, data_row, 0) ウ 相対(C2, 0, total_col) ≠ 相対(販売データ!D2, data_row, 0) エ 相対(C2, total_row, 0) = 相対(販売データ!B2, data_row, 0) オ 相対(C2, total_row, 0) = 相対(販売データ!D2, data_row, 0) カ 相対(C2, total_row, 0) ≠ 相対(販売データ!B2, data_row, 0) f、gに関する解答群 ア 相対(販売データ!A1, data_row, 5) と 相対(販売データ!A1, data_row, 6) の積を subtotal に加算する。 イ 相対(販売データ!A2, total_row, 5) と 相対(販売データ!A2, total_row, 6) の積を subtotal に加算する。 ウ 相対(販売データ!F2, data_row, 0) と 相対(販売データ!G2, data_row, 0) の積を subtotal に加算する。 エ total_row ← 0 オ total_row ← total_row + 1 カ total_row ← total_row + 5

  • E-ア 相対(C2, 0, total_col) = 相対(販売データ!D2, data_row, 0)
  • E-イ 相対(C2, 0, total_col) ≠ 相対(販売データ!B2, data_row, 0)
  • E-ウ 相対(C2, 0, total_col) ≠ 相対(販売データ!D2, data_row, 0)
  • E-エ 相対(C2, total_row, 0) = 相対(販売データ!B2, data_row, 0)
  • E-オ 相対(C2, total_row, 0) = 相対(販売データ!D2, data_row, 0)
  • E-カ 相対(C2, total_row, 0) ≠ 相対(販売データ!B2, data_row, 0)
  • F-ア 相対(販売データ!A1, data_row, 5) と 相対(販売データ!A1, data_row, 6) の積を subtotal に加算する。
  • F-イ 相対(販売データ!A2, total_row, 5) と 相対(販売データ!A2, total_row, 6) の積を subtotal に加算する。
  • F-ウ 相対(販売データ!F2, data_row, 0) と 相対(販売データ!G2, data_row, 0) の積を subtotal に加算する。
  • F-エ total_row ← 0
  • F-オ total_row ← total_row + 1
  • F-カ total_row ← total_row + 5
  • G-ア 相対(販売データ!A1, data_row, 5) と 相対(販売データ!A1, data_row, 6) の積を subtotal に加算する。
  • G-イ 相対(販売データ!A2, total_row, 5) と 相対(販売データ!A2, total_row, 6) の積を subtotal に加算する。
  • G-ウ 相対(販売データ!F2, data_row, 0) と 相対(販売データ!G2, data_row, 0) の積を subtotal に加算する。
  • G-エ total_row ← 0
  • G-オ total_row ← total_row + 1
  • G-カ total_row ← total_row + 5

出典:平成28年度 春期 基本情報技術者試験 午後 問13 設問2

出典

各問題の下に出典を記載しています。

公表資料(PDF)