基本情報技術者試験過去問 - 平成30年秋期試験(科目B)
| 実施日 : | 2018年10月21日 | 受験者 : | 60,004人 |
| 問題数 : | 8問 | 合格者 : | 13,723人 |
| 合格率 : | 22.8% | ||
| 公式PDF : |
|
問1
情報セキュリティ事故と対策に関する次の記述を読んで,設問1~3に答えよ。
自動車の販売代理店であるA社は,Webサイトで自動車のカタログ請求を受け付けている。Webサイトは,Webアプリケーションソフト(以下,Webアプリという)が稼働するWebサーバと,データベースが稼働するデータベースサーバ(以下,DBサーバという)で構成されている。WebサーバはA社のDMZに設置され,DBサーバはA社の社内LANに接続されている。Webサイトの管理はB氏が,A社の社内LANに接続されている保守用PCからアクセスして行っている。カタログ請求者は,Webブラウザからインターネット経由でHTTP over TLSによってWebサイトにアクセスする。
〔カタログ請求者の情報の登録〕
A社では,次の目的で,カタログ請求者の情報を保持し,利用することの同意を,カタログ請求者から得ている。
・情報提供や購入支援を行う。
・カタログ請求者が別のカタログを請求したいときなどに,登録した電子メールアドレスとパスワードを使用してログインできるようにする。
同意が得られたときは,氏名,住所,電話番号,電子メールアドレス,パスワード,購入予定時期,購入予算,希望車種などの情報を,Webアプリに入力してもらい,データベースに登録している。パスワードはハッシュ化して,それ以外の情報は平文で,データベースに格納している。A社では,カタログ請求者から要求があったときにだけ,データベースからそのカタログ請求者の情報を消去する運用としている。
〔カタログ請求者への対応〕
A社では,カタログ請求者へのカタログ送付後の購入支援を,データベースに登録されている情報を基に,電子メールと電話で行っている。
〔情報セキュリティ事故の発生〕
ある日,A社の社員から, “A社のカタログ請求者一覧と称する情報が,インターネットの掲示板に公開されている” とB氏に連絡があった。公開されている情報をB氏が確認したところ,データベースに登録されている情報の一部であったので,自社のデータベースから情報が流出したと判断して上司に報告した。B氏は上司からの指示を受けて,Webサイトのサービスを停止し,情報が流出した原因と流出した情報の範囲を特定することにした。
〔情報セキュリティ事故の原因と流出した情報の範囲〕
B氏の調査の結果,WebアプリにSQLインジェクションの脆弱性があることが分かった。そのことからB氏は,攻撃者が①インターネット経由でSQLインジェクション攻撃を行い,データベースに登録されているカタログ請求者の情報を不正に取得したと推測した。Webサーバとデータベースではアクセスログを取得しない設定にしていたこともあり,流出した情報の範囲は特定できなかった。そこで,データベースに登録されている全ての情報が流出したことを前提に,A社では,データベースに登録されている全てのカタログ請求者に情報の流出について連絡するとともに,対策を講じることにした。
〔情報セキュリティ事故を踏まえたシステム面での対策〕
B氏は,今回の情報セキュリティ事故を踏まえたシステム面での対策案を,表1のようにまとめた。
設問1 本文中の下線①について,この攻撃の説明として適切な答えを,解答群の中から選べ。
解答群
設問2 表1中の [ ] に入れる対策として最も適切な答えを,解答群の中から選べ。
aに関する解答群
bに関する解答群
cに関する解答群
設問3 B氏は上司から,表1にまとめた対策案だけで十分なのか検討せよとの指示を受けた。そこで,社外のセキュリティコンサルタント会社に相談したところ, “Webアプリに脆弱性がないか調査をした方がよい” と助言され,Webアプリの一部について脆弱性の調査を依頼した。その結果,クロスサイトスクリプティングの脆弱性が存在することが判明した。また, “Webアプリの他の部分にも脆弱性があることが疑われるので,Webアプリ全体の調査を行うとともに,新たな対策を講じた方がよい” と助言された。新たな対策として適切な答えを,解答群の中から選べ。
解答群
自動車の販売代理店であるA社は,Webサイトで自動車のカタログ請求を受け付けている。Webサイトは,Webアプリケーションソフト(以下,Webアプリという)が稼働するWebサーバと,データベースが稼働するデータベースサーバ(以下,DBサーバという)で構成されている。WebサーバはA社のDMZに設置され,DBサーバはA社の社内LANに接続されている。Webサイトの管理はB氏が,A社の社内LANに接続されている保守用PCからアクセスして行っている。カタログ請求者は,Webブラウザからインターネット経由でHTTP over TLSによってWebサイトにアクセスする。
〔カタログ請求者の情報の登録〕
A社では,次の目的で,カタログ請求者の情報を保持し,利用することの同意を,カタログ請求者から得ている。
・情報提供や購入支援を行う。
・カタログ請求者が別のカタログを請求したいときなどに,登録した電子メールアドレスとパスワードを使用してログインできるようにする。
同意が得られたときは,氏名,住所,電話番号,電子メールアドレス,パスワード,購入予定時期,購入予算,希望車種などの情報を,Webアプリに入力してもらい,データベースに登録している。パスワードはハッシュ化して,それ以外の情報は平文で,データベースに格納している。A社では,カタログ請求者から要求があったときにだけ,データベースからそのカタログ請求者の情報を消去する運用としている。
〔カタログ請求者への対応〕
A社では,カタログ請求者へのカタログ送付後の購入支援を,データベースに登録されている情報を基に,電子メールと電話で行っている。
〔情報セキュリティ事故の発生〕
ある日,A社の社員から, “A社のカタログ請求者一覧と称する情報が,インターネットの掲示板に公開されている” とB氏に連絡があった。公開されている情報をB氏が確認したところ,データベースに登録されている情報の一部であったので,自社のデータベースから情報が流出したと判断して上司に報告した。B氏は上司からの指示を受けて,Webサイトのサービスを停止し,情報が流出した原因と流出した情報の範囲を特定することにした。
〔情報セキュリティ事故の原因と流出した情報の範囲〕
B氏の調査の結果,WebアプリにSQLインジェクションの脆弱性があることが分かった。そのことからB氏は,攻撃者が①インターネット経由でSQLインジェクション攻撃を行い,データベースに登録されているカタログ請求者の情報を不正に取得したと推測した。Webサーバとデータベースではアクセスログを取得しない設定にしていたこともあり,流出した情報の範囲は特定できなかった。そこで,データベースに登録されている全ての情報が流出したことを前提に,A社では,データベースに登録されている全てのカタログ請求者に情報の流出について連絡するとともに,対策を講じることにした。
〔情報セキュリティ事故を踏まえたシステム面での対策〕
B氏は,今回の情報セキュリティ事故を踏まえたシステム面での対策案を,表1のようにまとめた。
| 目的 | 対策 |
| SQLインジェクション攻撃からの防御 |
・SQL文の組立てはプレースホルダで実装する。 ・[ a ] |
| 情報流出リスクの低減 | ・[ b ] |
| 情報流出の原因と流出した情報の範囲の特定 | [ c ] |
設問1 本文中の下線①について,この攻撃の説明として適切な答えを,解答群の中から選べ。
解答群
| ア | 攻撃者が,DNSに登録されているドメインの情報をインターネット経由で外部から改ざんすることによって,カタログ請求者を攻撃者のWebサイトに誘導し,カタログ請求者のWebブラウザで不正スクリプトを実行させる。 |
|---|---|
| イ | 攻撃者が,インターネット経由でDBサーバに不正ログインする。 |
| ウ | 攻撃者が,インターネット経由でWebアプリに,データベース操作の命令文を入力することによって,データベースを不正に操作する。 |
| エ | 攻撃者が,インターネット経由で送信されている情報を盗聴する。 |
設問2 表1中の [ ] に入れる対策として最も適切な答えを,解答群の中から選べ。
aに関する解答群
| ア | Webアプリへの入力パラメタには,Webサーバ内のファイル名を直接指定できないようにする。 |
|---|---|
| イ | Webサーバのメモリを直接操作するような命令を記述できないプログラム言語を用いて,Webアプリを作り直す。 |
| ウ | Webページに出力する要素に対して,エスケープ処理を施す。 |
| エ | データベース操作の命令文の組立てを文字列連結によって行う場合は,連結する文字列にエスケープ処理を施す。 |
bに関する解答群
| ア | カタログ請求者の情報の適切な保管期間を定め,カタログ請求者の同意を得た上で,保管期間を過ぎた時点でデータベースから消去する。 |
|---|---|
| イ | カタログ請求者の情報を,カタログ送付後に直ちに,データベースから消去する。 |
| ウ | カタログ請求者へ送付する電子メールにディジタル署名を付ける。 |
| エ | データベースに登録されている情報を定期的にバックアップする。 |
cに関する解答群
| ア | Webサイトの管理に使用する保守用PCは,必要なときだけ起動する。 |
|---|---|
| イ | WebサーバとDBサーバにインストールするミドルウェアは,必要最低限にする。 |
| ウ | WebサーバとDBサーバのハードディスクのデフラグメンテーションを,定期的に行う。 |
| エ | データベースへのアクセスログを取得する。 |
設問3 B氏は上司から,表1にまとめた対策案だけで十分なのか検討せよとの指示を受けた。そこで,社外のセキュリティコンサルタント会社に相談したところ, “Webアプリに脆弱性がないか調査をした方がよい” と助言され,Webアプリの一部について脆弱性の調査を依頼した。その結果,クロスサイトスクリプティングの脆弱性が存在することが判明した。また, “Webアプリの他の部分にも脆弱性があることが疑われるので,Webアプリ全体の調査を行うとともに,新たな対策を講じた方がよい” と助言された。新たな対策として適切な答えを,解答群の中から選べ。
解答群
| ア | DBサーバを,Webサーバと同じく,DMZに設置する。 |
|---|---|
| イ | 不正な通信を遮断するために,WAF(Web Application Firewall)を導入する。 |
| ウ | Webサーバを増設して冗長化した構成にする。 |
| エ | 保守用PCのログインパスワードには英数字及び記号を使用し,推測が難しい複雑なものを設定する。 |
答え : 設問1 ウ 設問2 (a)エ (b)ア (c)エ 設問3 イ
分野 : テクノロジ系 › 技術要素 › セキュリティ › 情報セキュリティ管理
分野 : テクノロジ系 › 技術要素 › セキュリティ › 情報セキュリティ管理
問2
プロセスのスケジューリングに関する次の記述を読んで,設問1,2に答えよ。
OSの機能の一つに,プロセスのCPUへの割当てがある。プロセスをCPUに割り当てる順序(以下,実行順序という)を決定する方式として,本問で示すラウンドロビン方式と優先度順方式を考える。プロセスが実行されるコンピュータのCPUは一つであり,CPUは一度に一つのプロセスしか実行できないものとする。
ラウンドロビン方式では,キューを用いて,複数のプロセスを一定時間(以下,タイムクウォンタムという)を限度にCPUに割り当てて実行する。ラウンドロビン方式でプロセスの実行順序を決定する例を,図1に示す。
(1) プロセスを生成順にキューの末尾に登録する。
(2) プロセスの実行の中断などによって,実行中のプロセスがない場合,キューの先頭からプロセスを一つ取り出してCPUに割り当て,実行を開始する。
(3) プロセスの実行が終了すると,そのプロセスを消滅させる。
(4) プロセスの実行中にタイムクウォンタムが経過したら,実行を中断して,キューの末尾に登録する。
(5) 実行中のプロセスが入出力を開始したら,実行を中断する。
(6) プロセスの入出力が完了したら,キューの末尾に登録する。
キューに登録されているプロセスの状態を “実行可能” ,実行中のプロセスの状態を “実行” ,入出力の完了を待っているプロセスの状態を “待ち” と呼ぶ。ここで,実行の中断はタイムクウォンタムの経過と入出力の開始だけで行い, “待ち” への遷移は入出力の開始だけで行うものとする。また,OSによるオーバヘッドはないものとする。
設問1 図2に示す処理順序をもつプロセスXを,図1に示すラウンドロビン方式で実行する場合を考える。プロセスXの処理時間及び待ち時間を表1に示す。
表1において,処理時間とは,処理1,処理2及び処理3のそれぞれが実行を開始してから終了するまでに必要なCPUの使用時間である。待ち時間とは,入出力待ち1及び入出力待ち2のそれぞれが入出力を開始してから完了するまでに要する時間であり,その間CPUを使用しない。
タイムクウォンタムが20ミリ秒のとき,プロセスXが生成されてから消滅するまでに,図3に示す①~④の遷移が起こる回数の組合せとして正しい答えを,解答群の中から選べ。

解答群
設問2 次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
優先度順方式では,ラウンドロビン方式と同様にキューを用いて,複数のプロセスをタイムクウォンタムを限度にCPUに割り当てて実行する。この方式では,プロセスには優先度が与えられ,優先度ごとに決められたキューに登録される。優先度順方式でプロセスの実行順序を決定する例を,図4に示す。ここで,優先度は1~5の5段階であり,値の大きい方が優先度は高い。プロセスをキューから取り出すときは,プロセスが登録されているキューの中で,優先度の最も高いキューの先頭からプロセスを取り出す。
この方式では,プロセスの優先度を次のように与える。
(1) プロセスが生成された場合,そのプロセスに優先度3を与える。
(2) プロセスの実行中にタイムクウォンタムが経過して,実行を中断した場合,そのプロセスの現在の優先度に応じて,次のとおり優先度を与える。
・優先度が1のとき,優先度1を与える。
・優先度が2~5のとき,1段階下げた優先度を与える。
(3) プロセスの入出力が完了した場合,そのプロセスに優先度5を与える。
表1に示すプロセスXを,図4に示す優先度順方式で実行する場合を考える。タイムクウォンタムが20ミリ秒のとき,プロセスXが生成されてから消滅するまでの優先度の推移は,[ a ] となる。
図4に示す優先度順方式において, “実行” , “実行可能” 及び “待ち” のプロセスが一つもないとき,表2に示す三つのプロセスA,B,Cが順次生成される場合を考える。
(1) 生成時刻は,プロセスAが生成された時刻からの経過時間である。
(2) 三つのプロセスA,B,Cが全て消滅するまで,他のプロセスが新たに生成されることはなく,OSによるオーバヘッドもない。
(3) 入出力装置は同時に動作が可能であり,同じ時間帯に複数のプロセスが"待ち"になっても,待ち時間は表2に示すとおりで変わらない。複数のプロセスの入出力が同時に完了した場合,入出力を開始してから完了するまでの時間が最も長かったプロセスを先にキューに登録する。
タイムクウォンタムが20ミリ秒のとき,プロセスBの処理1が実行を開始する時刻は,プロセスAの生成時刻から [ b ] ミリ秒後であり,プロセスAの処理1が終了する時刻は,プロセスAの生成時刻から [ c ] ミリ秒後である。
aに関する解答群
b,cに関する解答群
OSの機能の一つに,プロセスのCPUへの割当てがある。プロセスをCPUに割り当てる順序(以下,実行順序という)を決定する方式として,本問で示すラウンドロビン方式と優先度順方式を考える。プロセスが実行されるコンピュータのCPUは一つであり,CPUは一度に一つのプロセスしか実行できないものとする。
ラウンドロビン方式では,キューを用いて,複数のプロセスを一定時間(以下,タイムクウォンタムという)を限度にCPUに割り当てて実行する。ラウンドロビン方式でプロセスの実行順序を決定する例を,図1に示す。

(1) プロセスを生成順にキューの末尾に登録する。
(2) プロセスの実行の中断などによって,実行中のプロセスがない場合,キューの先頭からプロセスを一つ取り出してCPUに割り当て,実行を開始する。
(3) プロセスの実行が終了すると,そのプロセスを消滅させる。
(4) プロセスの実行中にタイムクウォンタムが経過したら,実行を中断して,キューの末尾に登録する。
(5) 実行中のプロセスが入出力を開始したら,実行を中断する。
(6) プロセスの入出力が完了したら,キューの末尾に登録する。
キューに登録されているプロセスの状態を “実行可能” ,実行中のプロセスの状態を “実行” ,入出力の完了を待っているプロセスの状態を “待ち” と呼ぶ。ここで,実行の中断はタイムクウォンタムの経過と入出力の開始だけで行い, “待ち” への遷移は入出力の開始だけで行うものとする。また,OSによるオーバヘッドはないものとする。
設問1 図2に示す処理順序をもつプロセスXを,図1に示すラウンドロビン方式で実行する場合を考える。プロセスXの処理時間及び待ち時間を表1に示す。
表1において,処理時間とは,処理1,処理2及び処理3のそれぞれが実行を開始してから終了するまでに必要なCPUの使用時間である。待ち時間とは,入出力待ち1及び入出力待ち2のそれぞれが入出力を開始してから完了するまでに要する時間であり,その間CPUを使用しない。
タイムクウォンタムが20ミリ秒のとき,プロセスXが生成されてから消滅するまでに,図3に示す①~④の遷移が起こる回数の組合せとして正しい答えを,解答群の中から選べ。
|
処理1(CPUを使用する) ↓ 入出力待ち1(CPUを使用しない) ↓ 処理2(CPUを使用する) ↓ 入出力待ち2(CPUを使用しない) ↓ 処理3(CPUを使用する) |

解答群
| ① | ② | ③ | ④ | |
| ア | 3 | 2 | 2 | 0 |
| イ | 3 | 2 | 2 | 3 |
| ウ | 3 | 2 | 2 | 4 |
| エ | 6 | 2 | 2 | 0 |
| オ | 6 | 2 | 2 | 3 |
| カ | 6 | 2 | 2 | 4 |
設問2 次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
優先度順方式では,ラウンドロビン方式と同様にキューを用いて,複数のプロセスをタイムクウォンタムを限度にCPUに割り当てて実行する。この方式では,プロセスには優先度が与えられ,優先度ごとに決められたキューに登録される。優先度順方式でプロセスの実行順序を決定する例を,図4に示す。ここで,優先度は1~5の5段階であり,値の大きい方が優先度は高い。プロセスをキューから取り出すときは,プロセスが登録されているキューの中で,優先度の最も高いキューの先頭からプロセスを取り出す。

この方式では,プロセスの優先度を次のように与える。
(1) プロセスが生成された場合,そのプロセスに優先度3を与える。
(2) プロセスの実行中にタイムクウォンタムが経過して,実行を中断した場合,そのプロセスの現在の優先度に応じて,次のとおり優先度を与える。
・優先度が1のとき,優先度1を与える。
・優先度が2~5のとき,1段階下げた優先度を与える。
(3) プロセスの入出力が完了した場合,そのプロセスに優先度5を与える。
表1に示すプロセスXを,図4に示す優先度順方式で実行する場合を考える。タイムクウォンタムが20ミリ秒のとき,プロセスXが生成されてから消滅するまでの優先度の推移は,[ a ] となる。
図4に示す優先度順方式において, “実行” , “実行可能” 及び “待ち” のプロセスが一つもないとき,表2に示す三つのプロセスA,B,Cが順次生成される場合を考える。
(1) 生成時刻は,プロセスAが生成された時刻からの経過時間である。
(2) 三つのプロセスA,B,Cが全て消滅するまで,他のプロセスが新たに生成されることはなく,OSによるオーバヘッドもない。
(3) 入出力装置は同時に動作が可能であり,同じ時間帯に複数のプロセスが"待ち"になっても,待ち時間は表2に示すとおりで変わらない。複数のプロセスの入出力が同時に完了した場合,入出力を開始してから完了するまでの時間が最も長かったプロセスを先にキューに登録する。

タイムクウォンタムが20ミリ秒のとき,プロセスBの処理1が実行を開始する時刻は,プロセスAの生成時刻から [ b ] ミリ秒後であり,プロセスAの処理1が終了する時刻は,プロセスAの生成時刻から [ c ] ミリ秒後である。
aに関する解答群
| ア | 3→2→5→4→3→2 |
|---|---|
| イ | 3→2→5→4→3→5 |
| ウ | 3→3→5→3→1 |
| エ | 3→4→5→4→3→5 |
b,cに関する解答群
| ア | 10 |
|---|---|
| イ | 20 |
| ウ | 30 |
| エ | 40 |
| オ | 50 |
| カ | 60 |
| キ | 70 |
| ク | 80 |
| ケ | 90 |
答え : 設問1 オ 設問2 (a)イ (b)イ (c)キ
分野 : テクノロジ系 › コンピュータシステム › ソフトウェア › オペレーティングシステム
分野 : テクノロジ系 › コンピュータシステム › ソフトウェア › オペレーティングシステム
問3
コンサートチケット販売サイトの関係データベースの設計及び運用に関する次の記述を読んで,設問1~4に答えよ。
D社は,Web上で会員制のコンサートチケット販売サイトを運営している。販売サイトのシステムは販売サブシステムと席予約サブシステムから構成され,販売サブシステムで購入申込み及び決済を処理し,席予約サブシステムで座席指定を処理する。本問では,販売サブシステムだけを取り扱う。
販売サブシステムで利用しているデータベースの表構成とデータの格納例を図1に示す。下線付きの項目は主キーである。
〔コンサートの席の説明〕
(1) コンサートの席種には,S,A及びBがある。
(2) 各席種の価格(常に有料)及び発売席数は,コンサートごとに異なる。
〔販売サブシステムの説明〕
(1) 販売サブシステムは取り扱うコンサートの席種ごとの販売可能な席数を管理する。
(2) 会員が購入申込みを行うと,販売サブシステムは一意な販売IDを生成して販売表にレコードを追加する。
(3) 会員が支払手続を行うと,決済処理として販売サブシステムは販売IDを主キーとするレコードを決済表に追加する。ここで,決済日はレコードを追加した日とする。
(4) 販売サブシステムは決済期限日の翌日に,決済期限日を過ぎた販売表中のレコードと販売IDが同じレコードが決済表にない場合,その購入申込みは取り消されたものとして,バッチ処理によって決済表に当該販売IDを主キーとするレコードを追加する。このレコードの決済日はNULLで,決済額は-1とする。
(5) バッチ処理は,毎夜0~4時の販売サイトのシステムのメンテナンス時間帯に行う。
(6) 会員が購入を申し込んだ席数が,その時点で販売可能な席数を上回る場合には,販売サブシステムは"販売終了"と表示し,この購入申込みを受け付けない。
設問1 データベースのデータの整合性を保つためにDDLで制約をつけている。図1の表構成において,列名とその列に指定する制約の正しい組合せを,解答群の中から選べ。
解答群
設問2 “販売終了” の表示判定を行うために,販売できない席数を求める必要がある。販売できない席数を出力するSQL文の [ ] に入れる正しい答えを,解答群の中から選べ。ここで,コンサートIDはC00001,席種はSである。a1とa2に入れる答えは,aに関する解答群の中から組合せとして正しいものを選ぶものとする。
SELECT SUM(販売表.席数)
FROM 販売表 [ a1 ] 決済表 ON 販売表.販売ID = 決済表.販売ID
WHERE 販売表.コンサートID = 'C00001'
AND 販売表.席種 = 'S'
AND [ a2 ]
aに関する解答群
設問3 決済期限日まで残り3日となっても支払手続が行われていない購入申込みがある会員に,支払手続を促す電子メールを送る。この会員の氏名,電子メールアドレス及び販売IDを出力するSQL文の [ ] に入れる正しい答えを,解答群の中から選べ。NOWはSQLを実行した日の日付を返すユーザ定義関数であり,DATEDIFFはともに日付である二つの引数を受け取って第1引数から第2引数を引いた日数を整数値で返すユーザ定義関数である。
SELECT 会員表.氏名, 会員表.電子メールアドレス, 販売表.販売ID
[ b ]
bに関する解答群
設問4 会員への優待サービスのために,ポイント制度を導入する。そのために修正した会員表,決済表及び販売表の表構成を図2に示す。ポイント制度を導入するときに追加した列は0で初期化する。
会員表
決済表
販売表
会員は購入申込み時に,1ポイント1円としてポイント残高の範囲で,販売額に充当するポイント数を指定する。販売サブシステムは,指定したポイント数を使用ポイントに格納し,ポイント残高から減じる。会員は,販売額から使用ポイントを差し引いた金額を決済額として支払う。販売額の全額にポイントを充当した場合は,販売サブシステムは購入申込み時に支払手続が行われたものとし,決済処理として,決済表にレコードを追加する。
ポイント制度の導入時に追加したバッチ処理によって,前日に決済処理された販売IDごとに,その決済額が20,000円以上,10,000円以上20,000円未満,10,000円未満の場合に,それぞれ3%,2%,1%のポイントを付与する。付与したポイント数は,付与ポイントに格納し,ポイント残高に加える。
決済表の付与ポイントを更新する正しいSQL文を,解答群の中から選べ。NOW,DATEDIFFは設問3で使用したユーザ定義関数と同じであり,FLOORは引数の値以下で最大の整数値を返す関数である。
解答群
D社は,Web上で会員制のコンサートチケット販売サイトを運営している。販売サイトのシステムは販売サブシステムと席予約サブシステムから構成され,販売サブシステムで購入申込み及び決済を処理し,席予約サブシステムで座席指定を処理する。本問では,販売サブシステムだけを取り扱う。
販売サブシステムで利用しているデータベースの表構成とデータの格納例を図1に示す。下線付きの項目は主キーである。

〔コンサートの席の説明〕
(1) コンサートの席種には,S,A及びBがある。
(2) 各席種の価格(常に有料)及び発売席数は,コンサートごとに異なる。
〔販売サブシステムの説明〕
(1) 販売サブシステムは取り扱うコンサートの席種ごとの販売可能な席数を管理する。
(2) 会員が購入申込みを行うと,販売サブシステムは一意な販売IDを生成して販売表にレコードを追加する。
(3) 会員が支払手続を行うと,決済処理として販売サブシステムは販売IDを主キーとするレコードを決済表に追加する。ここで,決済日はレコードを追加した日とする。
(4) 販売サブシステムは決済期限日の翌日に,決済期限日を過ぎた販売表中のレコードと販売IDが同じレコードが決済表にない場合,その購入申込みは取り消されたものとして,バッチ処理によって決済表に当該販売IDを主キーとするレコードを追加する。このレコードの決済日はNULLで,決済額は-1とする。
(5) バッチ処理は,毎夜0~4時の販売サイトのシステムのメンテナンス時間帯に行う。
(6) 会員が購入を申し込んだ席数が,その時点で販売可能な席数を上回る場合には,販売サブシステムは"販売終了"と表示し,この購入申込みを受け付けない。
設問1 データベースのデータの整合性を保つためにDDLで制約をつけている。図1の表構成において,列名とその列に指定する制約の正しい組合せを,解答群の中から選べ。
解答群
| 表名.列名 | 制約 | |
| ア | 決済表.決済額 | 検査制約 |
| イ | 決済表.決済日 | 非NULL制約 |
| ウ | 商品詳細表.席種 | 参照制約 |
| エ | 販売表.会員ID | 一意性制約 |
設問2 “販売終了” の表示判定を行うために,販売できない席数を求める必要がある。販売できない席数を出力するSQL文の [ ] に入れる正しい答えを,解答群の中から選べ。ここで,コンサートIDはC00001,席種はSである。a1とa2に入れる答えは,aに関する解答群の中から組合せとして正しいものを選ぶものとする。
SELECT SUM(販売表.席数)
FROM 販売表 [ a1 ] 決済表 ON 販売表.販売ID = 決済表.販売ID
WHERE 販売表.コンサートID = 'C00001'
AND 販売表.席種 = 'S'
AND [ a2 ]
aに関する解答群
| a1 | a2 | |
| ア | INNER JOIN | 決済表.決済額 = -1 |
| イ | INNER JOIN | 決済表.決済額 >= 0 |
| ウ | LEFT OUTER JOIN | (決済表.決済額 IS NULL OR 決済表.決済額 = -1) |
| エ | LEFT OUTER JOIN | (決済表.決済額 IS NULL OR 決済表.決済額 >= 0) |
| オ | RIGHT OUTER JOIN | (決済表.決済額 IS NULL OR 決済表.決済額 = -1) |
| カ | RIGHT OUTER JOIN | (決済表.決済額 IS NULL OR 決済表.決済額 >= 0) |
設問3 決済期限日まで残り3日となっても支払手続が行われていない購入申込みがある会員に,支払手続を促す電子メールを送る。この会員の氏名,電子メールアドレス及び販売IDを出力するSQL文の [ ] に入れる正しい答えを,解答群の中から選べ。NOWはSQLを実行した日の日付を返すユーザ定義関数であり,DATEDIFFはともに日付である二つの引数を受け取って第1引数から第2引数を引いた日数を整数値で返すユーザ定義関数である。
SELECT 会員表.氏名, 会員表.電子メールアドレス, 販売表.販売ID
[ b ]
bに関する解答群
| ア | FROM 会員表,販売表 WHERE DATEDIFF(販売表.決済期限日, NOW()) = 3 AND 販売表.会員ID = 会員表.会員ID AND 販売表.販売ID NOT IN (SELECT 販売ID FROM 決済表) |
|---|---|
| イ | FROM 会員表,販売表 WHERE DATEDIFF(販売表.決済期限日, NOW()) = 3 AND 販売表.会員ID = 会員表.会員ID AND 販売表.販売ID IN (SELECT 販売ID FROM 決済表 WHERE 決済額 >= 0) |
| ウ | FROM 会員表,販売表,決済表 WHERE DATEDIFF(販売表.決済期限日, NOW()) = 3 AND 販売表.会員ID = 会員表.会員ID AND 販売表.販売ID = 決済表.販売ID |
| エ | FROM 会員表,販売表,決済表 WHERE DATEDIFF(販売表.決済期限日, NOW()) = 3 AND 販売表.会員ID = 会員表.会員ID AND 販売表.販売ID = 決済表.販売ID AND 決済表.決済額 <> -1 |
設問4 会員への優待サービスのために,ポイント制度を導入する。そのために修正した会員表,決済表及び販売表の表構成を図2に示す。ポイント制度を導入するときに追加した列は0で初期化する。
会員表
| 会員ID | 氏名 | 電子メールアドレス | ポイント残高 |
| 販売ID | 決済日 | 決済額 | 付与ポイント |
| 販売ID | 会員ID | コンサートID | 席種 | 席数 | 販売日 | 販売額 | 決済期限日 | 使用ポイント |
図2 修正した会員表,決済表及び販売表の表構成
会員は購入申込み時に,1ポイント1円としてポイント残高の範囲で,販売額に充当するポイント数を指定する。販売サブシステムは,指定したポイント数を使用ポイントに格納し,ポイント残高から減じる。会員は,販売額から使用ポイントを差し引いた金額を決済額として支払う。販売額の全額にポイントを充当した場合は,販売サブシステムは購入申込み時に支払手続が行われたものとし,決済処理として,決済表にレコードを追加する。
ポイント制度の導入時に追加したバッチ処理によって,前日に決済処理された販売IDごとに,その決済額が20,000円以上,10,000円以上20,000円未満,10,000円未満の場合に,それぞれ3%,2%,1%のポイントを付与する。付与したポイント数は,付与ポイントに格納し,ポイント残高に加える。
決済表の付与ポイントを更新する正しいSQL文を,解答群の中から選べ。NOW,DATEDIFFは設問3で使用したユーザ定義関数と同じであり,FLOORは引数の値以下で最大の整数値を返す関数である。
解答群
| ア | INSERT INTO 決済表( 付与ポイント ) SELECT IF 決済額 >= 20000 THEN FLOOR(決済額 * 0.03) ELSEIF 決済額 >= 10000 THEN FLOOR(決済額 * 0.02) ELSE FLOOR(決済額 * 0.01) END WHERE DATEDIFF(NOW(), 決済日) = 1 |
|---|---|
| イ | UPDATE 決済表 SET 付与ポイント = ( CASE 決済額 >= 20000 THEN FLOOR(決済額 * 0.03) WHEN 決済額 >= 10000 THEN FLOOR(決済額 * 0.02) ELSE FLOOR(決済額 * 0.01) END ) WHERE DATEDIFF(NOW(), 決済日) = 1 |
| ウ | UPDATE 決済表 SET 付与ポイント = ( CASE WHEN 決済額 >= 20000 THEN FLOOR(決済額 * 0.03) WHEN 決済額 >= 10000 THEN FLOOR(決済額 * 0.02) ELSE FLOOR(決済額 * 0.01) END ) WHERE DATEDIFF(NOW(), 決済日) = 1 |
| エ | UPDATE 決済表 SET 付与ポイント = ( IF 決済額 >= 20000 THEN FLOOR(決済額 * 0.03) ELSEIF 決済額 >= 10000 THEN FLOOR(決済額 * 0.02) ELSE FLOOR(決済額 * 0.01) END ) WHERE DATEDIFF(NOW(), 決済日) = 1 |
答え : 設問1 ア 設問2 (a)エ 設問3 (b)ア 設問4 ウ
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
分野 : テクノロジ系 › 技術要素 › データベース › データ操作
問4
ネットワークの障害分析と対策に関する次の記述を読んで,設問に答えよ。
G社は,ソフトウェア開発会社である。G社のネットワーク構成を図1に示す。
(1) 図1中の各セグメントには,図に記された機器を含む複数の機器が配置されており,各機器はセグメントごとに用意されたスイッチにLANケーブルで接続されている。
(2) 社員は,事務作業を事務セグメント内のPCを使用して行い,ソフトウェア開発作業を開発プロジェクトごとに設けられた開発セグメント内のPCを使用して行う。現在,開発セグメントは,開発セグメント1から開発セグメント10までである。
(3) 事務セグメント内のPCは,リモートデスクトップ(手元のPCをクライアントとして,他のPCをGUIで遠隔操作する技術であり,操作される側がサーバになる)のクライアント機能(以下,リモートデスクトップ機能という)又はSSHを用いて,開発セグメント内のPCを遠隔操作できる。
(4) 開発セグメント内のPCは,事務セグメント内のファイルサーバにアクセスできる。
(5) 事務セグメント内のPCからインターネット上に公開されたWebサイトを閲覧する際には,DMZセグメント内のプロキシサーバを経由する。
(6) ルータBは,内蔵のパケットフィルタ型のファイアウォール機能によってセグメント間の通信の可否を制御しており,上記(3)~(5)に必要な通信だけを許可している。ルータBのファイアウォール機能は,送信元ネットワークから,宛先ネットワークの指定したポート番号への通信の可否を制御するものであって,許可した通信の応答パケットの通過も許可する。
〔障害の発生〕
ある日, “事務セグメント内のPC B-1から,リモートデスクトップ機能を用いて,開発セグメント1内のPC 1-1を遠隔操作しようとしたが,接続できなかった” と報告があったので,障害箇所を特定するために原因の切分けを行った。
初めに,事務セグメント内のPC B-2から,PC 1-1にリモートデスクトップ機能を用いて接続を試みたが,失敗した。
次に,PC B-1からSSHを用いてログインした開発セグメント1内のPC 1-2でpingコマンドを実行し,PC 1-1から応答が返ってくることを確認した。
これらのことから,障害の原因として [ a ] や [ b ] の不具合が考えられたので,これらに不具合があるかどうかを調査して,原因を特定した。
〔セグメントの追加〕
新しい開発プロジェクトの立上げに伴い,開発セグメント11をネットワークに追加した。開発セグメント11は,開発セグメント1~10と同様にスイッチ11でルータBと接続する。ルータBのファイアウォールに追加した設定を表1に示す。ところが,表1の設定には誤りがあり,開発セグメント11に接続されたPCに関して,[ c ] ことが分かった。
事務セグメントと開発セグメント11のネットワークアドレスは,表2のとおりである。
〔障害発生の予防〕
現在のネットワーク構成では,社内のセグメント間の全ての通信がルータBを経由するので,ルータBの過負荷によって社内ネットワークに障害が発生することが懸念される。そこで,ルータCを増設することによって負荷を分散させることとし,増設後の構成として構成案1と構成案2の二つを検討した。
構成案1及び構成案2における,ルータとスイッチの接続形態を図2に示す。
構成案1では,セグメントごとにルータBかルータCのどちらかのルータを使用するように設定することによって,負荷を分散させる。このとき,ルータの冗長化技術を用いて,一方のルータに障害が発生したときは,もう一方のルータが使用されるように構成する。
構成案2では,ルータBとルータCの役割を分けることによって,負荷を分散させる。ルータCに,事務セグメントと開発セグメントの間の通信を中継する役割をもたせる。
G社では [ d ] ことや [ e ] ことを重視して,構成案1を採用することにした。
設問 本文中の [ ] に入れる適切な答えを,解答群の中から選べ。a,bおよびd,eについては,それぞれ記号が五十音順に並ぶように選べ。(一部改題)
a,bに関する解答群
cに関する解答群
d,eに関する解答群
G社は,ソフトウェア開発会社である。G社のネットワーク構成を図1に示す。

(1) 図1中の各セグメントには,図に記された機器を含む複数の機器が配置されており,各機器はセグメントごとに用意されたスイッチにLANケーブルで接続されている。
(2) 社員は,事務作業を事務セグメント内のPCを使用して行い,ソフトウェア開発作業を開発プロジェクトごとに設けられた開発セグメント内のPCを使用して行う。現在,開発セグメントは,開発セグメント1から開発セグメント10までである。
(3) 事務セグメント内のPCは,リモートデスクトップ(手元のPCをクライアントとして,他のPCをGUIで遠隔操作する技術であり,操作される側がサーバになる)のクライアント機能(以下,リモートデスクトップ機能という)又はSSHを用いて,開発セグメント内のPCを遠隔操作できる。
(4) 開発セグメント内のPCは,事務セグメント内のファイルサーバにアクセスできる。
(5) 事務セグメント内のPCからインターネット上に公開されたWebサイトを閲覧する際には,DMZセグメント内のプロキシサーバを経由する。
(6) ルータBは,内蔵のパケットフィルタ型のファイアウォール機能によってセグメント間の通信の可否を制御しており,上記(3)~(5)に必要な通信だけを許可している。ルータBのファイアウォール機能は,送信元ネットワークから,宛先ネットワークの指定したポート番号への通信の可否を制御するものであって,許可した通信の応答パケットの通過も許可する。
〔障害の発生〕
ある日, “事務セグメント内のPC B-1から,リモートデスクトップ機能を用いて,開発セグメント1内のPC 1-1を遠隔操作しようとしたが,接続できなかった” と報告があったので,障害箇所を特定するために原因の切分けを行った。
初めに,事務セグメント内のPC B-2から,PC 1-1にリモートデスクトップ機能を用いて接続を試みたが,失敗した。
次に,PC B-1からSSHを用いてログインした開発セグメント1内のPC 1-2でpingコマンドを実行し,PC 1-1から応答が返ってくることを確認した。
これらのことから,障害の原因として [ a ] や [ b ] の不具合が考えられたので,これらに不具合があるかどうかを調査して,原因を特定した。
〔セグメントの追加〕
新しい開発プロジェクトの立上げに伴い,開発セグメント11をネットワークに追加した。開発セグメント11は,開発セグメント1~10と同様にスイッチ11でルータBと接続する。ルータBのファイアウォールに追加した設定を表1に示す。ところが,表1の設定には誤りがあり,開発セグメント11に接続されたPCに関して,[ c ] ことが分かった。
事務セグメントと開発セグメント11のネットワークアドレスは,表2のとおりである。

〔障害発生の予防〕
現在のネットワーク構成では,社内のセグメント間の全ての通信がルータBを経由するので,ルータBの過負荷によって社内ネットワークに障害が発生することが懸念される。そこで,ルータCを増設することによって負荷を分散させることとし,増設後の構成として構成案1と構成案2の二つを検討した。
構成案1及び構成案2における,ルータとスイッチの接続形態を図2に示す。

構成案1では,セグメントごとにルータBかルータCのどちらかのルータを使用するように設定することによって,負荷を分散させる。このとき,ルータの冗長化技術を用いて,一方のルータに障害が発生したときは,もう一方のルータが使用されるように構成する。
構成案2では,ルータBとルータCの役割を分けることによって,負荷を分散させる。ルータCに,事務セグメントと開発セグメントの間の通信を中継する役割をもたせる。
G社では [ d ] ことや [ e ] ことを重視して,構成案1を採用することにした。
設問 本文中の [ ] に入れる適切な答えを,解答群の中から選べ。a,bおよびd,eについては,それぞれ記号が五十音順に並ぶように選べ。(一部改題)
a,bに関する解答群
| ア | PC 1-1のLANポート |
|---|---|
| イ | PC 1-1のソフトウェア |
| ウ | スイッチ1 |
| エ | スイッチB |
| オ | 設定を含むルータBのソフトウェア |
| カ | ルータBのLANポート |
cに関する解答群
| ア | 事務セグメント内のPCからSSHを用いて当該PCを遠隔操作できない |
|---|---|
| イ | 事務セグメント内のPCからリモートデスクトップ機能を用いて当該PCを遠隔操作できない |
| ウ | 当該PCから事務セグメント内のファイルサーバにアクセスできない |
d,eに関する解答群
| ア | 可用性を高められる |
|---|---|
| イ | 機密性を高められる |
| ウ | 障害発生時に原因を特定しやすい |
| エ | セグメント間で通信する際に経由する機器が少なくなる |
| オ | ルータB,Cとスイッチ間をつなぐLANケーブルの本数が少なくて済む |
| カ | ルータBとルータCの負荷に大きな差が生じないように調整できる |
答え : 設問1 (a)イ (b)オ (c)ウ (d)ア (e)カ
分野 : テクノロジ系 › 技術要素 › ネットワーク › ネットワーク管理
分野 : テクノロジ系 › 技術要素 › ネットワーク › ネットワーク管理
問5
購買管理システムで行う処理に関する次の記述を読んで,設問1~3に答えよ。
自動車用アクセサリ類を製造しているK社では,購買部門が部品を発注する際に利用する購買管理システムを構築中である。システム部のC君は,購買ファイル更新可否チェック処理の開発を担当することになった。
購買ファイル更新可否チェック処理においては,部品の購入依頼情報を格納したファイル(以下,依頼ファイルという)中の各レコードについて,購買ファイルを更新できるかどうかをチェックする。更新することができないレコードは,更新対象外依頼ファイルに出力する。更新することができるレコードは,更新用依頼ファイルに出力し,一連の処理として実行する購買ファイル更新処理に引き渡す。ここで,依頼ファイルは,1日に1回,バッチ処理時間帯に製造部門から受け取る。依頼ファイルには,過去に受け取った購入依頼情報のレコードは含まれない。購買ファイル更新可否チェック処理の位置付けを,図1に示す。
依頼ファイル及び購買ファイルのレコードの項目を表1に,その項目の説明を表2に示す。更新用依頼ファイル及び更新対象外依頼ファイルのレコードの項目は,依頼ファイルのレコードの項目と同じである。
(1) 依頼種別には,依頼者が購入依頼情報を新規に作成するときは “登録” が,変更するときは “変更” が,削除するときは “削除” が設定される。
(2) 購買ステータスには,購買部門が発注先に見積りを依頼する前は “購買受付” が,見積りを依頼して発注するまでの間は “見積り中” が,発注して納品されるまでの間は “発注済” が,納品後は “納品済” が設定される。
〔購買ファイル更新可否チェック処理の概要〕
(1) 依頼ファイルのレコードの,依頼IDと依頼種別を除く項目の内容は,正しいものとする。
(2) 依頼IDの昇順に整列された依頼ファイルのレコードを先頭から順に読み込んで,全てのレコードについて次の処理を行う。
①購買ファイルに同じ依頼IDをもつレコードがない場合
依頼ファイルから読み込んだレコードの依頼種別が “登録” であれば,そのレコードを対象レコード出力処理を使って更新用依頼ファイルに出力する。
②購買ファイルに同じ依頼IDをもつレコードがある場合
購買ステータスが “購買受付” 又は “見積り中” で,依頼ファイルから読み込んだレコードの依頼種別が “変更” 又は “削除” であれば,そのレコードを対象レコード出力処理を使って更新用依頼ファイルに出力する。
③①と②の処理で更新用依頼ファイルに出力しなかったレコードを,対象外レコード出力処理を使って更新対象外依頼ファイルに出力する。
購買ファイル更新可否チェック処理の流れ図を,図2に示す。
設問1 図2中の [ ] に入れる適切な答えを,解答群の中から選べ。ここで,a1とa2に入れる答えは,aに関する解答群の中から組合せとして適切なものを選ぶものとする。
aに関する解答群
設問2 購買ファイル更新可否チェック処理のテストケースを設計する。テストケースに漏れがないように購買ファイル更新可否チェック処理で出力するファイルに着目して,決定表を作成した。出力するファイルの決定表を表3に示す。表3中の [ ] に入れる適切な答えを,解答群の中から選べ。

b,cに関する解答群
設問3 次の記述中の [ ] に入れる適切な答えを,解答群の中から選べ。
購買ファイル更新可否チェック処理のテストのためにテスト用レコードを作成した。購買ファイルには表4に示すテスト用レコードを,依頼ファイルには表5に示すテスト用レコードを,事前に格納しておいた。
これらのテスト用レコードを用いて,購買ファイル更新可否チェック処理を実行した場合,図2の破線で囲んだ処理のうち,対象外レコード出力処理では依頼IDが [ d ] のレコードが処理され,対象レコード出力処理では依頼IDが [ e ] のレコードが処理される。
dに関する解答群
eに関する解答群
自動車用アクセサリ類を製造しているK社では,購買部門が部品を発注する際に利用する購買管理システムを構築中である。システム部のC君は,購買ファイル更新可否チェック処理の開発を担当することになった。
購買ファイル更新可否チェック処理においては,部品の購入依頼情報を格納したファイル(以下,依頼ファイルという)中の各レコードについて,購買ファイルを更新できるかどうかをチェックする。更新することができないレコードは,更新対象外依頼ファイルに出力する。更新することができるレコードは,更新用依頼ファイルに出力し,一連の処理として実行する購買ファイル更新処理に引き渡す。ここで,依頼ファイルは,1日に1回,バッチ処理時間帯に製造部門から受け取る。依頼ファイルには,過去に受け取った購入依頼情報のレコードは含まれない。購買ファイル更新可否チェック処理の位置付けを,図1に示す。

依頼ファイル及び購買ファイルのレコードの項目を表1に,その項目の説明を表2に示す。更新用依頼ファイル及び更新対象外依頼ファイルのレコードの項目は,依頼ファイルのレコードの項目と同じである。


(1) 依頼種別には,依頼者が購入依頼情報を新規に作成するときは “登録” が,変更するときは “変更” が,削除するときは “削除” が設定される。
(2) 購買ステータスには,購買部門が発注先に見積りを依頼する前は “購買受付” が,見積りを依頼して発注するまでの間は “見積り中” が,発注して納品されるまでの間は “発注済” が,納品後は “納品済” が設定される。
〔購買ファイル更新可否チェック処理の概要〕
(1) 依頼ファイルのレコードの,依頼IDと依頼種別を除く項目の内容は,正しいものとする。
(2) 依頼IDの昇順に整列された依頼ファイルのレコードを先頭から順に読み込んで,全てのレコードについて次の処理を行う。
①購買ファイルに同じ依頼IDをもつレコードがない場合
依頼ファイルから読み込んだレコードの依頼種別が “登録” であれば,そのレコードを対象レコード出力処理を使って更新用依頼ファイルに出力する。
②購買ファイルに同じ依頼IDをもつレコードがある場合
購買ステータスが “購買受付” 又は “見積り中” で,依頼ファイルから読み込んだレコードの依頼種別が “変更” 又は “削除” であれば,そのレコードを対象レコード出力処理を使って更新用依頼ファイルに出力する。
③①と②の処理で更新用依頼ファイルに出力しなかったレコードを,対象外レコード出力処理を使って更新対象外依頼ファイルに出力する。
購買ファイル更新可否チェック処理の流れ図を,図2に示す。

設問1 図2中の [ ] に入れる適切な答えを,解答群の中から選べ。ここで,a1とa2に入れる答えは,aに関する解答群の中から組合せとして適切なものを選ぶものとする。
aに関する解答群
| a1 | a2 | |
| ア | 依頼種別= “登録” | 依頼種別= “削除” |
| イ | 依頼種別= “登録” | 依頼種別≠ “削除” |
| ウ | 依頼種別≠ “登録” | 依頼種別= “削除” |
| エ | 依頼種別≠ “登録” | 依頼種別≠ “削除” |
| オ | 依頼種別= “変更” | 依頼種別= “削除” |
| カ | 依頼種別= “変更” | 依頼種別≠ “削除” |
設問2 購買ファイル更新可否チェック処理のテストケースを設計する。テストケースに漏れがないように購買ファイル更新可否チェック処理で出力するファイルに着目して,決定表を作成した。出力するファイルの決定表を表3に示す。表3中の [ ] に入れる適切な答えを,解答群の中から選べ。

b,cに関する解答群
| ア |
| |||||
|---|---|---|---|---|---|---|
| イ |
| |||||
| ウ |
| |||||
| エ |
| |||||
| オ |
| |||||
| カ |
|
設問3 次の記述中の [ ] に入れる適切な答えを,解答群の中から選べ。
購買ファイル更新可否チェック処理のテストのためにテスト用レコードを作成した。購買ファイルには表4に示すテスト用レコードを,依頼ファイルには表5に示すテスト用レコードを,事前に格納しておいた。

これらのテスト用レコードを用いて,購買ファイル更新可否チェック処理を実行した場合,図2の破線で囲んだ処理のうち,対象外レコード出力処理では依頼IDが [ d ] のレコードが処理され,対象レコード出力処理では依頼IDが [ e ] のレコードが処理される。
dに関する解答群
| ア | 10000003 |
|---|---|
| イ | 10000004 |
| ウ | 10000005 |
| エ | 10000006 |
| オ | 10000007 |
eに関する解答群
| ア | 10000003と10000005 |
|---|---|
| イ | 10000004と10000005 |
| ウ | 10000004と10000006 |
| エ | 10000005と10000008 |
答え : 設問1 (a)ア 設問2 (b)ア (c)オ 設問3 (d)イ (e)ア
分野 : テクノロジ系 › 開発技術 › システム開発技術 › 設計
分野 : テクノロジ系 › 開発技術 › システム開発技術 › 設計
問6
プロジェクトのスケジュール作成に関する次の記述を読んで,設問1,2に答えよ。
W社は,業務効率化を目的として,紙のりん議書を回付して行っている申請承認に関わる業務を電子化するプロジェクト(以下,りん議書電子化プロジェクトという)を立ち上げた。
〔りん議書電子化プロジェクトの概要〕
りん議書電子化プロジェクトでは,紙のりん議書を電子帳票化するシステム(以下,電子帳票システムという)を,W社の情報システム部が新規に開発する。電子帳票化されたりん議書の回付(以下,りん議書回付という)には,クラウドサービスプロバイダが提供している回付業務のクラウドサービス(以下,回付サービスという)を,比較検討の上,導入して利用する。
設問1 次の記述中の に入れる正しい答えを,解答群の中から選べ。
プロジェクトマネージャのQ君は,りん議書電子化プロジェクトのスケジュールを,アローダイアグラムを用いて作成することにした。
アローダイアグラムの例を,図1に示す。
図1のクリティカルパスは [ a ] であり,すべての作業を完了するために必要な所要日数(以下,総所要日数という)は [ b ] 日である。また,作業Jについて,最早開始日と最遅開始日は [ c ] であり,余裕日数は [ d ] 日である。ここで,結合点1から始まる作業の開始日は0日とする。また,余裕日数とは,当該作業に先行する作業が遅れなしに完了したとき,総所要日数を増加させることなく,当該作業が遅れてもよい日数である。
aに関する解答群
bに関する解答群
cに関する解答群
dに関する解答群
設問2 次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。e,fは記号が五十音順に並ぶように選べ。(一部改題)
Q君は,りん議書電子化プロジェクトのスケジュール作成に当たり,プロジェクトで実施する作業を,表1に示す作業一覧表にまとめ,作業の流れを整理中である。作成途中のアローダイアグラムを,図2に示す。
作成途中のアローダイアグラムには,二つのダミー作業が欠けている。りん議書電子化プロジェクトのスケジュールを正しく表現するためには,[ e ] と [ f ] にダミー作業を追加する必要がある。
ダミー作業追加後のアローダイアグラムにおいて,りん議書電子化プロジェクトの総所要日数は,[ g ] 日である。
e,fに関する解答群
gに関する解答群
W社は,業務効率化を目的として,紙のりん議書を回付して行っている申請承認に関わる業務を電子化するプロジェクト(以下,りん議書電子化プロジェクトという)を立ち上げた。
〔りん議書電子化プロジェクトの概要〕
りん議書電子化プロジェクトでは,紙のりん議書を電子帳票化するシステム(以下,電子帳票システムという)を,W社の情報システム部が新規に開発する。電子帳票化されたりん議書の回付(以下,りん議書回付という)には,クラウドサービスプロバイダが提供している回付業務のクラウドサービス(以下,回付サービスという)を,比較検討の上,導入して利用する。
設問1 次の記述中の に入れる正しい答えを,解答群の中から選べ。
プロジェクトマネージャのQ君は,りん議書電子化プロジェクトのスケジュールを,アローダイアグラムを用いて作成することにした。
アローダイアグラムの例を,図1に示す。

図1のクリティカルパスは [ a ] であり,すべての作業を完了するために必要な所要日数(以下,総所要日数という)は [ b ] 日である。また,作業Jについて,最早開始日と最遅開始日は [ c ] であり,余裕日数は [ d ] 日である。ここで,結合点1から始まる作業の開始日は0日とする。また,余裕日数とは,当該作業に先行する作業が遅れなしに完了したとき,総所要日数を増加させることなく,当該作業が遅れてもよい日数である。
aに関する解答群
| ア | A,C,G,I,K |
|---|---|
| イ | A,D,I,K |
| ウ | B,C,G,I,K |
| エ | B,C,H |
| オ | B,D,I,K |
| カ | B,F,I,K |
bに関する解答群
| ア | 9 |
|---|---|
| イ | 10 |
| ウ | 11 |
| エ | 12 |
| オ | 13 |
cに関する解答群
| ア | 4日と7日 |
|---|---|
| イ | 4日と8日 |
| ウ | 5日と8日 |
| エ | 5日と9日 |
| オ | 7日と10日 |
| カ | 7日と11日 |
dに関する解答群
| ア | 0 |
|---|---|
| イ | 1 |
| ウ | 2 |
| エ | 3 |
| オ | 4 |
設問2 次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。e,fは記号が五十音順に並ぶように選べ。(一部改題)
Q君は,りん議書電子化プロジェクトのスケジュール作成に当たり,プロジェクトで実施する作業を,表1に示す作業一覧表にまとめ,作業の流れを整理中である。作成途中のアローダイアグラムを,図2に示す。


作成途中のアローダイアグラムには,二つのダミー作業が欠けている。りん議書電子化プロジェクトのスケジュールを正しく表現するためには,[ e ] と [ f ] にダミー作業を追加する必要がある。
ダミー作業追加後のアローダイアグラムにおいて,りん議書電子化プロジェクトの総所要日数は,[ g ] 日である。
e,fに関する解答群
| ア | 結合点2から結合点9 |
|---|---|
| イ | 結合点3から結合点9 |
| ウ | 結合点4から結合点5 |
| エ | 結合点4から結合点6 |
| オ | 結合点6から結合点7 |
| カ | 結合点6から結合点8 |
| キ | 結合点6から結合点12 |
| ク | 結合点7から結合点9 |
gに関する解答群
| ア | 160 |
|---|---|
| イ | 170 |
| ウ | 180 |
| エ | 190 |
| オ | 200 |
| カ | 210 |
答え : 設問1 (a)ウ (b)エ (c)オ (d)エ 設問2 (e)ウ (f)ク (g)オ
分野 : マネジメント系 › プロジェクトマネジメント › プロジェクトマネジメント › プロジェクトの時間
分野 : マネジメント系 › プロジェクトマネジメント › プロジェクトマネジメント › プロジェクトの時間
問7
広告制作業務の現状把握と改善に関する次の記述を読んで,設問1~3に答えよ。
X社は,新聞,雑誌,カタログ誌などの紙媒体に掲載する広告(以下,紙広告という)及びインターネット上のWebサイトに掲載する広告(以下,Web広告という)を取り扱う広告制作会社であり,複数の拠点で業務を行っている。
各拠点では,担当するエリア内で営業活動を行い,エリア内の顧客から受け取った広告原稿を基に,広告を制作する。各拠点の体制を,図1に示す。
X社では,広告原稿の受渡しを手渡しで行っている。制作部門では,営業部門から広告原稿をいつ受け取り,営業部門にいつ返却のために渡したかを,授受管理簿に記録する。授受管理簿には,広告原稿を用いて作業を行う担当者が誰であるかも,併せて記入している。授受管理簿の様式を,図2に示す。
〔制作部門での作業の流れ〕
(1) 管理グループの作業1
①営業部門から受け取った広告原稿を確認し,授受管理簿の通番,受付日,営業担当者,顧客名,紙広告原稿枚数,Web広告原稿枚数の欄に記入する。ここで,広告原稿が紙広告又はWeb広告の一方だけの場合は,広告原稿のない方の原稿枚数は"-"とする。
②広告原稿の形式的な点検(枚数の過不足,折れや汚れの有無など)を行う。
③点検の結果,不備がある場合は,返却のために広告原稿を営業部門に渡す。授受管理簿の返却日,返却事由の欄に記入する。返却事由は"原稿不備"とする。営業部門に渡すときに,待ちは発生しない。
④点検の結果,不備がない場合は,作業担当者を決定し,審査担当者,紙広告作成担当者,Web広告作成担当者の欄に記入する。ここで,広告原稿が紙広告又はWeb広告の一方だけの場合は,広告原稿のない方の作成担当者は"-"とする。記入した後,広告原稿を審査担当者に渡す。審査担当者に渡すときに,待ちは発生しない。
(2) 審査グループの作業
①広告原稿の内容がX社の広告制作基準に違反していないかどうかを審査し,審査結果を"適"又は"不適"として,審査票を起票する。
②広告原稿と審査票を管理グループに渡す。管理グループに渡すときに,待ちは発生しない。
(3) 管理グループの作業2
①審査結果が"不適"であれば,審査票の写しをとり,審査票の原本は保管する。その写しを添えて,返却のために広告原稿を営業部門に渡す。授受管理簿の返却日,返却事由の欄に記入する。返却事由は"基準違反"とする。営業部門に渡すときに,待ちは発生しない。
②審査結果が"適"であれば,審査票の原本を保管し,広告原稿を紙広告とWeb広告とに分けて,それぞれを決定している作成担当者に渡す。
・他の作業を行っている場合は,作業の終了を待って渡す。
・他の作業を行っていない場合は,すぐに渡す。
(4) 作成グループの作業
①受け取った広告原稿を基に,広告を作成する。
②作成完了後,作成担当者が,作成した広告(以下,作成済広告という)と広告原稿を管理グループに渡す。管理グループに渡すときに,待ちは発生しない。
(5) 管理グループの作業3
①紙広告とWeb広告について,受け取った広告原稿と作成済広告がそろっているかどうかを授受管理簿と照合して確認する。
②確認の結果,紙広告とWeb広告について,どちらかに不足がある場合は,必要なものが全てそろうまで待つ。
③確認の結果,紙広告とWeb広告について,必要なものが全てそろっている場合は,営業部門に広告原稿と作成済広告を渡す。授受管理簿の返却日,返却事由の欄に記入する。返却事由は"作成完了"とする。営業部門に広告原稿と作成済広告を渡すときに,待ちは発生しない。
設問1 10月11日における授受管理簿を,図3に示す。通番6の行の広告原稿については,〔制作部門での作業の流れ〕(1)④の作業を実施し,完了したところである。図3中の [ ] に入れる適切な答えを,解答群の中から選べ。

解答群
設問2 作成グループにおいて,広告原稿の “紛失事故” 騒動が発生した。 “紛失事故” の原因は,Web広告作成担当者が,広告原稿を保管した場所を勘違いしていたことであった。広告原稿は翌日に発見されて事なきを得たが,X社の作業方法では,広告原稿をグループ間で受渡しするとき及び営業部門に渡すときに待ちが発生する場合がある。この場合に,一時的な保管が必要となって, “紛失事故” が誘発されるおそれがある。
〔制作部門での作業の流れ〕のうち,作成グループの作業以外の作業で,広告原稿の一時的な保管に伴って"紛失事故"が誘発されるおそれがある作業は [ c ] と [ d ] である。c,dの記号が五十音順に並ぶように解答欄から選べ。(一部改題)
c,dに関する解答群
設問3 X社では, “紛失事故” が誘発されるおそれを低減させ,管理グループの作業を軽減させるために,広告原稿については,電子化を行って,サーバ上で共有することで,これまでの手渡しによる受渡しの作業をなくすことを構想している。広告原稿を電子化する時点の候補として,営業部門が制作部門に渡す直前(以下,営業出口という)と,制作部門が営業部門から受け取った直後(以下,制作入口という)が挙がっている。ここで,作成済広告の受渡しは,手渡しのままとする。
次の記述中の [ ] に入れる適切な答えを,解答群の中から選べ。
図3の通番4に対応する制作部門での一連の作業において管理グループが行った作業を,表1に整理した。項番1の受渡し作業に関して,広告原稿,審査票,作成済広告のそれぞれについて,管理グループが受けの作業を行った件数と,管理グループが渡しの作業を行った件数の合計は9件であった。広告原稿の電子化をどこで行うかによって,項番1の受渡し作業のうち,手渡しによる作業の合計の件数は異なる。営業出口で行った場合は [ a ] 件になり,制作入口で行った場合は [ b ] 件になる。ここで,電子化を制作入口で行った場合には,営業部門への渡しは手渡しで行うものとする。

a,bに関する解答群
X社は,新聞,雑誌,カタログ誌などの紙媒体に掲載する広告(以下,紙広告という)及びインターネット上のWebサイトに掲載する広告(以下,Web広告という)を取り扱う広告制作会社であり,複数の拠点で業務を行っている。
各拠点では,担当するエリア内で営業活動を行い,エリア内の顧客から受け取った広告原稿を基に,広告を制作する。各拠点の体制を,図1に示す。

X社では,広告原稿の受渡しを手渡しで行っている。制作部門では,営業部門から広告原稿をいつ受け取り,営業部門にいつ返却のために渡したかを,授受管理簿に記録する。授受管理簿には,広告原稿を用いて作業を行う担当者が誰であるかも,併せて記入している。授受管理簿の様式を,図2に示す。

〔制作部門での作業の流れ〕
(1) 管理グループの作業1
①営業部門から受け取った広告原稿を確認し,授受管理簿の通番,受付日,営業担当者,顧客名,紙広告原稿枚数,Web広告原稿枚数の欄に記入する。ここで,広告原稿が紙広告又はWeb広告の一方だけの場合は,広告原稿のない方の原稿枚数は"-"とする。
②広告原稿の形式的な点検(枚数の過不足,折れや汚れの有無など)を行う。
③点検の結果,不備がある場合は,返却のために広告原稿を営業部門に渡す。授受管理簿の返却日,返却事由の欄に記入する。返却事由は"原稿不備"とする。営業部門に渡すときに,待ちは発生しない。
④点検の結果,不備がない場合は,作業担当者を決定し,審査担当者,紙広告作成担当者,Web広告作成担当者の欄に記入する。ここで,広告原稿が紙広告又はWeb広告の一方だけの場合は,広告原稿のない方の作成担当者は"-"とする。記入した後,広告原稿を審査担当者に渡す。審査担当者に渡すときに,待ちは発生しない。
(2) 審査グループの作業
①広告原稿の内容がX社の広告制作基準に違反していないかどうかを審査し,審査結果を"適"又は"不適"として,審査票を起票する。
②広告原稿と審査票を管理グループに渡す。管理グループに渡すときに,待ちは発生しない。
(3) 管理グループの作業2
①審査結果が"不適"であれば,審査票の写しをとり,審査票の原本は保管する。その写しを添えて,返却のために広告原稿を営業部門に渡す。授受管理簿の返却日,返却事由の欄に記入する。返却事由は"基準違反"とする。営業部門に渡すときに,待ちは発生しない。
②審査結果が"適"であれば,審査票の原本を保管し,広告原稿を紙広告とWeb広告とに分けて,それぞれを決定している作成担当者に渡す。
・他の作業を行っている場合は,作業の終了を待って渡す。
・他の作業を行っていない場合は,すぐに渡す。
(4) 作成グループの作業
①受け取った広告原稿を基に,広告を作成する。
②作成完了後,作成担当者が,作成した広告(以下,作成済広告という)と広告原稿を管理グループに渡す。管理グループに渡すときに,待ちは発生しない。
(5) 管理グループの作業3
①紙広告とWeb広告について,受け取った広告原稿と作成済広告がそろっているかどうかを授受管理簿と照合して確認する。
②確認の結果,紙広告とWeb広告について,どちらかに不足がある場合は,必要なものが全てそろうまで待つ。
③確認の結果,紙広告とWeb広告について,必要なものが全てそろっている場合は,営業部門に広告原稿と作成済広告を渡す。授受管理簿の返却日,返却事由の欄に記入する。返却事由は"作成完了"とする。営業部門に広告原稿と作成済広告を渡すときに,待ちは発生しない。
設問1 10月11日における授受管理簿を,図3に示す。通番6の行の広告原稿については,〔制作部門での作業の流れ〕(1)④の作業を実施し,完了したところである。図3中の [ ] に入れる適切な答えを,解答群の中から選べ。

解答群
| ア |
| |||||
|---|---|---|---|---|---|---|
| イ |
| |||||
| ウ |
| |||||
| エ |
|
設問2 作成グループにおいて,広告原稿の “紛失事故” 騒動が発生した。 “紛失事故” の原因は,Web広告作成担当者が,広告原稿を保管した場所を勘違いしていたことであった。広告原稿は翌日に発見されて事なきを得たが,X社の作業方法では,広告原稿をグループ間で受渡しするとき及び営業部門に渡すときに待ちが発生する場合がある。この場合に,一時的な保管が必要となって, “紛失事故” が誘発されるおそれがある。
〔制作部門での作業の流れ〕のうち,作成グループの作業以外の作業で,広告原稿の一時的な保管に伴って"紛失事故"が誘発されるおそれがある作業は [ c ] と [ d ] である。c,dの記号が五十音順に並ぶように解答欄から選べ。(一部改題)
c,dに関する解答群
| ア | 管理グループの作業1 |
|---|---|
| イ | 管理グループの作業2 |
| ウ | 管理グループの作業3 |
| エ | 審査グループの作業 |
設問3 X社では, “紛失事故” が誘発されるおそれを低減させ,管理グループの作業を軽減させるために,広告原稿については,電子化を行って,サーバ上で共有することで,これまでの手渡しによる受渡しの作業をなくすことを構想している。広告原稿を電子化する時点の候補として,営業部門が制作部門に渡す直前(以下,営業出口という)と,制作部門が営業部門から受け取った直後(以下,制作入口という)が挙がっている。ここで,作成済広告の受渡しは,手渡しのままとする。
次の記述中の [ ] に入れる適切な答えを,解答群の中から選べ。
図3の通番4に対応する制作部門での一連の作業において管理グループが行った作業を,表1に整理した。項番1の受渡し作業に関して,広告原稿,審査票,作成済広告のそれぞれについて,管理グループが受けの作業を行った件数と,管理グループが渡しの作業を行った件数の合計は9件であった。広告原稿の電子化をどこで行うかによって,項番1の受渡し作業のうち,手渡しによる作業の合計の件数は異なる。営業出口で行った場合は [ a ] 件になり,制作入口で行った場合は [ b ] 件になる。ここで,電子化を制作入口で行った場合には,営業部門への渡しは手渡しで行うものとする。

a,bに関する解答群
| ア | 2 |
|---|---|
| イ | 3 |
| ウ | 4 |
| エ | 5 |
| オ | 6 |
| カ | 7 |
| キ | 8 |
| ク | 9 |
答え : 設問1 ア 設問2 (c)イ (d)ウ 設問3 (a)イ (b)エ
分野 : ストラテジ系 › システム戦略 › システム戦略 › 業務プロセス
分野 : ストラテジ系 › システム戦略 › システム戦略 › 業務プロセス
問8
次のプログラムの説明及びプログラムを読んで,設問1~3に答えよ。
整数式を受け取って,その値を返すプログラムである。例えば,例1に示す整数式を受け取ると,その値50を返す。
例1: 2×(34-(5+67)÷8)
〔プログラムの説明〕
(1) 整数式は,文字の列で与えられる。整数式は,次のもので構成される。
・符号のない数字0~9の並び
・演算子: +,-,×,÷
・括弧: (,)
(2) 引数 Expression[] で整数式を,引数 ExpLen で整数式の文字数を,それぞれ受け取る。
(3) プログラム中の破線で囲んだ解析処理の部分では,受け取った整数式を解析し,計算に必要な情報を配列及び変数に設定する。
(4) プログラム中の破線で囲んだ計算処理の部分では,(3)で設定した情報を用いて,整数式の値を計算する。整数式の値は,Value[0] に得られる。
(5) 各配列の添字は,0から始まる。各配列の要素数は,十分に大きいものとする。
(6) 受け取った整数式に誤りはないものとする。また,計算の過程で,あふれやゼロ除算は発生しないものとする。
〔プログラム〕
○整数型関数: compute(文字型: Expression[], 整数型: ExpLen)
○文字型: Operator[100]
○整数型: OpCnt, Priority[100], Value[100]
○文字型: chr
○整数型: i, ip, nest
解析処理(詳細は〔プログラム(解析処理の部分)〕に示す)
計算処理(詳細は〔プログラム(計算処理の部分)〕に示す)
・return Value[0]
〔プログラム(解析処理の部分)の説明〕
(1) Expression[] で渡された整数式を解析し,計算に必要な情報を配列 Operator[],Priority[],Value[] 及び変数 OpCnt に設定する。関数 int() は,引数の数字が表す値を整数型で返す。
(2) 例1の整数式について,プログラム(解析処理の部分)を実行した直後の各配列及び変数の状態を,図1に示す。
〔プログラム(計算処理の部分)の説明〕
(1) 整数式の値を計算していく。図1に示す各配列及び変数の状態から,プログラム(計算処理の部分)の最外側の繰返しを1回実行した直後の各配列及び変数の状態を,図2に示す。
設問1 プログラム(解析処理の部分)に関する次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
プログラム(解析処理の部分)の行①~④で用いている定数について考察する。
まず,行③及び④の処理では,定数として10を用いているが,この定数は10である必要はない。このプログラムにおいては,定数が [ a ] であれば常に正しい演算順序が保証される。
また,行①及び②の処理では,定数として1及び2を用いているが,次に示すように書き換えることが可能である。ここで, priLow 及び priHigh は整数の定数を表し,その値は priLow<priHigh とする。
①→ ・Priority[OpCnt] ← nest + priLow
②→ ・Priority[OpCnt] ← nest + priHigh
このように表現したとき,行③及び④の処理では,nest の値を増減する定数が [ b ] のときに限り正しい演算順序が保証されることになる。
aに関する解答群
bに関する解答群
設問2 優先順位の等しい演算子が複数個含まれている整数式の,演算の実行順序について考察する。プログラムに関する次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。ここで,c1~c3に入れる答えは,cに関する解答群の中から組合せとして正しいものを選ぶものとする。
プログラム(計算処理の部分)では,優先順位の等しい演算子が複数個含まれている場合,演算を左から順に実行するようになっている。このプログラムでは,演算を左から順に実行するか右から順に実行するかは,行 [ c1 ] の内容が [ c2 ] か [ c3 ] かで決まる。
演算の実行順序によって,計算結果が異なることがある。例えば,次の四つの整数式のケースを考える。
ケース1:(12+3+1)×4×2
ケース2:(12+3+1)÷4÷2
ケース3:(12-3-1)×4×2
ケース4:(12-3-1)÷4÷2
これらのケースのうち,演算を左から実行しても右から実行しても,プログラムによる計算結果が等しくなるのは,ケース [ d ] である。
cに関する解答群
dに関する解答群
設問3 プログラムの動作に関する次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
符号付き整定数(数字の並びの先頭に符号+又は-を付けた定数)を含む整数式を考える。符号付き整定数は,例2のように括弧で囲んで記述する。ただし,符号付き整定数の直前の文字が演算子でない場合は,例3のように括弧で囲まなくてもよい。
例2: (+2)×((-3)+(-4))
例3: +2×(-3+(-4))
符号付き整定数を含む整数式2×(-1)についてプログラム(解析処理の部分)を実行した結果を,図3に示す。
このように,符号付き整定数を含む整数式を受け取ったとき,プログラムは e 。

eに関する解答群
f,gに関する解答群
整数式を受け取って,その値を返すプログラムである。例えば,例1に示す整数式を受け取ると,その値50を返す。
例1: 2×(34-(5+67)÷8)
〔プログラムの説明〕
(1) 整数式は,文字の列で与えられる。整数式は,次のもので構成される。
・符号のない数字0~9の並び
・演算子: +,-,×,÷
・括弧: (,)
(2) 引数 Expression[] で整数式を,引数 ExpLen で整数式の文字数を,それぞれ受け取る。
(3) プログラム中の破線で囲んだ解析処理の部分では,受け取った整数式を解析し,計算に必要な情報を配列及び変数に設定する。
(4) プログラム中の破線で囲んだ計算処理の部分では,(3)で設定した情報を用いて,整数式の値を計算する。整数式の値は,Value[0] に得られる。
(5) 各配列の添字は,0から始まる。各配列の要素数は,十分に大きいものとする。
(6) 受け取った整数式に誤りはないものとする。また,計算の過程で,あふれやゼロ除算は発生しないものとする。
〔プログラム〕
○整数型関数: compute(文字型: Expression[], 整数型: ExpLen)
○文字型: Operator[100]
○整数型: OpCnt, Priority[100], Value[100]
○文字型: chr
○整数型: i, ip, nest
解析処理(詳細は〔プログラム(解析処理の部分)〕に示す)
計算処理(詳細は〔プログラム(計算処理の部分)〕に示す)
・return Value[0]
〔プログラム(解析処理の部分)の説明〕
(1) Expression[] で渡された整数式を解析し,計算に必要な情報を配列 Operator[],Priority[],Value[] 及び変数 OpCnt に設定する。関数 int() は,引数の数字が表す値を整数型で返す。
(2) 例1の整数式について,プログラム(解析処理の部分)を実行した直後の各配列及び変数の状態を,図1に示す。

〔プログラム(計算処理の部分)の説明〕
(1) 整数式の値を計算していく。図1に示す各配列及び変数の状態から,プログラム(計算処理の部分)の最外側の繰返しを1回実行した直後の各配列及び変数の状態を,図2に示す。

設問1 プログラム(解析処理の部分)に関する次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
プログラム(解析処理の部分)の行①~④で用いている定数について考察する。
まず,行③及び④の処理では,定数として10を用いているが,この定数は10である必要はない。このプログラムにおいては,定数が [ a ] であれば常に正しい演算順序が保証される。
また,行①及び②の処理では,定数として1及び2を用いているが,次に示すように書き換えることが可能である。ここで, priLow 及び priHigh は整数の定数を表し,その値は priLow<priHigh とする。
①→ ・Priority[OpCnt] ← nest + priLow
②→ ・Priority[OpCnt] ← nest + priHigh
このように表現したとき,行③及び④の処理では,nest の値を増減する定数が [ b ] のときに限り正しい演算順序が保証されることになる。
aに関する解答群
| ア | 1以上 |
|---|---|
| イ | 2以上 |
| ウ | 11以下 |
| エ | 12以下 |
bに関する解答群
| ア | priHigh以上 |
|---|---|
| イ | priHigh+1以上 |
| ウ | priHigh-priLow以上 |
| エ | priHigh-priLow+1以上 |
設問2 優先順位の等しい演算子が複数個含まれている整数式の,演算の実行順序について考察する。プログラムに関する次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。ここで,c1~c3に入れる答えは,cに関する解答群の中から組合せとして正しいものを選ぶものとする。
プログラム(計算処理の部分)では,優先順位の等しい演算子が複数個含まれている場合,演算を左から順に実行するようになっている。このプログラムでは,演算を左から順に実行するか右から順に実行するかは,行 [ c1 ] の内容が [ c2 ] か [ c3 ] かで決まる。
演算の実行順序によって,計算結果が異なることがある。例えば,次の四つの整数式のケースを考える。
ケース1:(12+3+1)×4×2
ケース2:(12+3+1)÷4÷2
ケース3:(12-3-1)×4×2
ケース4:(12-3-1)÷4÷2
これらのケースのうち,演算を左から実行しても右から実行しても,プログラムによる計算結果が等しくなるのは,ケース [ d ] である。
cに関する解答群
| c1 | c2 | c3 | |
| ア | ⑤ | ・ip ← 0 | ・ip ← OpCnt - 1 |
| イ | ⑥ | i: 1, i<OpCnt, 1 | i: OpCnt, i>0, -1 |
| ウ | ⑥ | i: 1, i<OpCnt, 1 | i: OpCnt-1, i>0, -1 |
| エ | ⑦ | Priority[ip]<Priority[i] | Priority[ip]≦Priority[i] |
dに関する解答群
| ア | 1 |
|---|---|
| イ | 1及び2 |
| ウ | 1及び3 |
| エ | 1及び4 |
設問3 プログラムの動作に関する次の記述中の [ ] に入れる正しい答えを,解答群の中から選べ。
符号付き整定数(数字の並びの先頭に符号+又は-を付けた定数)を含む整数式を考える。符号付き整定数は,例2のように括弧で囲んで記述する。ただし,符号付き整定数の直前の文字が演算子でない場合は,例3のように括弧で囲まなくてもよい。
例2: (+2)×((-3)+(-4))
例3: +2×(-3+(-4))
符号付き整定数を含む整数式2×(-1)についてプログラム(解析処理の部分)を実行した結果を,図3に示す。
このように,符号付き整定数を含む整数式を受け取ったとき,プログラムは e 。

eに関する解答群
| ア | 整数式が符号付き整定数で始まる場合に,正しい値を返さない |
|---|---|
| イ | 整数式中に符号-の付いた符号付き整定数がある場合に,正しい値を返さない |
| ウ | 整数式中に二つ以上の符号付き整定数が含まれる場合に,正しい値を返さない |
| エ | 正しい値を返す |
f,gに関する解答群
| ア | -1 |
|---|---|
| イ | 0 |
| ウ | 1 |
| エ | 2 |
答え : 設問1 (a)イ (b)エ 設問2 (c)エ (d)ア 設問3 (e)エ (f)イ (g)エ
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム
分野 : テクノロジ系 › 基礎理論 › アルゴリズムとプログラミング › アルゴリズム