旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。
2013年度 春期 午後の概要
カラー画像のデータ構造とVRAM容量の計算
ハードウェア · 光の3原色 / プレーンドアクセス方式 / ビットマップ画像 / VRAM容量計算
コンピュータにおけるカラー画像の表現方式およびVRAMへの格納方式に関する問題です。光の3原色(赤・緑・青)の加法混色、プレーンごとにビットを割り当てるプレーンドアクセス方式、階調数と色数、および画面解像度と色数に応じた必要VRAM容量の算出について解答します。
- ア
- 設問1: 011 / 設問2(b): 青 / 設問2(c): 青 / 設問3(d): 2 / 設問3(e): 2 / 設問3(f): 2
- イ
- 設問1: 101 / 設問2(b): 赤 / 設問2(c): 赤 / 設問3(d): 4 / 設問3(e): 4 / 設問3(f): 4
- ウ
- 設問1: 110 / 設問2(b): 黄 / 設問2(c): 黄 / 設問3(d): 8 / 設問3(e): 8 / 設問3(f): 8
- エ
- 設問2(b): 黒 / 設問2(c): 黒 / 設問3(d): 16 / 設問3(e): 16 / 設問3(f): 16
- オ
- 設問2(b): シアン / 設問2(c): シアン / 設問3(d): 32 / 設問3(e): 32 / 設問3(f): 32
- カ
- 設問2(b): 白 / 設問2(c): 白 / 設問3(f): 60
- キ
- 設問2(b): マゼンタ / 設問2(c): マゼンタ / 設問3(f): 64
- ク
- 設問2(b): 緑 / 設問2(c): 緑 / 設問3(f): 120
- ケ
- 設問3(f): 128
- コ
- 設問3(f): 240
解答・解説を表示
解答
設問1 a: イ, 設問2 b: オ, c: ア, 設問3 d: イ, e: オ, f: コ
解説
まず要点:画面の色は、赤・緑・青という光の3原色(光を混ぜて色を作る基本の色)を混ぜ合わせて作ります。プレーンドアクセス方式では、色のもとになるビットを色ごとの面(プレーン)に分けておき、同じ位置のビットを重ねて1つの表示色を決めます。必要な色が増えるほどビット数も増え、画像全体のデータ量は「画素数 × 1画素あたりのビット数」で求め、バイト単位に直します。
解き方
- 赤と青でマゼンタ、緑と青でシアン、赤と緑で黄になるという混色のきまりをもとに、RGBの各ビットのオン・オフを判断します。
- 16進数のデータを8ビットずつの2進数に開き、指定された画素の位置に対応する各プレーンのビット値を取り出して色を決めます。
- 解像度(縦×横)に1画素あたりの必要ビット数(16色なら4ビット)をかけ、8で割ってバイト数を出し、指定の単位換算(1k=1,000)を当てはめます。
小問ごとの答え
- 小問 設問1 a:イ
- マゼンタは赤と青を重ね合わせた色であるため、赤のビットが1、緑のビットが0、青のビットが1となり、対応するビットパターンは101です。
- 小問 設問2 b:オ
- プレーン1(赤)が0、プレーン2(緑)が1、プレーン3(青)が1なので、RGBは011となります。緑と青の混色はシアンです。
- 小問 設問2 c:ア
- 16進数表記の各プレーン先頭バイトを2進数展開すると、プレーン1は23=00100011、プレーン2はD2=11010010、プレーン3はA4=10100100となります。6番目のビットは順に0、0、1であるため、RGBは001となり、青色を表します。
- 小問 設問3 d:イ
- 緑と青にはそれぞれプレーンが2つずつ割り当てられているため、2ビットで表現可能な階調数は2の2乗で4階調となります。
- 小問 設問3 e:オ
- 1画素あたり5ビットで表現されるため、同時に表現できる色数は2の5乗で32色となります。
- 小問 設問3 f:コ
- 16色を表現するには1画素あたり4ビット必要です。縦600×横800画素の総ビット数は480,000×4=1,920,000ビットであり、8で割ると240,000バイトとなります。1kバイト=1,000バイトの換算により240kバイトとなります。
覚えるポイント
- 光の3原色:R+G=黄, G+B=シアン, R+B=マゼンタ, R+G+B=白
- n色を表現するために必要なビット数は 2^b >= n を満たす最小の整数b
- 問題文の条件(1kバイト=1,000バイトか1,024バイトか)を必ず確認する
間違えやすいところ
- 16進数を2進数に開くとき、左端のビットを0番目と数えるか1番目と数えるかを間違えること。
- 情報処理技術者試験でよく使う1,024バイト換算と、この問題だけの1,000バイト換算を混同すること。
出題の前提:平成25年度春期基本情報技術者試験午後問題問1の出題条件および光の3原色の加法混色理論に基づきます。
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.5 ↗(www.ipa.go.jp) / 公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp) / 公式問題冊子 p.8 ↗(www.ipa.go.jp)
仮想記憶方式におけるページ置換えアルゴリズムとベラディの平準化現象
ソフトウェア · 仮想記憶 / ページング方式 / ページフォールト / FIFO / LRU / ベラディの平準化現象
OSの仮想記憶におけるページング方式に関する問題です。主記憶にページが存在しないときに発生する割込みの種類、FIFOやLRUなどの置換えアルゴリズムの定義、ページフォールト発生時の処理手順、およびFIFOアルゴリズム適用時の割当て物理ページ数とページフォールト回数の変化をトレースして解答します。
- ア
- 設問1(a): LFU / 設問2: ①→②→③→④→⑤→⑥ / 設問3(c, d): 8
- イ
- 設問1(a): LIFO / 設問2: ①→③→②→④→⑦→⑤ / 設問3(c, d): 9
- ウ
- 設問1(a): LRU / 設問2: ②→①→④→③→⑤→⑥ / 設問3(c, d): 10
- エ
- 設問1(a): 仮想アドレス空間 / 設問2: ②→①→④→③→⑦→⑤ / 設問3(c, d): 11
- オ
- 設問1(a): 物理アドレス空間 / 設問2: ②→③→①→④→⑤→⑥ / 設問3(c, d): 12
- カ
- 設問2: ②→③→⑤→⑥→①→④
解答・解説を表示
解答
設問1 a: オ, b: ウ, 設問2: エ, 設問3 c: ウ, d: エ
解説
まず要点:ページング方式とは、仮想アドレス空間(プログラムが使う仮の住所の広がり)を同じ大きさのページに分け、主記憶(実際のメモリ)に置くしくみです。使いたいページが主記憶になければページフォールトという割込みが起こり、補助記憶から読み込みます。空きがなければFIFOやLRUという置換えのきまりで追い出すページを選び、FIFOでは枠を増やしてもフォールトが増えるベラディの平準化現象が起きることがあります。
解き方
- ページフォールトの基本の動きと、FIFOは最も古いページ、LRUは最も長く参照されていないページを追い出すという各方式のきまりを確かめます。
- 主記憶がいっぱいのときは、追い出すページを選び、ページアウトし、管理表を更新して存在ビットを0にし、新しいページを入れ、物理ページ番号を決めて存在ビットを1にする流れを整理します。
- 与えられた参照列について、物理ページ枠3個と4個の場合のFIFOの待ち行列を順に動かし、主記憶にない(フォールトが起きる)回数を数えます。
小問ごとの答え
- 小問 設問1 a:オ
- 実行に必要な仮想ページが主記憶である「物理アドレス空間」に存在しない場合に、ページフォールトが発生します。
- 小問 設問1 b:ウ
- 参照されていない時間が最も長いページを置換え対象とするアルゴリズムは、LRU(Least Recently Used)です。
- 小問 設問2:エ
- 空き枠がない場合、まず置換え対象ページを決定(②)し、そのページを退避(①)して存在ビットを0にします(④)。次に要求ページをページイン(③)し、そのページテーブル要素に物理ページ番号を設定(⑦)した上で存在ビットを1にします(⑤)。したがって正解の流れは②→①→④→③→⑦→⑤です。
- 小問 設問3 c:ウ
- 物理ページ数3のFIFOでページ参照列を順に追跡すると、初期ロードで3回、以後の参照で7回の置換えが発生し、ページフォールトの合計回数は10回となります。
- 小問 設問3 d:エ
- 物理ページ数を4に増やして同様に追跡すると、初期ロード4回、その後の参照で7回の置換えが発生し、ページフォールト回数は合計11回に増加します(ベラディの平準化現象)。
覚えるポイント
- FIFO:最も早く主記憶に入ったページを置換(ベラディの平準化現象が起きる可能性がある)
- LRU:最も長い間参照されていないページを置換(スタックアルゴリズムのため平準化現象は起きない)
- ページテーブル更新順序:退避ページの無効化(存在ビット0)を行ってから新規ページを有効化(存在ビット1)する
間違えやすいところ
- ページ枠を増やせば必ずページフォールトの回数が減ると思い込んでしまうこと。
- ページフォールトの後の処理で、ページテーブルへの物理ページ番号の設定と存在ビットの設定の順番を混同すること。
出題の前提:平成25年度春期基本情報技術者試験午後問題問2の出題条件およびOSの仮想記憶管理理論に基づきます。
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.9 ↗(www.ipa.go.jp) / 公式問題冊子 p.10 ↗(www.ipa.go.jp) / 公式問題冊子 p.11 ↗(www.ipa.go.jp) / 公式問題冊子 p.12 ↗(www.ipa.go.jp)
会員情報を管理する関係データベースの設計と運用
データベース · 関係データベース設計 / SQL集約関数 / HAVING句 / 外部キー結合
ヘアサロン5店舗を運営するZ社において、会員証のICカード化および来店記録のデータベース化に伴うデータベース設計とSQLによるデータ抽出に関する問題である。会員表、店舗表、メニュー表、会計表、明細表の既存スキーマに対し、ポイント制度の導入や担当美容師の異動案内に対応するための表設計とSQL問い合わせの妥当性を検討する。
解答・解説を表示
解答
設問1 a: ア, b: イ, 設問2 c: エ, 設問3: イ, 設問4 d: ア
解説
まず要点:関係データベースの設計では、変わりにくい情報(会員ごとの残高など)と、発生するたびに増える情報(会計ごとの記録など)を分けて正しく整理します。集計するときはGROUP BYで同じ値ごとにまとめ、合計はSUM、件数はCOUNT、平均はAVGという関数で計算します。まとめた結果をさらにしぼり込むときはHAVINGを使います。
解き方
- 設問1では、データをよく参照するか、会員ごとか会計ごとかという発生の単位に注目して、どの表に追加するのがよいか判断します。
- 設問2では、店舗ごとにまとめた会計の売上合計・件数・平均金額にそれぞれ対応する、標準的なSQLの集約関数を選びます。
- 設問3では、HAVING句の条件MAX(来店日) < '20130101'が最後に来た日を表していることから、取り出す条件を読み取ります。
- 設問4では、指名の登録(会員表)か過去の施術の記録(会計表)のどちらかに当てはまる、というOR条件の式を組み立てます。
小問ごとの答え
- 小問 設問1 a:ア
- 現在の保有ポイントは参照頻度が高く、都度集計を避けるために会員ごとに1つの最新値を保持すべきであるため、会員表(ア)の属性として管理するのが最も適切である。会計表や明細表に持たせると重複や更新不整合の原因となる。
- 小問 設問1 b:イ
- ポイントの付与および利用は1回の会計の都度発生するイベントデータであるため、会計単位で記録を管理する会計表(イ)に追加するのが適切である。明細表(エ)に追加するとメニューごとに冗長化してしまう。
- 小問 設問2 c:エ
- 売上金額はSUM(会計表.会計金額)、延べ来客数は会計ごとの一意キーである会計コードを数えるCOUNT(会計表.会計コード)、会計コード単位の平均会計額は会計金額の平均であるAVG(会計表.会計金額)を指定するエが正しい。集約関数の入れ子やエイリアスを用いた計算式はSQL構文上誤りである。
- 小問 設問3:イ
- HAVING MAX(会計表.来店日) < '20130101' は、グループ化された会員ごとの最大の来店日(最終来店日)が2013年1月1日より前であることを意味するため、「2013年になってから1回も来店していない会員」を抽出している。
- 小問 設問4 d:ア
- 指名美容師として登録している会員(会員表.担当美容師 = '2008005')または過去に担当されたことがある会員(会計表.担当美容師 = '2008005')のいずれかに該当する会員を抽出するため、結合条件に加えてOR条件で結んだアが正しい。
覚えるポイント
- 残高や累積値はマスタ表、取引ごとの増減履歴はトランザクション表に持たせるのが定石である。
- HAVING句はGROUP BYによるグループ化後の集約値に対して絞り込み条件を適用する。
間違えやすいところ
- SQLのSELECTの中で、AVG(SUM(...))のように集約関数を入れ子にしてしまう誤りです。
- どちらかの条件を満たすものを取り出すとき、AND条件とOR条件を取り違えてしまうミスです。
出題の前提:平成25年度春期 基本情報技術者試験 午後問題 問3
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.13 ↗(www.ipa.go.jp) / 公式問題冊子 p.14 ↗(www.ipa.go.jp) / 公式問題冊子 p.15 ↗(www.ipa.go.jp) / 公式問題冊子 p.16 ↗(www.ipa.go.jp) / 公式問題冊子 p.17 ↗(www.ipa.go.jp)
ICカードを利用した入退室管理システム
情報セキュリティ · 耐タンパ性 / 入退室管理 / アクセスログ / 状態遷移図 / 共連れ防止(アンチパスバック)
J社の開発室および執務室への入退室管理システムを題材に、セキュリティ要件を満たすICカードの特性、収集すべき入退室ログの項目、ICカードおよび利用者の状態遷移、ならびに共連れ入退室への対策を検討する問題である。
解答・解説を表示
解答
設問1: ウ, 設問2: ウ, 設問3 a: ア, 設問4: エ, 設問5: エ
解説
まず要点:入退室管理では、なりすましや不正な侵入を防ぐために、ICカード自体の耐タンパ性(中身を勝手に調べられないようにする性質)やパスワードを組み合わせた多要素認証が必要です。あとで確認できるよう「いつ・誰が・どこを」通ったかが分かる十分なログを残します。共連れ防止(1枚のカードで複数人が入るのを防ぐしくみ)に反するなど異常があったときは、すぐにそのカードを一時停止にして安全を守ります。
解き方
- 設問1では、耐タンパ性の意味(中の情報を不正に解析されたり改ざんされたりするのを防ぐこと)に合う選択肢を選びます。
- 設問2では、「出入りした人・日時・出入口」を特定するのに必要な項目(日時、装置番号、カードID、利用者ID)をすべて含む組み合わせを選びます。
- 設問3では、仕様にある誤入力の制限(3回続けて間違えると一時利用停止)と、図1の状態の移り変わりを照らし合わせます。
- 設問4では、正社員と協力社員の扱いの違い(協力社員はプロジェクト終了と同時に返却)から、矢印δの動きを導きます。
- 設問5では、入退室の記録の食い違い(共連れの違反)を見つけたとき、安全に封じ込める先として一時利用停止(状態④)を選びます。
小問ごとの答え
- 小問 設問1:ウ
- 耐タンパ性とは、機器やICカードの内部構造や保持する秘密情報に対して、物理的または論理的な解析や不正な読み取り・改ざんを防ぐ耐性のことであるため、ウが正解である。ア・イは物理的強度、エは再利用性に関する説明である。
- 小問 設問2:ウ
- セキュリティ要件(4)で求められる「出入りした社員又は協力社員、日時、出入口」を過不足なく特定するためには、利用日時、読取り装置識別番号、カードIDに加え、個人を一意に識別する利用者IDが必要であるため、ウが適切である。
- 小問 設問3 a:ア
- 要件(7)および表1において、入室時又はパスワード変更時に「3回連続してパスワードを誤って入力した場合」に一時利用停止になると定義されているため、状態①(仮パスワード)から状態④(一時利用停止)への遷移契機aはアとなる。
- 小問 設問4:エ
- 協力社員はプロジェクト期間中のみ契約され最初から開発室許可(状態⑤)となる。契約終了時は執務室だけ許可(状態②)を経由せず直接カードを返却(状態③)するため、最少の変更で表す矢印は状態⑤から③へ至るδ(エ)である。
- 小問 設問5:エ
- 共連れ入退室などのアンチパスバック違反(入室履歴のない退室、退室履歴のない入室)を検知した際は、不正利用の疑いがあるため直ちにカードを無効化する必要がある。したがって遷移先は状態④(一時利用停止)が適切である。
覚えるポイント
- 耐タンパ性(Tamper Resistance)は、ICカードや暗号モジュール内部の情報を不正な読み取りから守る性質である。
- アンチパスバックとは、入室記録がないカードでの退室、または退室記録がないカードでの入室を禁止・検知する仕組みである。
間違えやすいところ
- 耐タンパ性を、カードが物理的に壊れにくい・衝撃に強いという意味だと混同してしまう誤りです。
- 協力社員の契約が終わるとき、正社員と同じように「執務室だけ許可」の状態を通してしまう勘違いです。
出題の前提:平成25年度春期 基本情報技術者試験 午後問題 問4
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.18 ↗(www.ipa.go.jp) / 公式問題冊子 p.19 ↗(www.ipa.go.jp) / 公式問題冊子 p.20 ↗(www.ipa.go.jp) / 公式問題冊子 p.21 ↗(www.ipa.go.jp) / 公式問題冊子 p.22 ↗(www.ipa.go.jp)
社員の歩合給決定処理におけるマスタ更新と集計アルゴリズム
ソフトウェア設計 · マスタファイル更新 / シーケンシャル突合せ処理 / 給与計算アルゴリズム
S社における社員の歩合給決定処理に関する問題である。前月末時点の担当契約数(5件ごとに10,000円)および月払保険料合計(50,000円ごとに5,000円)から歩合給を算出する。日次の契約マスタ更新処理(新契約、増額、減額、終了の反映)と、月次の歩合給計算処理(有効契約の抽出、社員ごとの集計)の仕様・流れ図・テストデータに基づく各設問に答えよ。
- 設問1 a
- 処理1で異動ファイルから抽出する対象の異動年月日(エ: 前日)
- 設問1 b
- 処理2で中間ファイルT1に出力する際の整列キー(カ: 証券番号)
- 設問1 c
- 処理4で契約マスタから抽出する対象の判定項目(オ: 終了年月日)
- 設問1 d
- 処理4で終了年月日と比較する値(ア: 空白)
- 設問2 e
- 図6の突合せ処理でT1の証券番号 > 旧契約マスタの証券番号のときの処理(オ: 旧契約マスタのレコードをそのまま新契約マスタに出力する)
- 設問2 f
- 図6の突合せ処理でT1の証券番号 = 旧契約マスタの証券番号のときの処理(エ: 旧契約マスタのレコードの情報をT1のレコードの情報で更新し,そのレコードを新契約マスタに出力する)
- 設問2 g
- 図6の突合せ処理でT1の証券番号 < 旧契約マスタの証券番号のときの処理(イ: T1のレコードの情報から新たにレコードを作成して新契約マスタに出力する)
- 設問3
- 新契約を成立させた月が過去3か月連続した場合の歩合給計算変更を適用した、2013年5月1日時点の社員A00001と社員B00001の歩合給(オ: 社員A00001が30,000円、社員B00001が5,000円)
解答・解説を表示
解答
設問1 a: エ, b: カ, c: オ, d: ア, 設問2 e: オ, f: エ, g: イ, 設問3: オ
解説
まず要点:突合せ(マッチング)処理とは、2つのファイルを同じキーの順番に並べておき、先頭から比べていく処理です。同じ並びにしておくと、キーの大小を順に1回ずつ見るだけで、追加・更新・そのまま出力を決められるので効率よく終わります。
解き方
- 日次更新の仕様を確かめ、前日に発生した異動レコードを証券番号の昇順に並べてから旧マスタと突き合わせる手順をつかみます。
- キーの大小(T1が旧より大きい・等しい・小さい)に応じた、追加・更新・変更なしで出力という分かれ道の条件をはっきりさせます。
- 2013年5月1日の更新後のA00001とB00001について、有効な契約数と月払保険料の合計を出し、3か月連続で新契約があったときの割増と特例のルールを当てはめて歩合給を計算します。
小問ごとの答え
- 小問 設問1 a:エ
- 契約マスタ更新処理の説明に「毎日,異動ファイル中の前日発生分のレコードと前日の契約マスタ……から,更新した契約マスタ……を作成する」と明記されているため、処理1で抽出する異動年月日は「前日」となります。
- 小問 設問1 b:カ
- 処理3で旧契約マスタ(証券番号の昇順)と中間ファイルT1を突き合わせるため、T1側も同じキーである「証券番号」の昇順に整列しておく必要があります。
- 小問 設問1 c:オ
- 歩合給計算の対象となるのは「終了していない保険契約」です。契約が終了していないレコードは終了年月日が「空白」となっているため、判定対象の項目は「終了年月日」です。
- 小問 設問1 d:ア
- 終了していない保険契約のレコードは契約マスタの終了年月日が「空白」であるため、条件値は「空白」となります。
- 小問 設問2 e:オ
- T1の証券番号 > 旧契約マスタの証券番号の場合、旧契約マスタの当該レコードには異動が発生しなかったことを意味するため、「旧契約マスタのレコードをそのまま新契約マスタに出力する」を行います。
- 小問 設問2 f:エ
- T1の証券番号 = 旧契約マスタの証券番号の場合、既存の契約に対する増額・減額・終了などの異動があるため、「旧契約マスタのレコードの情報をT1のレコードの情報で更新し,そのレコードを新契約マスタに出力する」を行います。
- 小問 設問2 g:イ
- T1の証券番号 < 旧契約マスタの証券番号(または旧契約マスタが先にEOFとなった場合)は、新契約の追加を意味するため、「T1のレコードの情報から新たにレコードを作成して新契約マスタに出力する」を行います。
- 小問 設問3:オ
- A00001は4月末時点で契約数5件、月払保険料計150,000円で基本歩合給は25,000円。2・3・4月に連続新契約があるため2割増で30,000円。B00001は契約数2件、保険料計28,000円で基本歩合給0円だが3か月連続新契約があるため特例で5,000円となります。
覚えるポイント
- 2つの順編成ファイルを突合せ処理する際は、必ず同一のキーで同一順序(昇順等)に事前整列されている必要がある。
- 連続達成などのボーナス特例条件では、基本支給額が0円の場合の特別規定も見落とさずに確認する。
間違えやすいところ
- マスタ更新で取り出す対象の日を「当日」だと間違えてしまうこと。
- 突合せでキーが一致しないときの大小関係と、どちらのファイルを新マスタに出すかを取り違えること。
出題の前提:平成25年度春期基本情報技術者試験午後問5の出題条件および契約マスタ・異動ファイルの仕様に基づく。
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.23 ↗(www.ipa.go.jp) / 公式問題冊子 p.24 ↗(www.ipa.go.jp) / 公式問題冊子 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.1 ↗(www.ipa.go.jp) / 公式採点講評 p.2 ↗(www.ipa.go.jp)
ソフトウェア開発における設計・コードレビューの品質管理
プロジェクトマネジメント · 品質管理指標 / レビュー時間比率 / 摘出欠陥密度 / ペアレビュー計画
新規ソフトウェア開発プロジェクトXにおいて、内部設計工程およびプログラミング工程のレビュー実績値(レビュー時間、摘出欠陥数)を計画基準値および許容範囲と比較・分析する。設問1では内部設計工程におけるチームごとの合否判定を、設問2ではプログラミング工程のセルフレビュー実績分析とペアレビューで摘示すべき欠陥数の目標値算出を求める。
- 設問1 a
- 設計レビュー時間および摘出欠陥数の実績値がともに許容範囲内であるチーム(エ: S)
- 設問1 b
- 設計レビュー時間および摘出欠陥数がともに許容範囲を外れている不合格チーム(ウ: R)
- 設問2 c
- Yさんのセルフレビュー摘出欠陥数の4週間の合計値(29件)の評価(ア: 許容範囲内にある)
- 設問2 d
- 週ごとの1kステップ当たりの摘出欠陥数の推移評価(ウ: 週によって許容範囲を上回ったり下回ったりムラがある)
- 設問2 e
- 許容範囲から外れていた週に対してペアレビューで摘示すべき欠陥数の目標合計値(エ: 10)
解答・解説を表示
解答
設問1 a: エ, b: ウ, 設問2 c: ア, d: ウ, e: エ
解説
まず要点:レビューの品質管理では、規模あたりのレビュー時間や見つけた欠陥の密度に基準値と許容範囲を決めておきます。範囲から外れた値が出たら、工程や週ごとに原因を調べ、その後のレビューで目標とする欠陥数を調整します。
解き方
- 各チームの規模(kステップ)に単位あたりの基準値と許容の倍率をかけて、レビュー時間と欠陥数の許容範囲(上限と下限)を計算します。
- 実績値と許容範囲を見比べ、両方とも範囲内なら合格、両方とも範囲外なら不合格となるチームを探します。
- セルフレビューの週ごとの密度(件/kステップ)を計算し、全体の合計がよいかどうかと週ごとのバラつきを判断します。
- 許容範囲を外れた週(第3週と第4週)について、決められた式(上限を超えたときと下限を下回ったとき)に従ってペアレビューの目標欠陥数を求め、足し合わせます。
小問ごとの答え
- 小問 設問1 a:エ
- チームS(規模15k)の許容範囲は時間45〜54時間、欠陥数54〜66件。実績値は時間45時間、欠陥数60件で両方とも範囲内となり合格です。
- 小問 設問1 b:ウ
- チームR(規模20k)の許容範囲は時間60〜72時間、欠陥数72〜88件。実績は時間50時間、欠陥70件でともに下限を下回り不合格となります。
- 小問 設問2 c:ア
- 4週間の合計規模9.0kステップに対し、セルフレビュー終了時点の許容範囲は基準値6.0件/kの0.4〜0.6倍(2.4〜3.6件/k)なので21.6〜32.4件。実績29件は許容範囲内です。
- 小問 設問2 d:ウ
- 各週の摘出密度は第1週3.20件/k(範囲内)、第2週3.14件/k(範囲内)、第3週4.00件/k(上限超え)、第4週2.00件/k(下限未満)となり、週によって上回ったり下回ったりムラがあります。
- 小問 設問2 e:エ
- 第3週(規模2.0k、実績8件)は上限(6.0×1.1×2.0=13.2)を上回る最小整数14から減算して14−8=6件。第4週(規模1.0k、実績2件)は下限(6.0×0.9×1.0=5.4)を上回る最小整数6から減算して6−2=4件。合計は6+4=10件です。
覚えるポイント
- 品質管理指標の許容範囲は、単位当たりの基準値×規模×許容倍率で算出して実績値と比較する。
- セルフレビューでの摘出上限超過時は「コードレビュー上限を上回る最小整数−実績値」、下限未満時は「下限を上回る最小整数−実績値」という問題文の定義式を正確に適用する。
間違えやすいところ
- 全体の合計では許容範囲内でも、週ごとには範囲から外れた値が出ていることを見落とすこと。
- 第3週と第4週の目標値を出すとき、「許容範囲を上回る最小の整数」の意味を取り違えて、四捨五入や切り捨てをしてしまうこと。
出題の前提:平成25年度春期基本情報技術者試験午後問6の品質管理指標および出題文の算定定義に基づく。
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.29 ↗(www.ipa.go.jp) / 公式問題冊子 p.30 ↗(www.ipa.go.jp) / 公式問題冊子 p.31 ↗(www.ipa.go.jp) / 公式問題冊子 p.32 ↗(www.ipa.go.jp) / 公式問題冊子 p.33 ↗(www.ipa.go.jp) / 公式解答例 p.1 ↗(www.ipa.go.jp) / 公式採点講評 p.2 ↗(www.ipa.go.jp)
市場分析と需要予測
経営戦略・企業と法務 · 市場分析 / 重回帰分析 / 需要予測 / 為替レート
清涼飲料メーカZ社が海外5か国(A〜E国)への進出を検討している。2002〜2011年の年間販売数量の推移グラフ、2010年と2011年のC国における販売数量・売上金額のデータ、およびE国に関する重回帰分析による需要予測式に基づいて、各国の市場動向、平均商品単価変動要因、将来の販売数量と売上金額の予測に関する設問に答えよ。
- ア
- 5か国合計の年間販売数量は、対象期間中において毎年増加している。
- イ
- 5か国の年間販売数量の順位に変動があったのは、2005年と2009年だけである。
- ウ
- A国は5か国の中で対象期間中の販売数量が最も多く、対象期間販売数量伸び率が最も高い。
- エ
- B国は5か国の中で対象期間中の販売数量は最も少ないが、対象期間販売数量伸び率が最も高い。
- オ
- C国は5か国中で唯一、2011年の年間販売数量が2002年よりも少ない。
- カ
- D国は2008年から2011年までの年間販売数量は毎年増加しているが、対象期間販売数量伸び率は5か国の中で最も低い。
- キ
- E国は2002年に対する2011年の年間販売数量の増加量が5か国の中で最も多い。
- ク
- 年間販売数量が対象期間中において毎年増加しているのは2か国である。
解答・解説を表示
解答
設問1: ア, エ, キ; 設問2 a: ウ, b: ア, c: オ; 設問3 d: エ, e: イ
解説
まず要点:海外進出の市場分析では、時系列データから販売数量の伸び率(割合)と増加量(実際の差)をはっきり区別して読み取ることが大切です。外貨に換算した売上は、商品の単価や高価格帯の商品への移り変わりだけでなく、為替レートの変化(現地通貨が高くなると外貨建ての売上が増える)の影響も受けます。将来の予測では、重回帰モデルにGDPや人口などの経済の指標を入れて需要量を推計します。
解き方
- 時系列グラフから各国の年間販売数量、順位の入れ替わり、伸び率(2011年÷2002年)、増加量(2011年−2002年)を読み取り、設問1の文が正しいか判断します。
- 数量が減ったのに米ドル換算の売上が増えた理由を、価格の見直し、買い方の変化、為替相場(現地通貨高)という観点から考え、設問2の要因を特定します。
- 需要予測の式に表2の1人当たりGDPと人口を入れて各年の販売数量を求め、さらに1箱あたりの平均単価をかけて年間売上金額の移り変わりを計算し、設問3を判断します。
小問ごとの答え
- 小問 設問1:ア, エ, キ
- アは全期間で合算数量が連続増加しており適切です。エはB国の販売数量が最少ながら約10倍と伸び率最大で適切です。キはE国の増加量が約143万箱で最大のため適切です。
- 小問 設問2 a:ウ
- インフレや増税に起因して販売数量当たりの平均単価を押し上げる直接的な要因は「商品の値上げ」です。
- 小問 設問2 b:ア
- 経済成長に伴う所得増加の結果、付加価値の高い「高価格帯商品へ購入がシフト」することで平均単価が上昇します。
- 小問 設問2 c:オ
- 売上金額は米ドル換算値であるため、米ドル安・現地通貨高(米ドルに対する現地通貨高)が生じると、現地通貨建て価格が一定でも米ドル換算の売上金額が増加します。
- 小問 設問3 d:エ
- 需要予測式より求まる販売数量は2011年が180.5百万箱、2015年が185.0百万箱、2020年が181.2百万箱となり、2015年は増加しますが2020年は減少します。
- 小問 設問3 e:イ
- 売上金額(販売数量×平均単価)は2011年が1,805百万米ドル、2015年が2,220百万米ドル、2020年が2,355.6百万米ドルとなり、2015年・2020年ともに増加します。
覚えるポイント
- 外貨換算の売上金額は、現地通貨高(対象外貨に対する増価)によって換算額が押し上げられます。
- 需要予測式による目的変数の推計値に平均単価を乗じることで、将来の売上規模を算定できます。
間違えやすいところ
- 伸び率(割合)と増加量(実際の差)を取り違えて、選択肢の正誤を間違えないよう注意が必要です。
- 現地通貨が安いときと高いときのどちらが米ドル建ての売上を増やすのか、混同しやすいので注意します。
出題の前提:平成25年度春期基本情報技術者試験午後問題問7の出題条件に基づく。
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.34 ↗(www.ipa.go.jp) / 公式問題冊子 p.35 ↗(www.ipa.go.jp) / 公式問題冊子 p.36 ↗(www.ipa.go.jp) / 公式問題冊子 p.37 ↗(www.ipa.go.jp)
食料品店の値引き処理
データ構造とアルゴリズム · 線形リスト / ポインタ操作 / 突合せ処理 / ノードの挿入 / ノードの削除
食料品店のレジ用プログラムにおいて、選択型特売の値引き処理を行うアルゴリズムである。購入商品情報(配列を用いた品番昇順のポインタ付きリスト)と特売情報(対象商品の配列)を突き合わせ、購入数量の集計、特売レコードの追加・更新・削除を行うプログラムの空欄を埋めよ。
- ア
- K ← K + 1
- イ
- K ← ptr 起点
- ウ
- K ← 購入[K].ptr
- エ
- T ← 1
- オ
- T ← T + 1
解答・解説を表示
解答
設問1 a: ウ, b: オ, c: カ, d: ア; 設問2 e: イ, f: ア, g: ウ
解説
まず要点:配列で作った単方向リスト(1方向にだけつながる並び)では、各要素は次の要素の添字(何番目かを示す番号)を持っています。突合せでは、並べ替えた2つの列を2つのポインタで比べながら進めます。要素を入れるときは、前の要素のポインタを新しい要素に向け、新しい要素のポインタを次の要素につなぎます。削除するときは、前の要素のポインタを削除する要素の次の添字に付け替えて、つながりを飛ばします。
解き方
- 検索の部分では、購入リストと特売対象の配列の品番を比べ、一致したら両方を次へ進め、違うときは値が小さい方のポインタを進める突合せの処理を組み立てます。
- 計算の部分で特売が成り立つ数を出したあと、更新の部分で特売品番を入れるべき直前の要素Kpと次の要素Kを探し、ポインタを付け替えます。
- 特売の取り消しや再計算にともなう更新・削除の仕様を整理し、すでに特売の記録があるかと特売数量に応じた処理(処理①〜④)と、削除するときのポインタ操作の式を導きます。
小問ごとの答え
- 小問 設問1 a:ウ
- 購入明細リストはポインタで順序付けられているため、次のノードに進めるには「K ← 購入[K].ptr」を実行します。
- 小問 設問1 b:オ
- 特売対象配列は添字の昇順に並んでいるため、次の対象商品に進めるには「T ← T + 1」を実行します。
- 小問 設問1 c:カ
- 新しく末尾に追加された特売レコードの格納先添字である「購入行数」を先行ノードのptrまたはptr起点に設定します。
- 小問 設問1 d:ア
- 新レコードの次ポインタとして、挿入位置の直後にあるノードの添字を保持している変数「K」を設定します。
- 小問 設問2 e:イ
- 購入配列中に特売レコードが既に存在し、特売数量が1以上の場合は数量・金額を書き換える「処理②」が該当します。
- 小問 設問2 f:ア
- 特売数量が0になり既存の特売レコードが存在する場合は、リストから除外する必要があるため「処理①」が該当します。
- 小問 設問2 g:ウ
- ノードKを削除するため、先行ノードのptrまたはptr起点に、削除対象ノードの後続を指す「購入[K].ptr」を設定します。
覚えるポイント
- 単方向リストへのノード挿入では、先行ノードのポインタを新ノードへ、新ノードのポインタを後続ノードへ繋ぎます。
- リストからのノード削除では、先行ノードのポインタに「削除対象ノード.ptr」を代入して対象ノードをスキップさせます。
間違えやすいところ
- 配列上のリストをたどるとき、物理的な添字への加算(K+1)とポインタをたどる操作(購入[K].ptr)を混同しないようにします。
- 先頭の要素を入れたり消したりするときは手前の要素がないため、先頭の位置(ptr 起点)を更新する条件分岐が必要になる点に注意します。
出題の前提:平成25年度春期基本情報技術者試験午後問題問8の出題条件および共通擬似言語仕様に基づく。
出典:IPA『2013年度 春期 午後』
公式問題冊子 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) / 公式問題冊子 p.43 ↗(www.ipa.go.jp)
ケーブルテレビ局が提供するサービスの料金計算
ソフトウェア開発 · C言語 / 配列 / ループ処理 / 条件分岐
ケーブルテレビ局の有線テレビ視聴サービスとインターネット接続サービスに関する月額利用料金を計算する関数 calc_service_fee について、プログラムのトレースおよび空欄補充を行い、設問1と設問2に答えよ。
- 設問1 a
- 行番号23が2回目に実行された後のcnumの値(イ: 1)
- 設問1 b
- 行番号23が3回目に実行された後のcnumの値(エ: 3)
- 設問1 c
- 行番号43が実行されるときのtv_feeの値(エ: 9700)
- 設問1 d
- 有料放送6チャンネル契約時のプラン1とプラン2の料金比較(ウ: プラン2での有線テレビ視聴料金の方が高い)
- 設問2 e
- 空欄e1およびe2に入る組合せ(ア: e1=0, e2=1)
- 設問2 f
- 空欄fに入る条件式(ウ: == 2)
解答・解説を表示
解答
設問1 a: イ, b: エ, c: エ, d: ウ, 設問2 e: ア, f: ウ
解説
まず要点:段階制の料金(使う量によって単価が変わる仕組み)では、上限の区分から順にチャンネル数を引いていき、各区分の単価を掛けて足し合わせます。どの区分に何チャンネル入るかを上から順に確かめるのがコツです。複数の条件分岐では、契約の状態に応じて配列の何番目を使うかを正しく追いかけることが大切です。
解き方
- 設問1では、引数(1, 6, 0)について、ループ変数iが3から0へ減っていくときのcnumとchannel_numの変化を順に追い、tv_feeに足される金額を求めます。
- 設問2では、表2の料金表と配列inet_chargeの値(0, 2500, 3000, 5000, 6000)を対応させ、条件分岐e1、e2、fを順に決めていきます。
小問ごとの答え
- 小問 設問1 a:イ
- calc_service_fee(1, 6, 0)の呼出し時、tv_feeは3000、channel_num=6でループ開始。1回目(i=3)はcnum=6-10+1=-3で0に修正されchannel_numは6のまま。2回目(i=2)はcnum=6-6+1=1となり、channel_numは5となります。
- 小問 設問1 b:エ
- 3回目の繰返し(i=1)では、channel_numが5なのでcnum=5-3+1=3となり、cnumが0以上のためそのまま3となります。
- 小問 設問1 c:エ
- プラン1(basic_charge[1]=3000)において、i=3(10ch〜)は0ch、i=2(6〜9ch)は1ch分(700円)、i=1(3〜5ch)は3ch分(1000円×3=3000円)、i=0(1〜2ch)は2ch分(1500円×2=3000円)加算され、合計3000+700+3000+3000=9700円となります。
- 小問 設問1 d:ウ
- 6ch視聴時、プラン1は3000+700+3000+3000=9700円。プラン2は5000+600×1+800×3+1000×2=10000円となり、プラン2の方が高くなります。
- 小問 設問2 e:ア
- inet_planが0(契約なし)のときはinet_fee=inet_charge[0](0円)となるため、e1は0です。続く条件は低速回線(inet_plan==1)の判定なので、e2は1となります。
- 小問 設問2 f:ウ
- 高速回線(inet_plan=2)の処理において、基本視聴契約がプラン2のときinet_charge[3](5000円)、それ以外のときinet_charge[4](6000円)となるため、条件式fは「basic_plan == 2」となります。
覚えるポイント
- 段階制料金の逆順ループ処理では、各段階の減算によって残余数が更新されていく流れを正確に追跡する。
間違えやすいところ
- cnumが負になったときに0へ戻す処理を見落とし、channel_numを足しすぎたり引いたりしてしまうミス。
出題の前提:平成25年度春期基本情報技術者試験午後問9の仕様および出題条件
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.44 ↗(www.ipa.go.jp) / 公式問題冊子 p.45 ↗(www.ipa.go.jp) / 公式問題冊子 p.46 ↗(www.ipa.go.jp) / 公式問題冊子 p.47 ↗(www.ipa.go.jp)
従業員へ支給する特別給の算出
ソフトウェア開発 · COBOL / 条件判定 / 決定表 / 金種計算 / PERFORM文
創立記念日に支給する特別給の算出および必要金種の集計を行うCOBOLプログラムについて、経過年数判定、金種分割処理、EVALUATE文の網羅テストデータ、集計結果表示処理の追加位置を答えよ。
- 設問1 a
- 入社月日による年数減算判定条件(イ: E-MMDD > 0401)
- 設問1 b
- 金種減算処理(エ: SUBTRACT CUR-KIND(CNT) FROM W-PAY)
- 設問1 c
- 次の金種への遷移処理(ア: ADD 1 TO CNT)
- 設問2
- 決定表の全WHEN規則を網羅するテストデータ(イ)
- 設問3 d
- 金種集計結果の表示処理の挿入位置(イ: 行番号44と45の間に追加)
- 設問3 e
- 各金種の累計加算処理(ウ: ADD P-CUR(CNT) TO CUR-TOTAL(CNT))
解答・解説を表示
解答
設問1 a: イ, b: エ, c: ア, 設問2: イ, 設問3 d: イ, e: ウ
解説
まず要点:入社してからの年数(経過年数)は、基準日4月1日を過ぎたかどうかで補正します。金種(紙幣や硬貨の種類)は大きい単位から順に引いていきます。EVALUATE文(条件で処理を分ける命令)のテストは、すべての条件の組み合わせを網羅する入力で確かめます。
解き方
- 基準日(4月1日)と入社月日の大小を比べ、経過年数を1つ減らす条件を特定します。
- 金種計算のループで、同じ金種を引けるだけ引いて減算し、引けなくなったら次の金種へ添字を進める処理を導きます。
- 決定表の全6パターン(勤続年数3区分×役職2区分)をすべて満たすテストデータかどうかを照合します。
- 集計値の表示は、ファイルを読み終えた後でプログラムが終わる直前に行う必要があるため、MAIN-PROCの最後に置くと決めます。
小問ごとの答え
- 小問 設問1 a:イ
- 2013年4月1日時点での経過年数を計算するため、仮年数(2013 - E-YEAR)から入社月日(E-MMDD)が0401を過ぎている(E-MMDD > 0401)場合に1年減算します。
- 小問 設問1 b:エ
- 現在着目している金種CUR-KIND(CNT)の枚数を1加算した後、支給残額W-PAYから当該金種の額面を減算する必要があるため、SUBTRACT CUR-KIND(CNT) FROM W-PAYとなります。
- 小問 設問1 c:ア
- 残額W-PAYが現在の金種未満となった場合は、次の下位金種に移行するため金種インデックスを1進めるADD 1 TO CNTを実行します。
- 小問 設問2:イ
- 決定表の6つの条件(3年以下×一般/管理、4〜9年×一般/管理、10年以上×一般/管理)をそれぞれ1件ずつ真として網羅している組合せは「イ」です。
- 小問 設問3 d:イ
- 全従業員の特別給および金種処理が終了し、ファイルをクローズしてプログラムを終了する直前の「行番号44と45の間」に画面表示処理を追加します。
- 小問 設問3 e:ウ
- 1従業員の金種別必要数P-CUR(CNT)を全体の累計領域CUR-TOTAL(CNT)へ加算するため、ADD P-CUR(CNT) TO CUR-TOTAL(CNT)となります。
覚えるポイント
- 金種計算アルゴリズムは、上位金種から順に減算可能か判定し、不可になったら添字を1進めるループ構造が基本となる。
間違えやすいところ
- 集計結果の表示を行番号42と43の間(PERFORMループの中)に入れてしまい、従業員ごとに毎回表示してしまうミス。
出題の前提:平成25年度春期基本情報技術者試験午後問10の仕様および出題条件
出典:IPA『2013年度 春期 午後』
公式問題冊子 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)
あみだくじのシミュレーション(Java)
ソフトウェア開発 · Java / 内部クラス / コレクション / SortedMap
あみだくじの作成と結果の表示を行うJavaプログラムに関する問題である。クラスGhostLegおよびその内部クラスVerticalLineのデータ構造、あみだくじをたどるアルゴリズム、コンストラクタの初期化、例外処理の追加について問われている。
解答・解説を表示
解答
設問1: ウ, 設問2 a: イ, b: ウ, c: イ, d: ウ, 設問3 e: ア, f: イ
解説
まず要点:あみだくじの縦線をオブジェクトとして表し、つながる横線の高さをたどって進みます。クラスの中だけで使うデータ構造は内部クラス(入れ子のクラス)にして隠します。横線は高さをキーにした並べ替え済みのマップ(SortedMap)に持ち、今の高さより下で一番高い横線を headMap(y).lastKey() で取り出して、対向の縦線へ移ります。
解き方
- 内部クラスVerticalLineのフィールド宣言(SortedMap<Double, VerticalLine>)から、キーと値の対応を読み取り、設問1を判断します。
- GhostLegのコンストラクタの宣言と、VerticalLineのインスタンス生成・リストへの追加処理から、空欄a・bを決めます。
- traceメソッドで、下端0.0(番兵)へ向かって横線をたどる繰り返し条件と、対向の縦線へ参照を切り替える処理から、空欄c・dを導きます。
- 例外の仕様変更について、IndexOutOfBoundsExceptionが起きる箇所より前に差し込む位置(α)と、正常な範囲を否定する条件式(y <= 0.0 || y >= 1.0)を導きます。
小問ごとの答え
- 小問 設問1:ウ
- 内部クラスVerticalLineでは、フィールドhorizontalLinesがSortedMap<Double, VerticalLine>型として宣言されており、横線の縦軸座標(Double)をキー、接続先の縦線オブジェクト(VerticalLine)を値として管理しているため、「その横線が接続する縦軸座標とその横線に接続するもう1本の縦線のマップ」が正しいです。
- 小問 設問2 a:イ
- クラスGhostLegの縦線本数を引数にとるコンストラクタの宣言部であるため、戻り値の型を指定せずクラス名と同じ識別子「GhostLeg」が入ります。
- 小問 設問2 b:ウ
- フィールドverticalLinesはList<VerticalLine>型であり、あみだくじの各縦線を表す要素をn個保持するため、リストへの追加処理はVerticalLineの新しいインスタンスを生成する「new VerticalLine()」となります。
- 小問 設問2 c:イ
- 縦軸座標は下端が0.0であり、各縦線の初期化時に番兵としてキー0.0(値null)が登録されています。getOppositeで対向の線へ移動しながら下端(0.0)に到達するまで繰り返すため、継続条件は「> 0.0」となります。
- 小問 設問2 d:ウ
- 横線が見つかったとき、現在着目している縦線vから横線で繋がる反対側の縦線インスタンスへ移動する必要があるため、「v.getOpposite(y)」により次のVerticalLineを取得してvを更新します。
- 小問 設問3 e:ア
- 引数x1またはx2が範囲外のときに投げられるIndexOutOfBoundsException(verticalLines.get(x1)等で発生)よりも前にyの妥当性検証を行わなければ、引数x1・x2の値によらずyの範囲外例外を投げることができないため、最も手前にある「α」の位置に挿入する必要があります。
- 小問 設問3 f:イ
- 横線の縦軸座標yの正常な範囲は「0.0より大きく1.0未満(0.0 < y && y < 1.0)」です。この範囲から外れているときに例外を発生させるため、判定条件式は「y <= 0.0 || y >= 1.0」となります。
覚えるポイント
- コンストラクタはクラス名と完全に一致し、戻り値の型を持たない。
- SortedMapのheadMap(toKey)はtoKey未満のマップを返し、lastKey()でその中の最大キーを取得できる。
間違えやすいところ
- 横線そのものを表す別のクラスがあると思い込み、設問1でアやイを選んでしまうミス。
- 設問3で例外チェックの位置をverticalLines.get()より後ろのβやγにしてしまうミス。
出題の前提:平成25年度春期 基本情報技術者試験 午後 問11
出典:IPA『2013年度 春期 午後』
公式問題冊子 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)
ビット列の置換え(CASL II)
ソフトウェア開発 · アセンブラ / CASL II / ビット操作 / シフト演算 / マスク処理
連続するビット列αの指定位置pから始まるqビットを、別のビット列βで置き換えるCASL IIプログラムに関する問題である。マスクパターンの生成、ビットのシフトと合成、論理演算を用いた置換処理、および複数語への拡張(XBREP)について問われている。
解答・解説を表示
解答
設問1 a: エ, b: ウ, 設問2 c: イ, d: ウ, 設問3: ア, 設問4 e: カ, f: イ
解説
まず要点:ビット列の一部を置き換えるときは、置き換えたい場所だけが1のマスク(目印のビット列)を作ります。算術右シフト(符号を保ったまま右にずらす命令)を使うと、左に寄った連続する1を動的に作れます。元の語の対象部分をマスクの反転とのANDで0にし、位置をそろえた置換ビット列とORで合成します。
解き方
- マスク生成で、SRAを使って左端から1を伸ばすための初期値(=#8000)と、ビットを合成する論理和(OR)から設問1を導きます。
- p=12, q=10, β=#D6C0の値をたどり、行11のSRL GR4,0,GR2と行13のSRL GR6,0,GR2のシフト結果を16進数で計算して設問2を解きます。
- X AND (NOT M) ≡ X XOR (X AND M) というブール代数の等式から、行16・17の置き換え命令(AND GR6, GR2)を導きます。
- 複数語のビット列への拡張で、16ビット単位のアドレス計算(4ビット右シフト)と、語の中の位置を取り出す処理(下位4ビットマスク =#000F)を特定します。
小問ごとの答え
- 小問 設問1 a:エ
- qビット連続した1のマスクパターンを生成するため、最上位ビットのみが1である値「=#8000」(2進数で1000 0000 0000 0000)をSRA(算術右シフト:符号ビット1が複製される)によって(q-1)回シフトさせます。
- 小問 設問1 b:ウ
- GR2には元データから置換対象ビットを0クリアした値が保持されており、GR4またはGR5には置換すべきビット列が配置されているため、両者を合成するには論理和「OR」を用います。
- 小問 設問2 c:イ
- p=12, q=10, β=#D6C0のとき、GR4には最初#D6C0(1101 0110 1100 0000)が入り、行11でGR2(12)ビットだけ論理右シフト(SRL)されるため、結果は「#000D」となります。
- 小問 設問2 d:ウ
- GR6にはq=10ビットのマスク(左から10個の1、下位6個が0の#FFC0)が生成された後、行13でGR2(12)ビットだけ論理右シフト(SRL)されるため、上位12ビットが0となり下位4ビットが1の「#000F」となります。
- 小問 設問3:ア
- 元データXとマスクMに対して、置換対象箇所を0クリアする処理はX AND (NOT M)です。これはX XOR (X AND M)と等価であるため、行16で「AND GR6, GR2」を実行してGR6にX AND Mを求め、行17で「XOR GR2, GR6」を行うことで同じ結果が得られます。
- 小問 設問4 e:カ
- 連続するn語の中から置換開始位置p(ビット単位)を含む語の相対アドレスを求めるには、1語=16ビットであることからpを16で割る必要があります。これはGR7(pをコピーしたレジスタ)を4ビット論理右シフトすることに相当するため「SRL GR7,4」となります。
- 小問 設問4 f:イ
- 語内での開始ビット位置はpを16で割った余り(下位4ビット)となるため、GR2の下位4ビットのみを残すマスク「=#000F」との論理積(AND)をとります。
覚えるポイント
- SRA(算術右シフト)は符号ビット(最上位ビット)を複製するため、左詰めの1の連続パターン生成に用いられる。
- 16で割る商と余りは、4ビット右シフトと下位4ビットマスク(=#000F)で高速に算出できる。
間違えやすいところ
- マスクの初期値にすべてのビットが1の値(=#FFFF)を使うと、SRAでシフトしても値が変わらない点に注意が必要です。
- 設問3で論理和ORを選ぶと、1同士のビットがXORで0にならず誤った動作になってしまいます。
出題の前提:平成25年度春期 基本情報技術者試験 午後 問12
出典:IPA『2013年度 春期 午後』
公式問題冊子 p.58 ↗(www.ipa.go.jp) / 公式問題冊子 p.59 ↗(www.ipa.go.jp) / 公式問題冊子 p.60 ↗(www.ipa.go.jp) / 公式問題冊子 p.61 ↗(www.ipa.go.jp)
製品の生産計画(表計算)
ソフトウェア開発 · 表計算 / 生産計画 / 条件付合計 / 垂直照合 / マクロ
製品 PA1, PA2, PA3, AS1 の生産計画を立案するため、ワークシート「部品一覧」「受注一覧」「生産管理」「部品需要」およびマクロ「Product_sim」を作成した。これらのワークシートの計算式やマクロの処理内容に関して、設問1〜3の各空欄[ a ]〜[ g ]に入る適切な答えを解答群から選べ。
- ア
- 照合一致($B5, 生産管理!$A$3〜$M$3, 0)
- イ
- 照合一致($B5, 生産管理!$B$3〜$J$3, 0) + 3
- ウ
- 照合一致($B5, 部品一覧!$A$1〜$A$4, 0) * 4
- エ
- 照合検索($B5, $B$5〜$B$7, 生産管理!$B$3〜$J$3)
- オ
- 照合検索($B5, 生産管理!$A$3〜$M$3, 生産管理!$A6〜$M6)
- カ
- 水平照合($B5, 生産管理!$B$3〜$J$3, 1, 0)
- キ
- 水平照合($B5, 生産管理!$A$3〜$M$19, 4, 0)
解答・解説を表示
解答
設問1 a: オ, b: エ, c: イ, 設問2 d: オ, e: カ, f: エ, 設問3 g: イ
解説
まず要点:表計算で値を探すときは、検索する範囲の中での相対的な位置(何番目か)を正しくつかむことが大切です。垂直照合や照合一致などの関数は、範囲と返す位置を間違えると別の列を指してしまいます。マクロ(自動処理の記録・命令)では、変数の初期化、繰り返しの条件、終了条件、相対参照のずれをそろえる必要があります。
解き方
- 設問1では、各ワークシートの列の並びと作業コードの定義を確かめ、条件付合計やIF文の条件式・計算式を組み立てます。
- 設問2では、マクロProduct_simのループ構造で、妥当性判定セルと最大生産数セルの相対位置、および加算の刻み幅(生産単位10)を特定します。
- 設問3では、垂直照合関数が返す列番号と、照合一致関数が検索範囲で返す値との差(+3)を計算し、適切な式を選びます。
小問ごとの答え
- 小問 設問1 a:オ
- 受注一覧のF列には作業コードとして納品予定日と製品コードを結合した値が設定されています。納品予定日($A6)と製品コード(B$3)に合致する数量(D列)を集計するため、条件付合計(受注一覧!$F$2〜$F$101, =結合($A6, B$3), 受注一覧!$D$2〜$D$101) となるオが正解です。
- 小問 設問1 b:エ
- 当日の在庫(前日在庫P5から当日納品数N6を引いたP5 - N6)が翌日納品数N7以上であれば追加生産は不要(0個)です。不足する場合は不足分(N7 + N6 - P5)を20個単位で切り上げて生産するため、切上げ((N7 + N6 - P5)/20, 0) * 20 となるエが正解です。
- 小問 設問1 c:イ
- 生産基準数の妥当性は「欠品日数E23が0であること」と「生産後在庫E6〜E19のうち納品数平均の80%(B21*0.8)未満の日が0であること」の双方を満たすことです。したがって論理積(E23 = 0, 条件付個数(E6〜E19, <B21 * 0.8) = 0) となるイが正解です。
- 小問 設問2 d:オ
- 繰返しは妥当性判定セル(E24, I24, M24)がfalseの間、かつ上限超過フラグswが0の間継続します。A24を基準に4列ごとに判定セルを参照するため、論理積(相対(A24, 0, i * 4) = false, sw = 0) となるオが正解です。
- 小問 設問2 e:カ
- PA1〜PA3の生産単位は10個単位であるため、基準数を10ずつ増加させます。基準数セルはA22から右にi*4列の位置にあるため、相対(A22, 0, i * 4) ← 相対(A22, 0, i * 4) + 10 となるカが正解です。
- 小問 設問2 f:エ
- 生産基準数がワークシート「部品一覧」の最大生産数を超えたかを判定します。最大生産数はセルI1から下方向にi行(PA1は1行下、PA2は2行下、PA3は3行下)にあるため、相対(A22, 0, i * 4) > 相対(部品一覧!I1, i, 0) となるエが正解です。
- 小問 設問3 g:イ
- 垂直照合で生産数を取得するため、生産管理シートにおける対象製品の生産数列番号(PA1はD列=4、PA2はH列=8、PA3はL列=12)を求めます。照合一致($B5, 生産管理!$B$3〜$J$3, 0) はPA1で1、PA2で5、PA3で9を返すため、3を加算すれば4, 8, 12となり合致します。
覚えるポイント
- 照合一致関数は指定範囲内の先頭からの相対位置(1始まりの整数)を返す。
- 条件付合計は「検索範囲」「検索条件」「合計範囲」の順で引数を指定する。
間違えやすいところ
- マクロの相対参照で、行のオフセットと列のオフセットの順序を取り違えること。
- 条件付合計の検索条件で、「=結合(...)」のような等号や参照の指定方法を間違えること。
出題の前提:平成25年度春期 基本情報技術者試験 午後 問13
出典:IPA『2013年度 春期 午後』
公式問題冊子 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) / 公式問題冊子 p.67 ↗(www.ipa.go.jp) / 公式問題冊子 p.68 ↗(www.ipa.go.jp) / 公式問題冊子 p.69 ↗(www.ipa.go.jp) / 公式問題冊子 p.70 ↗(www.ipa.go.jp)
2013年度 春期 午後
参照した公式資料
IPAが公開した2013年度 春期 午後の問題・解答資料です。

