旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。
2011年度 秋期 午後の概要
A/D変換における標本化・量子化・符号化の処理
ハードウェア · A/D変換 / 標本化 / 量子化 / 符号化 / サンプリング定理
アナログ信号をディジタル信号に変換するA/D変換(標本化、量子化、符号化)に関する次の問いに答えよ。 〔設問1〕図2の左に示す電圧v(t0)〜v(t10)を図2右の刻み幅qで量子化し、表1に基づいて2進符号に変換したとき、時刻t6およびt10における測定値の符号化結果 [ a ]、[ b ] に入る適切な答えを選べ。 〔設問2〕アナログ信号の電圧範囲が0〜9V(FSR=9V)のとき、4ビットで量子化した刻み幅qは [ c ] Vとなる。このとき電圧7.49...Vの測定値は [ d ] Vとなり、2進符号化すると [ e ] となる。 〔設問3〕FSRが1,022ミリVのアナログ信号を50ミリ秒間隔で5秒間標本化する。A/D変換後の総データ量を1,000ビット以内に納めるとき、刻み幅qの最小値 [ f ](ミリV)を求めよ。
- 設問1 a: エ
- 110(時刻t6の量子化電圧v6に対応する2進符号)
- 設問1 b: ウ
- 101(時刻t10の量子化電圧v5に対応する2進符号)
- 設問2 c: イ
- 0.6(4ビット量子化時の刻み幅qの電圧値[V])
- 設問2 d: キ
- 7.2(電圧7.49...Vに対する量子化測定値[V])
- 設問2 e: ウ
- 1100(測定値7.2Vを符号化した4ビット2進数)
- 設問3 f: オ
- 2.0(総データ量1,000ビット以内に収める刻み幅qの最小値[ミリV])
- 設問1 a 誤答例: ウ
- 101(v5に対応する符号でありt6の電圧レベルと不一致)
- 設問2 e 誤答例: エ
- 1101(10進数の13に対応する符号であり不適)
- 設問3 f 誤答例: ウ
- 1.0(標本数を100点と誤認してn=10とした場合の刻み幅)
解答・解説を表示
解答
設問1 a: エ, b: ウ; 設問2 c: イ, d: キ, e: ウ; 設問3 f: オ
解説
まず要点:A/D変換(アナログ信号をディジタル信号に変える処理)は、標本化・量子化・符号化の3段階で行います。標本化は時間を一定間隔で区切り、量子化は電圧を決められた刻み幅に丸め、符号化はその値を2進数に直します。量子化ビット数を増やすと刻み幅が細かくなって精度は上がりますが、その分データ量も増えます。
解き方
- 設問1: 図2右のグラフから各時刻の量子化電圧レベル(v0〜v7)を読み取り、表1の対応表に従って2進符号に変換します。
- 設問2: 刻み幅の式 q = FSR ÷ (2^n - 1) に値を入れてqを求め、指定電圧が入る区間の中央値(N×q)とその2進表現を求めます。
- 設問3: 標本化の期間と間隔から標本の総点数(区間数+1)を出し、許容データ量を超えない最大のビット数nを決めて刻み幅qを計算します。
小問ごとの答え
- 小問 設問1 a:エ
- 図2右のグラフにおいて、時刻t6での標本値に対応する白丸「o」の位置を確認すると電圧軸の目盛りはv6です。表1よりv6に対応する2進符号は110となります。
- 小問 設問1 b:ウ
- 図2右のグラフにおいて、時刻t10での白丸「o」の位置を確認すると電圧軸の目盛りはv5です。表1よりv5に対応する2進符号は101となります。
- 小問 設問2 c:イ
- 問題文の定義式 q = FSR / (2^n - 1) にFSR = 9V、n = 4ビットを代入すると、q = 9 / (16 - 1) = 9 / 15 = 0.6V と求まります。
- 小問 設問2 d:キ
- 刻み幅q = 0.6Vのとき、測定値はN×0.6Vです。7.49...Vに対して 7.49... / 0.6 = 12.48... となり、条件 N×q - q/2 ≦ v(tm) < N×q + q/2(6.9 ≦ v(tm) < 7.5)を満たす整数Nは12です。よって測定値は 12 × 0.6 = 7.2V となります。
- 小問 設問2 e:ウ
- 測定値7.2Vは N = 12 に対応します。N=0を0000として順に符号化するため、12を4ビットの2進数で表した 1100 が正解となります。
- 小問 設問3 f:オ
- 5秒間(5,000ミリ秒)を50ミリ秒間隔で標本化する場合、標本点の個数は開始点t0を含むため (5,000 / 50) + 1 = 101個となります。1サンプルあたりのビット数をnとすると総データ量は 101×n ビットです。101n ≦ 1,000 を満たす最大の整数nは 9 ビットとなります。したがって刻み幅qの最小値は q = 1,022 / (2^9 - 1) = 1,022 / 511 = 2.0ミリV となります。
覚えるポイント
- A/D変換の刻み幅の計算式は q = FSR / (2^n - 1) であること
- 一定時間内の標本点数は、開始点を含むため「(時間長 / 標本間隔) + 1」となる点に注意すること
間違えやすいところ
- 標本点数を求めるときに開始点t0を忘れて、単に 5,000 ÷ 50 = 100点 としてしまう誤り。
- 4ビット量子化の分割数を 2^4 = 16 とせず、定義どおり 2^4 - 1 = 15 とすること。
出題の前提:問題文に提示されたA/D変換の定義式および平成23年度秋期基本情報技術者試験午後の出題基準に基づく。
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.5 ↗(www.ipa.go.jp) / 公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp) / 公式問題冊子 p.8 ↗(www.ipa.go.jp)
従業員データベースのテーブル再設計とSQL操作
データベース · 関係データベース / データベース設計 / 正規化 / GROUP BY / ビュー定義
組織編成の変更に伴う従業員データベースの再構築とSQLに関する次の問いに答えよ。 〔設問1〕部と課の階層化を反映するため、部名と課名を結合して「部署表」を設けるA案を検討した。しかし、[ a ] を変更する場合に複数行の修正が必要となるため、正規化における [ b ] の観点から好ましくない。また、[ c ] を表示する際にLIKE述語による曖昧検索が必要となるなどの欠点があるため、部表と課表を分離するB案を採用した。[ a ]〜[ c ] に入る適切な答えを選べ。 〔設問2〕B案の構成で課ごとの平均年齢を表示するSQL文の空欄に入る適切な句を選べ。 〔設問3〕個人情報保護のため、従業員番号・氏名・課コード・内線のみを公開するビュー「従業員公開表」を定義するSQL文の空欄に入る適切な答えを選べ。 〔設問4〕作成したビューと受注表を結合し、営業部海外課(課コード'S101')の従業員が2011年7月1日〜9月30日に受注した案件の受注総額を算出するSQL文の空欄に入る適切な答えを選べ。
- 設問1 a: エ
- 部名(組織変更時に複数行の修正が必要となる属性)
- 設問1 b: エ
- 重複更新(データ冗長性に起因して発生する更新時異状の観点)
- 設問1 c: イ
- ある部に属する従業員の氏名の一覧(LIKE述語による曖昧検索が必要となる対象)
- 設問2: ア
- 課表.課コード = 従業員表.課コード GROUP BY 課表.課コード, 課表.課名
- 設問3: エ
- SELECT 従業員番号, 氏名, 課コード, 内線 FROM 従業員表
- 設問4: ア
- 受注表.従業員番号 = 従業員公開表.従業員番号 AND 受注表.受注日 BETWEEN '20110701' AND '20110930'
- 設問1 a 誤答例: ア
- 課名(部署表において課名は1行ごとに独立しており複数行更新の対象ではない)
- 設問2 誤答例: イ
- 課表.課コード = 従業員表.課コード GROUP BY 課表.部コード, 課表.課名(SELECT句とGROUP BY句の不一致)
- 設問3 誤答例: ア
- ALTER TABLE 従業員表 ADD ...(ビュー定義ではなくテーブル定義変更の構文であるため不適)
- 設問4 誤答例: イ
- 受注表.受注日 BETWEEN ...(従業員公開表との結合条件が欠落しているため不適)
解答・解説を表示
解答
設問1 a: エ, b: エ, c: イ; 設問2: ア; 設問3: エ; 設問4: ア
解説
まず要点:関係データベースでは、同じ情報を重複して持たないように正規化し、更新時の矛盾(更新時異状)を防ぎます。また、SQLの集計ではGROUP BY句に、SELECT句のうち集約しない列をすべて書く必要があります。個人情報の保護にはビュー(実体を持たない仮想の表)を使うのが有効です。
解き方
- 設問1: 部と課の1対多の関係に注目し、部名が複数行に重複して起きる「重複更新」の問題と、部単位の検索でLIKE述語が必要になる点を確かめます。
- 設問2: 2つの表を課コードで結合し、SELECT句の集約しない列とGROUP BY句の列が一致している選択肢を選びます。
- 設問3: CREATE VIEWの基本ルールに従い、公開が許された必要最小限の4列を取り出す問合せを選びます。
- 設問4: 受注表と従業員公開表を従業員番号で結ぶ条件と、BETWEENによる日付期間の条件をANDでつなぎます。
小問ごとの答え
- 小問 設問1 a:エ
- A案では「総務部人事課」のように部名と課名が1つの属性にまとめられています。1つの部には複数の課が属するため、部名を変更する際にはその部に属するすべての課の行(複数行)を更新する必要が生じます。
- 小問 設問1 b:エ
- 同一の部名が複数レコードに重複して保持されていると、更新時に全行を漏れなく更新しないと不整合が発生します。これは正規化における「重複更新」(更新時異状)の観点から好ましくありません。
- 小問 設問1 c:イ
- A案の構造で「ある部に属する従業員の氏名の一覧」を取得しようとすると、部署名列に対して LIKE '総務部%' のような前方一致の文字列検索を行う必要があり、柔軟性や検索性能が低下します。
- 小問 設問2:ア
- 課ごとの集計を行うため、課表と従業員表を課コードで等結合(課表.課コード = 従業員表.課コード)します。さらに、SELECT句に指定された集約関数以外の列である「課表.課コード, 課表.課名」をすべてGROUP BY句に指定する必要があります。
- 小問 設問3:エ
- ビューを定義するSQL構文は「CREATE VIEW ビュー名 AS SELECT 列名... FROM テーブル名」です。公開対象である4項目を射影したSELECT文を指定します。
- 小問 設問4:ア
- FROM句で受注表と従業員公開表が指定されているため、WHERE句に結合条件「受注表.従業員番号 = 従業員公開表.従業員番号」が必要です。これに加え、受注期間の抽出条件を「BETWEEN '20110701' AND '20110930'」としてANDで結合します。
覚えるポイント
- 1対多の親子関係を1つの属性に混在させると、親属性の変更時に複数行更新(更新時異状)が発生すること
- GROUP BY句を用いる集約問合せでは、SELECT句の非集約列を漏れなくGROUP BY句に指定しなければならないこと
間違えやすいところ
- 設問1 aで、部と課の包含関係を逆に考えて「課名」を選んでしまう誤り。
- 設問4で、FROM句に2つの表があるのに結合条件を書き忘れる誤り。
出題の前提:平成23年度秋期基本情報技術者試験午後の出題基準および標準SQL規格に基づく。
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.9 ↗(www.ipa.go.jp) / 公式問題冊子 p.10 ↗(www.ipa.go.jp) / 公式問題冊子 p.11 ↗(www.ipa.go.jp) / 公式問題冊子 p.12 ↗(www.ipa.go.jp)
ネットワークの構築と機器・サーバ配置
ネットワーク · IPアドレス / サブネットマスク / DHCP / プロキシサーバ / キャッシュヒット率
D社のネットワーク構築に関する次の記述を読んで、設問1、2に答えよ。 1. ネットワークAのサブネットマスク[ a ]、および社内システムWebサーバ2に設定可能なIPアドレスの個数[ b ]を求めよ。 2. DHCPサーバを設置すべきネットワーク[ c ]、プロキシサーバを設置すべきネットワーク[ d ]、およびキャッシュサーバ利用時の平均応答時間が非利用時の半分以下となるためのキャッシュヒット率[ e ](%以上)を求めよ。
解答・解説を表示
解答
設問1 a: ウ, b: イ; 設問2 c: エ, d: ア, e: カ
解説
まず要点:IPネットワークでは、サブネットマスクでアドレスのネットワーク部とホスト部を分け、別のサブネット同士はルータを通して通信します。ルータは通常ブロードキャスト(同じ網内への一斉送信)を通さないため、DHCPリレーがなければDHCPサーバはクライアントと同じセグメントに置く必要があります。キャッシュの効果は、ヒット率で重み付けした平均応答時間の式から評価します。
解き方
- IPアドレスの第3オクテットの違いから各セグメントの境界をつかみ、適切なサブネットマスクと使えるホストアドレスを特定します。
- ブロードキャストの届く範囲や通信遮断の方針から、DHCPサーバとプロキシサーバを置くネットワークを判断します。
- キャッシュが当たったときと外れたときの応答時間から平均応答時間の不等式を立て、使わないときの半分以下になる最小のヒット率を求めます。
小問ごとの答え
- 小問 設問1 a:ウ
- ネットワークAにはルータ(10.0.1.1)とWebサーバ1(10.0.1.200)が存在し、基幹ネットワーク(10.0.0.x)やネットワークB(10.0.2.x)と第3オクテットで区分されているため、サブネットマスクは第3オクテットまでがすべて1となる 255.255.255.0(ウ)が適切です。
- 小問 設問1 b:イ
- ネットワークAのアドレス範囲は 10.0.1.0/24 です。候補のうち該当するのは 10.0.1.1、10.0.1.2、10.0.1.3 の3つですが、10.0.1.1 はルータに割り当て済みのため、Webサーバ2に設定可能なのは 10.0.1.2 と 10.0.1.3 の 2個(イ)です。
- 小問 設問2 c:エ
- DHCPクライアントである業務用PCは初期設定時にブロードキャストを用いてDHCPサーバを探索します。ルータを越えてブロードキャストを中継するエージェント装置が設置されていないため、DHCPサーバは業務用PCと同一セグメントであるネットワークB(エ)に設置する必要があります。
- 小問 設問2 d:ア
- 社外Webサーバへのアクセスを中継しつつ、基幹ネットワークとインターネット間の直接通信を遮断したままにするため、インターネットおよび社内側の両方から通信可能なDMZ(ア)にプロキシサーバを設置します。
- 小問 設問2 e:カ
- 非利用時の平均応答時間は100です。ヒット率をpとすると利用時の平均応答時間は 30p + 110(1 - p) = 110 - 80p です。これが100の半分以下(50以下)となる条件は 110 - 80p ≦ 50 より 80p ≧ 60、すなわち p ≧ 0.75(75%以上、カ)となります。
覚えるポイント
- ブロードキャストパケットは原則としてルータを通過しないため、DHCPリレーエージェントがない場合はDHCPサーバを同一セグメント内に配置する。
- プロキシキャッシュの平均応答時間は「(ヒット時の時間×ヒット率) + (ミス時の時間×(1 - ヒット率))」で計算する。
間違えやすいところ
- ルータや既存サーバに割り当て済みのIPアドレスを除かずにホスト数を数えてしまう誤り。
- プロキシサーバの置き場所として、社外と通信できない基幹ネットワークや内部ネットワークを選んでしまう誤り。
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問3
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.13 ↗(www.ipa.go.jp) / 公式問題冊子 p.14 ↗(www.ipa.go.jp) / 公式問題冊子 p.15 ↗(www.ipa.go.jp)
情報セキュリティにおけるリスク評価と対応
セキュリティ · リスク値の算出 / 機密性・完全性・可用性 / リスクアセスメント / リスク対応
F社における情報資産(サーバXおよびサーバY)のリスク評価に関する次の記述を読んで、設問1、2に答えよ。 1. 表8のリスク評価表中の空欄 [ a ] 〜 [ c ] に入るリスク値、および空欄 [ d ] に入るサーバYの可用性の評価値を求めよ。 2. 表8のサーバXの完全性に関して、受容可能なリスク水準から判断されるリスク対応として適切なものを解答群から選べ。
解答・解説を表示
解答
設問1 a: ウ, b: キ, c: ケ, d: ウ; 設問2: イ
解説
まず要点:情報セキュリティのリスク値は、ふつう「情報資産の価値 × 脅威 × 脆弱性」のかけ算で数値化します。資産の価値は機密性・完全性・可用性の3つの観点で別々に評価します。計算したリスク値が組織の受け入れられる水準を超えた組み合わせから、優先的に対策を打ちます。
解き方
- 聞き取り内容から各情報資産の機密性・完全性・可用性の価値基準(表1〜3)を特定し、可用性は最も小さい値を選ぶルールを当てはめます。
- 決めた資産価値と表6の脅威・脆弱性の値をかけ合わせて各リスク値を計算し、空欄a〜dを埋めます。
- 受け入れられるリスク水準(表7)と計算したリスク値を比べ、基準を超えたリスク事象に合う低減策を選びます。
小問ごとの答え
- 小問 設問1 a:ウ
- サーバXの調達先一般情報は社外公開不可のため機密性価値は2です。脅威「なりすまし」の値2、脆弱性「パスワード管理の不備」の値2より、リスク値は 2 × 2 × 2 = 8(ウ)となります。
- 小問 設問1 b:キ
- サーバYの取引情報は他部門にも開示できないため機密性価値は3です。脅威「不正アクセス」の値3、脆弱性「アクセスコントロールの不備」の値2より、リスク値は 3 × 3 × 2 = 18(キ)となります。
- 小問 設問1 c:ケ
- サーバYの取引情報に誤りがあると業務への影響が大きいため完全性価値は3です。脅威「ウイルス感染」の値3、脆弱性「ウイルス対策ソフト未導入」の値3より、リスク値は 3 × 3 × 3 = 27(ケ)となります。
- 小問 設問1 d:ウ
- サーバYは年間4時間以上の停止が許されないため、許容停止時間は4時間未満です。表3で4時間未満を満たす基準は「年間1時間まで(値3)」「10分まで(値4)」「1分まで(値5)」であり、最も小さい値を選ぶルールから値は 3(ウ)となります。
- 小問 設問2:イ
- サーバXの完全性における受容可能なリスク水準は表7より15です。表8の破線内のリスク値のうち「ウイルス感染×ウイルス対策ソフト未導入」が 18 で水準を超過しているため、脆弱性を解消する「ウイルス対策ソフトを導入する」(イ)が適切な対応です。
覚えるポイント
- リスク値の算出式は「資産の価値 × 脅威の度合い × 脆弱性の度合い」である。
- 受容可能リスク水準を超えるリスクに対しては、回避・低減・移転などのリスク対応が必要となる。
間違えやすいところ
- 停止時間の上限で「4時間以上は許されない」に対し、年間5時間まで(値2)を誤って選ぶこと。
- 資産価値の評価で、社外公開不可(社内のみ開示可:値2)と部門内のみ開示可(値3)を取り違える誤り。
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問4
出典:IPA『2011年度 秋期 午後』
公式問題冊子 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)
書籍の卸売業者の受注システムにおけるUMLモデリング
ソフトウェア設計 · UML / クラス図 / オブジェクト図 / 多重度 / 集約
書籍の卸売業者が行う受注業務のシステム化を題材として、抽出されたオブジェクト間の関係をもとに分析のためのクラス図を作成し、さらに属性や操作を定義した設計のためのクラス図を完成させる問題である。図3のクラス図の空欄a〜cに入るクラス名、dに入る多重度、および図4の設計用クラス図の空欄e〜gに入る属性や操作として最も適切なものを解答群から選べ。
- a〜c群 ア
- 商品
- a〜c群 イ
- 商品番号
- a〜c群 ウ
- 受注者
- a〜c群 エ
- 受注伝票
- a〜c群 オ
- セット商品
- a〜c群 カ
- 単独商品
- d群 ア
- 0
- d群 イ
- 0..*
- d群 ウ
- 1
- d群 エ
- 1..10
- d群 オ
- 1..*
- d群 カ
- 2
- d群 キ
- 2..*
- e群 ア
- 商品番号:文字列
- e群 イ
- 商品名:文字列
- e群 ウ
- セット商品名:文字列
- e群 エ
- 番号:数値
- e群 オ
- 名称:文字列
- f群 ア
- /小計:数値
- f群 イ
- 商品名:文字列
- f群 ウ
- 年月日:文字列
- f群 エ
- 名称:文字列
- g群 ア
- 受注日取得(): 文字列
- g群 イ
- 小計取得(): 数値
- g群 ウ
- 数量取得(): 数値
- g群 エ
- 単価取得(): 数値
- g群 オ
- 名称取得(): 文字列
解答・解説を表示
解答
設問1 a: ア, b: カ, c: オ, d: キ; 設問2 e: エ, f: ア, g: イ
解説
まず要点:UMLのクラス図では、汎化(白抜き三角)で共通点を親クラスにまとめ、集約(白抜き菱形)で全体と部分の関係を表します。多重度で関連するインスタンスの数の範囲を決め、属性名の前のスラッシュ(/)は他の情報から計算できる派生要素を意味します。
解き方
- オブジェクト図から、受注明細が参照するのが単独商品またはセット商品であること、セット商品が複数の単独商品からできていることをつかみます。
- 汎化と集約の矢印の向きに注意し、上位の概念となるクラスa、構成要素のクラスb、複合体のクラスcを特定します。
- 問題文の業務条件(2種類以上の単独商品から成る)から多重度dを導き、設計用クラス図の派生属性の記法と合計に必要な操作を特定します。
小問ごとの答え
- 小問 設問1 a:ア
- クラスbとクラスcのスーパークラスであり、受注明細と関連を持つ汎化元クラスであるため「商品」が当てはまります。
- 小問 設問1 b:カ
- クラスc(全体を表す白抜き菱形側)を構成する要素(部分)であるため「単独商品」が当てはまります。
- 小問 設問1 c:オ
- 集約の白抜き菱形が付いている全体側であり、複数の単独商品から構成されるため「セット商品」が当てはまります。
- 小問 設問1 d:キ
- セット商品は「2種類以上の単独商品を組み合わせたもの」という仕様があるため、多重度は「2..*」となります。
- 小問 設問2 e:エ
- 受注クラスにおいて各受注伝票インスタンスを一意に識別するための属性であり、伝票の受注番号に対応する「番号:数値」が入ります。
- 小問 設問2 f:ア
- 接頭辞「/」は他の属性(数量と単価)から計算される派生要素を表すため、受注明細の計算項目である「/小計:数値」が入ります。
- 小問 設問2 g:イ
- 受注クラスが全体の合計金額を算出する際に、各受注明細の金額を取得するために呼び出す操作として「小計取得(): 数値」が適切です。
覚えるポイント
- 集約関係の白抜き菱形は「全体」側に付き、反対側が構成要素の「部分」となる。
- UMLクラス図において属性名の直前にあるスラッシュ(/)は派生属性を示す。
間違えやすいところ
- 集約の菱形が付く向きを逆に考え、全体と部分を取り違えてしまうミス。
- 1回の注文の上限(10種類)とセット商品の構成要素数(2種類以上)の条件を混同すること。
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問5
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.21 ↗(www.ipa.go.jp) / 公式問題冊子 p.22 ↗(www.ipa.go.jp) / 公式問題冊子 p.23 ↗(www.ipa.go.jp) / 公式問題冊子 p.24 ↗(www.ipa.go.jp)
プロジェクトマネジメントにおける要員計画と山崩し
プロジェクトマネジメント · 要員計画 / 工数見積り / リソース平準化 / ウォータフォールモデル
製造会社の社内システム再構築プロジェクトにおいて、2期に分割された開発規模(各480kステップ)および工程別の生産性・配分月数をもとに、要員計画を策定する問題である。A社要員(毎月13名固定・常時作業割当て必須・プログラム開発不可)とB社要員の制約条件を満たすスケジュール案の検討、要員数のピーク月およびその平準化手法に関する空欄a〜hに入る適切な答えを選べ。
- a群 ア
- 52
- a群 イ
- 60
- a群 ウ
- 68
- a群 エ
- 72
- a群 オ
- 80
- b群 ア
- 2
- b群 イ
- 3
- b群 ウ
- 4
- b群 エ
- 15
- b群 オ
- 16
- b群 カ
- 17
- c, d群 ア
- 平成24年11月
- c, d群 イ
- 平成24年12月
- c, d群 ウ
- 平成25年1月
- c, d群 エ
- 平成25年2月
- c, d群 オ
- 平成25年3月
- c, d群 カ
- 平成25年4月
- e群 ア
- 第一期を3に第二期を4にする
- e群 イ
- 第一期を3に第二期を5にする
- e群 ウ
- 第一期を4に第二期を3にする
- e群 エ
- 第一期を4に第二期を5にする
- f群 ア
- 平成24年7月
- f群 イ
- 平成24年10月
- f群 ウ
- 平成24年12月
- f群 エ
- 平成25年1月
- f群 オ
- 平成25年2月
- g群 ア
- 56
- g群 イ
- 59
- g群 ウ
- 63
- g群 エ
- 66
- g群 オ
- 70
- h群 ア
- 第一期及び第二期の作業をともに前倒し
- h群 イ
- 第一期及び第二期の作業をともに後ろ倒し
- h群 ウ
- 第一期の作業を前倒しとし,第二期の作業を後ろ倒し
- h群 エ
- 第一期の作業を後ろ倒しとし,第二期の作業を前倒し
解答・解説を表示
解答
設問1 a: イ, b: イ; 設問2 c: オ, d: カ, e: ウ; 設問3 f: エ, g: オ, h: ウ
解説
まず要点:要員計画では、工数を開発期間(配分月数)で割って月ごとの必要人数を出し、固定要員の制約や配属できない工程を守ったスケジュールを組みます。人数が突出して多いピーク月があれば、前後の工程の納期や同一工程内という制約を考えながら、作業を前倒し・後ろ倒しして平準化(山崩し)します。
解き方
- 各工程の工数を「開発規模÷生産性」で求め、各月の平均要員を「工数÷配分月数(端数は切り上げ)」で計算します。
- 全体のスケジュールでA社要員(毎月13名固定・PG開発不可・常に全員へ作業割当て)を割り当てられない空き月を見つけ、両立できる配分月数を導きます。
- 最終案の月別総要員数を合計してピーク月と人数を出し、同一工程内での前倒し・後ろ倒しによる平準化の方法を判定します。
小問ごとの答え
- 小問 設問1 a:イ
- 工数(人月)=開発規模(kステップ)÷生産性(kステップ/人月)=480÷8.0=60人月となります。
- 小問 設問1 b:イ
- 外部設計の平均要員数は48÷3=16名。A社要員13名を除いた不足分をB社が担うため、16-13=3名となります。
- 小問 設問2 c:オ
- 案1(配分月数3)では平成25年3月に第一期が完了し第二期はPG開発(A社参画不可)のみとなるため、A社要員を割り当てられなくなります。
- 小問 設問2 d:カ
- 案2(配分月数4)では平成25年4月に第一期が完了し第二期はPG開発のみとなるため、A社全員への作業割当て条件を満たせなくなります。
- 小問 設問2 e:ウ
- 第一期を4ヶ月・第二期を3ヶ月とすれば、第二期のPG開発期間(1〜3月)に第一期の総合テストが並行するためA社要員の遊休が発生しません。
- 小問 設問3 f:エ
- 第一期結合テスト(30名)と第二期PG開発(40名)が重なる平成25年1月に要員数が最大となります。
- 小問 設問3 g:オ
- 平成25年1月の総要員数は、第一期結合テスト30名+第二期PG開発40名=70名となります。
- 小問 設問3 h:ウ
- 12月・1月・2月を均等化(各61名)するため、1月の第一期作業を12月に4名前倒し、第二期作業を2月に5名後ろ倒しします。
覚えるポイント
- 月平均要員数=各工程の総工数÷配分月数(小数点以下切り上げ)。
- 要員の平準化(山崩し)を行う際は、同一工程内でのみ前倒し・後ろ倒しが可能である点に注意する。
間違えやすいところ
- 外部設計のB社要員を求めるときに、総要員数(16名)を選んでしまうミス。
- 工程ごとの要員移動の制限(同一工程内での移動)を見落とし、別の工程へ作業を移してしまうこと。
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問6
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.25 ↗(www.ipa.go.jp) / 公式問題冊子 p.26 ↗(www.ipa.go.jp) / 公式問題冊子 p.27 ↗(www.ipa.go.jp) / 公式問題冊子 p.28 ↗(www.ipa.go.jp)
販売ルート別の売上及び市場の分析
ストラテジ系 · バブルチャート / 売上分析 / 市場分析 / 前年比分析
香辛料製造販売を行うW社における販売ルート別(小売店、量販店、CVS、ネット通販、外食、加工)の売上及び市場データをもとに、バブルチャートを作成して分析する。設問1および設問2の空欄[ a ]〜[ h ]に当てはまる適切な選択肢を選べ。
- ア
- 設問1(a,d): CVS / 設問1(b,c): 売上金額 / 設問2(e,f): 売上金額前年比-100(%)・売上数量前年比-100(%) / 設問2(g): g1=CVS, g2=小売店 / 設問2(h): h1=売上数量,売上単価などが増加, h2=売上数量,売上単価などが増加
- イ
- 設問1(a,d): 加工 / 設問1(b,c): 売上数量 / 設問2(e,f): 売上金額前年比-100(%)・売上単価前年比-100(%) / 設問2(g): g1=CVS, g2=ネット通販 / 設問2(h): h1=売上数量,市場規模などが減少, h2=売上数量,市場規模などが増加
- ウ
- 設問1(a,d): 外食 / 設問1(b,c): 売上単価 / 設問2(e,f): 売上数量前年比-100(%)・売上金額前年比-100(%) / 設問2(g): g1=CVS, g2=量販店 / 設問2(h): h1=売上数量,市場規模などが減少, h2=売上単価,市場占有率などが増加
- エ
- 設問1(a,d): 小売店 / 設問1(b,c): 市場規模 / 設問2(e,f): 売上数量前年比-100(%)・売上単価前年比-100(%) / 設問2(g): g1=小売店, g2=CVS / 設問2(h): h1=売上数量,市場占有率などが減少, h2=売上単価,市場規模などが減少
- オ
- 設問1(a,d): ネット通販 / 設問1(b,c): 市場占有率 / 設問2(e,f): 売上単価前年比-100(%)・売上金額前年比-100(%) / 設問2(g): g1=ネット通販, g2=CVS / 設問2(h): h1=売上数量,市場占有率などが減少, h2=市場規模,市場占有率などが減少
- カ
- 設問1(a,d): 量販店 / 設問1(b,c): 当年構成比 / 設問2(e,f): 売上単価前年比-100(%)・売上数量前年比-100(%) / 設問2(g): g1=ネット通販, g2=小売店 / 設問2(h): h1=売上単価,市場規模などが減少, h2=売上数量,市場占有率などが増加
- キ
- 設問2(e,f): 市場規模前年比-100(%)・売上金額前年比-100(%) / 設問2(g): g1=ネット通販, g2=量販店 / 設問2(h): h1=売上単価,市場占有率などが減少, h2=売上数量,市場占有率などが増加
- ク
- 設問2(e,f): 市場規模前年比-100(%)・市場占有率前年比-100(%) / 設問2(g): g1=量販店, g2=CVS / 設問2(h): h1=市場規模,市場占有率などが減少, h2=市場規模,市場占有率などが増加
- ケ
- 設問2(e,f): 市場占有率前年比-100(%)・売上金額前年比-100(%) / 設問2(g): g1=量販店, g2=小売店 / 設問2(h): h1=市場規模,市場占有率などが減少, h2=売上単価,市場規模などが増加
- コ
- 設問2(e,f): 市場占有率前年比-100(%)・市場規模前年比-100(%) / 設問2(g): g1=量販店, g2=ネット通販 / 設問2(h): h1=市場規模,市場占有率などが増加, h2=売上単価,市場占有率などが増加
解答・解説を表示
解答
設問1 a: ア, b: オ, c: ウ, d: イ; 設問2 e: コ, f: エ, g: キ, h: ウ
解説
まず要点:バブルチャートは、横軸・縦軸・円の大きさの3つでデータを表す分析手法です。点の位置からどのデータかを正しく見分け、前年比のような増減率が正か負か、変化の向きを読み取るのが基本です。
解き方
- 表1の数値(売上数量、売上単価、市場規模、市場占有率など)と図1・図2の軸の目盛を照らし合わせ、空欄aとdの販売ルートを特定します。
- 特定した販売ルートの特徴(最大・最小になる指標)から、考察文の空欄bとcを埋めます。
- 図3・図4の各軸がどの指標かを、特定ルートの前年比(100%基準の増減)の正負から判断して、空欄eとfを決めます。
- 前年比分析のグラフから条件に合う販売ルートg1・g2を特定し、外食と加工の増減の向きh1・h2を読み取ります。
小問ごとの答え
- 小問 設問1 a:ア
- 図1において横軸(売上数量当年見込)が230t付近、縦軸(売上単価当年見込)が5,000千円/t付近に位置するルートは表1よりCVSであるため、aはア(CVS)となります。
- 小問 設問1 b:オ
- 図2においてa(CVS)の縦軸(市場占有率当年見込)は約14%で全ルート中最も小さい(低い)ため、bはオ(市場占有率)が入ります。
- 小問 設問1 c:ウ
- a(CVS)は図1の縦軸である売上単価が5,000千円/tで全ルート中最も高いため、cにはウ(売上単価)が入ります。
- 小問 設問1 d:イ
- 図1において横軸が3,000t、縦軸が2,400千円/tの位置にあるルートは表1の当年見込から加工であることがわかり、dはイ(加工)となります。
- 小問 設問2 e:コ
- 図3でCVSは横軸が負・縦軸が正に位置します。CVSの各指標前年比を計算すると、市場占有率は14/15-1=-6.7%(負)、市場規模は8,214/7,280-1=+12.8%(正)であり、横軸が市場占有率前年比-100、縦軸が市場規模前年比-100に対応するため、eはコとなります。
- 小問 設問2 f:エ
- 図4でCVSは横軸が負・縦軸が正にあります。CVSの売上数量前年比は230/260-1=-11.5%(負)、売上単価前年比は5,000/4,200-1=+19.0%(正)であり、横軸が売上数量前年比-100、縦軸が売上単価前年比-100に対応するため、fはエとなります。
- 小問 設問2 g:キ
- 市場規模が約20%増加し市場占有率が約25%減少しているルートは図3よりネット通販(g1)です。また、売上数量が25%以上増加(横軸25以上)し売上単価が低下(縦軸負)しているルートは図4より量販店(g2)であるため、組合せはキとなります。
- 小問 設問2 h:ウ
- 前年構成比が最も大きい外食は図3で横軸(市場占有率前年比)・縦軸(市場規模前年比)ともに負、図4でも横軸(売上数量前年比)が負のため、売上数量・市場規模などが減少しています(h1)。次に大きい加工は図3で市場占有率が増加、図4で売上単価が増加しているため、売上単価・市場占有率などが増加しています(h2)。よって正解はウです。
覚えるポイント
- バブルチャートの読み取りでは、代表的なプロット位置(四隅や突出した値)から軸と項目の対応関係を特定する。
間違えやすいところ
- 前年比-100(%)の符号(0より大きいと増加、0より小さいと減少)を取り違えてしまうこと。
出題の前提:基本情報技術者試験 午後問7 システム戦略(平成23年度秋期)出題内容に準拠。
出典:IPA『2011年度 秋期 午後』
公式問題冊子 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)
代入文の処理
ソフトウェア開発 · 構文解析 / 状態遷移表 / 文字配列操作 / 演算子の優先順位
1行の代入文を解析し、演算子の優先順位に従って作業変数を用いた一連の代入文に変換する処理に関する問題である。状態遷移表を用いた構文解析を行う設問1、および文字列置換と文字のシフト移動を行う副プログラムを実装する設問2の空欄[ a ]〜[ g ]に当てはまる適切な選択肢を選べ。
- ア
- 設問1: 代入文① / 設問2(c,d): priority < V[i] / 設問2(e): Getpos(S[], "«") + 1 / 設問2(f,g): from, i < to, 1
- イ
- 設問1: 代入文② / 設問2(c,d): priority ≦ V[i] / 設問2(e): Getpos(S[], "«") + 2 / 設問2(f,g): from, i ≦ to, 1
- ウ
- 設問1: 代入文③ / 設問2(c,d): priority ≧ V[i] / 設問2(e): Getpos(S[], "=") - 1 / 設問2(f,g): to, i ≧ from, -1
- エ
- 設問1: 代入文④ / 設問2(c,d): priority > V[i] / 設問2(e): Getpos(S[], "=") + 2 / 設問2(f,g): to, i > from, -1
解答・解説を表示
解答
設問1 a: イ, b: ウ; 設問2 c: ア, d: イ, e: エ, f: ウ, g: イ
解説
まず要点:コンパイラの構文解析では、状態遷移表を使って文法規則に合っているかを確かめます。配列の中の文字列をずらすシフト処理では、上書きでデータを壊さないよう、動かす向きに合わせて調べる順番を選ぶ必要があります(右へずらすときは後ろから、左へずらすときは前から)。
解き方
- 状態遷移表の「定数×英字→err←51」「演算×演算子→err←64」という遷移条件を確かめ、各代入文のトークン列と照合して空欄a・bを特定します。
- 演算子コード(加減算=11、乗除算=12)と左結合の規則から、左から走査するプログラム1は「priority < V[i]」、右から走査するプログラム2は「priority ≦ V[i]」になると導きます。
- 代入文の右辺の先頭の項は1文字以上あるため、最初の演算子は「=」の2文字後より先にしか現れないことから空欄eを求めます。
- 文字列のシフトで、右シフト(move>0)は終端から先頭へ、左シフト(move<0)は先頭から終端へループさせる制御文(空欄f・g)を決めます。
小問ごとの答え
- 小問 設問1 a:イ
- err=51は状態「定数」のときに英字が現れた場合のエラーです。代入文②「HexaSum=7FFF+0001」において、右辺の「7FFF」は先頭数字「7」で「定数」状態となった直後に英字「F」が出現するためerr=51となり、aはイ(代入文②)です。
- 小問 設問1 b:ウ
- err=64は状態「演算」のときに再び演算子が現れた場合のエラーです。代入文③「Position=Index++」において、演算子「+」の直後に再び演算子「+」が現れるためerr=64となり、bはウ(代入文③)です。
- 小問 設問2 c:ア
- プログラム1は左から右へ走査し、より高い優先順位の演算子が現れたときに更新します。同一優先順位なら左側を優先するため「より大きい」場合のみ更新します。演算子の優先度コードは乗除算が12、加減算が11なので、cはア(priority < V[i])です。
- 小問 設問2 d:イ
- プログラム2は右から左へ走査します。同一優先順位の演算子がある場合、左側にあるものを最終的に選択する必要があるため、同一優先順位でも更新をかけます。よってdはイ(priority ≦ V[i])です。
- 小問 設問2 e:エ
- 代入文の右辺において最初の演算子が現れうる最も左の位置は、「=」の直後にある項(最低1文字)の次の位置です。したがって「=」の位置に2を加えた位置以降となるため、eはエ(Getpos(S[], "=") + 2)です。
- 小問 設問2 f:ウ
- move > 0(右へ移動)の場合、移動先が未移動の文字を上書きしないよう、後方(to)から前方(from)に向かって順に要素をコピーする必要があります。ループ制御は「to, i ≧ from, -1」となるため、fはウです。
- 小問 設問2 g:イ
- move < 0(左へ詰める)の場合、前方(from)から後方(to)に向かって順に要素をコピーしていく必要があります。ループ制御は「from, i ≦ to, 1」となるため、gはイです。
覚えるポイント
- 配列要素のシフト移動では、データを保護するために「移動する方向と同じ側」の末端から順に処理する。
間違えやすいところ
- 左結合の演算子を右から逆順に探すとき、等号条件(≦)を入れ忘れて最も左の演算子を選べなくなること。
出題の前提:基本情報技術者試験 午後問8 データ構造及びアルゴリズム(平成23年度秋期)出題内容に準拠。
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.34 ↗(www.ipa.go.jp) / 公式問題冊子 p.35 ↗(www.ipa.go.jp) / 公式問題冊子 p.36 ↗(www.ipa.go.jp) / 公式問題冊子 p.37 ↗(www.ipa.go.jp) / 公式問題冊子 p.38 ↗(www.ipa.go.jp)
有限小数および循環小数の出力プログラム
ソフトウェア開発 · C言語 / 循環小数 / アルゴリズム / 除算と剰余演算
二つの整数 x, y (0 < x < y) を受け取り、x/y の値を10進小数として出力するCプログラムに関する次の記述を読んで、設問1・2に答えよ。 〔プログラム1の説明〕 x/y が有限小数の場合に小数第1位から順に出力する。 (1) x を分子、y を分母とする。 (2) 次の手順で出力する。 ① "0." を出力する。 ② x が 0 になるまで、次の③、④を繰り返す。 ③ x を 10 倍した値を y で割った商を出力する。 ④ x を 10 倍した値を y で割った余りを新たに x とする。 設問1 プログラム1の行番号7では各桁の数字を出力している。この行を "putchar('0' + (x / y * 10));" に変えると [ a ]。 また、printRational(3, 8) を実行した場合、行番号6の条件判定が2回目に行われるときの x の値は [ b ] であり、プログラムが終了するまでに行番号6の条件判定は [ c ] 回行われる。 設問2 循環小数の循環節を "[" と "]" で囲んで出力するプログラム2中の空欄 [ d ] 〜 [ g ] に入れる正しい答えを選べ。
- ア
- 乗算が除算よりも先に実行されるが,正しい値が出力される
- イ
- 乗算が除算よりも先に実行されるが,正しい値が出力されない
- ウ
- 除算が乗算よりも先に実行されるが,正しい値が出力される
- エ
- 除算が乗算よりも先に実行されるが,正しい値が出力されない
解答・解説を表示
解答
設問1 a: エ, b: キ, c: オ; 設問2 d: キ, e: ウ, f: ア, g: カ
解説
まず要点:小数の計算は、余りを10倍して割る操作をくり返すことで各けたを求めます。同じ余りがもう一度出たら、そこから先は同じ並びのくり返し(循環小数)になります。C言語のputcharには、数字そのものではなく文字コードを渡す必要があります。
解き方
- 設問1(1)では、C言語の乗除算の優先順位と左から右への計算規則、整数わり算で小数が切り捨てられる性質を確かめます。
- 設問1(2)では、x=3, y=8 を入れて余りが3→6→4→0と変わる様子と、判定が何回行われるかを追います。
- 設問2では、前の余りを覚える配列 xHistory と、ループを制御する ri, startRepeat の役割を照らし合わせて空欄を決めます。
小問ごとの答え
- 小問 設問1 a:エ
- 乗算と除算は同順位で左結合のため (x / y * 10) では x / y が先に計算されます。0 < x < y のため整数除算 x / y は 0 となり、正しく出力されません。
- 小問 設問1 b:キ
- x = 3, y = 8 のとき、1回目のループで行7で 3*10/8=3 を出力し、行8で x = 30 % 8 = 6 と更新されて2回目の条件判定に向かいます。
- 小問 設問1 c:オ
- 判定1回目(x=3>0:真)、2回目(x=6>0:真)、3回目(x=4>0:真)、4回目(x=0>0:偽で終了)と、終了判定を含めて合計4回行われます。
- 小問 設問2 d:キ
- 循環節が見つかるまでは変数 startRepeat の値が初期値 -1 のままであるため、ループ継続条件は startRepeat == -1 となります。
- 小問 設問2 e:ウ
- 過去の余りを保持する配列 xHistory の探索範囲は 0 <= i < ri であるため、for 文の継続条件は i < ri となります。
- 小問 設問2 f:ア
- 出力位置のインデックス i が循環節の開始位置 startRepeat に達したときに '[' を出力するため、判定条件は i == startRepeat です。
- 小問 設問2 g:カ
- 各桁の数値 xHistory[i] * 10 / y に文字コード '0' を加算して文字データとして putchar に渡す必要があるため '0' + xHistory[i] * 10 / y と記述します。
覚えるポイント
- C言語の整数同士の除算は小数点以下が切り捨てられるため計算順序に注意する
- putchar関数で1桁の数字を出力するときは '0' を加算して文字コードに変換する
間違えやすいところ
- while文の実行回数と条件判定の回数を混同し、最後に条件が偽になって抜ける1回を数え忘れる
- putcharに数字をそのまま渡してしまい、制御用の文字などが出てしまうミス
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問9
出典:IPA『2011年度 秋期 午後』
公式問題冊子 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)
受験申込ファイルの集計及び整列
ソフトウェア開発 · COBOL / 順ファイル / 二重PERFORM / 整列処理(SORT) / RELEASE文 / RETURN文
受験の申込みを登録した申込ファイルから、受験区分別に申込者の人数を集計し、集計表を印字するCOBOLプログラムに関する次の記述を読んで、設問1・2に答えよ。 〔プログラムの説明〕 ・申込ファイルは順ファイルで、1レコードに申込番号(5桁)、試験区分(A〜Hの1文字)、開催地区分(01〜20の2桁)を持つ。 ・集計表は受験区分別に印字し、申込者がいない区分は印字しない。 設問1 プログラムの [ a ] 〜 [ c ] に入れる正しい答えを選べ。 設問2 集計表における受験区分の印字を申込者数の多い順になるようにプログラムを変更したい。変更内容の [ d ] 〜 [ g ] に入れる正しい答えを選べ。
- ア
- MOVE 1 TO TEST-IDX
- イ
- MOVE 1 TO TEST-NO
- ウ
- MOVE TEST-IDX TO TEST-NO
- エ
- SET TEST-IDX TO 1
- オ
- SET TEST-IDX TO TEST-CATEG-S
- カ
- SET TEST-IDX TO TEST-NO
解答・解説を表示
解答
設問1 a: エ, b: カ, c: ア; 設問2 d: ウ, e: オ, f: キ, g: イ
解説
まず要点:COBOLで指標(INDEX:表を探す位置を指す番号)を動かすときは、MOVEではなくSET文を使います。SORT文で入出力の手続き(INPUT/OUTPUT PROCEDURE)を使うときは、並べ替え前のデータはRELEASE文で渡し、並べ替え後のデータはRETURN文で取り出します。
解き方
- 設問1では、SEARCH文の前に指標を初期設定すること、SEARCH文の書き方、二重PERFORM文と2次元表の添字の対応を確かめます。
- 設問2では、多い順(降順:DESCENDING)にする整列キーの指定と、SORT文の入力手続きのRELEASE文、出力手続きのRETURN文とEND-RETURNの書き方を確かめます。
小問ごとの答え
- 小問 設問1 a:エ
- SEARCH 文で指標付きテーブルを検索する前には指標を初期化する必要があります。指標名への代入には MOVE ではなく SET 文を用いるため SET TEST-IDX TO 1 となります。
- 小問 設問1 b:カ
- SEARCH 文の直後には検索対象となる OCCURS 句を持つテーブル名を指定します。ここでは TEST-W3 が該当します。
- 小問 設問1 c:ア
- 外側ループ LOOP1(試験区分:1〜8)と内側ループ LOOP2(開催地区分:1〜20)に対応する2次元集計テーブル要素は SUM-WK(LOOP1 LOOP2) です。
- 小問 設問2 d:ウ
- 「申込者数の多い順」に並べるため降順(DESCENDING)を指定し、キー項目は人数を表す SORT-S を指定するため DESCENDING KEY SORT-S です。
- 小問 設問2 e:オ
- SORT の入力手続き(IN-PROC)でソート用中間ファイルにレコードを渡す命令は RELEASE 文であり、レコード名 SORT-REC を指定します。
- 小問 設問2 f:キ
- SORT の出力手続き(OUT-PROC)で整列済みレコードを取り出す命令は RETURN 文であり、ファイル名 TEST-SORT-FILE を指定します。
- 小問 設問2 g:イ
- RETURN 文の条件分岐ブロック(AT END / NOT AT END)を閉じるスコープ終了符は END-RETURN です。
覚えるポイント
- COBOLのテーブル指標(INDEX)の操作はMOVE文ではなくSET文を用いる
- SORT文の手続き部連携では入力側にRELEASE文、出力側にRETURN文を用いる
間違えやすいところ
- SORT文の出力手続きで、普通のファイル読み込みのREAD文と取り違えてしまうミス
- 二重ループで2次元の表を参照するとき、添字の順序(行と列)を取り違えること
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問10
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.44 ↗(www.ipa.go.jp) / 公式問題冊子 p.45 ↗(www.ipa.go.jp) / 公式問題冊子 p.46 ↗(www.ipa.go.jp) / 公式問題冊子 p.47 ↗(www.ipa.go.jp) / 公式問題冊子 p.48 ↗(www.ipa.go.jp)
住所録管理プログラムにおけるインタフェースと入れ子クラスの実装
ソフトウェア開発 · Java / インタフェース / ジェネリクス / 入れ子クラス / Setコレクション
名前と住所から構成される住所録のエントリの追加・削除・検索を行うJavaプログラムについて、各設問に答えよ。 〔プログラムの説明〕 (1) クラス Name は姓名を文字列で保持し、クラス Address は郵便番号(上位3桁と下位4桁の整数)および住所文字列を保持する。 (2) クラス AddressBook は住所録であり、入れ子クラス AddressBook.Entry は住所録のエントリ(Name と Address のインスタンス)を保持する。 (3) インタフェース SearchCriteria は検索条件を示す型(メソッドなしのマーカーインタフェース)であり、Searchable<T extends SearchCriteria> は検索条件を与えて合致するかを調べる meets(T criteria) を定義する。 (4) クラス Name 及び Address はそれぞれ入れ子クラス Criteria を定義し、Criteria を検索条件とする Searchable を実装する。 ・Name.Criteria は引数 familyName, givenName を指定し、条件に含めないときは null を指定する。 ・Address.Criteria は引数 postalCode3, postalCode4, addr を指定し、条件に含めないときは郵便番号に負の値、addr に null を指定する。 (5) AddressBook の meetsAnyOf は与えられた検索条件のいずれかに合致するエントリの集合を返し、meetsAllOf は全てに合致するエントリの集合を返す。 (6) AddressBook.Entry は Searchable<SearchCriteria> を実装し、渡された criteria の型に応じて Name 又は Address の meets を呼び出す。 設問1 次のプログラム中の空欄 [ a ] 〜 [ e ] に入れる正しい答えを選べ。 設問2 クラス Test において、住所録 addrbook に登録されている全エントリを取得する方法として正しいものを二つ選べ。
- a-ア
- SearchCriteria
- a-イ
- SearchCriteria<Name>
- a-ウ
- SearchCriteria<String>
- a-エ
- Searchable
- a-オ
- Searchable<Name>
- a-カ
- Searchable<String>
- b,c-ア
- book.add(entry)
- b,c-イ
- book.add(sc)
- b,c-ウ
- book.remove(entry)
- b,c-エ
- book.remove(sc)
- b,c-オ
- result.add(entry)
- b,c-カ
- result.add(sc)
- b,c-キ
- result.remove(entry)
- b,c-ク
- result.remove(sc)
- d,e-ア
- Address.Criteria
- d,e-イ
- Criteria
- d,e-ウ
- Entry.Criteria
- d,e-エ
- Name.Criteria
- d,e-オ
- SearchCriteria
- 設問2-ア
- addrbook.meetsAllOf(new Name.Criteria("", ""))
- 設問2-イ
- addrbook.meetsAllOf(new Name.Criteria(null, null))
- 設問2-ウ
- addrbook.meetsAllOf(null)
- 設問2-エ
- addrbook.meetsAnyOf(new Name.Criteria("", ""))
- 設問2-オ
- addrbook.meetsAnyOf(new Name.Criteria(null, null))
- 設問2-カ
- addrbook.meetsAnyOf(null)
解答・解説を表示
解答
設問1 a: ア, b: オ, c: キ, d: オ, e: ア; 設問2: イ, オ
解説
まず要点:共通のインタフェース(境界)を通して、型の違う検索条件を同じやり方で扱えるようにするのがJavaの設計のポイントです。これは「多態性(ポリモーフィズム)」と「ジェネリクス(型を後から決める仕組み)」を組み合わせて実現します。集合(Set)への追加と削除を使い分けることで、AND条件とOR条件を表せます。
解き方
- クラス宣言とインタフェースの実装の関係を、型パラメータが合っているかで確かめます。
- meetsAnyOf(OR条件)とmeetsAllOf(AND条件)で、集合resultに要素を足す・減らす処理を読み取ります。
- Entryクラスでinstanceofと型変換を使い分けて処理を切り替える部分を確かめます。
- Criteriaの決まり(nullのときの判定)を読み、全件取得になる引数の組み合わせを導きます。
小問ごとの答え
- 小問 設問1 a:ア
- NameクラスはSearchable<Name.Criteria>を実装しており、型引数となる入れ子クラスCriteriaはSearchCriteriaを実装する必要があります。
- 小問 設問1 b:オ
- meetsAnyOfでは、いずれかの検索条件scに合致したentryを返却用の集合resultに追加するため、result.add(entry)を実行します。
- 小問 設問1 c:キ
- meetsAllOfでは、初期状態で全エントリを持つresultから、条件を満たさないentryを取り除くため、result.remove(entry)を実行します。
- 小問 設問1 d:オ
- AddressBook.EntryはSearchable<SearchCriteria>を実装しているため、meetsメソッドの引数の型はSearchCriteriaとなります。
- 小問 設問1 e:ア
- addr.meetsを呼び出すために、渡されたcriteriaがAddress.Criteriaのインスタンスであるか判定しキャストします。
- 小問 設問2:イ, オ
- Name.Criteriaのコンストラクタにnull, nullを指定すると姓・名ともに条件なし(無条件一致)となり、全エントリが対象となるためイとオが正解です。
覚えるポイント
- 可変長引数にnullを渡す場合と、引数オブジェクトのプロパティにnullを渡す場合の動作の違いに注意する。
間違えやすいところ
- meetsAllOfが、全集合から合わない要素をremoveして絞り込む処理だと見落としやすい。
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問11
出典:IPA『2011年度 秋期 午後』
公式問題冊子 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) / 公式問題冊子 p.55 ↗(www.ipa.go.jp)
除算と2進10進文字列変換を行うアセンブラプログラム
ソフトウェア開発 · CASL II / COMET II / 32ビット除算 / 基数変換 / 文字列処理
32ビット符号なし整数の除算副プログラムDIV、およびこれを利用して整数値を10進数文字列へ変換する副プログラムBTODに関するアセンブラプログラムを読んで、設問1・2に答えよ。 〔プログラム1の説明〕 DIVは被除数(GR1:上位, GR2:下位)と除数(GR3が指す連続2語)を受け取り、減算を繰り返すことで商(GR1:上位, GR2:下位)と剰余(GR4:上位, GR5:下位)を返す。 商の初期値としてGR1, GR2に#FFFFを設定し、LPループごとに商を+1する。下位桁GR2の加算でオーバフローが生じた場合は上位桁GR1を加算する。 その後、被除数から除数を32ビット減算し、下位桁の減算で桁借り(ボロー)が生じた場合は上位桁から1を引く。 〔プログラム2・3の説明〕 BTODは0〜99999の32ビット整数(GR1:上位, GR2:下位)を5桁の10進文字列に変換し、GR3が指す領域に格納する。 プログラム2は上位桁から(10000, 1000, …で順次除算)、プログラム3は下位桁から(10で順次除算)求めるアルゴリズムである。 設問1 プログラム1中の空欄 [ a ], [ b ] に入れる正しい答えを選べ。 設問2 プログラム2・3中の空欄 [ c ] 〜 [ f ] に入れる正しい答えを選べ。
- a-ア
- ADDL GR1,0,GR3
- a-イ
- ADDL GR1,=1
- a-ウ
- ADDL GR2,1,GR3
- a-エ
- ADDL GR2,=1
- a-オ
- ADDL GR4,0,GR3
- a-カ
- ADDL GR5,1,GR3
- b-ア
- JMI ADJ2
- b-イ
- JMI CONT
- b-ウ
- JOV ADJ2
- b-エ
- JOV CONT
- b-オ
- JPL ADJ2
- b-カ
- JPL CONT
- c,e-ア
- GR1
- c,e-イ
- GR2
- c,e-ウ
- GR3
- c,e-エ
- GR4
- c,e-オ
- GR5
- d-ア
- LAD GR3,1,GR3
- d-イ
- LAD GR3,2,GR3
- d-ウ
- LAD GR7,1,GR7
- d-エ
- LAD GR7,2,GR7
- d-オ
- LD GR3,1,GR3
- d-カ
- LD GR3,2,GR3
- d-キ
- LD GR7,1,GR7
- d-ク
- LD GR7,2,GR7
- f-ア
- 1
- f-イ
- 10
- f-ウ
- 100
- f-エ
- 1000
- f-オ
- 10000
解答・解説を表示
解答
設問1 a: イ, b: ウ; 設問2 c: イ, d: イ, e: オ, f: イ
解説
まず要点:32ビットの大きな数は、16ビットのレジスタ2本(上位と下位)に分けて計算します。足し算で下位からあふれが出たら(桁上げ)、引き算で下位から借りが要るとき(桁借り)は、論理加減算命令の後のOF(オーバーフローフラグ)をJOV命令で見て、上位の語に反映します。
解き方
- プログラム1で商を1ずつ増やす処理と被除数から引く処理を追い、桁上げ・桁借りの分岐を特定します。
- 論理減算SUBLで桁借りが出るとOF=1になるCASL IIの決まりを確かめ、ADJ2へのジャンプ条件を決めます。
- プログラム2(上位のけたから変換)で、DIVの出力レジスタ(商と剰余)の割り当てとUDATの2語構成を確かめます。
- プログラム3(下位のけたから変換)で、10で割ったあまりがそのけたになる仕組みからレジスタと除数を決めます。
小問ごとの答え
- 小問 設問1 a:イ
- 下位語GR2のインクリメントでオーバフローが発生したため、上位語GR1に桁上げとして1を加算するADDL GR1,=1が入ります。
- 小問 設問1 b:ウ
- 下位語の減算SUBL GR7,1,GR3で桁借りが発生した場合、論理減算の仕様によりオーバフローフラグが1となるため、JOV ADJ2で上位語の補正へ分岐します。
- 小問 設問2 c:イ
- 上位桁から求めるプログラム2では、除算後の商の下位語GR2に各桁の数値(0〜9)が入るため、GR2を文字コード化して格納します。
- 小問 設問2 d:イ
- UDATの各除数データは上位・下位の2語構成であるため、次の除数に進めるためにGR3を2増やします(LAD GR3,2,GR3)。
- 小問 設問2 e:オ
- 10で割って下位桁から求めるプログラム3では、剰余の下位語GR5が各桁の数値となるため、GR5を文字コード化して格納します。
- 小問 設問2 f:イ
- プログラム3では各桁を10で順次割って下位から抽出するため、DATに定義する除数の下位語は10となります。
覚えるポイント
- CASL IIの論理減算SUBLでは、ボロー(桁借り)が生じた場合にオーバフローフラグ(OF)が1になる。
間違えやすいところ
- 32ビット除算DIVで、商の下位語がGR2、剰余の下位語がGR5であることを混同しないよう注意する。
出題の前提:平成23年度秋期 基本情報技術者試験 午後 問12
出典:IPA『2011年度 秋期 午後』
公式問題冊子 p.56 ↗(www.ipa.go.jp) / 公式問題冊子 p.57 ↗(www.ipa.go.jp) / 公式問題冊子 p.58 ↗(www.ipa.go.jp) / 公式問題冊子 p.59 ↗(www.ipa.go.jp)
社員の基本給及び賞与計算
ソフトウェア開発(表計算) · 表計算 / 垂直照合 / 条件付合計 / マクロ / 相対参照
K社における社員の基本給及び賞与計算に関するワークシートとマクロの仕様を読み、設問1・設問2の各大問の空欄[ a ]〜[ h ]に当てはまる適切なものを各解答群から選べ。
- a群_ア
- 垂直照合(B1, 役職給!B$2〜C$6, 2, 0)
- a群_イ
- 垂直照合(B1, 役職給!B$2〜C$6, 3, 0)
- a群_ウ
- 垂直照合(C2, 役職給!A$2〜C$6, 2, 0)
- a群_エ
- 垂直照合(C2, 役職給!B$2〜C$6, 2, 0)
- a群_オ
- 水平照合(B1, 役職給!B$2〜C$6, 2, 0)
- a群_カ
- 水平照合(B1, 役職給!B$2〜C$6, 3, 0)
- a群_キ
- 水平照合(C2, 役職給!A$2〜C$6, 2, 0)
- a群_ク
- 水平照合(C2, 役職給!B$2〜C$6, 2, 0)
- b群_ア
- IF(E2 < 49, C2 * 7, 350)
- b群_イ
- IF(E2 < 49, E2 * 7, 350)
- b群_ウ
- IF(E2 < 50, C2 * 7, 350)
- b群_エ
- IF(E2 < 50, E2 * 7, 350)
- b群_オ
- IF(E2 ≦ 51, C2 * 7, 350)
- b群_カ
- IF(E2 ≦ 51, E2 * 7, 350)
- b群_キ
- IF(E2 ≧ 50, C2 * 7, 350)
- b群_ク
- IF(E2 ≧ 50, E2 * 7, 350)
- c群_ア
- 垂直照合(J2, 賞与係数!A$11〜B$15, 2, 0)
- c群_イ
- 垂直照合(J2, 賞与係数!A$11〜B$15, 2, 1)
- c群_ウ
- 垂直照合(J2, 賞与係数!B$3〜C$7, 2, 0)
- c群_エ
- 垂直照合(J2, 賞与係数!B$3〜C$7, 2, 1)
- c群_オ
- 水平照合(J2, 賞与係数!A$11〜B$15, 2, 0)
- c群_カ
- 水平照合(J2, 賞与係数!A$11〜B$15, 2, 1)
- c群_キ
- 水平照合(J2, 賞与係数!B$3〜C$7, 2, 0)
- c群_ク
- 水平照合(J2, 賞与係数!B$3〜C$7, 2, 1)
- d群_ア
- H6 * (I6 + K6) + IF(C6 < 3, L6 / 10, L6 / 20)
- d群_イ
- H6 * (I6 + K6) + IF(C6 < 3, L6 / 20, L6 / 10)
- d群_ウ
- H6 * (I6 + K6) + IF(C6 ≦ 3, L6 / 10, L6 / 20)
- d群_エ
- H6 * (I6 + K6) + IF(C6 ≦ 3, L6 / 20, L6 / 10)
- d群_オ
- H6 * (I6 + K6 + IF(C6 < 3, L6 / 10, L6 / 20))
- d群_カ
- H6 * (I6 + K6 + IF(C6 < 3, L6 / 20, L6 / 10))
- d群_キ
- H6 * (I6 + K6 + IF(C6 ≦ 3, L6 / 10, L6 / 20))
- d群_ク
- H6 * (I6 + K6 + IF(C6 ≦ 3, L6 / 20, L6 / 10))
- e群_ア
- 条件付合計(C$6〜C$112, =I2, L$6〜L$112)
- e群_イ
- 条件付合計(C$6〜C$112, =I2, M$6〜M$112)
- e群_ウ
- 条件付合計(D$6〜D$112, =I2, L$6〜L$112)
- e群_エ
- 条件付合計(D$6〜D$112, =I2, M$6〜M$112)
- e群_オ
- 照合検索(I2, C$6〜C$112, L$6〜L$112)
- e群_カ
- 照合検索(I2, C$6〜C$112, M$6〜M$112)
- e群_キ
- 照合検索(I2, D$6〜D$112, L$6〜L$112)
- e群_ク
- 照合検索(I2, D$6〜D$112, M$6〜M$112)
- f群_ア
- row: 1, row < 3, 1
- f群_イ
- row: 1, row < 20, 1
- f群_ウ
- row: 1, row ≦ 3, 1
- f群_エ
- row: 1, row ≦ 20, 1
- f群_オ
- row: 2, row < 4, 1
- f群_カ
- row: 2, row ≦ 4, 1
- f群_キ
- row: 6, row < 112, 1
- f群_ク
- row: 6, row ≦ 112, 1
- g群_ア
- 論理積(M2 ≦ K2, DeptPoint ≦ 20)
- g群_イ
- 論理積(M2 ≦ K2, L2 ≦ 20)
- g群_ウ
- 論理積(相対(L1, row, 1) > 相対(L2, row, -1), DeptPoint > 20)
- g群_エ
- 論理積(相対(L1, row, 1) ≦ 相対(L1, row, -1), DeptPoint ≦ 20)
- g群_オ
- 論理和(M2 > K2, DeptPoint > 20)
- g群_カ
- 論理和(M2 > K2, L2 > 20)
- g群_キ
- 論理和(相対(L1, row, 1) > 相対(L2, row, -1), DeptPoint > 20)
- g群_ク
- 論理和(相対(L1, row, 1) ≦ 相対(L1, row, -1), DeptPoint ≦ 20)
- h群_ア
- 相対(L1, row, 0) ← DeptPoint
- h群_イ
- 相対(L1, row, 0) ← DeptPoint + 1
- h群_ウ
- 相対(L1, row, 0) ← DeptPoint - 1
- h群_エ
- 相対(L1, row, -1) ← DeptPoint
- h群_オ
- 相対(L1, row, -1) ← DeptPoint + 1
- h群_カ
- 相対(L1, row, -1) ← DeptPoint - 1
- h群_キ
- 相対(L2, row, 0) ← DeptPoint
- h群_ク
- 相対(L2, row, 0) ← DeptPoint + 1
- h群_ケ
- 相対(L2, row, -1) ← DeptPoint + 1
- h群_コ
- 相対(L2, row, -1) ← DeptPoint - 1
解答・解説を表示
解答
設問1 a: エ, b: エ, c: イ; 設問2 d: キ, e: エ, f: ウ, g: エ, h: ウ
解説
まず要点:表計算の照合関数(垂直照合・水平照合)では、完全一致を探すときは検索指定に0、昇順に並んだ範囲で「その値以下の最大」を探すときは1を指定します。マクロの相対表現「相対(基準セル, 行の変位, 列の変位)」では、変位0が基準の行・列そのものを表し、正負の数で行や列を何個分ずらすかを決めます。
解き方
- 設問1では、役職給表と賞与係数表の並びを確かめ、キーの列、取り出す列、完全一致か範囲検索(指定0か1)かを決めて照合式を組み立てます。
- 設問2では、新しくなった賞与計算式の条件分岐(ランク3以下と4以上)をIF関数で表し、条件付合計で各本部の賞与を集計したうえで、マクロのループ回数・相対参照・終了判定を追って空欄を決めます。
小問ごとの答え
- 小問 設問1 a:エ
- ワークシート「役職給」の役職ランク(B列)をキーとして役職給(C列)を求めるため、垂直照合関数を用います。検索値はC2、範囲は役職給!B$2〜C$6、列位置は2、完全一致のため検索指定は0とし、「垂直照合(C2, 役職給!B$2〜C$6, 2, 0)」となります。
- 小問 設問1 b:エ
- 50歳未満の場合は年齢(E2)に7(千円単位)を乗じ、50歳以上の場合は固定額350千円とするため、条件式は E2 < 50、真のときは E2 * 7、偽のときは 350 となり、「IF(E2 < 50, E2 * 7, 350)」が適切です。
- 小問 設問1 c:イ
- 個人評価点(J2)に対応する係数をワークシート「賞与係数」の範囲下限値(A11〜A15)から照合します。下限値以下の最大値を検索するため検索指定は1となり、「垂直照合(J2, 賞与係数!A$11〜B$15, 2, 1)」となります。
- 小問 設問2 d:キ
- 役職ランクが課長以上(本部長1、部長2、課長3の3以下)の場合は本部加点/10、主任・なし(4以上)は本部加点/20を係数に加算し、その全体に基本給(H6)を掛けるため、「H6 * (I6 + K6 + IF(C6 ≦ 3, L6 / 10, L6 / 20))」となります。
- 小問 設問2 e:エ
- 各本部の賞与合計を求めるには、本部列(D$6〜D$112)から対象本部名(I2)に一致する行を抽出し、賞与列(M$6〜M$112)を合計する必要があるため、「条件付合計(D$6〜D$112, =I2, M$6〜M$112)」となります。
- 小問 設問2 f:ウ
- 対象となる本部は第1本部〜第3本部の3つ(ワークシートの行2〜行4)です。セルL1を基準として row 行シフトさせるため、row は 1 から 3 まで 1 ずつ増やす「row: 1, row ≦ 3, 1」が適切です。
- 小問 設問2 g:エ
- 後判定繰返しの継続条件は、本部賞与合計が上限以下かつDeptPointが20以下の場合です。L1を基準にすると、行位置rowに対して本部賞与合計はM列(列位置1)、上限はK列(列位置-1)となるため、「論理積(相対(L1, row, 1) ≦ 相対(L1, row, -1), DeptPoint ≦ 20)」が条件となります。
- 小問 設問2 h:ウ
- 繰返し終了条件を満たした時点でDeptPointは上限を超過した値となっているため、手順⑤に従い 1 を減じた値(DeptPoint - 1)を基準セルL1から行位置row・列位置0のセルに書き込みます。したがって「相対(L1, row, 0) ← DeptPoint - 1」となります。
覚えるポイント
- 垂直照合の第4引数:0は完全一致、1は昇順配列に対する以下最大値検索を表す。
- 後判定繰返しの条件式は「真の間繰り返す(継続条件)」であるため、終了条件の否定(ド・モルガンの法則)を記述する。
間違えやすいところ
- マクロの繰返し条件欄に、終わる条件(上回る、または20超過)をそのまま書いてしまう。
- 賞与の計算式で、加点の項に基本給をかけ忘れる。
出題の前提:平成23年度秋期基本情報技術者試験午後問題 問13(表計算ソフトの機能・用語標準仕様に準拠)
出典:IPA『2011年度 秋期 午後』
公式問題冊子 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) / 公式問題冊子 p.65 ↗(www.ipa.go.jp) / 公式問題冊子 p.66 ↗(www.ipa.go.jp) / 公式問題冊子 p.67 ↗(www.ipa.go.jp) / 公式問題冊子 p.68 ↗(www.ipa.go.jp)
2011年度 秋期 午後
参照した公式資料
IPAが公開した2011年度 秋期 午後の問題・解答資料です。

