旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。
2014年度 春期 午後の概要
情報資産についてのリスクアセスメント
情報セキュリティ · リスクアセスメント / 情報資産の価値 / リスク値の算出 / 情報セキュリティの3要素
プロジェクトで取り扱う情報資産のリスクアセスメントに関する記述を読み、設問1〜3に答えよ。 【Z社のリスク算出方法】 リスク値 = 情報資産の価値 × 脅威 × 脆弱性 「情報資産の価値」は機密性(C)、完全性(I)、可用性(A)の観点で1〜3の値で評価する。「脅威」「脆弱性」も1〜3の値で評価する。 C, I, Aごとに算出したリスク値が全て12以下ならばリスクを受容し、そうでないならば追加のリスク対策を実施する。 〔設問1〕表2中の(ii), (iii)は、C, I, Aのいずれかの観点から“情報資産の価値”を評価した際の評価理由である。(ii), (iii)に対応するC, I, Aの組合せとして適切な答えを解答群から選べ。 (i) 開発中のプログラムが利用できない場合、プロジェクトの進捗に影響を与える (ii) 社外に漏れた場合、顧客からの信頼を失う (iii) 版管理が行われない場合、不整合によって、プロジェクトの進捗に影響を与える 〔設問2〕情報資産No.4(顧客のテストデータ: C=3, I=2, A=1)に対するリスクの分析評価の結果、追加のリスク対策が必要になる脅威(T1〜T7)の数として正しい答えを選べ。 〔設問3〕プロジェクト終了後、返却された開発用PCが別プロジェクトに再貸与された際、顧客のテストデータが残存していた事案を踏まえ、情報漏えいリスクに対処するために追加すべき適切な対策を2つ選べ。
- ア
- (ii) A, (iii) C
- イ
- (ii) A, (iii) I
- ウ
- (ii) C, (iii) A
- エ
- (ii) C, (iii) I
- オ
- (ii) I, (iii) A
- カ
- (ii) I, (iii) C
解答・解説を表示
解答
設問1: エ, 設問2: イ, 設問3: a イ, b カ (順不同)
解説
まず要点:情報の大切さを見るときは、機密性(秘密を守ること)、完全性(内容が正しく、壊れたり食い違ったりしていないこと)、可用性(使いたいときに使えること)の3つの観点で考えます。それぞれの観点でリスク値(資産の価値×脅威×脆弱性)を計算し、すべて12以下なら対策は不要、1つでも12を超えれば追加の対策が必要になります。
解き方
- 設問1:評価理由の文から、(ii)は漏えい防止で機密性(C)、(iii)は不整合防止で完全性(I)だと見分けます。
- 設問2:各脅威T1〜T7について、情報資産No.4のC, I, A(3, 2, 1)に脅威と脆弱性の値を掛け、12を超える脅威を数えます。
- 設問3:開発PCを返して再利用するときにテストデータが残っていた原因に対処するため、利用台帳管理(イ)と返却時のデータ完全消去(カ)を選びます。
小問ごとの答え
- 小問 設問1:エ
- (ii)は社外への情報漏えいに関する懸念であるため機密性(C)の観点であり、(iii)はデータの不整合に関する懸念であるため正確性を維持する完全性(I)の観点となります。
- 小問 設問2:イ
- No.4の各脅威(脅威×脆弱性)はT1が6、T2が3、T3が2、T4が6、T5が4、T6が1、T7が3です。機密性Cの価値が3であるため、積が5以上のT1とT4でリスク値が18(>12)となり対策が必要です。
- 小問 設問3 a:イ
- 開発PCへのテストデータ保存・削除の状況を管理台帳で記録・把握することは、不要データの残存や漏えいを防ぐ有効な運用対策です。
- 小問 設問3 b:カ
- 返却されたPCの全データをシステム部が完全に消去する工程を導入することで、次期利用時における残存データからの情報漏えいを根本から防止できます。
覚えるポイント
- 機密性は漏えい防止、完全性は改ざん・不整合防止、可用性は利用不能防止に対応する
- リスク値は「資産価値×脅威×脆弱性」の積で算出し、基準値を超えるか個別に判定する
間違えやすいところ
- データの不整合による進捗の遅れを可用性の低下と混同しやすいですが、不整合そのものは完全性が壊れることです。
- リスク値の判定では、C・I・Aのどれか1つでも基準値(12)を超えたら対策が必要になると覚えておきましょう。
出題の前提:平成26年度春期基本情報技術者試験午後問1の出題条件に基づく
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp) / 公式問題冊子 p.8 ↗(www.ipa.go.jp) / 公式問題冊子 p.9 ↗(www.ipa.go.jp) / 公式問題冊子 p.10 ↗(www.ipa.go.jp) / 公式問題冊子 p.11 ↗(www.ipa.go.jp)
機械語命令の解釈とプログラムの実行トレース
ハードウェア · 機械語命令 / 実効アドレス計算 / 論理演算 / 条件コード / 分岐処理
機械語命令の形式および動作に関する記述を読み、設問1, 2に答えよ。 【命令語の形式(16ビット)】 ビット15〜12: op(命令コード) ビット11〜10: r 又は m(レジスタ番号 又は 分岐判定値) ビット9〜8: x(指標レジスタ番号) ビット7〜6: b(ベースレジスタ番号) ビット5〜0: d(アドレスの変位 00h〜3Fh) 【実効アドレスの算出式】 ・x=0, b=0 → d ・x=0, b≠0 → (b) + d ・x≠0, b=0 → (x) + d ・x≠0, b≠0 → (x) + (b) + d 【命令コード】 1: メモリ値 と (r) の論理和を r に設定(CC設定) 2: メモリ値 と (r) の論理積を r に設定(CC設定) 3: メモリ値 と (r) の排他的論理和を r に設定(CC設定) 4: m と CC の論理積を求め、結果が 00 でなければ実効アドレスに分岐(結果が00なら何もしない。CC保持) 注記: 論理演算結果が0ならCC=10(2進数)、0以外ならCC=01(2進数)が設定される。 〔設問1〕レジスタ0〜3の内容がそれぞれ 0004h, 0003h, 0002h, 0001h のとき、命令「1983h」の実効アドレスとして正しい答えを選べ。 〔設問2〕図3のレジスタ初期値および図4の主記憶装置の内容に基づき、0010h番地からプログラムを実行したときの各レジスタ値および分岐動作(空欄 a〜d)を求めよ。
- ア
- 0001h
- イ
- 0002h
- ウ
- 0003h
- エ
- 0004h
- オ
- 0008h
- カ
- 000Ah
解答・解説を表示
解答
設問1: オ, 設問2: a キ, b ア, c ア, d ア
解説
まず要点:機械語命令は、命令コード・対象レジスタ・指標レジスタ・ベースレジスタ・変位という部分にビットを分けて読み取ります。それぞれの値を決まった計算式に当てはめて実効アドレス(実際に使うメモリの番地)を求めます。また、論理演算の結果で条件コード(CC)が変わるので、分岐するかどうかを順番に追いかけます。
解き方
- 設問1:16進数の1983hを16ビットの2進数に直し、op(4bit), r(2bit), x(2bit), b(2bit), d(6bit)に分けて実効アドレスの式に当てはめます。
- 設問2:0010h番地から順に命令の実効アドレスを求め、レジスタの操作と演算結果によるCCの変化を記録しながら実行を追います。
小問ごとの答え
- 小問 設問1:オ
- 命令1983hは2進数で「0001 1001 1000 0011」となり、op=1, r=2, x=1, b=2, d=03hです。x≠0かつb≠0のため実効アドレスは (x)+(b)+d = (1)+(2)+03h = 0003h + 0002h + 0003h = 0008h となります。
- 小問 設問2 a:キ
- 0010hの命令12C0hはop=1(OR), r=0, x=2, b=3, d=0で実効アドレスは(2)+(3)=0003h。メモリ値0003hとレジスタ0(0004h)の論理和により、レジスタ0は0007hとなります。
- 小問 設問2 b:ア
- 0011hの命令24C0hはop=2(AND), r=1, x=0, b=3, d=0で実効アドレスは(3)=0001h。メモリ値0001hとレジスタ1(0003h)の論理積により、レジスタ1は0001hとなります。
- 小問 設問2 c:ア
- 0012hのXOR命令でレジスタ2は0001hとなりCCは01に設定されます。0013hの命令4815hはm=10(2進数)で、mとCC(01)の論理積は00となるため分岐しません。
- 小問 設問2 d:ア
- 0014hの命令4C16h(m=11)によりm AND CC = 01≠00となり0016hへ分岐します。0016hの命令28C1hはop=2(AND), r=2, アドレス0002h(メモリ値000Fh)とレジスタ2(0001h)の論理積を計算し、レジスタ2は0001hになります。
覚えるポイント
- 実効アドレスは指標レジスタxとベースレジスタbがともに非ゼロのとき (x)+(b)+d となる
- ビット幅の配分(4-2-2-2-6)に注意して16進数を正確にビット分解する
間違えやすいところ
- 16進数を2進数に直すときのビットの区切り(4bit, 2bit, 2bit, 2bit, 6bit)を間違えやすいです。
- 分岐命令で、直前の命令が設定したCCの値(0なら10、0以外なら01)の判定を間違えやすいです。
出題の前提:平成26年度春期基本情報技術者試験午後問2の出題条件に基づく
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.12 ↗(www.ipa.go.jp) / 公式問題冊子 p.13 ↗(www.ipa.go.jp) / 公式問題冊子 p.14 ↗(www.ipa.go.jp) / 公式問題冊子 p.15 ↗(www.ipa.go.jp)
プログラムの並列実行とアムダールの法則・データ依存関係
ソフトウェア · 並列処理 / マルチスレッド / アムダールの法則 / データ依存性
マルチプロセッサシステムにおけるスレッドを用いた並列実行に関して、並列化による高速化率(アムダールの法則)、ループ処理を並列化する際のデータ依存関係(更新と参照の順序)、および配列添字を間接参照する場合の競合防止条件について問う。
- ア
- 設問1: 5 / 設問2(b,c): 更新した値が次の繰返しで参照されるので / 設問2(d): m ≧ 0 / 設問3: ip配列が [1..5] の繰返し
- イ
- 設問1: 6 / 設問2(b,c): 更新した値が次の繰返しで再び更新されるので / 設問2(d): m ≧ n / 設問3: 各スレッドで更新する ip の値が重複しないパターン
- ウ
- 設問1: 7 / 設問2(b,c): 参照した値が次の繰返しで更新されるので / 設問2(d): m ≦ 0 / 設問3: 重複を含む ip パターン1
- エ
- 設問1: 8 / 設問2(b,c): 参照した値が次の繰返しで再び参照されるので / 設問2(d): m ≦ n / 設問3: 重複を含む ip パターン2
- オ
- 設問1: 9
- カ
- 設問1: 10
解答・解説を表示
解答
設問1 a: オ, 設問2 b: ア, 設問2 c: ウ, 設問2 d: イ, 設問3: イ
解説
まず要点:並列にしても速くなる割合には限界があり、アムダールの法則で表されます。並列にできない部分が多いほど、全体は速くなりません。また、ループを並列にできるかどうかは、繰り返しの間で値の参照と更新がたがいに影響し合うか(データ依存関係)で決まり、影響し合わない独立した処理だけが安全に並列実行できます。
解き方
- 設問1: 全体の処理時間のうち並列にできる割合rを求め、アムダールの法則の式にE≧5を入れ、あてはまる最小の整数nを探します。
- 設問2: プログラム1〜3で、配列の値を参照する時と更新する時の関係を調べ、依存関係が起きる条件を見つけます。
- 設問3: 4つに分けたスレッドの担当範囲で、更新先の配列ip[i]の値が重複しない選択肢を選びます。
小問ごとの答え
- 小問 設問1 a:オ
- 並列実行可能な計算処理の割合は r = 90 / (7 + 90 + 3) = 0.9 です。高速化率 E = 1 / ((1 - 0.9) + 0.9 / n) ≧ 5 より、0.1 + 0.9 / n ≦ 0.2 となり、0.9 / n ≦ 0.1 から n ≧ 9 が得られます。したがって最低限必要なCPU数は 9 個(オ)です。
- 小問 設問2 b:ア
- プログラム1の式 a[i] ← a[i-1] + b[i] では、1つ前の繰返しで算出して更新した値 a[i-1] を参照するため、「更新した値が次の繰返しで参照されるので」(ア)並列実行できません。
- 小問 設問2 c:ウ
- プログラム2の式 a[i] ← a[i+1] + b[i] では、今回の繰返しで参照する a[i+1] の値が次の繰返しで更新されるため、「参照した値が次の繰返しで更新されるので」(ウ)並列実行できません。
- 小問 設問2 d:イ
- プログラム3の式 a[i] ← a[i+m] + b[i] において、更新されるインデックスは 1〜n、参照されるインデックスは (1+m)〜(n+m) です。m ≧ n(イ)であれば参照範囲が更新範囲と一切重複しないため、依存関係が発生せず並列実行が可能になります。
- 小問 設問3:イ
- プログラム4を4つのスレッドで並列実行する場合、異なるスレッドが同じ配列要素 a[k] を同時に更新すると結果が一意になりません。解答群イの ip 配列は 1〜20 の整数が各スレッド間で重複なく一度ずつ現れるため、競合が発生せず並列実行が可能です。
覚えるポイント
- アムダールの法則:E = 1 / ((1 - r) + r / n)
- ループ並列化の阻害要因:反復間の更新と参照の順序依存(RAW/WAR/WAW)
間違えやすいところ
- 並列化できる割合rを90%ではなく90/97などと取り違えて計算してしまうこと。
- プログラム2で、先に起きる「参照」と後に起きる「更新」の順番を取り違えること。
出題の前提:問題文および共通仕様に記載された並列実行・マルチプロセッサの処理モデルに基づく。
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.16 ↗(www.ipa.go.jp) / 公式問題冊子 p.17 ↗(www.ipa.go.jp) / 公式問題冊子 p.18 ↗(www.ipa.go.jp) / 公式問題冊子 p.19 ↗(www.ipa.go.jp) / 公式問題冊子 p.20 ↗(www.ipa.go.jp)
広域Ethernetにおけるファイル転送スループットの改善と計算
ネットワーク · 広域Ethernet / スループット / 回線速度 / 伝送時間
東京本社と各営業所間を広域Ethernetで接続したネットワークにおいて、ファイル転送シーケンス(応答時間とデータブロック伝送時間)に基づく全体の転送時間計算、接続装置導入による連続送信効果、および目標転送時間を満たすアクセス回線速度の算出について問う。
- ア
- 設問1: 広域Ethernetのアクセスポイントへはネットワーク層の機能をもつ装置を経由して接続しなければならない / 設問2(a): 8.00 / 設問2(b): 3.14 / 設問2(c): 3
- イ
- 設問1: サーバやPCなど,全ての接続機器のネットワーク層のアドレス設定を同一にする必要がある / 設問2(a): 10.00 / 設問2(b): 5.50 / 設問2(c): 4
- ウ
- 設問1: 社内の業務システムにおいて,様々な通信プロトコルをネットワーク層で利用することができる / 設問2(a): 11.25 / 設問2(b): 9.13 / 設問2(c): 8
- エ
- 設問1: X社では,TCP/IP以外のプロトコルを使うことができない / 設問2(a): 19.25 / 設問2(b): 13.40 / 設問2(c): 10
解答・解説を表示
解答
設問1: ウ, 設問2 a: エ, 設問2 b: ウ, 設問2 c: イ
解説
まず要点:ネットワークでファイルを送る時間は、「要求と応答の往復にかかる待ち時間」と「回線にデータを流す時間」を足したものになります。1ブロックごとに応答を待つ方式では待ち時間が何度も積み重なるので、複数のブロックをまとめて連続送信する仕組みが速さの向上に欠かせません。
解き方
- 設問1: 広域Ethernetがデータリンク層(L2)のサービスであることから、上位のプロトコルの自由さを考えて選択肢を判断します。
- 設問2 a: 1ブロックあたりの応答時間とデータ伝送時間を足し、ブロックの総数(250個)を掛けて全体の転送時間を求めます。
- 設問2 b: 接続装置で10ブロック連続送信したときの1サイクルの時間を求め、25サイクル分を計算して四捨五入します。
- 設問2 c: 目標の転送時間(8秒)から1ブロックあたりの許容伝送時間を逆算し、必要な最低回線速度を出します。
小問ごとの答え
- 小問 設問1:ウ
- 広域Ethernetはデータリンク層(レイヤ2)で拠点間を透過的に接続するサービスであるため、ネットワーク層(レイヤ3)のプロトコルに依存せず、IP以外のプロトコルを含む多様な通信プロトコルを利用可能です(ウが適切)。
- 小問 設問2 a:エ
- 1Mバイト = 1,000kバイト、1ブロック 4kバイトよりブロック数は 250個です。広島営業所(1Mbps)との伝送時間は 4kバイト×8ビット / 1Mbps = 32ミリ秒。1ブロック所要時間は応答時間 45ms + 伝送時間 32ms = 77ms = 0.077秒です。合計転送時間は 0.077秒 × 250 = 19.25秒(エ)となります。
- 小問 設問2 b:ウ
- 接続装置により10ブロックをまとめて送るため、10ブロックあたりの所要時間は応答時間 45ms + 伝送時間 320ms(32ms×10)= 365ms = 0.365秒です。全250ブロックの送信には 25サイクル要するため、0.365秒 × 25 = 9.125秒となり、小数第3位を四捨五入して 9.13秒(ウ)となります。
- 小問 設問2 c:イ
- 大阪営業所(応答時間24ms)で250ブロックを8秒以内に転送するには、1ブロックあたり 8 / 250 = 0.032秒 = 32ms 以内である必要があります。伝送時間は 32ms - 24ms = 8ms(0.008秒)以内。回線速度 C は 32,000ビット / 0.008秒 = 4,000,000bps = 4Mbps(イ)必要となります。
覚えるポイント
- 広域Ethernetはレイヤ2接続サービスであり、レイヤ3プロトコルに制限がない
- 転送時間 = ブロック数 × (応答時間 + ブロック伝送時間)
間違えやすいところ
- 問題文の注記「1Mバイト=1,000kバイト」を見落として、1,024kバイトで計算してしまうこと。
- 応答時間に伝送時間が含まれていると誤解して、伝送時間の足し算を忘れてしまうこと。
出題の前提:問題文中に提示された通信シーケンスおよびネットワーク諸元(回線速度・遅延時間)に基づく。
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.21 ↗(www.ipa.go.jp) / 公式問題冊子 p.22 ↗(www.ipa.go.jp) / 公式問題冊子 p.23 ↗(www.ipa.go.jp) / 公式問題冊子 p.24 ↗(www.ipa.go.jp)
システム統合に伴うソフトウェア設計
ソフトウェア設計 · 基幹システム統合 / 在庫管理 / 実在庫と有効在庫 / システム間連携インタフェース
受注生産方式のC社が見込生産方式のD社を吸収合併することに伴い、基幹システムの統合およびシステム間連携の改修を計画している。問題文および提示された各システムの機能説明、在庫管理仕様(実在庫・有効在庫の更新ルール)に基づき、追加開発が必要となる機能と、在庫管理システム連携インタフェースの設定内容に関する問いに答えよ。
- 設問1 a ア
- 会計
- 設問1 a イ
- 生産管理
- 設問1 a ウ
- 調達管理
- 設問1 a エ
- 配送管理
- 設問1 b ア
- 在庫情報と売掛情報から,製品ごとの生産計画を日次で作成する機能
- 設問1 b イ
- 作業実績(原価情報)から,月次で原価計算をする機能
- 設問1 b ウ
- 受注情報から,月別の販売予測を作成する機能
- 設問1 b エ
- 出荷指示の情報から,週次の配送計画を作成する機能
- 設問1 b オ
- 請求情報から,月別,顧客別に請求書を作成する機能
- 設問2 c〜f ア
- 実在庫 / 出庫 / 受注数
- 設問2 c〜f イ
- 実在庫 / 出庫 / 出荷数
- 設問2 c〜f ウ
- 実在庫 / 入庫 / 生産予定数
- 設問2 c〜f エ
- 実在庫 / 入庫 / 納品数
- 設問2 c〜f オ
- 有効在庫 / 出庫 / 完成数
- 設問2 c〜f カ
- 有効在庫 / 出庫 / 受注数
- 設問2 c〜f キ
- 有効在庫 / 入庫 / 生産予定数
- 設問2 c〜f ク
- 有効在庫 / 入庫 / 納品数
解答・解説を表示
解答
設問1: a イ, b ア; 設問2: c キ, d エ, e カ, f イ
解説
まず要点:システムを統合するときは、もとの会社の業務の違い(受注生産か見込生産かなど)を比べ、共通にできない部分を洗い出して追加開発する機能を決めます。また、実在庫(実際に手元にある在庫)と有効在庫(今後の入出庫を考えて引当てできる在庫)を区別し、業務の出来事ごとにどちらをどう増減するかを連携の設定として決めることが大切です。
解き方
- C社とD社の各システム機能の説明を比べ、C社になくD社だけに必要な生産管理の計画作成機能(日次計画作成)を見つけます。
- 在庫管理の更新ルール(1)〜(10)を読み、各業務の出来事(生産計画時、部品納品時、受注時、製品出荷時)が実在庫と有効在庫のどちらを、入庫か出庫か、何の数量で更新するかを対応づけます。
小問ごとの答え
- 小問 設問1 a:イ
- C社システムにD社固有の生産管理機能を追加する必要があるため、対象システムは「生産管理」となります。
- 小問 設問1 b:ア
- D社の生産管理システム固有の機能である「在庫情報と売掛情報から、製品ごとの生産計画を日次で作成する機能」が追加機能に該当します。
- 小問 設問2 c:キ
- 仕様(6)「生産計画時に、翌日までに生産予定の製品数を有効在庫として加算する」より、在庫区分は有効在庫、入出庫区分は入庫、数量は生産予定数となります。
- 小問 設問2 d:エ
- 仕様(7)「部品が調達先から納品されたら実在庫として加算する」より、在庫区分は実在庫、入出庫区分は入庫、数量は納品数となります。
- 小問 設問2 e:カ
- 仕様(5)「受注時は、有効在庫から受注数を引き当てる」より、在庫区分は有効在庫、入出庫区分は出庫(引き当てによる減算)、数量は受注数となります。
- 小問 設問2 f:イ
- 仕様(10)「製品の出荷時に、製品の実在庫を減算する」より、在庫区分は実在庫、入出庫区分は出庫、数量は出荷数となります。
覚えるポイント
- 実在庫は倉庫に現存する物理数量、有効在庫は引当可能数量(実在庫+受取予定−引当済)を表します。
間違えやすいところ
- 生産計画時や受注時のように、実際にモノが動かないタイミングで実在庫を増減させてしまう間違いが多いです。
出題の前提:平成26年度春期基本情報技術者試験午後問5の出題条件に基づく。
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.25 ↗(www.ipa.go.jp) / 公式問題冊子 p.26 ↗(www.ipa.go.jp) / 公式問題冊子 p.27 ↗(www.ipa.go.jp) / 公式問題冊子 p.28 ↗(www.ipa.go.jp) / 公式問題冊子 p.29 ↗(www.ipa.go.jp) / 公式問題冊子 p.30 ↗(www.ipa.go.jp)
ファンクションポイント法を用いた工数見積り
プロジェクトマネジメント · ファンクションポイント法 / 開発規模見積り / 開発生産性 / 共通部品化による工数削減
名簿データ管理システム開発において、簡易ファンクションポイント法を用いて工数見積りと削減策の検討を行う。処理フロー図と工数見積方法の説明に基づき、ファンクション数、開発規模、処理工数、および共通部品化による工数削減に関する各小問に答えよ。
- 設問1 a ア
- 1
- 設問1 a イ
- 2
- 設問1 a ウ
- 3
- 設問1 a エ
- 4
- 設問1 b ア
- 1.0
- 設問1 b イ
- 2.0
- 設問1 b ウ
- 2.5
- 設問1 b エ
- 4.0
- 設問2 c ア
- 端末画面
- 設問2 c イ
- 帳票作成
- 設問2 c ウ
- ファイル書込
- 設問2 c エ
- ファイル読込
- 設問2 c オ
- レコード編集
- 設問2 d ア
- 外部設計
- 設問2 d イ
- 外部設計,詳細設計
- 設問2 d ウ
- 外部設計,詳細設計,製造
- 設問2 d エ
- 外部設計,詳細設計,製造,総合試験
- 設問2 d オ
- 外部設計,詳細設計,製造,総合試験,運用試験
- 設問2 e ア
- 1.088
- 設問2 e イ
- 1.44
- 設問2 e ウ
- 2.176
- 設問2 e エ
- 2.72
解答・解説を表示
解答
設問1: a ウ, b エ; 設問2: c ウ, d ウ, e イ
解説
まず要点:ファンクションポイント法では、入出力やファイルなどの機能の数に重み(規模)を掛けてソフトウェアの規模を出し、生産性(規模÷工数)を使って必要な工数を見積もります。共通部品にして工数を減らすときは、全部で使われる規模の大きい機能を探し、対象となる開発工程の割合や規模の割合を正しく按分して計算します。
解き方
- データ抽出処理のファイル書込の対象(オンラインストレージ、電子記憶媒体、ログデータ)を数えて機能の数を出し、データ整備処理の各機能の規模を合計して工数を求めます。
- 表3から全処理に共通して規模の合計が最大の機能を探し、表4の工程割合の和が80%になる工程の組合せ(外部設計・詳細設計・製造)を見つけます。
- データ抽出処理の対象工程の工数合計(2.72人月)に、データ抽出処理全体の規模(1.7kステップ)に対するファイル書込の規模(0.9kステップ)の割合(0.9/1.7)を掛け、削減できる工数(1.44人月)を出します。
小問ごとの答え
- 小問 設問1 a:ウ
- データ抽出処理における出力先は、オンライン接続、電子記憶媒体、ログデータの3つがあり、いずれもファイル書込に該当するため a は 3 となります。
- 小問 設問1 b:エ
- データ整備処理の開発規模は 2×0.1 + 1×0.3 + 0×0.6 + 1×1.0 + 1×0.5 = 2.0 kステップです。計画生産性 0.5 kステップ/人月で割ると、2.0 ÷ 0.5 = 4.0 人月となります。
- 小問 設問2 c:ウ
- 全4処理で利用され、ファンクション別開発規模合計が 0.6 + 0.3 + 0.9 + 0.3 = 2.1 kステップで最大となるのは「ファイル書込」です。
- 小問 設問2 d:ウ
- 外部設計(15%)+詳細設計(25%)+製造(40%)の合計が80%となり、全工程工数合計の80%に一致します。
- 小問 設問2 e:イ
- データ抽出処理の対象3工程の工数合計は 0.51 + 0.85 + 1.36 = 2.72 人月です。データ抽出の開発規模合計 1.7 kステップ中のファイル書込規模は 0.9 kステップ(比率 0.9/1.7)なので、2.72 × (0.9 / 1.7) = 1.44 人月となります。
覚えるポイント
- 工数は「開発規模 ÷ 開発生産性」で算出されます。
- 特定のファンクションの工数を按分する際は「対象工程の工数合計 ×(対象機能の規模 ÷ 処理の全体規模)」で求めます。
間違えやすいところ
- データ抽出処理のファイル書込で、業務ログ出力をファイル書込として数え忘れるミスが多いです。
- 小問eで、対象工程の工数合計(2.72人月)に機能規模の割合(0.9/1.7)を掛けずに答えてしまう間違いがよくあります。
出題の前提:平成26年度春期基本情報技術者試験午後問6の出題条件に基づく。
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.31 ↗(www.ipa.go.jp) / 公式問題冊子 p.32 ↗(www.ipa.go.jp) / 公式問題冊子 p.33 ↗(www.ipa.go.jp) / 公式問題冊子 p.34 ↗(www.ipa.go.jp) / 公式問題冊子 p.35 ↗(www.ipa.go.jp)
システム移行の作業計画
経営戦略・企業と法務 · プロジェクトマネジメント / アローダイアグラム / 要員計画 / クリティカルパス
物流費管理システムのバージョンアップ移行作業計画(表1)および作成途中のアローダイアグラム(図1)、要員計画表(表2)に関する設問に答えよ。 【表1:バージョンアップに必要な作業の一覧】 ・No1: サービス停止(1時間、1人、先行なし) ・No2: バックアップ(1時間、4人、先行: No1) ・No3: パッケージ抽出(1時間、3人、先行: No2) ・No4: 開発ソフト抽出(1時間、3人、先行: No2) ・No5: パッケージ変換(1時間、3人、先行: No3) ・No6: 開発ソフト変換(1時間、3人、先行: No4) ・No7: パッケージ新導入(2時間、4人、先行: No3) ・No8: 開発ソフト新導入(1時間、2人、先行: No4) ・No9: 単体・連結確認(3時間、6人、先行: No7, No8) ・No10: パッケージロード(2時間、2人、先行: No5, No9) ・No11: 開発ソフトロード(1時間、2人、先行: No6, No9) ・No12: ロード後確認(1時間、3人、先行: No10, No11) ・No13: 全体動作確認・判定(3時間、6人、先行: No9, No12) 設問1:アローダイアグラムの空欄 [ a ]、[ b ]、最短所要時間 [ c ] を求めよ。 設問2:要員計画表(表2)の空欄 [ d ]、9〜10時の必要人数を削減する工夫 [ e ]、平準化後の必要最少人数 [ f ] を求めよ。 設問3:全体の作業完了時刻を30分早めるための組合せとして正しいものを二つ選べ。
- ア
- 設問1 a: 5から6 / b: 8 / c: 9 / 設問2 d: (6, 2, 2) / e: No5を10時 / f: 4 / 設問3: No2とNo9の作業時間を15分ずつ短縮する
- イ
- 設問1 a: 5から7 / b: 9 / c: 10 / 設問2 d: (6, 2, 4) / e: No5を14時 / f: 6 / 設問3: No3とNo4の作業時間を15分ずつ短縮する
- ウ
- 設問1 a: 6から8 / b: 10 / c: 13 / 設問2 d: (6, 4, 2) / e: No6を7時 / f: 7 / 設問3: No5とNo6の作業時間を15分ずつ短縮する
- エ
- 設問1 a: 6から9 / b: 8と9 / c: 14 / 設問2 d: (8, 2, 2) / e: No6を8時 / f: 8 / 設問3: No10とNo11の作業時間を15分ずつ短縮する
- オ
- 設問1 c: 19 / 設問2 d: (8, 4, 2) / f: 9 / 設問3: No12とNo13の作業時間を15分ずつ短縮する
- カ
- 設問1 b: 9と10 / 設問2 f: 10
解答・解説を表示
解答
設問1: a ア, b エ, c エ, 設問2: d ウ, e ア, f ウ, 設問3: ア, オ (順不同)
解説
まず要点:アローダイアグラム(PERT)では、作業の前後関係を矢印で表し、最も時間のかかる経路(クリティカルパス)が全体の最短所要時間を決めます。余裕のある作業は、クリティカルパスに影響しない範囲で開始時刻をずらし、時間帯ごとの必要な人数を平準化(ならす)ことができます。
解き方
- 表1の先行作業の関係から、アローダイアグラムに足りない矢線とダミー作業を見つけます。
- 各ノードの最早結合点時刻を前に向かって計算し、クリティカルパスの所要時間(14時間)を出します。
- 前倒しや先送りができる作業(No5, No6, No11など)の余裕時間をとらえ、要員の山崩しをしてピーク人数を最小にします。
- 短縮する作業がクリティカルパス上にあるかを確かめ、全体の短縮につながる組合せを選びます。
小問ごとの答え
- 小問 設問1 a:ア
- No8の先行作業はNo4(ノード3からノード5)であり、後続作業No9(ノード6からノード7)へと接続するため、ノード5からノード6への矢印が必要です。
- 小問 設問1 b:エ
- No9(終了ノード7)はNo10(開始ノード9)およびNo11(開始ノード8)の先行作業であるため、ノード7からノード8およびノード9へのダミー作業が必要です。
- 小問 設問1 c:エ
- クリティカルパスは 1→2→3→4(No7:2h)→6→7(No9:3h)→9(No10:2h)→10→11(No12:1h)→12(No13:3h) 等をたどり、1+1+1+2+3+2+1+3 = 14時間となります。
- 小問 設問2 d:ウ
- 14時開始はNo12(3人)、15時以降はNo13(3時間・6人)なので、14時は3人ではなく、先行完了状況から14時: No9完了後No10(2人)+No11(2人)等の組み合わせを追跡すると、13時: No9(6人)、14時: No10(2人)+No11(2人)で計4人、15時: No12(3人)またはNo10残り(2人)等となり、13時が6人、14時が4人、15時が2人(ウ: 6, 4, 2)が適合します。
- 小問 設問2 e:ア
- 9〜10時に重複している作業のうち、No5の先行作業はNo3(8〜9時)で完了しており、後続No10の開始はNo9完了(14時)以降なので、No5の開始を10時に遅らせても全体の完了時刻に影響しません。
- 小問 設問2 f:ウ
- 各時間帯の作業(No13の6人、No9の6人など)を調整し、1時間あたりの最大同時所要人数を抑えると最少必要人数は7人になります。
- 小問 設問3:ア, オ (順不同)
- クリティカルパス上の作業は No1, No2, No3, No7, No9, No10, No12, No13 です。このパス上にある作業を合計30分短縮することで全体が30分短縮されます。選択肢ア(No2とNo9)およびオ(No12とNo13)はともにクリティカルパス上の作業のみで構成されているため正解となります。
覚えるポイント
- クリティカルパス上の作業を短縮しなければ全体の工期は短縮されない。
- ダミー作業は作業時間0で先行関係のみを表現する破線矢印である。
間違えやすいところ
- 同時に実行できる非クリティカル作業を短縮しても、全体の完了時刻が変わらないのを見落としやすいです。
- 要員の山積み表で、作業期間が複数時間にわたる作業(No7やNo9など)の重複加算を忘れがちです。
出題の前提:平成26年度春期基本情報技術者試験午後問7問題文および公式解答・採点講評に基づく。
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.36 ↗(www.ipa.go.jp) / 公式問題冊子 p.37 ↗(www.ipa.go.jp) / 公式問題冊子 p.38 ↗(www.ipa.go.jp) / 公式問題冊子 p.39 ↗(www.ipa.go.jp)
空き領域の管理アルゴリズム
データ構造及びアルゴリズム · メモリ管理 / 区間管理 / 配列操作 / アルゴリズム解析
1列に連続して並べたセルの割当て(Alloc)と解放(Free)を、空き区間の組 {始点i, 終点i} のリストとして管理するアルゴリズムに関する設問に答えよ。 ・初期状態: {{-∞, +∞}} ・Alloc(始点p, 終点p): 空きリストから指定セルを取り除く。始点p・終点pと空き組の端点が一致するか部分的一致かによって組の更新または分割を行う。 ・Free(始点p, 終点p): 解放したセルを空きリストに戻し、隣接する空き組があれば結合する。 設問1:Freeの説明文中の [ a ]、[ b ] に入る適切な組を答えよ。 設問2:Allocを実装したプログラム中の空欄 [ c ]、[ d ]、[ e ] に入る適切な式・文を答えよ。 設問3:空きリストの両端に -∞ と +∞ を保持する利点 [ f ]、および領域中のセル数がE個のときの空きリストの組数の最大値 [ g ]、全セル割当済時の組数 [ h ] を求めよ。
- ア
- 設問1 a: {始点i, 終点i+1} / 設問2 c: 終点[I] ← 始点P-1 / d: 始点[I] ← 終点P+1 / e: I+1, L < N, 1 / 設問3 f: 空きリストが空(組の個数が0)にならない / g: 1
- イ
- 設問1 a: {始点i, 終点p} / 設問2 c: 始点[I] ← 終点P+1 / d: 終点[I] ← 終点P+1 / e: I+1, L ≦ N, 1 / 設問3 f: 関数Freeの実行時に空きリスト中の組の個数が2以上であることが保証される / g: 2 / h: 2
- ウ
- 設問1 a: {始点p, 終点i+1} / 設問2 c: 終点[I] ← 始点P-1 / d: 終点[I] ← 始点P-1 / e: N, L ≧ I+1, -1 / 設問3 f: 始点1又は終点Nの値が変わらない限り領域中に“空き”セルが残っている / g: E÷2+1
- エ
- 設問1 b: {始点p, 終点p} / 設問2 c: 終点[I] ← 終点P+1 / d: 終点[I] ← 始点P+1 / e: N, L > I+1, -1 / 設問3 f: 領域中の一つの連続した“空き”セルが幾ら長くても一つの組で表せる / g: (E+1)÷2+1
- オ
- 設問3 g: E+1
- カ
- 設問3 g: E+2
解答・解説を表示
解答
設問1: a ア, b エ, 設問2: c イ, d ウ, e ウ, 設問3: f ア, g エ, h イ
解説
まず要点:メモリなどの空き領域を区間で管理するときは、連続して空いている範囲を始点と終点のペアで表し、割当て時は区間を縮めるか分け、解放時は隣り合う区間をくっつけます。両端に仮想的な無限の点(-∞, +∞)を番兵として置くと、端の判定が同じ形でできて処理が簡単になります。
解き方
- Free関数の決まりに従い、左右の空き区間とつながるかどうかで、くっつけるか新しく入れるかの表し方を決めます。
- Alloc関数で一部だけ使う場合(先頭側か末尾側を消費する場合)の端点の更新式を導きます。
- 配列に要素を入れる処理で、データを壊さないための後ろから前へずらすループの条件を特定します。
- 番兵の効果を整理し、交互に並ぶときの最大の空き区間数と、全セル割当て時の端の区間数を求めます。
小問ごとの答え
- 小問 設問1 a:ア
- 前後の空き組 {始点i, 終点i} と {始点i+1, 終点i+1} の間をちょうど埋めるように解放されるため、これら二つの組を結合して {始点i, 終点i+1} の一つの組に置き換えます。
- 小問 設問1 b:エ
- どちらの隣接する空き組とも連続しない独立した区間の解放であるため、{始点i, 終点i} の直後に新たな組 {始点p, 終点p} を挿入します。
- 小問 設問2 c:イ
- 始点[I] = 始点P かつ 終点P < 終点[I] の場合、空き区間の先頭側から切り出されるため、残る空き区間の新たな始点は「始点[I] ← 終点P + 1」となります。
- 小問 設問2 d:ウ
- 始点[I] < 始点P かつ 終点P = 終点[I] の場合、空き区間の末尾側から切り出されるため、残る空き区間の新たな終点は「終点[I] ← 始点P - 1」となります。
- 小問 設問2 e:ウ
- 区間が2つに分割されるため配列要素を1つ後ろへシフトします。後方から順に移動する必要があるため、ループ制御は「N, L ≧ I+1, -1」となります。
- 小問 設問3 f:ア
- 領域外を番兵として {-∞, 始点} および {終点, +∞} の形で常に保持し続けるため、空きリストが空(要素数0)になることがありません。
- 小問 設問3 g:エ
- 空きセルと割当済セルが交互に並ぶときに組数が最大になります。E個のセルにおいて最大割当可能数は(E+1)÷2個であり、その間の空き組と両端の外部空き領域2個を合わせると、最大組数は (E+1)÷2 + 1 となります。
- 小問 設問3 h:イ
- 領域内のE個のセルがすべて割当済みとなった場合、残るのは領域外の左側 {-∞, 始点} と右側 {終点, +∞} の2個の組となります。
覚えるポイント
- 配列要素を後方に1つシフトする場合は、上書き破壊を防ぐため末尾から前方に処理する。
- 番兵(-∞, +∞)を用いることでリストが空になる特殊ケースを排除できる。
間違えやすいところ
- Allocのときの始点更新と終点更新で、足す(+1)と引く(-1)の向きを混同しやすいです。
- 最大組数を数えるとき、両端にある領域外の空き領域(2組)を足し忘れてしまいます。
出題の前提:平成26年度春期基本情報技術者試験午後問8問題文および公式解答・採点講評に基づく。
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.40 ↗(www.ipa.go.jp) / 公式問題冊子 p.41 ↗(www.ipa.go.jp) / 公式問題冊子 p.42 ↗(www.ipa.go.jp) / 公式問題冊子 p.43 ↗(www.ipa.go.jp) / 公式問題冊子 p.44 ↗(www.ipa.go.jp) / 公式問題冊子 p.45 ↗(www.ipa.go.jp)
C言語によるテキストの編集プログラム
ソフトウェア開発 · C言語 / 文字列処理 / テキスト整形 / ワードラップ
行末で単語が途切れないようにテキストを編集してファイルに出力するC言語のプログラム及びその仕様変更に関する次の問いに答えよ。
- ア
- 設問1 a: lpos = 0 / b: '\0' / c: sp = 0 / d: lpos > 0, 設問2 e: lpos == 0 / f: lch = ' '
- イ
- 設問1 a: lpos = sp / b: '\n' / c: sp = lpos / d: lpos >= width, 設問2 e: lpos == sp / f: lch = '.'
- ウ
- 設問1 a: lpos = width / b: ' ' / c: sp++ / d: lpos > sp, 設問2 e: lpos != 0 / f: lch = ch
- エ
- 設問1 a: lpos++ / b: ch / c: str[1pos] = ch / d: sp > 0, 設問2 e: lpos != sp / f: str[sp++] = ' '
- オ
- 設問1 a: lpos += sp / c: str[sp++] = ch / d: (lpos + sp) > 0, 設問2 e: sp == 0 / f: str[sp++] = lch
- カ
- 設問1 d: (lpos + sp) >= width, 設問2 e: sp != 0
解答・解説を表示
解答
設問1: a ア, b イ, c ア, d カ, 設問2: e ウ, f ウ
解説
まず要点:行末で単語が途切れないよう、出力行の現在位置(lpos)と単語の長さ(sp)を数えながら、行の幅(width)を超えないように改行を入れます。単語は一度ためてから出すので、単語の長さを足した位置が幅を超えたときだけ折り返します。行頭では余分な空白を出さず、直前の1文字を覚えておくことで正しく整形できます。
解き方
- 設問1では、lposが出力済みの文字数、spがstrに入っている文字数という役割を確認し、改行時と単語出力時の初期化、折り返しの判定条件を考えます。
- 設問2では、行頭の空白を出さないための条件(lpos != 0)と、直前の単語の末尾文字を覚える代入(lch = ch)を選びます。
小問ごとの答え
- 小問 設問1 a:ア
- 改行文字'\n'を出力ファイルに書き込んだ直後であるため、現在処理している行の出力済み文字数lposを0に初期化する必要があります。
- 小問 設問1 b:イ
- 空白文字を契機として単語を出力する際、行の最大文字数widthに達している場合は単語の末尾に改行文字'\n'を付加して改行させます。
- 小問 設問1 c:ア
- 保持していた単語strを出力ファイルに書き出したため、次の単語を先頭から格納できるようにバッファ内文字数spを0にリセットします。
- 小問 設問1 d:カ
- 英数字などの単語構成文字を処理する際、出力済み文字数lposと未出力の単語長spの合計が出力幅width以上になる場合に、単語直前に改行を出力して行頭へ送ります。
- 小問 設問2 e:ウ
- 行頭の連続する空白文字を出力しない仕様に変更するため、現在行の出力済み文字数lposが0でない(行頭ではない)場合のみ空白文字を出力するように判定します。
- 小問 設問2 f:ウ
- 直前に出力した単語の最後の文字がピリオド'.'であったかを判定できるように、単語を構成する各文字の処理時にlch = chとして最後の文字を保持します。
覚えるポイント
- 文字列出力バッファをフラッシュした後は、インデックス変数(sp)を0に戻す必要があります。
- 行頭の判定には、行の出力済み文字数を表すカウンタ(lpos == 0)を利用します。
間違えやすいところ
- 単語の長さspを考えず、lposだけで行があふれるか判定してしまう間違いに注意します。
- 直前の文字を覚えるlchの更新を、単語全体ではなく1文字ずつ行う点を見落としやすいです。
出題の前提:平成26年度春期基本情報技術者試験午後問9
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.46 ↗(www.ipa.go.jp) / 公式問題冊子 p.47 ↗(www.ipa.go.jp) / 公式問題冊子 p.48 ↗(www.ipa.go.jp) / 公式問題冊子 p.49 ↗(www.ipa.go.jp) / 公式問題冊子 p.50 ↗(www.ipa.go.jp) / 公式問題冊子 p.51 ↗(www.ipa.go.jp)
COBOLによる検定テスト結果の管理と整列
ソフトウェア開発 · COBOL / マスタ更新 / 順ファイル / 整列処理 / SORT文
英語検定テストの採点結果を読み込み、従業員の直近5回分の得点履歴を管理する得点マスタファイルに反映・整列出力するCOBOLプログラムに関する次の問いに答えよ。
- ア
- 設問1 a: TEST AFTER UNTIL SCR-ENUM = MST-ENUM / c: MST-DATE(W-CNT) = ZERO / d: 1, 設問2 e: 行番号34と35の間 / f: W-CNT = 10 AND SRT-SCORE = PREV-SCORE / g: ADD 1 TO W-CNT
- イ
- 設問1 a: TEST AFTER VARYING W-CNT FROM ZERO BY 1 UNTIL W-CNT > 5 / c: MST-DATE(W-CNT) NOT = ZERO / d: 5, 設問2 e: 行番号41と42の間 / f: W-CNT = 10 AND SRT-SCORE > PREV-SCORE / g: ADD SRT-SCORE TO PREV-SCORE
- ウ
- 設問1 a: TEST BEFORE UNTIL SCR-ENUM NOT = MST-ENUM / c: MST-SCORE(W-CNT) = ZERO / d: HST-NUM, 設問2 e: 行番号43と44の間 / f: W-CNT > 10 AND SRT-SCORE < PREV-SCORE / g: MOVE PREV-SCORE TO SRT-SCORE
- エ
- 設問1 a: TEST BEFORE VARYING W-CNT FROM 1 BY 1 UNTIL W-CNT > 4 / c: MST-SCORE(W-CNT) NOT = ZERO / d: W-CNT, 設問2 e: 行番号53と54の間 / f: W-CNT > 10 AND SRT-SCORE = PREV-SCORE / g: MOVE SRT-SCORE TO PREV-SCORE
- オ
- 設問1 a: TEST BEFORE VARYING W-CNT FROM 4 BY -1 UNTIL W-CNT = ZERO, 設問2 なし
解答・解説を表示
解答
設問1: a ア, b オ, c イ, d ア, 設問2: e ウ, f ウ, g エ
解説
まず要点:順ファイルの突き合わせでは、キーが一致するまでマスタを読み進めます。配列をずらすときは、値を壊さないように後ろから順に移すことが大切です。並べ替え(ソート)を使うときは、RELEASE文で整列したいレコードを渡します。
解き方
- 設問1では、マスタの突き合わせ条件(a)、中身を壊さない後ろからのシフトループ(b)、0点の受検者も考える有効判定(c)、最新データを先頭に入れる処理(d)を順に考えます。
- 設問2では、RELEASE文を入れる正しい位置(e)、同点も含めた上位10名の終了判定(f)、直前の得点を更新する処理(g)を筋道立てて考えます。
小問ごとの答え
- 小問 設問1 a:ア
- マスタレコードを採点レコードの従業員番号SCR-ENUMと一致するまで順次読み進めるため、TEST AFTER UNTIL SCR-ENUM = MST-ENUMとします。
- 小問 設問1 b:オ
- 配列の要素を後方にシフトする際、先頭から順に移動すると値が上書き破壊されるため、添字を4から1まで-1刻みで減らしながら後ろから順に移動します。
- 小問 設問1 c:イ
- 得点が0点の場合もあるため、受検があったかどうかの判定は受検日MST-DATEがゼロでないか(NOT = ZERO)で判断する必要があります。
- 小問 設問1 d:ア
- 過去の履歴を後方にシフトした後、先頭位置(添字1)に今回の最新の受検日と得点を格納するため、添字には1を指定します。
- 小問 設問2 e:ウ
- ソートファイルへのレコード引き渡し(RELEASE)は、対象となる採点レコードを読み込んでマスタ更新処理を呼び出した直後(行番号43と44の間)に行います。
- 小問 設問2 f:ウ
- 上位10名を表示し10人目と同点者も全て表示するため、表示人数が10人を超え(W-CNT > 10)、かつ得点が直前の得点より低くなった(SRT-SCORE < PREV-SCORE)時点で出力を終了します。
- 小問 設問2 g:エ
- 次回ループで同点判定を行うために、今回表示した得点を直前得点として保存するMOVE SRT-SCORE TO PREV-SCOREを実行します。
覚えるポイント
- 配列要素を後ろへシフトする際は、前方から処理するとデータが上書き破壊されるため、後方から順に移動します。
- 未受検の初期値が0であるデータで「0点」を区別するには、得点ではなく受検日の有無を確認します。
間違えやすいところ
- 得点0点という正しい受検結果を、受けていないと取り違えてMST-SCOREで判定してしまう間違いが多いです。
- COBOLの配列の添字は1から始まることを忘れ、0を先頭だと考えてしまう誤りに注意します。
出題の前提:平成26年度春期基本情報技術者試験午後問10
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.52 ↗(www.ipa.go.jp) / 公式問題冊子 p.53 ↗(www.ipa.go.jp) / 公式問題冊子 p.54 ↗(www.ipa.go.jp) / 公式問題冊子 p.55 ↗(www.ipa.go.jp) / 公式問題冊子 p.56 ↗(www.ipa.go.jp) / 公式問題冊子 p.57 ↗(www.ipa.go.jp)
雑誌記事のオンライン購読サイトの設計と実装
ソフトウェア開発 (Java) · クラスの継承 / ファクトリメソッド / 拡張for文 / アクセス制御
雑誌記事のオンライン購読サイトを題材としたJavaプログラムに関する設問である。記事を表すArticleクラス、利用者を管理するUserクラスとその派生クラス(Guest, Member, PaidMember)、及びテスト用クラスSubscriptionSiteの実装と動作について、設問1および設問2に答えよ。
- ア
- 0回
- イ
- 1回
- ウ
- 2回
- エ
- 3回
- オ
- 4回
- カ
- 5回
解答・解説を表示
解答
設問1: a イ, b ウ, c ウ, d キ, e キ, f カ, 設問2: エ
解説
まず要点:継承(親クラスの機能を子クラスが受け継ぐしくみ)では、子クラスから親クラスのコンストラクタを呼ぶときにsuperを使います。また、ポリモーフィズム(同じ呼び出しでも相手によって動きが変わるしくみ)により、会員区分に応じた閲覧の判定を自動で呼び分けられます。
解き方
- 各利用者クラス(Guest, Member, PaidMember)の記事を閲覧できる範囲と、継承の関係を確認します。
- 抽象クラスUserのコンストラクタの仕様に合わせ、子クラスからsuper(name)を呼ぶ書き方を特定します。
- Memberクラスの同日に複数閲覧できないしくみと、有料会員・ゲストの動きの違いを順に追います。
- 設問2では記事0003を有料にしたときの各読者(Guest, Member A, PaidMember B)の判定結果を順に追って数えます。
小問ごとの答え
- 小問 設問1 a:イ
- GuestクラスのtestAndMarkメソッドでは、無料記事の場合にtrueを返す仕様のため、article.isFree()を返します。
- 小問 設問1 b:ウ
- 親クラスUserのコンストラクタUser(String name)を呼び出すため、サブクラスのコンストラクタ内でsuper(name)を実行します。
- 小問 設問1 c:ウ
- 今日既に有料記事を閲覧済みかどうかを判定するため、直近閲覧日browseDateと今日の日付todayが等しいか比較する「==」が入ります。
- 小問 設問1 d:キ
- PaidMemberクラスはすべての記事を無制限に閲覧できるため、testAndMarkメソッドは常にtrueを返します。
- 小問 設問1 e:キ
- 配列readersの各要素を順に取り出してUser型の変数readerに代入するため、拡張for文「User reader : readers」とします。
- 小問 設問1 f:カ
- Article.getIds()が返す記事識別子の集合からString型のidを順に取り出すため、拡張for文「String id : Article.getIds()」とします。
- 小問 設問2:エ
- 記事0003を有料記事(false)に変更すると、Guestで0002と0003の2回、Memberで2本目の有料記事となる0003の1回、計3回閲覧不可が出力されます。
覚えるポイント
- サブクラスのコンストラクタ先頭ではスーパークラスのコンストラクタsuper(...)を呼び出す。
- 拡張for文(for-each)の構文は「for (要素の型 変数名 : コレクションまたは配列)」である。
間違えやすいところ
- Userクラスのnameはprivateなので、子クラスからthis.nameで直接参照できない点に注意します。
- Memberクラスは有料記事を1日1本しか閲覧できず、2本目以降の別の有料記事は閲覧不可となることを見落としがちです。
出題の前提:平成26年度春期 基本情報技術者試験 午後 問11
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.58 ↗(www.ipa.go.jp) / 公式問題冊子 p.59 ↗(www.ipa.go.jp) / 公式問題冊子 p.60 ↗(www.ipa.go.jp) / 公式問題冊子 p.61 ↗(www.ipa.go.jp) / 公式問題冊子 p.62 ↗(www.ipa.go.jp) / 公式問題冊子 p.63 ↗(www.ipa.go.jp) / 公式問題冊子 p.64 ↗(www.ipa.go.jp)
文字列中の単語の切出しと数字文字列同士の演算処理
ソフトウェア開発 (アセンブラ) · CASL II / 文字列処理 / テーブルジャンプ / ビット演算・乗算アルゴリズム
文字列から単語を切り出して単語管理テーブルを作成する副プログラムGETTKNと、これを利用して数字文字列同士の四則演算(加算・減算・乗算)を行う副プログラムCALCに関する問題である。設問1〜設問3に答えよ。
- ア
- 1
- イ
- 2
- ウ
- 3
- エ
- A
- オ
- B
- カ
- C
解答・解説を表示
解答
設問1: a イ, b カ, 設問2: カ, 設問3: c エ, d エ, e オ
解説
まず要点:アセンブラ言語CASL IIでは、インデックスレジスタ(番地を数えるためのレジスタ)を使って文字列を1文字ずつ調べます。また、アドレステーブル(飛び先の番地を並べた表)を使ったテーブルジャンプで、演算子に応じた処理を効率よく選び分けられます。
解き方
- 副プログラムGETTKNのレジスタの役割(GR1: 文字列の番地, GR2: 単語管理テーブル, GR3: 単語の種別, GR6: 単語の先頭番地)をつかみます。
- 空白を見つけて単語を確定した後の処理の流れと、番地の引き算で単語の長さを求める命令を導きます。
- 設問2では与えられた文字列を1文字ずつ追い、単語の種別GR3がすでに1(英字を含む)ならNEXTを通らずに飛ばされる点に注目します。
- CALCプログラムでのDTOBの呼び出しの約束、分岐用アドレステーブルLTBLの参照方法、掛け算ループのビットシフト処理を特定します。
小問ごとの答え
- 小問 設問1 a:イ
- 空白文字を検出して単語登録(CALL SETTKN)を行った後、次の文字を処理するためにループ先頭へ無条件分岐する「JUMP LP」が入ります。
- 小問 設問1 b:カ
- 単語の長さは、現在の文字位置GR1から単語の先頭アドレスGR6を減算して求めるため、「SUBL GR5,GR6」が入ります。
- 小問 設問2:カ
- 「△1A2B△C3.」のトレースにおいて、1つ目の単語1A2Bでは'A'の処理時にNEXTを通過してGR3が1となり以後の文字'2','B'ではJPL LPにより通過しません。2度目にNEXTを通過するのは2つ目の単語の英字'C'を処理した時です。
- 小問 設問3 c:エ
- DTOBの引数として、単語管理テーブルの先頭アドレスGR2をGR1に渡す必要があるため、「LD GR1,GR2」が入ります。
- 小問 設問3 d:エ
- 演算子の差分値が設定されたGR3をインデックスとして、分岐先テーブルLTBLから該当処理のアドレスをロードするため、「LD GR3,LTBL,GR3」が入ります。
- 小問 設問3 e:オ
- シフト加算による乗算処理において、乗数GR5の次のビットを調べるために論理右シフトを行う「SRL GR5,1」が入ります。
覚えるポイント
- CASL IIのSUBL r1, r2は論理減算を行い、結果をr1に格納する。
- テーブルジャンプを行う際は、LD r, adr, x命令でジャンプ先アドレスをレジスタに取得してJUMP 0, rとする。
間違えやすいところ
- 英字が出るたびに毎回NEXTを通ると思い込み、同じ単語の中の2番目の英字'B'を選んでしまう間違いが多いです。
- 表から番地を読む命令(LD)と実効番地を計算する命令(LAD)を混同しないよう注意します。
出題の前提:平成26年度春期 基本情報技術者試験 午後 問12
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.65 ↗(www.ipa.go.jp) / 公式問題冊子 p.66 ↗(www.ipa.go.jp) / 公式問題冊子 p.67 ↗(www.ipa.go.jp) / 公式問題冊子 p.68 ↗(www.ipa.go.jp) / 公式問題冊子 p.69 ↗(www.ipa.go.jp)
顧客情報の匿名化処理(表計算の関数とマクロの作成)
ソフトウェア開発(表計算) · 表計算ソフト / ワークシート関数 / 垂直照合 / 照合一致 / マクロアルゴリズム / データ匿名化
F社では保有する顧客情報(5,000人分)を分析部署に渡すため、匿名化処理を行う表計算ワークシートおよびマクロを作成することになった。ワークシート「匿名化顧客リスト」における郵便番号、年齢、職業コードの匿名化計算式(設問1 a〜c)、および同一属性の顧客数(多重度)を集計してワークシート「提供リスト」に出力するマクロ「GenerateList」の処理(設問2 d〜f)について、それぞれの空欄に当てはまる適切なものを解答群から選べ。
解答・解説を表示
解答
設問1: a エ, b イ, c イ, 設問2: d ウ, e オ, f ケ
解説
まず要点:表計算でデータを照合・集約するときは、関数の検索のしかたを使い分けることが大切です。「垂直照合」の第4引数に1を指定すると、昇順に並べた表から「検索値以下の最大値」を取り出せるので、年齢層のような階級の判定に向いています。一方、マクロで特定の値の位置を探すときは「照合一致」の第3引数に0(完全一致)を指定します。また、評価値を使って並べ替える処理では、未処理かどうかを表すフラグを最上位の桁に置くと、未処理のデータをいつも優先して探せます。
解き方
- 設問1:7桁の数値の上位2桁を取り出すには10^5で割って整数部を求める関数を組み合わせ、年齢の区分は昇順の表に対する垂直照合(検索指定1)を使います。職業コードは下位の桁を0にする切捨て関数(桁位置-2と-1)で作ります。
- 設問2:未処理の顧客の最小の評価値を探すには、最小関数と照合一致関数(完全一致0)を組み合わせます。評価値が同じかどうかで、同じ属性ならカウンタKを足し(K←K+1)、違う属性に移ったときは下限の条件を満たせば出力する行を進める(J←J+1)流れをつかみます。
小問ごとの答え
- 小問 設問1 a:エ
- 7桁の郵便番号から上位2桁を取り出すには、10の5乗(100,000)で除算した商の整数部を求めます。例えば1070062の場合、1070062 / 100000 = 10.70062となり、整数部をとることで10が得られます。したがって「整数部(顧客リスト!C2/10^5)」が正解です。
- 小問 設問1 b:イ
- 図3より、各年齢区分はその下限値(0, 20, 25, 30, …)で代表されます。垂直照合関数の第4引数(検索の指定)を1に設定すると、昇順に並んだ検査範囲から「検索キー以下の最大値」が探索されます。よって、セル範囲K$2〜K$10の1列目から年齢以下の最大値を検索する「垂直照合(顧客リスト!F2, K$2〜K$10, 1, 1)」が適切です。
- 小問 設問1 c:イ
- 大分類コードは下2桁を0にするため「切捨て(顧客リスト!G2, -2)」、中分類コードは下1桁を0にするため「切捨て(顧客リスト!G2, -1)」とします。IF文では先に大分類コード(c1)を照合してM列が'*'ならc1とし、そうでなければ中分類コード(c2)を照合して'*'ならc2とするため、c1=切捨て(…,-2)、c2=切捨て(…,-1)の組合せが正解です。
- 小問 設問2 d:ウ
- 未処理顧客の中で評価値が最小の行を特定するため、まずI列全体の最小値を「最小(I2〜I5001)」で求めます。次に、その最小値が範囲「I2〜I5001」の何行目にあるかを完全一致で取得するため「照合一致(最小(I2〜I5001), I2〜I5001, 0)」を用います。
- 小問 設問2 e:オ
- 直前のグループの評価値と異なる顧客が現れた際、それまで集計していたグループの多重度Kが下限値(minMultiplicity)以上であれば、提供リストの有効な1行として確定させます。そのため出力先の行位置を示すポインタJを1進める「J ← J + 1」を実行します。
- 小問 設問2 f:ケ
- 最小評価値を持つ顧客が直前と同じ評価値(previousValue)である場合は同一グループに属するため、該当グループの多重度カウンタKをインクリメントする「K ← K + 1」を実行します。
覚えるポイント
- 垂直照合(式, 範囲, 列番号, 1)は昇順範囲から「式以下の最大値」を取得する。
- 切捨て(数値, -n)は10^nの位未満をゼロクリアする。
間違えやすいところ
- 切捨ての桁位置の指定で、正数(小数部)と負数(整数部)を取り違えます。
- 照合一致関数で、完全一致の指定(第3引数を0)と近似一致の指定を混同します。
出題の前提:基本情報技術者試験 表計算ソフトウェアの仕様(共通仕様・関数仕様およびマクロ仕様)
出典:IPA『2014年度 春期 午後』
公式問題冊子 p.2 ↗(www.ipa.go.jp) / 公式問題冊子 p.70 ↗(www.ipa.go.jp) / 公式問題冊子 p.71 ↗(www.ipa.go.jp) / 公式問題冊子 p.72 ↗(www.ipa.go.jp) / 公式問題冊子 p.73 ↗(www.ipa.go.jp) / 公式問題冊子 p.74 ↗(www.ipa.go.jp) / 公式問題冊子 p.75 ↗(www.ipa.go.jp) / 公式問題冊子 p.76 ↗(www.ipa.go.jp) / 公式問題冊子 p.77 ↗(www.ipa.go.jp)
2014年度 春期 午後
参照した公式資料
IPAが公開した2014年度 春期 午後の問題・解答資料です。

