旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。
2010年度 春期 午後の概要
キャッシュメモリの管理と置換アルゴリズム(FIFOおよびLRU)
ハードウェア · キャッシュメモリ / 置換アルゴリズム / FIFO / LRU / ライトバック
主記憶とキャッシュメモリ間のデータ転送に関する記述を読み、設問1・2に答えよ。 主記憶は1ブロック100語に分割され、先頭番地順にブロック番号が割り当てられている。データキャッシュは3つのバッファ(バッファ1〜3)から成り、それぞれ対応するディレクトリ(ブロック番号、順位、フラグ)を持つ。フラグは読み込み時に0、CPUによる書込み(STORE命令)時に1となる。 プログラム領域の命令列に従って処理を実行したときのディレクトリ部の変化について、設問1ではFIFO(最も古くから存在するブロックを追い出す方式)、設問2ではLRU(参照されていない時間が最も長いブロックを追い出す方式)に基づく各空欄の値を求めよ。
- ア
- 設問1: 0 / 設問2: ブロック番号41, フラグ0
- イ
- 設問1: 41 / 設問2: ブロック番号41, フラグ1
- ウ
- 設問1: 42 / 設問2: ブロック番号42, フラグ0
- エ
- 設問1: 43 / 設問2: ブロック番号42, フラグ1
- オ
- 設問1: 44 / 設問2: ブロック番号43, フラグ0
- カ
- 設問1: 45 / 設問2: ブロック番号43, フラグ1
- キ
- 設問2: ブロック番号44, フラグ0
- ク
- 設問2: ブロック番号44, フラグ1
- ケ
- 設問2: ブロック番号45, フラグ0
- コ
- 設問2: ブロック番号45, フラグ1
解答・解説を表示
解答
設問1: a=カ, b=エ, c=ウ; 設問2: d=イ, e=ク, f=ウ
解説
まず要点:キャッシュは容量が限られるので、あふれたときにどのブロックを追い出すかを決める規則が必要です。FIFO(先に入ったものから追い出す方式)は、入った順番だけで追い出しを決めます。LRU(最後に使われてから最も長くたつものを追い出す方式)は、使われた時刻を記録して決めます。書き換えたデータには変更フラグ(ダーティビット)を立て、追い出すときに主記憶へ書き戻します。
解き方
- プログラムの各命令が参照するメモリアドレスから、対応するブロック番号(41〜45)と操作の種類(LOADかSTOREか)を読み取る。
- 設問1ではFIFOの規則に従い、空きバッファへの割当てと、順位1(最も古い)ブロックの追い出しおよび順位の更新を追いかけて各バッファの中身を求める。
- 設問2ではLRUの規則に従い、参照のたびに順序を更新し、ミス時には最も長く参照されていないブロック(順位1)を置換対象としてフラグの変化も追跡する。
小問ごとの答え
- 小問 設問1 a:カ
- 1000番地のLOAD命令は番地4400(ブロック番号45)を参照します。初期状態ではキャッシュは空なのでミスが発生し、空きバッファの中で最も番号が小さいバッファ1にブロック45が読み込まれます。したがってaは45(カ)となります。
- 小問 設問1 b:エ
- FIFO方式における1006番地のSTORE命令実行直後のディレクトリ1のブロック番号です。1004番地で最も古いブロック45(バッファ1)が追い出されてブロック43が読み込まれた後、1006番地ではバッファ2が追い出されるため、バッファ1のブロック43はそのまま残ります。よってbは43(エ)です。
- 小問 設問1 c:ウ
- 1006番地直後のディレクトリ3のブロック番号です。1003番地でバッファ3にブロック42が格納された後、1004番地ではバッファ1、1006番地ではバッファ2が置き換え対象となるため、バッファ3にはブロック42が残っています。よってcは42(ウ)です。
- 小問 設問2 d:イ
- LRU方式の1回目ループで1006番地を実行した直後のディレクトリ2の状態です。1005番地でブロック41に対するSTORE命令が実行されフラグが1に変わり、最も最近参照された状態となっています。1006番地の参照(ブロック44)では最も長く参照されていないブロック42(バッファ3)が置き換えられるため、ディレクトリ2はブロック番号41、フラグ1(イ)のまま変化しません。
- 小問 設問2 e:ク
- 2回目ループの1002番地実行直後のディレクトリ3の状態です。1回目の1006番地でバッファ3にブロック44がSTORE命令により書き込まれたためフラグは1となっています。2回目の1002番地ではブロック41が参照(ヒット)されるのみでバッファ3は更新されないため、ブロック番号44、フラグ1(ク)となります。
- 小問 設問2 f:ウ
- 2回目ループの1003番地(ブロック42のLOAD)実行直後のディレクトリ1の状態です。直前の参照履歴から最も長く参照されていないのは1回目ループの1004番地以降参照のないブロック43(バッファ1)です。そのためバッファ1にブロック42がLOAD命令で読み込まれ、フラグは0に初期化されます。よってブロック番号42、フラグ0(ウ)となります。
覚えるポイント
- STORE命令の実行時はキャッシュ内のフラグ(ダーティビット)が1になる。
- FIFOは入った順序で追い出し、LRUは最後に使われた時刻が最も古いものを追い出す。
間違えやすいところ
- LOAD命令でもフラグが1になると勘違いして、フラグの値を誤る。
- LRUの追跡で、ヒットしたときに参照順位が最新に更新されるのを見落とす。
出題の前提:平成22年度春期基本情報技術者試験午後問1の出題条件および解答例
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.5 ↗(www.ipa.go.jp) / 公式問題冊子 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〜4に答えよ。 設問1: 括弧を含む式「a op (b op c) op d」に対する二分木(構文木)として適切なものを解から選べ。 設問2: 定義された構文規則(op2がop1より優先度が高く、ともに左結合)に従って、式「a op1 b op2 c op2 (d op1 e)」を構文木で表現したものを解から選べ。 設問3: 式「a × b + c × d + e」を後置表記法(逆ポーランド表記法)で表現した式を選べ。 設問4: 後置表記法で表現された式「a + b + c × d」をスタックを用いて評価する場合の操作手順として正しいものを選べ。
- ア
- 設問1: 右結合型の構文木 / 設問2: 構文木ア / 設問3: a b c d × × + e + / 設問4: push(a) → add → push(b) → add → push(c) → mul → push(d)
- イ
- 設問1: 完全平衡型の構文木 / 設問2: 構文木イ / 設問3: a b c × + d × e + / 設問4: push(a) → push(b) → add → push(c) → mul → push(d) → add
- ウ
- 設問1: 演算順序が誤っている構文木 / 設問2: 構文木ウ / 設問3: a b × c d × + e + / 設問4: push(a) → push(b) → add → push(c) → push(d) → mul → add
- エ
- 設問1: 左の項を無視した構文木 / 設問2: 構文木エ / 設問3: a b × c + d × e + / 設問4: push(a) → push(b) → push(c) → push(d) → add → add → mul
- オ
- 設問1: 根の左部分木が「a op (b op c)」、右の子が「d」である構文木 / 設問2: 構文木オ
解答・解説を表示
解答
設問1: オ, 設問2: イ, 設問3: ウ, 設問4: ウ
解説
まず要点:構文解析では、文法の規則に従って、演算子の結び付き方(左結合・右結合)や優先順位を反映した構文木を作ります。木の深いところ(葉に近いところ)ほど先に評価されます。後置表記法(逆ポーランド表記法)は構文木を後ろから順にたどったものと同じで、スタックを使うと括弧なしで式を評価できます。
解き方
- 設問1:演算子の結び付く順序(括弧が優先、次に左から右)に従って部分式をまとめ、最後に実行される演算子を根とする二分木を選ぶ。
- 設問2:構文規則を展開し、式の階層(op1)と項の階層(op2)の優先関係と左結合性から、対応する木の形を特定する。
- 設問3:優先順位に基づいて部分式を「左の値 右の値 演算子」の形に順に変換し、後置表記法を組み立てる。
- 設問4:変換した逆ポーランド記法「a b + c d × +」の各トークンについて、値のpushと演算子ごとのadd/mulの並びを決める。
小問ごとの答え
- 小問 設問1:オ
- 「a op (b op c) op d」では、まず括弧内の「b op c」が評価され、次に左から右へ「a op (b op c)」が評価され、最後にその結果と「d」の間で「op」が評価されます。したがって根の演算子は最後のopとなり、左の子に「a op (b op c)」の部分木、右の子に「d」を持つオが正解となります。
- 小問 設問2:イ
- 構文規則より「式 → 式 op1 項」は左結合で優先度が最も低く、全体の根は最も左のop1となります。左の子は「a」、右の子は項「b op2 c op2 (d op1 e)」です。項の規則「項 → 項 op2 因子」も左結合であるため、根の右の子のop2は左側に「b op2 c」、右側に因子「(d op1 e)」を持ちます。これに合致する構文木はイです。
- 小問 設問3:ウ
- 「a × b + c × d + e」において乗算が加算より優先され、同一優先順位は左結合となります。まず「a × b」が「a b ×」、「c × d」が「c d ×」となり、左の加算により「a b × c d × +」、最後に「+ e」を加えて「a b × c d × + e +」となります。よって正解はウです。
- 小問 設問4:ウ
- 「a + b + c × d」を後置表記法に変換すると「a b + c d × +」になります。これをスタックで評価するには、被演算子が現れたらpushし演算子が現れたら必要なオペランドをpopして演算結果をpushします。順にpush(a) → push(b) → add → push(c) → push(d) → mul → addと進めるウが正しい操作手順です。
覚えるポイント
- 構文木では、早く計算される演算子ほど葉に近い深い位置に配置される。
- 後置表記法をスタックで計算する際は、数値はpush、演算子はpopして演算し結果をpushする。
間違えやすいところ
- 左結合の演算子を構文木にするとき、右下がりの右結合の木にしてしまうミス。
- 後置表記法のスタック操作で、二項演算の前に必要な値がスタックにそろっていない順序を選ぶミス。
出題の前提:平成22年度春期基本情報技術者試験午後問2の出題条件および解答例
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.12 ↗(www.ipa.go.jp) / 公式問題冊子 p.13 ↗(www.ipa.go.jp) / 公式問題冊子 p.14 ↗(www.ipa.go.jp) / 公式問題冊子 p.15 ↗(www.ipa.go.jp) / 公式問題冊子 p.16 ↗(www.ipa.go.jp)
関係データベースの構造とSQLによるデータ参照
データベース · 関係データベース / テーブル設計 / 等価結合 / GROUP BY / 集計関数
中学校の成績管理データベースの構造案(案A・案B)およびSQL文に関する次の設問1〜4に答えよ。 【設問1】案A(生徒番号, 年度, 試験ID, 国語, 数学, 英語, 理科, 社会)と案B(生徒番号, 年度, 試験ID, 科目ID, 得点)を比較したとき、拡張性の観点から案Bは案Aと比較して[ a ]に対して柔軟に対応できる。一方、1人の生徒の1年間の成績を格納するために必要な成績表のレコード件数は、年3期・各期で中間と期末の計6回試験があり5科目実施される場合、案Aでは[ b ]件、案Bでは[ c ]件となる。 【設問2】2009年度1学年の2学期中間試験を対象に、生徒ごとの全科目合計点を求め、降順に整列して表示するSQL文のWHERE句の空欄に入る条件式を選べ。 【設問3】2008年度1学年を対象に、1年間に実施したすべての試験の各科目の平均点をクラスごとに求め、担任教員の氏名とともに表示するSQL文の空欄に入る句を選べ。 【設問4】生徒“情報太郎”の成績を、試験IDの昇順(同姓同名がいる場合は生徒番号の昇順も含む)に表示するSQL文のWHERE句の空欄に入る条件式を選べ。
- ア
- 設問1 a: 学期の増減 / 設問1 b, c: 2 / 設問2: 履歴表.年度 = 2009 AND 履歴表.学年 = 1 AND 試験表.試験名 = '2学期中間' / 設問3: 履歴表.生徒番号 = 成績表.生徒番号 AND 履歴表.教員番号 = 教員表.教員番号 AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1 GROUP BY クラス, 教員表.氏名 / 設問4: 生徒表.生徒番号 = 成績表.生徒番号 AND 成績表.試験ID = 試験表.試験ID AND 生徒表.氏名='情報太郎'
- イ
- 設問1 a: 試験回数の増減 / 設問1 b, c: 4 / 設問2: 履歴表.年度 = 2009 AND 履歴表.学年 = 1 AND 試験表.試験名 = '2学期中間' AND 成績表.年度 = 2009 / 設問3: 履歴表.生徒番号 = 成績表.生徒番号 AND 履歴表.教員番号 = 教員表.教員番号 AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1 AND 成績表.年度 = 2008 GROUP BY クラス, 教員表.氏名 / 設問4: 生徒表.生徒番号 = 成績表.生徒番号 AND 成績表.試験ID = 試験表.試験ID AND 生徒表.氏名='情報太郎' AND 生徒表.生徒番号 = (SELECT 生徒番号 FROM 生徒表)
- ウ
- 設問1 a: 試験科目の増減 / 設問1 b, c: 6 / 設問2: 履歴表.年度 = 2009 AND 履歴表.学年 = 1 AND 試験表.試験ID = (SELECT 試験ID FROM 試験表 WHERE 試験表.試験名 = '2学期中間') / 設問3: 履歴表.生徒番号 = 成績表.生徒番号 AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1 AND 成績表.試験ID = ANY(SELECT 試験ID FROM 試験表) GROUP BY クラス, 教員表.氏名 / 設問4: 成績表.生徒番号 = (SELECT 生徒番号 FROM 生徒表 WHERE 氏名='情報太郎') GROUP BY 試験表.試験ID
- エ
- 設問1 a: 生徒の増減 / 設問1 b, c: 12 / 設問2: 履歴表.年度 = 2009 AND 履歴表.学年 = 1 AND 試験表.試験ID = ANY(SELECT 試験ID FROM 試験表 WHERE 試験表.試験名 = '2学期中間') / 設問3: 履歴表.生徒番号 = 成績表.生徒番号 AND 履歴表.年度 = 2008 AND 履歴表.学年 = 1 AND 履歴表.教員番号 = ANY(SELECT 教員番号 FROM 教員表) GROUP BY クラス, 教員表.氏名 / 設問4: 成績表.生徒番号 = (SELECT 生徒番号 FROM 生徒表 WHERE 氏名='情報太郎') GROUP BY 成績表.年度
- オ
- 設問1 b, c: 24
- カ
- 設問1 b, c: 30
- キ
- 設問1 b, c: 48
- ク
- 設問1 b, c: 60
解答・解説を表示
解答
設問1: a=ウ, b=ウ, c=カ; 設問2: イ; 設問3: イ; 設問4: ア
解説
まず要点:関係データベースでは、科目などを列に持つ横持ちの構造(案A)は集計がしやすい反面、科目を増やすときに表の定義を変える必要があります。行として持つ縦持ちの構造(案B)は、データを追加するだけで柔軟に対応できます。またSQLでは、FROM句に並べた複数の表を主キー・外部キーで結合できるときは、不要な副問合せを作らず、単純な結合条件と絞り込み条件を組み合わせるのが基本です。
解き方
- 案Aと案Bの表の構造の違い(列として持つか、行として持つか)をとらえ、拡張性と年間のレコード件数を求める。
- 設問2〜4のSQL文でFROM句に指定された表を確認し、適切な結合条件・抽出条件・グループ化条件を特定する。
小問ごとの答え
- 小問 設問1 a:ウ
- 案Aでは科目名が表の属性(列)として固定されていますが、案Bでは科目を行データとして保持するため、テーブル定義を変更することなく試験科目の増減に柔軟に対応できます。
- 小問 設問1 b:ウ
- 1年は3学期あり、各期で中間と期末の計2回実施されるため、年間試験回数は3×2=6回です。案Aは1回の試験につき1レコードで5科目の得点を格納するため、レコード数は6件となります。
- 小問 設問1 c:カ
- 案Bでは1回の試験の1科目につき1レコードを要するため、1年間のレコード件数は6回×5科目=30件となります。
- 小問 設問2:イ
- 対象は2009年度1学年の2学期中間試験です。履歴表の年度と学年を絞り込むだけでなく、成績表.年度も2009に一致させる必要があります。FROM句に試験表が含まれており等価結合されているため副問合せは不要で、イが適切です。
- 小問 設問3:イ
- 教員表と履歴表、履歴表と成績表を生徒番号および教員番号で等価結合し、2008年度の対象を絞るため履歴表.年度と成績表.年度の両方を2008とし、クラスと教員名でGROUP BYを行います。
- 小問 設問4:ア
- 生徒表、成績表、試験表がFROM句に並んでおり、生徒番号および試験IDで等価結合した上で氏名条件『生徒表.氏名='情報太郎'』を指定するだけで十分です。副問合せを使う必要はありません。
覚えるポイント
- 横持ちデータ構造は列定義変更が必要だが、縦持ちデータ構造は行の追加のみで科目の増減に強い。
- FROM句に既に結合対象のテーブルが存在する場合は、副問合せを使わずにWHERE句で等価結合条件を指定する。
間違えやすいところ
- 年間の試験回数を3期×2回=6回と数えず、3回や2回と勘違いしてしまうミス。
- FROM句に試験表や生徒表があるのに、副問合せ(INやEXISTS)を使おうとしてしまうミス。
出題の前提:問題文に提示された中学校の成績管理データベースの仕様およびSQL標準仕様に基づく。
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.17 ↗(www.ipa.go.jp) / 公式問題冊子 p.18 ↗(www.ipa.go.jp) / 公式問題冊子 p.19 ↗(www.ipa.go.jp) / 公式問題冊子 p.20 ↗(www.ipa.go.jp) / 公式問題冊子 p.21 ↗(www.ipa.go.jp)
動画ストリーミングサーバの設置計画と待ち行列理論
ネットワーク · 待ち行列理論 / M/M/sモデル / トラフィック密度 / ビットレート計算 / データ容量計算
動画ストリーミングサーバの設置計画に関する次の記述を読んで、設問1, 2に答えよ。 【要件】 ・動画のビット速度:0.5Mビット/秒 ・要求本数:15本/分(1分当たり) ・動画1本の平均再生時間:4分(指数分布に従い、再生時間と送信時間は等しい) ・サーバ格納本数:1,000本 ・要求が待たされる確率:10%以下 ※1Gバイト=10^9バイト、1Mビット=10^6ビットとする。 【設問1】サーバに格納される動画のデータ量は約[ a ]Gバイトであり、動画送信時に要求される平均ビット速度は[ b ]Mビット/秒である。 【設問2】要求が待ち行列に入る確率Pを計算するにあたり、要求されるトラフィックTは[ c ]の式で計算できる。要件の待たされる確率10%以下を満たすには、サーバは最低[ d ]本の動画を同時に送信できなければならない。また、86本同時に送信できる場合、待たされる確率はおよそ[ e ]%である。
- ア
- 設問1 a: 1.5 / 設問1 b: 7.5 / 設問2 c: 1分当たりに送信される動画の本数 / 設問2 d: 71 / 設問2 e: 0.1
- イ
- 設問1 a: 12 / 設問1 b: 15 / 設問2 c: 1分当たりの動画の延べ再生時間 / 設問2 d: 72 / 設問2 e: 0.2
- ウ
- 設問1 a: 15 / 設問1 b: 30 / 設問2 c: ネットワーク帯域の最大占有率 / 設問2 d: 73 / 設問2 e: 0.4
- エ
- 設問1 a: 30 / 設問1 b: 60 / 設問2 c: ネットワークの平均消費帯域幅 / 設問2 d: 74 / 設問2 e: 0.8
- オ
- 設問1 a: 120 / 設問1 b: 75 / 設問2 d: 75 / 設問2 e: 4
解答・解説を表示
解答
設問1: a=ウ, b=ウ; 設問2: c=イ, d=イ, e=ア
解説
まず要点:待ち行列の理論では、トラフィック(負荷)の大きさは、到着する要求の割合と1件あたりの平均処理時間の積で表されます。この問題では、1分あたりの要求本数と1本の平均再生時間を掛けたものがトラフィック量Tになります。そして、同時に送信できる本数の値を変えながら、待たされる確率Pが要件を満たすかを調べます。
解き方
- 1本の容量(ビットレート×再生時間)を求め、格納本数の1000本を掛けて全体のデータ量をバイト換算で求める。
- 1分あたりの要求本数と平均再生時間から、平均の同時送信本数と平均の必要ビットレートを計算する。
- トラフィック量 T = 15 × 4 = 60 を計算し、表2から条件を満たす最小の同時送信可能数 n と、n=86のときの待ち確率Pを読み取る。
小問ごとの答え
- 小問 設問1 a:ウ
- 動画1本あたりのデータ量は 0.5Mビット/秒 × (4分 × 60秒) = 120Mビット = 15Mバイト (15×10^6バイト) です。1,000本では 15×10^9バイト = 15Gバイト となります。
- 小問 設問1 b:ウ
- 1分当たり15本の要求があり、動画1本は4分間継続するため、定常的に平均 15本/分 × 4分 = 60本の動画が並行送信されます。ビット速度は 60本 × 0.5Mビット/秒 = 30Mビット/秒 となります。
- 小問 設問2 c:イ
- トラフィック量(アーラン)は「要求頻度(本/分) × 平均サービス時間(分)」で表され、これは「1分当たりの動画の延べ再生時間」に相当します。
- 小問 設問2 d:イ
- 要求トラフィック T = 15 × 4 = 60 です。表2の網掛け部分(Tの値)が60.0以下となる箇所を参照すると、P=10%の列においてT=60.4となるのは同時送信可能本数 n = 72(本)のときです。最低72本必要です。
- 小問 設問2 e:ア
- n = 86 の行を見ると、T = 60.0 となるのは P = 0.1(%) の列であるため、要求が待たされる確率は約0.1%です。
覚えるポイント
- データ容量計算では、ビット(bit)とバイト(Byte)の8倍の換算を絶対に見落とさない。
- トラフィック密度(アーラン)は「到着率 × 平均保留(サービス)時間」で算出される。
間違えやすいところ
- 設問1のbで平均再生時間4分を考えず、15本/分 × 0.5Mビット/秒 = 7.5Mビット/秒 と計算してしまうミス。
- 表2の表頭(確率P)と表側(同時送信本数n)、および表中の値(トラフィックT=60)の対応を取り違えるミス。
出題の前提:問題文に提示された動画ストリーミングの仕様条件および表2(P, n, Tの関係)に基づく。
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.22 ↗(www.ipa.go.jp) / 公式問題冊子 p.23 ↗(www.ipa.go.jp) / 公式問題冊子 p.24 ↗(www.ipa.go.jp)
配達サービス管理システムにおけるデータ抽出・帳票作成・更新設計
ソフトウェア設計 · データ設計 / 帳票作成処理 / ファイル突合 / 主キーによるレコード特定
家具販売業の配達サービス管理システムに関する記述を読み、配達可能業者の検索条件(設問1)、配達依頼リスト作成のためのファイル突合と集計手順(設問2)、および配達完了日の登録に必要なデータ項目(設問3)について答えよ。
- ア
- 受付日,郵便番号
- イ
- 業者コード,郵便番号
- ウ
- 業者コード,郵便番号,配達可能日
- エ
- 配達予定日
- オ
- 予約番号
解答・解説を表示
解答
設問1: a=ア, b=カ; 設問2: c=ア, d=ア, e=ウ; 設問3: オ
解説
まず要点:業務システムのデータベースやファイルを設計するときは、複数のデータ同士の関係(主キーと外部キーによる結び付き)を正しくつかみ、帳票の作成や更新に必要な項目をもれなく・重複なく選ぶことが基本です。
解き方
- 業務の仕様から、各画面や処理での抽出条件(配達可能日の範囲や予定日の突合条件)を読み取る。
- 帳票の出力に必要な項目を持つファイル(受付ファイル)と、結合に使うキー(受付番号)を決める。
- 更新するファイルの主キーの構成を確認し、更新レコードを一意に特定できる項目を選ぶ。
小問ごとの答え
- 小問 設問1 a:ア
- 仕様(4)より、受付画面には受付日の翌々日以降で配達可能な日付が表示されるため、配達可能日は「受付日の翌々日以降となる」条件でレコードを取り出します。
- 小問 設問1 b:カ
- 特定業者の配達予定件数を集計して上限と比較するため、予約ファイルにおいて配達予定日が「配達可能日と同じ」であるレコードを検索します。
- 小問 設問2 c:ア
- 配達依頼リストに出力する配達先住所・氏名や家具情報を取得するため、予約ファイル(ファイルA)から抽出したデータと突き合わせるファイルは「受付ファイル」です。
- 小問 設問2 d:ア
- 予約ファイルと受付ファイルの両方に存在し、配達依頼(注文)を一対一に対応付ける共通の結合キーは「受付番号」です。
- 小問 設問2 e:ウ
- 集計結果ファイルに業者ごとの配達先件数を求めるため、中間ファイルの業者コードごとに「レコード件数」をカウントします。
- 小問 設問3:オ
- 配達完了日を更新する対象の予約ファイルレコードを一意に特定するために必要な主キー項目は「予約番号」です。
覚えるポイント
- 帳票に必要な項目が元ファイルにない場合、共通の外部キーを用いて保持元ファイルと突合して補完する。
- レコードの更新・登録では、一意性を保証する主キー(予約番号など)を指定する必要がある。
間違えやすいところ
- 配達可能日の範囲を、受付日当日以降と誤解して「受付日以降」や「受付日と同じ」を選ぶミス。
- 完了登録で業者コードや配達予定日など重複し得る項目をキーにし、一意な予約番号を落とすミス。
出題の前提:平成22年度春期基本情報技術者試験 午後問5(ソフトウェア設計)
出典:IPA『2010年度 春期 午後』
公式問題冊子 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〜d)、テスト工程でのバグ成長曲線の解釈と工程別バグ摘出率の計算、および全工程を通じた品質評価(設問2 e〜h)について答えよ。
- ア
- 過去のシステムの機能拡張で改造した機能と類似しているモジュールが予想以上に多かったこと
- イ
- 新規メンバが要求仕様を完全に理解していなかったためにバグが発生したこと
- ウ
- 新規メンバの1人が、類似システムの開発に関して、既存メンバを上回る経験を有していたこと
- エ
- 設計の難度が高いモジュールが予測以上に多かったこと
- オ
- 他システムの保守対応など緊急の割込み業務が多発して工数不足だったこと
解答・解説を表示
解答
設問1: a=イ, b=エ (順不同), c=ア, d=ウ; 設問2: e=イ, f=ウ, g=イ, h=イ
解説
まず要点:定量的な品質管理では、各開発工程で目標としたバグの摘出数と実績の差がなぜ生じたかを分析します。また、バグ成長曲線でバグの発見が収束しているかを判定し、全工程が終わったときの実績のバグ総数をもとに、工程ごとの摘出率を評価します。
解き方
- 目標値と実績値のずれを、難易度・要員のスキル・設計の再利用などの要因と対応づけて整理する。
- テストの消化数に対するバグの累積摘出数の移り変わり(バグ成長曲線)から、バグの発見が飽和して収束している状態を判定する。
- 全工程終了時の各工程のバグ摘出実績を合計して総件数を求め、設計・製造工程の摘出率を計算して比べる。
小問ごとの答え
- 小問 設問1 a:イ
- M課長の「新規メンバのスキル問題」という疑問に対し、新規メンバが要求仕様を完全に理解していなかったことがバグ増加の要因(イ)です(aとbは順不同)。
- 小問 設問1 b:エ
- M課長の「サブシステムの難度」という疑問に対し、設計の難度が高いモジュールが予測以上に多かったことがバグ増加の要因(エ)です(aとbは順不同)。
- 小問 設問1 c:ア
- 設計の再利用率が計画値より高まった要因として、過去機能と類似しているモジュールが予想以上に多かったこと(ア)が合致・対応します。
- 小問 設問1 d:ウ
- メンバの生産性が計画値より高まった要因として、類似システム開発経験が豊富な新規メンバが参加していたこと(ウ)が合致・対応します。
- 小問 設問2 e:イ
- テスト工程で品質が安定(バグが収束)していることを示すバグ成長曲線は、テスト消化に伴いバグ累積件数の増加が飽和(横ばい)するS字曲線のグラフ(イ)です。
- 小問 設問2 f:ウ
- S2の全工程バグ総件数の実績値は 175+170+100+60=505件であり、製造工程の摘出率は 170÷505×100≒33.7% で四捨五入して34%(ウ)となります。
- 小問 設問2 g:イ
- 全工程実績に基づく設計・製造の合算摘出率は、G1が(280+210)/750=65%、G2が(175+170)/505=68%、G3が(112+143)/390=65%となり、G2(イ)が最も高くなります。
- 小問 設問2 h:イ
- 最も高かったグループG2の設計および製造工程での合算バグ摘出率は、345÷505×100≒68.3% であり、四捨五入して68%(イ)となります。
覚えるポイント
- バグ成長曲線(S字曲線)は、終盤で傾きが緩やかになり横ばい(飽和)することで品質の安定・収束を示す。
- 最終的なバグ摘出率は、全工程終了後に判明した実績バグ総数(各工程摘出件数の総和)を分母として計算する。
間違えやすいところ
- 最終的なバグ摘出率の計算で、初期の予測総件数や途中工程での残存予測値を使って計算してしまうミス。
- バグ摘出率が目標より低い理由をレビュー不足と決めつけ、再利用や生産性向上で作り込みバグが減った可能性を考えないミス。
出題の前提:平成22年度春期基本情報技術者試験 午後問6(プロジェクトマネジメント)
出典:IPA『2010年度 春期 午後』
公式問題冊子 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) / 公式問題冊子 p.36 ↗(www.ipa.go.jp) / 公式問題冊子 p.37 ↗(www.ipa.go.jp)
健康飲料事業における内外環境の分析(SWOT分析とファイブフォース分析)
経営・関連法規 · SWOT分析 / ファイブフォース分析 / 収益性分析
食料品の生産及び販売を行っているA社において、健康飲料事業の戦略策定のために実施した事業の分析(SWOT分析、ファイブフォース分析、事業別収益性分析)に関する次の設問1〜3に答えよ。 【設問1】A社の健康飲料事業の強みと弱みに関して、本文中の[ a ]、[ b ]に入れる適切な答えを選択肢群から選べ。 【設問2】健康飲料事業の業界環境に関するファイブフォース分析の図中の[ c ]〜[ e ]に入れる適切な答えを選択肢群から選べ。 【設問3】表2に示すA社の各事業の収益性に関するデータから導かれる記述中の[ f ]、[ g ]に入れる適切な答えを選択肢群から選べ。
- 設問1 a-ア
- A社の健康飲料事業の内部で効果を上げているだけで,競合他社と比較すると劣っていることが明らかであり
- 設問1 a-イ
- A社の健康飲料事業の内部で効果を上げているものの,競合他社と比較した強みかどうかは不明確であり
- 設問1 a-ウ
- 競合他社と比較した強みであることは間違いないが,A社の健康飲料事業の内部で効果を上げているかは不明確であり
- 設問1 a-エ
- 競合他社と比較した強みであることは間違いないが,A社の健康飲料事業の内部では明らかに効果を上げておらず
- 設問1 b-イ
- 弱みにおける資産に関する記述:②(顧客の製品ブランドに対する好感度が,競合他社と比較して低い)
- 設問2 c-ク
- 新規参入者の脅威の要因:特殊な設備が不要であり
- 設問2 d-ウ
- 売り手の交渉力の要因:供給業者の少ない固有の包装資材が多く
- 設問2 e-ア
- 代替製品の脅威の要因:栄養補助食品などの競合製品が多く
- 設問3 f-エ
- 売上総利益率は最も高いが,営業利益率と経常利益率は最も低い
- 設問3 g-エ
- 清涼飲料事業や加工食品事業の営業ネットワークを健康飲料事業でも利用する
解答・解説を表示
解答
設問1: a=イ, b=イ; 設問2: c=ク, d=ウ, e=ア; 設問3: f=エ, g=エ
解説
まず要点:事業戦略の分析では、2つの視点を組み合わせることが大切です。1つは、自社の内部環境(資産と業務プロセス)の強み・弱みを他社と比べて評価するSWOT分析です。もう1つは、業界の外部環境(新規参入、売り手・買い手、代替品、競合)から収益性を評価するファイブフォース分析です。
解き方
- 設問1:上司の分析指示(競合比較、資産と業務プロセスの分類)に照らして、強み③の不備と、弱み各項目の分類(資産か業務プロセスか)を判定する。
- 設問2:ファイブフォース分析の各要素(参入障壁、供給業者の交渉力、代替品)の定義と業界の特性が論理的に合うかを確認して空欄を埋める。
- 設問3:表2から事業ごとの売上総利益率・営業利益率・経常利益率を計算し、課題解決に役立つ他事業との相乗効果(営業網の横展開)を選ぶ。
小問ごとの答え
- 小問 設問1 a:イ
- 上司の指示は「競合他社と比較した強みと弱み」を分析することですが、強み③(就業環境改善とノウハウ蓄積)は社内的な改善活動にとどまり、競合他社と比較して優位性があるかどうかが不明確なため見直しが必要です。
- 小問 設問1 b:イ
- 弱み①・③・④はいずれも開発プロセス、営業支援、物流工程という「業務プロセス」に関する記述です。一方、②の「ブランドに対する好感度」は企業が保有する無形資産に関する記述であるため、資産に関する記述は②のみとなります。
- 小問 設問2 c:ク
- 新規参入者の脅威において「参入が容易である」理由となるのは、多大な設備投資や参入障壁が存在しないことであり、選択肢「特殊な設備が不要であり」が該当します。
- 小問 設問2 d:ウ
- 売り手(資材等の供給業者)の交渉力が強くなるのは、代替できる供給元が少なく特定の資材に依存せざるを得ない場合です。したがって「供給業者の少ない固有の包装資材が多く」が適切です。
- 小問 設問2 e:ア
- 代替製品の脅威において「代替製品は多数ある」に対応する記述として、飲料以外の形態で同様の健康維持効果を果たす「栄養補助食品などの競合製品が多く」が適切です。
- 小問 設問3 f:エ
- 各事業の売上高に対する比率を計算すると、健康飲料事業は売上総利益率が44.4%(40/90)で3事業中最も高い一方、営業利益率は3.33%(3/90)、経常利益率は1.11%(1/90)で3事業中最も低くなっています。
- 小問 設問3 g:エ
- 健康飲料事業は売上総利益率が高いものの販管費等の負担により営業利益率が低く、弱み③にも営業支援不足が挙げられています。既存の清涼飲料や加工食品事業の営業ネットワークを活用して販売効率を高める取組みが最適です。
覚えるポイント
- SWOT分析の強み・弱みは常に「競合他社との相対比較」で定義する必要がある。
- ファイブフォース分析では「売り手=供給業者」「買い手=顧客」の力関係に着目する。
間違えやすいところ
- 自社だけで成果が出ている活動を、他社との比較を確かめずに強みと誤解すること。
- 利益率を比べるときに、金額そのものの大小と売上に対する比率を取り違えること。
出題の前提:2010年度春期 基本情報技術者試験 午後 問7
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.38 ↗(www.ipa.go.jp) / 公式問題冊子 p.39 ↗(www.ipa.go.jp) / 公式問題冊子 p.40 ↗(www.ipa.go.jp) / 公式問題冊子 p.41 ↗(www.ipa.go.jp) / 公式問題冊子 p.42 ↗(www.ipa.go.jp)
マージソートのアルゴリズムと再帰処理
データ構造及びアルゴリズム · マージソート / 再帰呼び出し / 配列操作
配列に格納された整数値データを再帰的に分割し、整列しながら併合(マージ)するマージソートのプログラムに関する次の設問1〜3に答えよ。 【設問1】プログラム中の空欄[ a ]〜[ c ]に入れる正しい答えを解群から選べ。 【設問2】最初に与えられた配列listのデータが「3, 8, 2, 7, 5, 1」の場合、プログラムSortのα地点(Merge直後)における配列listの内容の移り変わりとして正しいものを解群から選べ。 【設問3】副プログラムMergeのβ部分(残った要素の格納処理)と同じ結果を得る処理として正しいものを解群から選べ。
- 設問1 a-ウ
- num > 1
- 設問1 b-ウ
- list[num1+i]
- 設問1 c-ア
- (i < num1) and (j < num2)
- 設問2-ア
- 2 → 3 → 2,3 → 2,3,8 → 1 → 5 → 1,5 → 1,5,7 → 1,2,3,5,7,8
- 設問2-イ
- 3 → 8 → 3,8 → 2,3,8 → 7 → 5 → 7,5 → 1,5,7 → 1,2,3,5,7,8
- 設問2-ウ
- 2,8 → 2,3,8 → 1,5 → 1,5,7 → 1,2,3,5,7,8
- 設問2-エ
- 3,8 → 2,3,8 → 7,5 → 1,5,7 → 1,2,3,5,7,8
- 設問2-オ
- 2,3,8 → 1,5,7 → 1,2,3,5,7,8
- 設問2-カ
- 3,8,2 → 7,5,1 → 1,2,3,5,7,8
- 設問3-エ
- i < num1 のループで list[i+num2] ← slist1[i], j < num2 のループで list[j+num1] ← slist2[j]
解答・解説を表示
解答
設問1: a=ウ, b=ウ, c=ア; 設問2: ウ; 設問3: エ
解説
まず要点:マージソートは、分けてから統合する考え方(分割統治法)を使う並べ替えの方法です。配列を要素が1つになるまで半分に分け、整列済みの部分同士を2方向マージ(先頭の要素を比べて小さい方を取り出す)でまとめて昇順にします。計算量はいつもO(N log N)で、安定な並べ替えです。
解き方
- 設問1:再帰呼出しの終了条件(num=1で終わる)、配列の後半を指す添字の計算(num1+i)、マージ時に2つの配列を走査する条件(両方が有効範囲内)を特定する。
- 設問2:再帰呼出しの深さ優先(左側から処理)の順序に従い、Mergeが終わるたびのlist配列の状態変化をたどる。
- 設問3:一方の配列が空になった後の残り要素の格納で、すでに使われた側の要素数(num1またはnum2)が固定のずれになることを利用して添字を導く。
小問ごとの答え
- 小問 設問1 a:ウ
- 問題文(2)①より、渡された配列の要素数numが1のときに再帰呼び出しを終了するため、分割および再帰呼出しを行う条件式は「num > 1」となります。
- 小問 設問1 b:ウ
- slist1にはlistの先頭からnum1個(添字0〜num1-1)がコピーされます。後半のslist2には添字num1以降の要素をコピーするため、ループ変数i(0〜num2-1)に対して参照先は「list[num1+i]」となります。
- 小問 設問1 c:ア
- 2つの配列slist1とslist2の要素を先頭から比較して小さい方をlistに格納する処理は、両方の配列に未処理要素が残っている間実行します。したがって継続条件は「(i < num1) and (j < num2)」です。
- 小問 設問2:ウ
- [3, 8, 2, 7, 5, 1]を左[3, 8, 2]と右[7, 5, 1]に分割します。左側の[3, 8, 2]は[3]と[8, 2]に分かれ、まず[8]と[2]のマージで「2, 8」が生成されます。次に[3]とマージされ「2, 3, 8」となります。右側も同様に[5]と[1]のマージで「1, 5」、続いて[7]とマージされ「1, 5, 7」となります。最後に両者がマージされ「1, 2, 3, 5, 7, 8」となるため、推移は「2,8 → 2,3,8 → 1,5 → 1,5,7 → 1,2,3,5,7,8」です。
- 小問 設問3:エ
- 主ループ終了時点で残っている要素を格納する際、slist1に残っている場合はslist2の全要素(num2個)が既に格納済みなので、j=num2となり格納先添字は「i + num2」です。逆にslist2に残っている場合はslist1の全要素(num1個)が格納済みなのでi=num1となり格納先添字は「j + num1」となります。
覚えるポイント
- マージソートの再帰は要素数1で停止し、ボトムアップにマージされる。
- マージ処理の残余コピーでは、完了した他方配列のサイズ分だけ格納位置がシフトする。
間違えやすいところ
- 再帰の停止条件を「num >= 1」としてしまい、無限に再帰してしまうミス。
- たどるときに右側の木を先にマージしてしまうなど、再帰の実行順序を混同すること。
出題の前提:2010年度春期 基本情報技術者試験 午後 問8
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.43 ↗(www.ipa.go.jp) / 公式問題冊子 p.44 ↗(www.ipa.go.jp) / 公式問題冊子 p.45 ↗(www.ipa.go.jp) / 公式問題冊子 p.46 ↗(www.ipa.go.jp) / 公式問題冊子 p.47 ↗(www.ipa.go.jp)
英文テキストの整形出力(ワードラップ処理)
ソフトウェア開発 · C言語 / 文字列処理 / ワードラップ / 文字コード変換
英文テキストを読み込み、単語が行末の改行で分割されないように行バッファlinebufを用いて1行あたり最大COLUMNS文字(80文字)で整形出力するC言語プログラム、およびキーワード置換に対応した拡張プログラムに関する問題である。設問1の空欄a〜d、および設問2の空欄e〜gに入る適切なものを各解答群から選べ。
- 設問1 a
- 行バッファの桁あふれ判定条件(エ: cpos >= COLUMNS)
- 設問1 b
- 空白文字の位置を記録する処理(イ: gapp = cpos)
- 設問1 c
- 行バッファへの文字格納とインデックス加算(イ: linebuf[cpos++])
- 設問1 d
- 次行へ移動させる単語の走査インデックス更新(エ: i++)
- 設問2 e
- 文字列から10進数への数値化処理(カ: i * 10 + ch2 - '0')
- 設問2 f
- キーワード定義と参照の識別条件(ア: ch1 == 'D')
- 設問2 g
- 置換後キーワードの行あふれ判定条件(ウ: cpos + j - 1 >= COLUMNS)
解答・解説を表示
解答
設問1: a=エ, b=イ, c=イ, d=エ; 設問2: e=カ, f=ア, g=ウ
解説
まず要点:行に文字を足して制限(80文字)を超えそうなら、直前の空白より後ろの単語を次の行へ送ります。行バッファとは、1行分の文字をためておく入れ物のことです。数字文字を数値に直すときは「val = val × 10 + (ch - '0')」の形を使います。
解き方
- 行バッファの文字位置cposと最後の空白位置gappの役割、そしていつ更新されるかをコードから読み取る。
- 行があふれたときに、直前の単語を切り離して次の行へ移す処理の添字の動きを追う。
- エスケープ文字'\'の後に続く識別子('D'/'R')と参照番号を読み取る拡張ロジックを理解する。
小問ごとの答え
- 小問 設問1 a:エ
- cposは次の文字を格納する位置を示します。1行の最大文字数がCOLUMNS文字であるため、cposがCOLUMNSに達した時点(cpos >= COLUMNS)で行末の折り返し処理が必要になります。
- 小問 設問1 b:イ
- gappはlinebufに最後に格納した空白文字の位置を保持する変数です。空白文字を格納する直前の位置はcposであるため、gapp = cposと代入して位置を記録します。
- 小問 設問1 c:イ
- linebufの現在位置cposに読み込んだ文字chを格納した後、次の格納位置を指すようにインデックスを1進める必要があるため、linebuf[cpos++]が適切です。
- 小問 設問1 d:エ
- 行末であふれた単語の2文字目以降を先頭から順に走査して新しい行バッファへ複写するため、単語の文字位置を進めるi++を実行します。
- 小問 設問2 e:カ
- 数字文字ch2を1桁ずつ読み込んで数値化するため、既存の値iを10倍して文字コードの差分(ch2 - '0')を加算する式「i * 10 + ch2 - '0'」を用います。
- 小問 設問2 f:ア
- キーワードの定義形式は先頭が'\D'、参照形式は'\R'で始まります。定義処理を行うブロックであるため、先頭文字ch1が'D'であるか判定するch1 == 'D'が正解です。
- 小問 設問2 g:ウ
- 長さjのキーワードをlinebufのcpos番目から格納すると、末尾文字の位置はcpos + j - 1となります。これがCOLUMNS以上であれば1行の上限文字数を超えるため改行処理を行います。
覚えるポイント
- 数字文字から整数値への変換は (ch - '0') を行い、桁上がりは直前の値を10倍して足し合わせる。
- バッファへの文字追加時はポストインクリメント buf[pos++] で位置を管理する。
間違えやすいところ
- 末尾の位置を求めるとき、0から数える添字の「-1」を忘れて境界の判定を間違える。
- 直前の空白位置gappと文字の格納位置cposを更新する順番を取り違える。
出題の前提:平成22年度春期基本情報技術者試験 午後問9
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.48 ↗(www.ipa.go.jp) / 公式問題冊子 p.49 ↗(www.ipa.go.jp) / 公式問題冊子 p.50 ↗(www.ipa.go.jp) / 公式問題冊子 p.51 ↗(www.ipa.go.jp) / 公式問題冊子 p.52 ↗(www.ipa.go.jp) / 公式問題冊子 p.53 ↗(www.ipa.go.jp) / 公式問題冊子 p.54 ↗(www.ipa.go.jp)
セキュリティルームの入退室管理とログ解析
ソフトウェア開発 · COBOL / 索引ファイル / 順ファイル / 条件分岐 / テーブル操作
セキュリティルームの入退室を管理するプログラム1(オンライン系)と、入退室ログファイルから指定日時に在室していた従業員番号を集計・表示するプログラム2(バッチ系)に関するCOBOLプログラムの問題である。設問1の空欄a, b、設問2、および設問3の空欄c〜fに入る適切なものを各解答群から選べ。
- 設問1 a
- 入室不可となる条件(イ: EMP-CLASS <= 2 AND EMP-QUAL = 0)
- 設問1 b
- 入室成功時の在室人数の加算(ア: ADD 1 TO CNT)
- 設問2
- 従業員ファイル未登録時の結果コード(イ: 2)
- 設問3 c
- 指定日時に到達したかどうかの判定(オ: LOG-TIME >= PRM-TIME)
- 設問3 d
- 在室テーブルの空き要素を検索する条件(ウ: EMP-NO(CNT) = ZERO)
- 設問3 e
- 退室対象の従業員を特定する条件(エ: LOG-EMP = EMP-NO(CNT))
- 設問3 f
- 在室者全件表示ループの終了条件(イ: CNT > 99)
解答・解説を表示
解答
設問1: a=イ, b=ア; 設問2: イ; 設問3: c=オ, d=ウ, e=エ, f=イ
解説
まず要点:入退室の判定は、従業員マスタを照合して条件で分岐し、バッチではログを先頭から順にたどって在室者の状態を再現します。COBOLでは、ファイルから1件ずつ読む処理と索引ファイルの読み取りを組み合わせて使います。指定日時以降になったら集計を打ち切ります。
解き方
- プログラム1の入室できる条件(職級と資格フラグ)と、在室人数の上限の判定のしくみを理解する。
- 従業員マスタが見つからないときの例外処理(INVALID KEY節)から結果コードを確かめる。
- プログラム2でログを時系列にたどり(入室で追加、退室で消去)、指定日時で打ち切る条件を特定する。
小問ごとの答え
- 小問 設問1 a:イ
- 入室資格の説明より、一般社員・係長(EMP-CLASS <= 2)で資格が0(EMP-QUAL = 0)の場合は入室が許可されません。課長・部長の資格値は不定であるため、職級条件を併記した「EMP-CLASS <= 2 AND EMP-QUAL = 0」で除外判定します。
- 小問 設問1 b:ア
- 入室が正常に許可された場合、在室者数を管理するカウンタCNTを1増やす必要があるため、「ADD 1 TO CNT」を実行します。
- 小問 設問2:イ
- プログラム1のREAD EMPLOYEE文において、INVALID KEY(従業員番号が存在しない場合)に「MOVE 2 TO PRM-RTN」が実行されるため、結果コードは2となります。
- 小問 設問3 c:オ
- ログファイルは日時の昇順に記録されています。指定日時より前に入室し指定日時以降に退室した従業員を集計するため、ログの日時が指定日時以上(LOG-TIME >= PRM-TIME)になった時点で走査を終了して表示処理へ進みます。
- 小問 設問3 d:ウ
- PROC-ENTERでは、在室テーブルSTAY-ROOMの空いている要素(EMP-NO(CNT) = ZERO)を探して従業員番号を記録するため、ループ終了条件は「EMP-NO(CNT) = ZERO」です。
- 小問 設問3 e:エ
- PROC-EXITでは、退室した従業員番号が記録されているスロットを探すため、一致条件である「LOG-EMP = EMP-NO(CNT)」までループを回します。
- 小問 設問3 f:イ
- 在室テーブルSTAY-ROOMの要素数は最大99(OCCURS 99)です。すべての要素をチェックして表示するため、UNTIL条件には配列上限を超える「CNT > 99」を指定します。
覚えるポイント
- PERFORM VARYING ... UNTIL 条件 は、条件が真になった時点でループを終了(前判定)する。
- COBOLのテーブル初期値や未使用領域にはZEROを設定し、空き判定に利用する。
間違えやすいところ
- 課長・部長の資格フラグが不定であることを忘れ、EMP-QUAL = 0だけで判定してしまう。
- PERFORM UNTILの終了判定で、続ける条件(CNT <= 99)と終わる条件(CNT > 99)を逆にする。
出題の前提:平成22年度春期基本情報技術者試験 午後問10
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.55 ↗(www.ipa.go.jp) / 公式問題冊子 p.56 ↗(www.ipa.go.jp) / 公式問題冊子 p.57 ↗(www.ipa.go.jp) / 公式問題冊子 p.58 ↗(www.ipa.go.jp) / 公式問題冊子 p.59 ↗(www.ipa.go.jp) / 公式問題冊子 p.60 ↗(www.ipa.go.jp)
リバーシゲームの対戦支援プログラム
ソフトウェア開発 · Java / 再帰呼出し / オブジェクト指向 / 列挙型
8行8列の盤面で行うリバーシゲームの対戦を支援するJavaプログラムに関する次の設問に答えよ。 〔プログラムの説明〕 リバーシは各プレーヤが交互に石を置き、挟んだ相手の石を反転させて自分の石とするゲームである。盤の升は「列(a〜h)行(1〜8)」で指定される。 クラスBoardは盤を表し、各升の状態を2次元配列gridで管理する。列挙型Directionは8方向のオフセット(drow, dcol)を定義する。メソッドreverseは、指定された升から指定された方向にある相手の石を再帰呼出しを用いて探索・反転し、反転した石の個数を返す。 設問1:プログラム中の空欄 a 〜 e に入れる正しい答えを選択群から選べ。 設問2:メソッドreverseの戻り値の仕様に関する表中の空欄 f, g に入れる正しい答えを選択群から選べ。
- 設問1 a ア
- -1, 0
- 設問1 a イ
- -1, 1
- 設問1 a ウ
- 0, 0
- 設問1 a エ
- 0, 1
- 設問1 a オ
- 1, 0
- 設問1 b ア
- grid[count][0]
- 設問1 b イ
- grid[nrow][col]
- 設問1 b ウ
- grid[nrow][ncol]
- 設問1 b エ
- grid[row][col]
- 設問1 b オ
- grid[row][ncol]
- 設問1 c ア
- *=
- 設問1 c イ
- +=
- 設問1 c ウ
- -=
- 設問1 c エ
- /=
- 設問1 c オ
- -
- 設問1 d ア
- ++n
- 設問1 d イ
- n
- 設問1 d ウ
- n + 1
- 設問1 d エ
- n - 1
- 設問1 d オ
- n++
- 設問1 e ア
- board
- 設問1 e イ
- opponent
- 設問1 e ウ
- Piece.BLACK
- 設問1 e エ
- Piece.WHITE
- 設問1 e オ
- player
- 設問2 f, g ア
- 隣接する升が存在しない,又は隣接する升に石がない場合
- 設問2 f, g イ
- 隣接する升にPiece以外のクラスのインスタンスが存在する場合
- 設問2 f, g ウ
- 隣接する升の石が引数pieceで与えられた石と同色の場合
- 設問2 f, g エ
- 隣接する升の石が引数pieceで与えられた石と異なる色の場合
解答・解説を表示
解答
設問1: a=オ, b=ウ, c=イ, d=ウ, e=イ; 設問2: f=ウ, g=ア
解説
まず要点:リバーシの挟み込み判定は、置いたマスから指定方向へ相手の石が続く間だけ再帰で進み、自分の石に届けば挟み成功として戻りながら石を反転させます。再帰とは、同じ処理を自分自身で繰り返し呼ぶ書き方です。この方法で8方向の判定を短く書けます。
解き方
- Direction列挙型の定義から、8方向(N, NE, E, SE, S, SW, W, NW)に対応する行と列の増分の決まりを確かめる。
- reverseメソッドの再帰の終わり方(空きマスや盤外なら-1、同色なら0)と、戻りながら石を反転する処理を追う。
- placeメソッドで8方向の反転数を合計する処理(count += n)と、手番後の石の増減、手番の交代を確かめる。
小問ごとの答え
- 小問 設問1 a:オ
- Directionの各定数は8方向の行・列の増分(drow, dcol)を表します。S(南・下方向)は行番号が1増加し列番号は変わらないため、(1, 0) となります。
- 小問 設問1 b:ウ
- 再帰呼出しから戻った際、相手の石を挟めたことが確定しているため、現在調査対象となっている隣接マス grid[nrow][ncol] の石を自分の色 piece に反転して更新します。
- 小問 設問1 c:イ
- placeメソッド内で全8方向に対して反転処理を行い、反転できた石の個数 n を総数 count に累積加算するため、演算子は「+=」が適切です。
- 小問 設問1 d:ウ
- 石を打ったプレーヤの所持石数は、挟んで反転させた n 個に加え、盤上に新たに打った自分自身の石 1 個が増加するため、加算すべき値は n + 1 となります。
- 小問 設問1 e:イ
- 手番交代処理において、一時変数 p に退避すべき値は相手プレーヤの参照 opponent です。これにより opponent と player の参照を正しく入れ替えることができます。
- 小問 設問2 f:ウ
- reverseメソッドにおいて、探索先の石が自分の石と同色(next == piece)であるとき、石を挟む終端に到達したことを示すため戻り値 0 を返します。
- 小問 設問2 g:ア
- 盤外に出た場合や升に石がない空き升の場合(next == null)は石を挟めないため、失敗を表す戻り値 -1 を返します。
覚えるポイント
- リバーシで獲得する石数は「反転した石の数+置いた石1個」となる点に注意する。
間違えやすいところ
- 石を打った側の石数の増加で、置いた1個を忘れて反転数nだけを足してしまう間違いが多い。
出題の前提:基本情報技術者試験 午後問題 Javaプログラミング仕様
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.61 ↗(www.ipa.go.jp) / 公式問題冊子 p.62 ↗(www.ipa.go.jp) / 公式問題冊子 p.63 ↗(www.ipa.go.jp) / 公式問題冊子 p.64 ↗(www.ipa.go.jp) / 公式問題冊子 p.65 ↗(www.ipa.go.jp) / 公式問題冊子 p.66 ↗(www.ipa.go.jp)
浮動小数点数の加算プログラム
ソフトウェア開発 · アセンブラ / CASL II / 浮動小数点演算 / 正規化
浮動小数点数の加算を行うCOMET II / CASL II副プログラムFADDに関する次の設問に答えよ。 〔プログラムの説明〕 浮動小数点数は、メモリ中の連続する2語に格納され、先頭語の上位1ビットが符号S、下位8ビットが指数部E(ゲタ履き表現、バイアス127)、2語目が仮数部M(16ビット、最上位ビットの左に小数点)で表される。値は (-1)^S × 0.M × 2^(E-127) である。 FADDは被加数X、加数Yの加算を行い結果Zを求める。処理の流れは、①指数の大きい方に小さい方の指数を合わせる(仮数部を右シフト)、②符号を考慮した仮数部の加減算を行う、③加算結果の正規化(最上位ビットが1になるよう仮数部を左シフトし指数部を減じる、または桁上がりの調整)を行う。 設問1:プログラム中の空欄 a 〜 e に入れる正しい答えを選択群から選べ。 設問2:このプログラムを減算用(Z ← X - Y)に変更する場合、行番号27及び32の直後に追加する命令として正しい答えを選択群から選べ。
- 設問1 a ア
- ADDL GR4,GR5
- 設問1 a イ
- ADDL GR5,GR4
- 設問1 a ウ
- LD GR4,GR5
- 設問1 a エ
- LD GR5,GR4
- 設問1 a オ
- SRL GR4,0,GR5
- 設問1 a カ
- SRL GR5,0,GR4
- 設問1 b ア
- JMI ADDMXY
- 設問1 b イ
- JMI XMINUS
- 設問1 b ウ
- JMI YMINUS
- 設問1 b エ
- JPL ADDMXY
- 設問1 b オ
- JPL XMINUS
- 設問1 b カ
- JPL YMINUS
- 設問1 c ア
- JOV ADDMXY
- 設問1 c イ
- JOV SCHECK
- 設問1 c ウ
- JPL ADDMXY
- 設問1 c エ
- JPL SCHECK
- 設問1 c オ
- JUMP ADDMXY
- 設問1 c カ
- JUMP SCHECK
- 設問1 d ア
- SLL GR5,0,GR4
- 設問1 d イ
- SLL GR5,1
- 設問1 d ウ
- SRA GR5,0,GR4
- 設問1 d エ
- SRA GR5,1
- 設問1 d オ
- SRL GR5,0,GR4
- 設問1 d カ
- SRL GR5,1
- 設問1 e ア
- ADDL GR4,=1
- 設問1 e イ
- ADDL GR5,=1
- 設問1 e ウ
- SLL GR4,1
- 設問1 e エ
- SLL GR5,1
- 設問1 e オ
- SUBL GR4,=1
- 設問1 e カ
- SUBL GR5,=1
- 設問2 ア
- AND GR2,=#7FFF
- 設問2 イ
- AND GR2,=#8000
- 設問2 ウ
- OR GR2,=#7FFF
- 設問2 エ
- OR GR2,=#8000
- 設問2 オ
- XOR GR2,=#7FFF
- 設問2 カ
- XOR GR2,=#8000
解答・解説を表示
解答
設問1: a=ウ, b=エ, c=カ, d=イ, e=ア; 設問2: カ
解説
まず要点:浮動小数点数の加減算では、指数の小さい方の仮数部を右にずらして桁をそろえ、仮数部を足し引きした後、最上位ビットが1になるよう正規化します。減算は、加数の符号ビットをXOR(排他的論理和)で反転すれば加算と同じ処理で扱えます。仮数部とは、数を表す有効数字の部分です。
解き方
- 指数部の比較と桁合わせ:ExとEyを比べ、小さい方の仮数部を差の分だけ右へシフトし、大きい方の指数を結果の指数にする。
- 符号の判定と仮数部の加減算:XとYの符号が同じなら加算(ADDMXY)、違うなら減算を行い、結果の仮数部Mzと符号Szを求める。
- 正規化とけたあふれの処理:けたあふれのときは仮数を1ビット右へシフトして指数部を+1し、最上位ビットが0なら1になるまで左シフトして指数部を-1する。
- 減算への変更:Yの符号ビット(ビット15)を反転させるため、#8000とのXORを使う。
小問ごとの答え
- 小問 設問1 a:ウ
- Ex < Ey の場合、大きい方の指数 Ey(GR5)を結果の指数 GR4 に格納する必要があるため、LD GR4,GR5 とします。
- 小問 設問1 b:エ
- X >= 0 のとき、Y の符号を検査して Y >= 0 であれば同符号の加算となるため、ADDMXY に分岐する JPL ADDMXY が入ります。
- 小問 設問1 c:カ
- X < 0 かつ Y >= 0 の場合、My - Mx の減算を行った後、符号判定処理 SCHECK へ無条件分岐するため JUMP SCHECK となります。
- 小問 設問1 d:イ
- 正規化において最上位ビットが0の間、仮数部 GR5 を左に1ビット論理シフトする必要があるため SLL GR5,1 となります。
- 小問 設問1 e:ア
- 桁上がり発生時は仮数部を右に1ビットシフト(SRL GR5,1)したため、指数部 GR4 を1増やす ADDL GR4,=1 を行います。
- 小問 設問2:カ
- 減算 X - Y は X + (-Y) と同等です。Yの符号(GR2の最上位ビット)を反転させるため、最上位ビットのみが1であるマスク値 #8000 との排他的論理和 XOR GR2,=#8000 を追加します。
覚えるポイント
- ビットの反転には目的ビットを1としたXOR演算(反転マスク)を使用する。
間違えやすいところ
- 減算への変更でOR命令を選んでしまい、正の数は負にできても負の数を正に戻せない間違いが多い。
出題の前提:COMET II および CASL II の仕様
出典:IPA『2010年度 春期 午後』
公式問題冊子 p.67 ↗(www.ipa.go.jp) / 公式問題冊子 p.68 ↗(www.ipa.go.jp) / 公式問題冊子 p.69 ↗(www.ipa.go.jp) / 公式問題冊子 p.70 ↗(www.ipa.go.jp)
喫茶店の料金計算(ワークシートの参照と関数式)
ソフトウェア開発 · 表計算 / IF関数 / 照合一致 / 複数条件照合合計 / 配列参照
ある喫茶店における料金計算および割引計算を行うためのワークシート「メニュー」「伝票」「割引」に関する設問に答えよ。 設問1:ワークシート「伝票」のセルD2に単価を求める計算式を入力してD3〜D27に複写する。空欄 a、b に入る正しい答えを選択群から選べ。 式:IF(A2 = '飲料', [ a ], [ b ]) 設問2:ワークシート「割引」に関する記述中の空欄 c〜g に入る正しい答えを選択群から選べ。 (1) 伝票におけるセット割引、飲料の注文数の合計を求める計算式をセルB1、B2に入力する(空欄 c、d)。 (2) 注文時の品目ごとの注文数を求める計算式をセルC9に入力し、C10〜C12に複写する(空欄 e)。 (3) セット割引を単価の大きい順に割り当てたセット数を求めるため、セルG9に入力しG10〜G12に複写する計算式(空欄 f)。 (4) 数量割引後の合計料金を求めるため、セルB15に入力する計算式(空欄 g)。
- ア
- 設問1: 照合一致(配列(メニュー!$B$4〜$E$7,B2,C2), メニュー!$A$4〜$A$7) / 設問2(c,d): 照合合計(A1, 伝票!C2〜C27, 伝票!E2〜E27) / 設問2(e): 照合合計(A9, 伝票!$B$2〜$B$27, 伝票!$E$2〜$E$27) / 設問2(f): IF(F9 ≧ C9, C9, F9) / 設問2(g): B14 - IF(論理和(論理積(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 0) * H13
- イ
- 設問1: 照合一致(配列(メニュー!$B$4〜$E$7,B2,C2), メニュー!$B$3〜$E$3) / 設問2(c,d): 照合合計(A2, 伝票!A2〜A27, 伝票!E2〜E27) / 設問2(e): 照合合計(...) - 照合合計(...) / 設問2(f): IF(F9 ≧ C9, C9, F9 + C9) / 設問2(g): B14 - IF(論理積(論理和(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 0) * H13
- ウ
- 設問1: 照合一致(配列(メニュー!$H$4〜$J$7,B2,C2), メニュー!$G$4〜$G$7) / 設問2(c,d): 照合合計(A2, 伝票!A2〜A27, 伝票!E2〜E27) - B1 / 設問2(e): 照合合計(B$7, 伝票!$C$2〜$C$27, 伝票!$E$2〜$E$27) / 設問2(f): IF(F9 ≧ C9, C9, F9 - C9) / 設問2(g): (1 + IF(論理和(論理積(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 0)) * B14
- エ
- 設問1: 照合一致(配列(メニュー!$H$4〜$J$7,B2,C2), メニュー!$H$3〜$J$3) / 設問2(c,d): 照合合計(A3, 伝票!A2〜A27, 伝票!E2〜E27) / 設問2(e): 照合合計(...) - 照合合計(...) / 設問2(f): IF(F9 ≦ C9, C9, F9) / 設問2(g): (1 + IF(論理積(論理和(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 0)) * B14
- オ
- 設問1: 配列(メニュー!$B$4〜$E$7, 照合一致(B2, メニュー!$A$4〜$A$7), 照合一致(C2, メニュー!$B$3〜$E$3)) / 設問2(c,d): 照合合計(A3, 伝票!A2〜A27, 伝票!E2〜E27) - B1 / 設問2(e): 複数条件照合合計((A9, '=', ...), (B$7, '=', ...), ...) / 設問2(f): IF(F9 ≦ C9, C9, F9 + C9) / 設問2(g): (1 - IF(論理和(論理積(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 1)) * B14
- カ
- 設問1: 配列(メニュー!$B$4〜$E$7, 照合一致(B2, メニュー!$B$3〜$E$3), 照合一致(C2, メニュー!$A$4〜$A$7)) / 設問2(c,d): 複数条件照合合計(...) / 設問2(e): 複数条件照合合計((A9, '=', 伝票!$B$2〜$B$27), (B$7, '≠', 伝票!$C$2〜$C$27), 伝票!$E$2〜$E$27) / 設問2(f): IF(F9 ≦ C9, C9, F9 - C9) / 設問2(g): (1 - IF(論理積(論理和(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 1)) * B14
- キ
- 設問1: 配列(メニュー!$B$4〜$E$7, 照合一致(C2, メニュー!$B$3〜$E$3), 照合一致(B2, メニュー!$A$4〜$A$7)) / 設問2(c,d): 複数条件照合合計(...) / 設問2(e): 複数条件照合合計((A9, '≠', ...), (B$7, '=', ...), ...) / 設問2(g): (1 - IF(論理積(論理和(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 0)) * B14
- ク
- 設問1: 配列(メニュー!$H$4〜$J$7, 照合一致(B2, メニュー!$G$4〜$G$7), 照合一致(C2, メニュー!$H$3〜$J$3)) / 設問2(c,d): 複数条件照合合計(...) / 設問2(e): 複数条件照合合計((A9, '≠', ...), (B$7, '≠', ...), ...) / 設問2(g): (1 - IF(論理和(論理積(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30), 0.05, 0)) * B14
解答・解説を表示
解答
設問1: a=オ, b=ク; 設問2: c=ア, d=ウ, e=カ, f=ア, g=ク
解説
まず要点:表計算では、複写してもずれない絶対参照($付き)と、ずれる相対参照を正しく使い分けます。さらに、表引きの関数(配列・照合一致)と集計の関数(照合合計・複数条件照合合計)の使い方を理解して式を組み立てます。絶対参照とは、複写しても参照先が変わらない指定です。
解き方
- メニュー表の行と列の並びから、照合一致の引数(検索値と検索範囲)と、配列の範囲・引数の順番を特定する。
- 伝票のデータの並びを確かめ、種類が「飲料」の行に「セット割引」が混ざる点に注意して実際の数量を求める。
- 残り数を管理する割当のしくみ(上限の判定)と、論理積・論理和の書き方に従って割引後の料金の式を導く。
小問ごとの答え
- 小問 設問1 a:オ
- 飲料の単価表はワークシート「メニュー」のセル$B$4〜$E$7にあり、行位置は品目(メニュー!$A$4〜$A$7)の中からB2を探し、列位置はサイズ・区分(メニュー!$B$3〜$E$3)の中からC2を探すため、配列(メニュー!$B$4〜$E$7, 照合一致(B2, メニュー!$A$4〜$A$7), 照合一致(C2, メニュー!$B$3〜$E$3))となります。
- 小問 設問1 b:ク
- 料理の単価表はワークシート「メニュー」のセル$H$4〜$J$7にあり、行位置は料理品目(メニュー!$G$4〜$G$7)からB2を探し、列位置はオプション(メニュー!$H$3〜$J$3)からC2を探すため、配列(メニュー!$H$4〜$J$7, 照合一致(B2, メニュー!$G$4〜$G$7), 照合一致(C2, メニュー!$H$3〜$J$3))となります。
- 小問 設問2 c:ア
- セルB1は「セット割引」の注文数量の合計を求めます。ワークシート「割引」のセルA1の値は'セット割引'なので、伝票のタイプ列(C2〜C27)がA1と一致する行の数量列(E2〜E27)を合計する「照合合計(A1, 伝票!C2〜C27, 伝票!E2〜E27)」が適切です。
- 小問 設問2 d:ウ
- 伝票の種類列で'飲料'(セルA2)となっている行には、純粋な飲料の注文だけでなく'セット割引'の行も含まれています。飲料そのものの注文数量を求めるには、種類が'飲料'である数量合計からセット割引の合計数B1を引く必要があるため、「照合合計(A2, 伝票!A2〜A27, 伝票!E2〜E27) - B1」となります。
- 小問 設問2 e:カ
- 品目ごとの注文数は、品目列がA9(抹茶ラテ等)と等しく、かつタイプ列が'セット割引'(セルB$7)と等しくない('≠')行の数量の合計を求めるため、「複数条件照合合計((A9, '=', 伝票!$B$2〜$B$27), (B$7, '≠', 伝票!$C$2〜$C$27), 伝票!$E$2〜$E$27)」となります。
- 小問 設問2 f:ア
- 割り当てるセット数は、割当可能残数F9と当該品目の注文数C9のうち、小さい方(上限はC9)となります。したがって、残数F9が注文数C9以上であれば注文数C9を全てセットにし、そうでなければ残っているF9を割り当てるため、「IF(F9 ≧ C9, C9, F9)」となります。
- 小問 設問2 g:ク
- 数量割引の条件は「飲料≧15 かつ 料理≧10」または「飲料+料理≧30」です。この条件を論理和と論理積で表すと「論理和(論理積(B2 ≧ 15, B3 ≧ 10), (B2 + B3) ≧ 30)」となります。条件を満たせば5%(0.05)引きとなり支払額は95%(1 - 0.05)、満たさなければ割引率0%(1 - 0)となるため、「(1 - IF(..., 0.05, 0)) * B14」が適切です。
覚えるポイント
- 「配列(範囲, 行位置, 列位置)」は第2引数が行、第3引数が列を指定する。
- 「照合合計」や「複数条件照合合計」では集計対象の範囲と条件範囲の行数・列数を一致させる必要がある。
間違えやすいところ
- 伝票の「飲料」の行に「セット割引」の行が混ざっているのを見落とし、単純に種類='飲料'の合計を飲料数としてしまう間違い。
- 割引率の適用で、(1 - 割引率) を作るときに偽の場合の値を1にしてしまい、合計金額が0円になる間違い。
出題の前提:平成22年度春期基本情報技術者試験 午後問題 問13 表計算の仕様に基づく。
出典:IPA『2010年度 春期 午後』
公式問題冊子 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) / 公式問題冊子 p.78 ↗(www.ipa.go.jp) / 公式問題冊子 p.79 ↗(www.ipa.go.jp)
2010年度 春期 午後
参照した公式資料
IPAが公開した2010年度 春期 午後の問題・解答資料です。

