旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。
2017年度 春期 午後の概要
ファイルの安全な受渡し
情報セキュリティ · 共通鍵暗号方式 / 公開鍵暗号方式 / 通信プロトコル / 費用対効果
インターネット経由で機密情報を含むファイルを受渡しする方式についての検討に関する問題である。電子メールに暗号化ファイルを添付し別メールで鍵を送る方式の問題点、公開鍵暗号方式における公開鍵の真正性の確認、並びに4社の協力会社に対するセキュリティ要件(機密度の高低、オンラインストレージ利用禁止規定)およびコスト(VPN環境構築・運用費、オンラインストレージ月額利用料、暗号化メールソフト導入・研修費)を比較して最適な受渡し方式を選定する各設問に答えよ。
- 設問1 ア
- 圧縮してから暗号化する方式は,暗号化してから圧縮する方式よりも解読が容易である。
- 設問1 イ
- 圧縮ファイルを暗号化してもファイル名は暗号化されない。
- 設問1 ウ
- 共通鍵暗号方式は,他の暗号方式よりも解読が容易である。
- 設問1 エ
- ファイルを添付したメールと,鍵を送信するメールの両方が盗聴される可能性がある。
- 設問2 a ア
- 共通鍵
- 設問2 a イ
- 公開鍵
- 設問2 a ウ
- ディジタル署名
- 設問2 a エ
- パスワード
- 設問2 a オ
- 秘密鍵
- 設問3 b, c ア
- VPNとファイルサーバ
- 設問3 b, c イ
- オンラインストレージサービス
- 設問3 b, c ウ
- 暗号化機能付きメールソフト
- 設問3 d ア
- 30,000
- 設問3 d イ
- 60,000
- 設問3 d ウ
- 150,000
- 設問3 d エ
- 300,000
- 設問3 d オ
- 700,000
- 設問3 d カ
- 750,000
- 設問3 d キ
- 1,500,000
解答・解説を表示
解答
設問1: エ, 設問2 a: イ, 設問3 b: ウ, 設問3 c: ア, 設問3 d: オ
解説
まず要点:暗号化したファイルと鍵を同じメール経路で送ると、経路を盗聴されれば両方取られて復号されます。公開鍵暗号方式では、手に入れた公開鍵が本当に相手のものかを証明書などで確かめないと、偽の鍵を渡す中間者攻撃を防げません。方式を選ぶときは、機密の高さによる決まりと、人数や期間から決まる費用を合わせて比べます。
解き方
- 同じ経路で暗号化ファイルと鍵を分けて送ると、どんな危険があるかをつかみます。
- 公開鍵暗号のしくみから、暗号化に必要な相手の鍵の種類と、本物か確かめる必要性を理解します。
- 会社ごとに機密の高さを確認し、機密「高」を扱う会社ではオンラインストレージを外します。
- 12か月の各方式の総費用(初期費用+月額×12)を計算し、一番安い方式と金額を求めます。
小問ごとの答え
- 小問 設問1:エ
- 暗号化ファイルと復号鍵を同一の通信経路である電子メールで別送しても、経路全体が盗聴された場合には両方を傍受されて容易に復号されるため安全とはいえません。
- 小問 設問2 a:イ
- 公開鍵暗号方式でファイルを暗号化して送信するには相手の「公開鍵」が必要です。第三者によるなりすましを防ぐため、相手本人の公開鍵であることを確認する必要があります。
- 小問 設問3 b:ウ
- Q社は機密度「高」のファイルを扱うためオンラインストレージは利用禁止です。VPN方式(初期10万+月5万×12か月=70万円)と暗号化メールソフト(3万円×5人=15万円)を比較すると暗号化メールソフトが安価です。
- 小問 設問3 c:ア
- S社は機密度「高」を扱うためオンラインストレージは使えません。暗号化メールソフト(3万円×25人=75万円)に対し、VPN方式は人数によらず70万円となるためVPN方式が最安となります。
- 小問 設問3 d:オ
- S社で選択すべき方式はVPNとファイルサーバであり、その費用は初期費用100,000円と12か月分の運用費用(50,000円×12=600,000円)の合計である700,000円となります。
覚えるポイント
- 暗号化ファイルと復号鍵を同一経路で送る方式は盗聴対策として無意味である。
- 公開鍵暗号方式でファイルを暗号化して送信する際は相手の公開鍵を使用する。
- コスト比較では利用人数に応じた従量課金と固定費用をプロジェクト全期間で合算する。
間違えやすいところ
- 公開鍵暗号で相手の秘密鍵をもらおうとしてしまう間違い。
- 機密の条件(高はオンラインストレージ禁止)を見落として最安を計算してしまうこと。
出題の前提:平成29年度春期基本情報技術者試験午後問1問題文および出題条件に基づく。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.5 ↗(www.ipa.go.jp) / 公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp) / 公式問題冊子 p.8 ↗(www.ipa.go.jp)
温度モニタ
ハードウェア · A/D変換 / 7セグメントLED / I/Oポート制御 / 割込み処理
温度検出器の出力をA/D変換器でディジタル化し、7セグメントLEDに0〜70℃の温度を8段階のレベル(数字1〜8)で表示する温度モニタシステムに関する問題である。LEDの点灯パターンに対応する出力ポートの形状データの算出、A/D変換器の出力値と検出温度範囲の関係、およびタイマ割込みプログラムの流れ図(ステータス確認の条件判定や表示出力命令)について答えよ。
- 設問1 a ア
- 66
- 設問1 a イ
- BE
- 設問1 a ウ
- DA
- 設問1 a エ
- F2
- 設問1 a オ
- FE
- 設問1 b ア
- 010
- 設問1 b イ
- 011
- 設問1 b ウ
- 100
- 設問1 b エ
- 101
- 設問1 b オ
- 110
- 設問1 c ア
- 40℃以上 50℃未満
- 設問1 c イ
- 45℃以上 55℃未満
- 設問1 c ウ
- 50℃以上 60℃未満
- 設問1 c エ
- 55℃以上 65℃未満
- 設問1 c オ
- 60℃以上 70℃未満
- 設問2 d ア
- GR < 0
- 設問2 d イ
- GR = 0
- 設問2 d ウ
- GR = 1
- 設問2 d エ
- GR > 1
- 設問2 e ア
- INPUT 1
- 設問2 e イ
- INPUT 2
- 設問2 e ウ
- INPUT 3
- 設問2 e エ
- OUTPUT 1
- 設問2 e オ
- OUTPUT 2
解答・解説を表示
解答
設問1 a: イ, 設問1 b: エ, 設問1 c: イ, 設問2 d: イ, 設問2 e: エ
解説
まず要点:センサなどのアナログ信号はA/D変換器でディジタル値に変え、CPUが処理します。ポートへ出すビットの並び(形状データ)で7セグメントLEDの点灯を直接制御します。機器を制御するときは、開始の合図を出したあとビジーステータスを繰り返し確認し、処理の完了を待ってから結果を取ったり次の機器へ出したりします。
解き方
- LEDの配線図から「6」を作る各セグメントの点灯(1/0)を調べ、8ビットの16進数データを求めます。
- 表1の決まりに従い、表示レベル6に対応するA/D変換器の2進数出力と、みなされる温度の範囲を求めます。
- 表2と表3のI/Oポート仕様を読み、A/D変換の完了待ちループの条件(0なら変換中)を判断します。
- 変換完了後に読んだ値から作った形状データを、LED(ポート1)へ書く命令を特定します。
小問ごとの答え
- 小問 設問1 a:イ
- 図2の「6」の表示では右上セグメントと小数点の2箇所が消灯(0)で残り6箇所が点灯(1)です。ビット7から順に対応させると2進数で10111110となり、16進数表記ではBEとなります。
- 小問 設問1 b:エ
- LEDに「6」が表示されているためレベルは6です。表1においてレベル1が000で10℃増すごとに1加算されるため、レベル6(50℃)のA/D変換器出力は2進表記で101となります。
- 小問 設問1 c:イ
- 中央値は高い側に近似されるため、50℃に近似される下限は40℃と50℃の中央である45℃(45℃以上)、上限は50℃と60℃の中央である55℃(55℃未満)となります。
- 小問 設問2 d:イ
- 表2よりポート2から読み込んだ値が0のときはA/D変換中を示します。変換完了まで待機ループを継続(Yes)するため、条件式dには「GR = 0」が入ります。
- 小問 設問2 e:エ
- レジスタGRに変換された形状データαが格納されており、表2よりLED表示を行うにはポート1に形状データを書き込むため、実行すべき擬似命令は「OUTPUT 1」となります。
覚えるポイント
- 7セグメントLEDの点灯パターンは各ビットと配線の対応を丁寧に対応づける。
- 刻み幅中央の丸め規則(以上・未満の境界の扱い)を正確に読み取ること。
- ポーリングによる完了待ちループでは、ビジーを表すステータス値を判定条件にする。
間違えやすいところ
- A/D変換の完了条件(0以外)と変換中の条件(0)を逆に考えてループ条件を間違えること。
- LEDの出力命令で入力命令(INPUT)と出力命令(OUTPUT)を取り違えるミス。
出題の前提:平成29年度春期基本情報技術者試験午後問2問題文および出題条件に基づく。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.9 ↗(www.ipa.go.jp) / 公式問題冊子 p.10 ↗(www.ipa.go.jp) / 公式問題冊子 p.11 ↗(www.ipa.go.jp) / 公式問題冊子 p.12 ↗(www.ipa.go.jp)
自治体ごみ分別データベースの設計変更と整合性制約
データベース · リレーショナルデータベース / 主キー制約 / 参照整合性制約 / UNIQUE制約 / CHECK制約
自治体の生活環境課におけるごみの出し方問合せデータベースに関する見直し案について、設問1〜3に答えよ。 【見直し案と課題】 従来のルール表は「区分ID」と「対象物ID」の複合主キーであったが、「同じ対象物でも大きさ等によって出し方を分ける」必要が生じたため、主キーとして「ルールID」を追加し、区分IDと対象物IDを主キーから外す変更を行う。また、問合せ記録表にはルールID項目を追加する。 さらに、新規登録ルールのレビューのため「登録状態」(値は'未公開'または'公開')項目を追加する。 〔設問1〕ルール表にルールIDを追加する理由として適切なものを選択肢から選べ。 〔設問2〕問合せ記録表にルールIDを追加する際の外部キー制約[ a ]と、追加するルールID項目に設定すべき制約の性質[ b ]について選べ。 〔設問3〕見直し後のDDLにおいて削除すべき制約[ c ]と、登録状態項目に追加すべき制約[ d ]を選べ。
- 設問1 ア
- 同じ区分IDの同じ対象物IDに対する出し方のルールを複数件登録できるようにする。
- 設問1 イ
- 同じ区分IDの異なる対象物IDに対する出し方のルールを登録できるようにする。
- 設問1 ウ
- 異なる区分IDの同じ対象物IDに対する出し方のルールを登録できるようにする。
- 設問2a ア
- 非NULL
- 設問2a イ
- NULL
- 設問2a ウ
- UNIQUE
- 設問2a エ
- 参照
- 設問2a オ
- 検査
- 設問2a カ
- 主キー
- 設問2b ア
- 非NULL制約は適用できない
- 設問2b イ
- UNIQUE制約を適用する
- 設問2b ウ
- 更新操作を行うことはできない
- 設問2b エ
- 主キー制約を適用する
- 設問3c ア
- 区分IDの項目及び対象物IDの項目のUNIQUE制約
- 設問3c イ
- 対象物IDの項目の非NULL制約
- 設問3c ウ
- 対象物IDの項目の参照制約
- 設問3c エ
- ルールIDの項目の主キー制約
- 設問3d ア
- CHECK(登録状態 IN('未公開','公開'))
- 設問3d イ
- CHECK(登録状態 IS NULL)
- 設問3d ウ
- UNIQUE('未公開','公開')
- 設問3d エ
- WHERE 登録状態 IN('未公開','公開')
解答・解説を表示
解答
設問1: ア, 設問2 a: エ, 設問2 b: ア, 設問3 c: ア, 設問3 d: ア
解説
まず要点:リレーショナルデータベースでは、主キー制約で行の一意性を守り、外部キー制約(参照制約)で表どうしの整合性を保ちます。1対多の重複を許す変更をするときは複合の一意制約を外し、列の値の範囲を限るときはCHECK制約を使います。
解き方
- 業務の変更(同じ対象物に複数ルールを許す)で、既存の複合キーや一意制約を外す必要があると確認します。
- ルール未確定のレコードをNULLで登録する流れを考え、外部キー列に非NULL制約を付けられるか判断します。
- DDLの書き方に従い、不要になった一意制約の削除と、値の範囲を限るCHECK制約の書き方を特定します。
小問ごとの答え
- 小問 設問1:ア
- 同一の対象物であっても大きさ等に応じて異なる分別や出し方が存在する場合、同一の(区分ID, 対象物ID)の組合せに対して複数のルール行を保持可能にする必要があるため、代理キーとして一意なルールIDを主キーに導入します。
- 小問 設問2 a:エ
- 問合せ記録表から参照先となるルール表の該当レコードを一意に特定して整合性を担保するため、外部キーによる「参照」制約を設定します。
- 小問 設問2 b:ア
- 問合せ時に該当する対象物が登録されていない場合、後日の登録まで区分IDやルール特定項目を未定(NULL)とする業務仕様があるため、非NULL制約は適用できません。
- 小問 設問3 c:ア
- DDL内の「UNIQUE (区分ID, 対象物ID)」が残っていると同一対象物に対してルールを1件しか保持できなくなるため、このUNIQUE制約を削除する必要があります。
- 小問 設問3 d:ア
- 列の値が取り得る候補を限定するにはCHECK制約を用い、IN演算子で'未公開'と'公開'のいずれかに制限する定義を追加します。
覚えるポイント
- 外部キー列であっても業務上で未定の状態が存在する場合はNULLを許容する必要がある。
間違えやすいところ
- 業務でNULLが発生する運用を見落とし、外部キーに非NULL制約を付けてしまう間違い。
出題の前提:問題文に記載された業務仕様および標準的なSQL構文規則に基づく。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.13 ↗(www.ipa.go.jp) / 公式問題冊子 p.14 ↗(www.ipa.go.jp) / 公式問題冊子 p.15 ↗(www.ipa.go.jp) / 公式問題冊子 p.16 ↗(www.ipa.go.jp)
無線LANにおけるCSMA/CA手順と実効伝送速度の計算
ネットワーク · 無線LAN / CSMA/CA / データ送信速度 / 伝送効率
無線LANにおけるデータフレームの送信手順(CSMA/CAに基づくキャリアセンス、待機時間W1・W2、ACK送達確認)に関する記述を読んで、設問1〜3に答えよ。 【通信条件】 ・データフレームの最大データ長:1,460バイト ・物理層通信速度:54Mビット/秒 ・最大データ長のデータフレーム送信時間:248マイクロ秒 ・ACKフレーム送信時間:24マイクロ秒 ・待機時間W1の平均:101.5マイクロ秒、待機時間W2:16マイクロ秒 ・伝送効率 = データ送信速度 ÷ 物理層の通信速度 〔設問1〕 最大データ長送信時のデータ送信速度(最大)はおよそ[ a ]Mビット/秒である。 また、機器A単独で1Mバイト送信する場合(①)と、機器A・Bが同時に1Mバイト送信を開始する場合(②)で、機器Aの送信完了時間を比較すると[ b ]。 〔設問2〕 機器Bが離れてB-C間の物理層速度が24Mビット/秒に低下したときの動作の変化[ c1, c2 ]の組合せを選べ。 〔設問3〕 伝送効率の向上に寄与する工夫を挙げたものを選べ。
- 設問1a ア
- 4
- 設問1a イ
- 6
- 設問1a ウ
- 30
- 設問1a エ
- 47
- 設問1b ア
- ①の方が短い
- 設問1b イ
- ②の方が短い
- 設問1b ウ
- 等しい
- 設問2c ア
- c1: 機器Aが、機器Bによるフレーム送信終了まで待機する時間が長くなる / c2: 低下する
- 設問2c イ
- c1: 機器Aが、W1だけ待機する回数が多くなる / c2: 低下する
- 設問2c ウ
- c1: 機器Aと機器Cの間の物理層の通信速度が、機器Bと機器Cの間の物理層の通信速度と比べて向上する / c2: 向上する
- 設問2c エ
- c1: 機器Aと機器Cの間の物理層の通信速度に与える影響はない / c2: 変わらない
- 設問2c オ
- c1: 機器BのW1が長くなり、機器Aの通信が優先される / c2: 向上する
- 設問2c カ
- c1: 送信されるデータの量は変わらない / c2: 変わらない
- 設問3 ア
- (I)
- 設問3 イ
- (I)と(II)
- 設問3 ウ
- (I)と(III)
- 設問3 エ
- (II)
- 設問3 オ
- (II)と(III)
- 設問3 カ
- (III)
解答・解説を表示
解答
設問1 a: ウ, 設問1 b: ア, 設問2 c: ア, 設問3: イ
解説
まず要点:無線LAN(IEEE 802.11)はCSMA/CAで衝突を避けるため、物理層の速度だけでなく、待機時間(W1・W2)やACKの確認などの余分な時間が実効速度と伝送効率に大きく影響します。
解き方
- 1フレーム送信の1サイクル時間(W1待機+データ送信+W2待機+ACK送信)を足し、データのビット数を時間で割ってデータ送信速度を求めます。
- 同じ帯域を共有する他の端末の低速化が、自分の待ち時間の増加に与える影響を考えます。
- 伝送効率(実効速度÷物理層速度)の定義から、固定の余分な時間を減らす効果と物理速度を上げる影響を評価します。
小問ごとの答え
- 小問 設問1 a:ウ
- 1フレーム送信にかかる合計時間は 101.5 + 248 + 16 + 24 = 389.5マイクロ秒です。送信データ量は 1,460 × 8 = 11,680ビットなので、速度は 11,680 ÷ 389.5 ≒ 29.99Mビット/秒となり、約30Mビット/秒です。
- 小問 設問1 b:ア
- 機器Bが同時に送信を開始すると同一媒体上で待機や送信待ちが交互に発生するため、単独で送信する①の方が所要時間は短くなります。
- 小問 設問2 c:ア
- 機器Bの物理層速度が低下すると機器Bのフレーム送信時間が延びるため、機器Aがキャリアセンスで待機する時間(c1)が長くなり、結果として機器Aのデータ送信速度(c2)は低下します。
- 小問 設問3:イ
- ACK削減(I)やフレーム集約(II)は固定待機時間のオーバーヘッドを削減して伝送効率を向上させます。一方、物理層速度向上(III)は分母が増大し相対的待機比率が増えるため伝送効率自体は低下します。
覚えるポイント
- 伝送効率=データ送信速度÷物理層速度であり、物理速度を上げると待機オーバーヘッドの割合が増えて伝送効率は下がる。
間違えやすいところ
- 物理速度を上げればデータ送信速度も上がるので伝送効率も上がると誤解してしまうこと。
出題の前提:問題文中に提示された通信時間パラメータおよび伝送効率の定義式に基づく。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.17 ↗(www.ipa.go.jp) / 公式問題冊子 p.18 ↗(www.ipa.go.jp) / 公式問題冊子 p.19 ↗(www.ipa.go.jp) / 公式問題冊子 p.20 ↗(www.ipa.go.jp)
購買システムにおける注文書出力処理のアルゴリズムとテスト設計
ソフトウェア設計 · 流れ図 / ホワイトボックステスト / ブラックボックステスト / コントロールブレイク
購買システムにおける注文書出力処理について、未出力の注文データを購買グループ名・希望納期・注文番号・注文枝番の昇順に整列して出力ワーク領域(2次元配列)に格納する出力準備処理の流れ図(図5)、ホワイトボックステストデータ(図6)、およびテスト手法に関する記述を読み、設問1〜3の各問いに答えよ。
- ア
- 設問1: 0 / 設問2(c): ① / 設問2(d): 購買グループ名がAグループである注文情報を1件追加した / 設問3: 流れ図の全ての分岐処理が実行されたことを確認する。
- イ
- 設問1: 1 / 設問2(c): ② / 設問2(d): 購買グループ名がBグループである注文情報を3件追加した / 設問3: 入力として渡した引数の注文データ,注文情報件数の内容が仕様どおりであることを確認する。
- ウ
- 設問1: 2 / 設問2(c): ③ / 設問2(d): 購買グループ名がCグループである注文情報を2件追加した / 設問3: 入力として渡した引数の内容に対して出力ワーク領域の内容が仕様どおりであることを確認する。
- エ
- 設問1: 3 / 設問2(c): ④ / 設問2(d): 購買グループ名がCグループである注文情報を3件追加した
- オ
- 設問1: 4
- カ
- 設問1: 5
- キ
- 設問1: 50
解答・解説を表示
解答
設問1 a: イ, 設問1 b: カ, 設問2 c: ウ, 設問2 d: イ, 設問3: ウ
解説
まず要点:帳票の出力処理では、キーブレイク(グループの変わり目)やページあふれ(1ページの最大行数に達すること)に合わせて改ページと行番号のリセットが必要です。ホワイトボックステストは内部の分岐や経路の網羅を確かめ、ブラックボックステストは中身によらず入出力の仕様への適合を確かめます。
解き方
- 設問1: ページ内の出力順を表す添字の初期値と、1ページの最大明細5件の条件からaとbの値を求めます。
- 設問2: 図6の各購買グループの件数(A:3件, B:2件, C:1件)からまだ通っていない処理を特定し、ページあふれの分岐を通すのに必要な追加件数を計算します。
- 設問3: ソフトウェアテストの分類から、ブラックボックステストで確かめるべき入出力の関係を選びます。
小問ごとの答え
- 小問 設問1 a:イ
- 改ページ発生時または購買グループが変わった際、注文書のページ内での出力行位置を表す出力件数は先頭位置である1に初期化・リセットされるため、aには1が入ります。
- 小問 設問1 b:カ
- 注文書1ページあたり最大5件格納できるため、現在の出力件数が5未満であれば同一ページに続けて出力し、5に達した場合は改ページ処理を行う判定条件「出力件数 < 5」とするため、bには5が入ります。
- 小問 設問2 c:ウ
- 図6のテストデータでは各グループの件数が最大でもAグループの3件であり、1ページの制限件数5件を超えないため、ページあふれに伴う改ページ初期化処理③が一度も実行されません。
- 小問 設問2 d:イ
- 処理③を実行するには同一グループ内で5件を超えてページ境界をまたぐ必要があります。Bグループ(元データ2件)に3件追加して計5件にすると、5件目の出力後に出力件数<5が偽となって処理③が実行されます。
- 小問 設問3:ウ
- ブラックボックステストではプログラムの内部構造を考慮せず、外部仕様に基づき引数等の入力に対する出力ワーク領域の結果が仕様を満たしているかを検証します。
覚えるポイント
- 改ページ制御の判定では、現在行数とページ最大行数の比較境界(未満か以下か)と初期値の設定を正確に追跡する。
間違えやすいところ
- 配列の添字が0始まりか1始まりかを見落とし、出力件数のリセット値(a)を0と間違えやすい。
- 5件出すときに「何件目で改ページの判定が行われるか」という流れの順序を誤解しやすい。
出題の前提:基本情報技術者試験 午後問題 ソフトウェア設計(平成29年度春期 問5)
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.21 ↗(www.ipa.go.jp) / 公式問題冊子 p.22 ↗(www.ipa.go.jp) / 公式問題冊子 p.23 ↗(www.ipa.go.jp) / 公式問題冊子 p.24 ↗(www.ipa.go.jp) / 公式問題冊子 p.25 ↗(www.ipa.go.jp) / 公式問題冊子 p.26 ↗(www.ipa.go.jp)
ウォータフォールモデルにおけるプロジェクトの要員計画と平準化
プロジェクトマネジメント · 要員計画 / 資源ヒストグラム / 工数見積り / 平準化
新システムの二段階開発(一期開発・二期開発)における工程ごとの工数および配月数(表1)に基づき、A社要員数、各月のB社要員数、制約条件違反が発生する月、およびB社総要員数の平準化手法について、設問1・2の各問いに答えよ。
- ア
- 設問1(a,b): 2 / 設問1(c): 5月 / 設問1(d): 一期開発を3に、二期開発を4にする / 設問2(e,f): 1
- イ
- 設問1(a,b): 3 / 設問1(c): 6月 / 設問1(d): 一期開発を3に、二期開発を5にする / 設問2(e,f): 2
- ウ
- 設問1(a,b): 11 / 設問1(c): 7月 / 設問1(d): 一期開発を4に、二期開発を3にする / 設問2(e,f): 3
- エ
- 設問1(a,b): 12 / 設問1(c): 8月 / 設問1(d): 一期開発を4に、二期開発を5にする / 設問2(e,f): 4
- オ
- 設問1(a,b): 14 / 設問2(e,f): 5
- カ
- 設問1(a,b): 42 / 設問2(e,f): 6
解答・解説を表示
解答
設問1 a: エ, 設問1 b: ア, 設問1 c: ウ, 設問1 d: ウ, 設問2 e: ウ, 設問2 f: オ
解説
まず要点:プロジェクトの資源管理では、特定スキル要員の参画比率や専従の制約を満たしながら、要員の急な増減を抑える要員平準化(リソース・レベリング)を行います。期間全体の総工数や平均要員数を計算し、ピーク時の工数を前後の工程へ移して均等にします。
解き方
- 設問1(a,b): 各工程の月ごとの必要人数を出し、外部設計の80%制約を満たす全期間固定のA社要員数と、一期外部設計でのB社要員数を求めます。
- 設問1(c,d): 表2の要員配置でA社要員の稼働がゼロになる月を探し、プログラム開発期間の調整で解消する案を選びます。
- 設問2(e,f): 表3の3月〜5月の各月のB社総要員数の合計と平均を出し、4月のピークから3月と5月へ移す人数を求めます。
小問ごとの答え
- 小問 設問1 a:エ
- 一期の外部設計要員は42.0÷3=14人、二期は38.1÷3=12.7から切り上げて13人。80%以上の割当てを満たすには一期で14×0.8=11.2人より12人必要であり、二期の13×0.8=10.4人より11人必要です。両方を満たす最少の全期間固定要員数は12人となります。
- 小問 設問1 b:ア
- 一期開発の外部設計工程の各月必要要員は14人であり、A社要員が12人割り当てられるため、不足分として割り当てられるB社の要員数は14-12=2人となります。
- 小問 設問1 c:ウ
- 表2の案では2018年7月に一期開発の全工程が完了し、二期開発はB社専任であるプログラム開発工程のみが進行しているため、A社要員全員に担当工程がない状態が発生します。
- 小問 設問1 d:ウ
- 二期開発のプログラム開発を3か月に短縮すると2018年7月から二期の結合テスト(A社要員を割当て可能)が開始されるため、全期間でA社要員に作業を割り当てる条件を満たせます。
- 小問 設問2 e:ウ
- 表3の2018年3月〜5月におけるB社総要員数は3月が37人、4月が48人、5月が35人で合計120人、平均40人です。4月から3月へ3人移動させることで3月を40人に平準化できます。
- 小問 設問2 f:オ
- 4月の突出した要員から5月へ5人移動させることで、4月は48-3-5=40人、5月は35+5=40人となり、対象3か月間の各月の要員数が均等に平準化されます。
覚えるポイント
- 月別要員数の計算では小数点の切り上げルールに注意し、固定要員数はピーク工程ではなく制約条件を満たす最小値で決定する。
間違えやすいところ
- 外部設計工程の80%要件を一期と二期の両方で比べず、片方だけで計算してしまう。
- 要員の平準化で、3か月間の総要員数から平均を出さずに勘で人数を振り分けてしまう。
出題の前提:基本情報技術者試験 午後問題 プロジェクトマネジメント(平成29年度春期 問6)
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.27 ↗(www.ipa.go.jp) / 公式問題冊子 p.28 ↗(www.ipa.go.jp) / 公式問題冊子 p.29 ↗(www.ipa.go.jp) / 公式問題冊子 p.30 ↗(www.ipa.go.jp)
食品メーカにおける在庫補充方法の変更と決定表による在庫管理
システム戦略 · 在庫管理 / 決定表(デシジョンテーブル) / キャッシュフロー / 補充方式
食品メーカM社における在庫補充方法の変更に関する記述を読み、設問1〜3に答えよ。M社ではコスト削減やキャッシュフロー改善のため、在庫補充方法を見直すことにした。従来の『毎週月曜日に4週間分の出荷予想量と在庫量を比較し、不足分を補充する方式』から、配送倉庫、商品群、賞味期限ごとに在庫基準量を設定し、在庫基準量に満たない差を補充する方式へ移行する。
- a-ア
- 売掛金の回収期間を短縮
- a-イ
- 買掛金の支払期間を延長
- a-ウ
- キャッシュの回収期間を短縮
- a-エ
- 資金の調達期間を延長
- b-ア
- 在庫スペースの縮小による保管コスト
- b-イ
- 商品種類の減少による管理コスト
- b-ウ
- 商品種類の減少による商品開発コスト
- b-エ
- フリーキャッシュフローの減少による事務コスト
- c-ア
- 欠品によって販売機会を逸失するリスクの低減
- c-イ
- 限界利益率の低下
- c-ウ
- 賞味期限切れが発生するリスクの低減
- c-エ
- 損益分岐点販売量の増加
- d-ア
- 短期品/中期品
- d-イ
- 短期品/長期品
- d-ウ
- 中期品/短期品
- d-エ
- 中期品/長期品
- d-オ
- 長期品/短期品
- d-カ
- 長期品/中期品
- e-ア
- マトリクス設定パターン ア
- e-イ
- マトリクス設定パターン イ
- e-ウ
- マトリクス設定パターン ウ
- e-エ
- マトリクス設定パターン エ
- e-オ
- マトリクス設定パターン オ
- e-カ
- マトリクス設定パターン カ
- f-h-ア
- 30
- f-h-イ
- 60
- f-h-ウ
- 70
- f-h-エ
- 120
- f-h-オ
- 170
- f-h-カ
- 180
- f-h-キ
- 230
- f-h-ク
- 300
- f-h-ケ
- 400
- f-h-コ
- 440
解答・解説を表示
解答
設問1 a: ウ, 設問1 b: ア, 設問1 c: ウ, 設問2 d: カ, 設問2 e: エ, 設問3 f: イ, 設問3 g: ア, 設問3 h: ケ
解説
まず要点:在庫管理では、需要予測に合わせて在庫基準量を見直すことで、在庫を持つ期間や保管スペースを縮め、キャッシュフローの改善と廃棄損失の防止を図ります。決定表は、条件の組み合わせと対応する動作をもれなく整理する技法です。
解き方
- 業務ルール(遠隔地倉庫/通常倉庫、商品群A/B/C、賞味期限の区分)から、決定表の各条件の列と行動を対応付けます。
- 表2の出荷予想量から、各商品の従来方式(4週間分)と新方式(基準量分)の補充量と補充後の在庫量をそれぞれ計算して差を求めます。
小問ごとの答え
- 小問 設問1 a:ウ
- 原材料購入で支出された現金が商品の販売を通じて回収されるまでの期間(キャッシュ・コンバージョン・サイクル)を短縮できます。
- 小問 設問1 b:ア
- 保管する在庫総量を圧縮することで、必要となる倉庫面積が狭まり、在庫スペースの縮小による保管コストを削減できます。
- 小問 設問1 c:ウ
- 在庫としての滞留期間が短くなることで、食品の品質劣化や賞味期限切れによる廃棄リスクを大きく低減できます。
- 小問 設問2 d:カ
- 表1の条件行では遠隔地倉庫がYのときの行動行のXの位置から、上段条件が長期品、下段条件が中期品に対応します。
- 小問 設問2 e:エ
- 通常倉庫(遠隔地倉庫N)において非A群の中期品・長期品は3週分、A群短期品・中期品は2週分、A群長期品は3週分等となり、エの列パターンに合致します。
- 小問 設問3 f:イ
- 商品PはA群短期品で在庫基準量は2週分の180百箱。現在在庫120百箱のため補充量は180-120=60百箱となります。
- 小問 設問3 g:ア
- 商品Rの従来補充量は130-30=100、新方式補充量は100-30=70であり、差引30百箱の削減となります。
- 小問 設問3 h:ケ
- 補充後在庫は従来方式が4週合計の1,130百箱、新方式は各商品の基準量合計730百箱となるため、1,130-730=400百箱の削減です。
覚えるポイント
- 決定表の条件行と行動行の対応関係を正確に読み解くこと。
間違えやすいところ
- 補充量そのものと、補充後の在庫量(基準量)を混同して計算してしまうこと。
出題の前提:平成29年度春期 基本情報技術者試験 午後問7
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.31 ↗(www.ipa.go.jp) / 公式問題冊子 p.32 ↗(www.ipa.go.jp) / 公式問題冊子 p.33 ↗(www.ipa.go.jp) / 公式問題冊子 p.34 ↗(www.ipa.go.jp)
ダイクストラ法による最短経路の探索アルゴリズム
データ構造及びアルゴリズム · ダイクストラ法 / 最短経路問題 / 配列操作 / グラフアルゴリズム
地点数N(N>1)の経路グラフにおいて、出発地から目的地に至る最短経路とその距離を求める副プログラムShortestPathに関する記述及びプログラムを読んで、設問1・2に答えよ。ダイクストラ法を用いて、未確定の地点の中から出発地からの距離が最小の地点を順次確定し、隣接地点への最短距離候補(pDist)及び直前経由地(pRoute)を更新していく。
- a-ア
- not(pFixed[i])
- a-イ
- not(pFixed[j])
- a-ウ
- pFixed[i]
- a-エ
- pFixed[j]
- b-ア
- dp
- b-イ
- nPoint
- b-ウ
- nPoint - 1
- b-エ
- sp
- b-オ
- sPoint
- c-d-ア
- pRoute[dp]
- c-d-イ
- pRoute[i]
- c-d-ウ
- pRoute[j]
- c-d-エ
- pRoute[sp]
- c-d-オ
- sRoute[dp]
- c-d-カ
- sRoute[i]
- c-d-キ
- sRoute[j]
- c-d-ク
- sRoute[sp]
- e-ア
- 2
- e-イ
- 3
- e-ウ
- 4
- e-エ
- 5
- e-オ
- 6
- f-ア
- 0, 2, 8, 4, 5, 10, 14
- f-イ
- 0, 2, 8, 4, 5, 10, ∞
- f-ウ
- 0, 2, 8, 4, 5, 11, 14
- f-エ
- 0, 2, 8, 4, 5, 11, ∞
- f-オ
- 0, 2, 8, 4, 5, 12, 14
- f-カ
- 0, 2, 8, 4, 5, 12, ∞
- g-ア
- 0, 0, 0, 0, 1, 3, 0
- g-イ
- 0, 0, 0, 0, 1, 3, 5
- g-ウ
- 0, 0, 0, 0, 2, 2, 0
- g-エ
- 0, 0, 0, 0, 2, 2, 5
- g-オ
- 0, 0, 4, 0, 1, 2, 0
- g-カ
- 0, 0, 4, 0, 2, 2, 5
解答・解説を表示
解答
設問1 a: イ, 設問1 b: オ, 設問1 c: キ, 設問1 d: イ, 設問2 e: イ, 設問2 f: カ, 設問2 g: ア
解説
まず要点:ダイクストラ法は、まだ確定していない地点のうち、出発地からの暫定距離が最小の地点を1つ確定し、その地点を通る隣接地点への距離を更新していくことで、負の重みがないグラフの最短経路を効率よく求めます。
解き方
- 未確定地点のうちpDistが最小の地点を探して確定する処理と、確定地点から距離を更新する流れを整理します。
- 経路復元の部分(40〜48行目)で、目的地dpからpRouteをたどりながらsRouteへ順に格納する手順を確認します。
- 図1のグラフに従って1回目・2回目・3回目の各ステップでpDist、pFixed、pRouteがどう変わるかを手計算で追います。
小問ごとの答え
- 小問 設問1 a:イ
- 未確定の地点の中から最小距離の地点を探すため、ループ変数jが未確定であることを示すnot(pFixed[j])が入ります。
- 小問 設問1 b:オ
- 探索処理で特定された最短距離の地点sPointを確定済みにするため、pFixed[sPoint] ← trueとします。
- 小問 設問1 c:キ
- 目的地から出発地への経路を格納する配列sRouteに、インデックスjを用いて地点番号iを格納するためsRoute[j]が入ります。
- 小問 設問1 d:イ
- 地点iの直前に経由した地点を取得してiを更新するため、pRoute[i]が入ります。
- 小問 設問2 e:イ
- 3回目の繰返しで未確定地点のうち距離最小となるのは地点3(pDist[3]=4)であるため、sPointには3が代入されます。
- 小問 設問2 f:カ
- 3回目の処理終了時、地点3からの隣接更新によりpDist[5]は4+8=12となりますが地点6は未到達のため∞のままであり、カの配列となります。
- 小問 設問2 g:ア
- 地点3からの更新で地点5の直前経由地が3となるため、pRoute[5]=3となり、配列全体はアの「0, 0, 0, 0, 1, 3, 0」となります。
覚えるポイント
- ダイクストラ法では、確定した地点からのエッジのみを走査して隣接ノードの暫定距離を緩和します。
間違えやすいところ
- 未確定地点のうち暫定距離が最小の地点を選ぶ処理で、確定済みフラグを見落とすこと。
出題の前提:平成29年度春期 基本情報技術者試験 午後問8
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.35 ↗(www.ipa.go.jp) / 公式問題冊子 p.36 ↗(www.ipa.go.jp) / 公式問題冊子 p.37 ↗(www.ipa.go.jp) / 公式問題冊子 p.38 ↗(www.ipa.go.jp) / 公式問題冊子 p.39 ↗(www.ipa.go.jp) / 公式問題冊子 p.40 ↗(www.ipa.go.jp)
マーク式試験の答案採点プログラム(C言語)
ソフトウェア開発(C言語) · ビット演算 / ビットカウントアルゴリズム / 論理積・論理和
マーク式試験の答案を採点するC言語プログラムに関する次の設問1〜3に答えよ。 〔プログラムの説明〕 1問当たりの選択肢数は16個以下であり、unsigned int型(16ビット)の各ビットで選択肢a, b, …へのマーク状態を表す(最上位ビットから順に対応)。正答および受験者の解答はそれぞれ配列 ansC[], ansE[] に格納されている。 type[] には、答えを1つマークする問い(type[i] = 1)または複数マークする問い(type[i] = n, 2 <= n <= 8)が設定される。 関数の仕様および各設問のコードに基づき、各空欄に入る適切な記述を選択せよ。
- ア
- 設問1 a〜c: 2 / 設問2 d: 0001 0000 0…0 / 設問2 e: 演算子&&と&とは実行する演算の内容が同じなので、正しい結果を返す / 設問3 f: [0, 0, 1]T / 設問3 g: 0…0 0…0
- イ
- 設問1 a〜c: 3 / 設問2 d: 0100 0000 0…0 / 設問2 e: 演算子&&はビットごとの論理積を求めることはしないので、誤った結果を返す / 設問3 f: [0, 0, 3]T / 設問3 g: 0000 1000 0…0
- ウ
- 設問1 a〜c: ansC[i] / 設問2 d: 0100 1111 1…1 / 設問2 e: 変数workには実行前の値が保持されたまま変わらないので、無限ループになる / 設問3 f: [0, 1, 0]T / 設問3 g: 0101 0000 0…0
- エ
- 設問1 a〜c: ansC[i] & ansE[i] / 設問2 d: 1001 0000 0…0 / 設問3 f: [0, 1, 2]T / 設問3 g: 0101 1000 0…0
- オ
- 設問1 a〜c: ansC[i] | ansE[i] / 設問3 f: [1, 0, 0]T
- カ
- 設問1 a〜c: ansE[i] / 設問3 f: [1, 0, 2]T
- キ
- 設問1 a〜c: type[i]
- ク
- 設問1 a〜c: type[i] + 1
解答・解説を表示
解答
設問1 a: カ, 設問1 b: キ, 設問1 c: エ, 設問2 d: イ, 設問2 e: イ, 設問3 f: ア, 設問3 g: イ
解説
まず要点:C言語では、ビットごとの論理演算(&や|)と、条件の真偽を扱う論理演算子(&&や||)は別物なので、混同すると結果が変わります。&は1ビットずつ両方が1のときだけ1にし、&&は全体が真か偽かだけを判定します。また、work & (work - 1) のように2進数のビットを操作すると、1の個数を数えたり最下位の1を消したりできます。
解き方
- 設問1では、複数マークの採点ルール(n個以下かどうかの判定と、正答と解答がどちらも1のビットの数え方)を、プログラム1のif文の条件とcountMarkBitsの引数に当てはめます。
- 設問2では、work & (work - 1) を実際の2進数で計算し、いちばん下の1が0に消えることを確かめます。さらに、&&に変えたときの動きの違いを考えます。
- 設問3では、順不同形式に直したコードを追い、type[i]が11から13まで変わる間のsumCとsumEの移り変わりと、mark[i]に値が入る時点(type[i]が13のときだけ計算して格納)を確かめます。
小問ごとの答え
- 小問 設問1 a:カ
- 表1より、複数マーク問では受験者解答ansE[i]中の1のビット数がn以下(type[i]以下)であるかを確認するため、countMarkBits(ansE[i]) <= type[i] と比較します。したがって空欄aはansE[i](カ)です。
- 小問 設問1 b:キ
- 表1の「ansE[i]中の1のビットの個数がn+1個以上なら0点、n個以下なら…」という条件より、正解マーク数nが格納されているtype[i]以下を判定するため、空欄bはtype[i](キ)です。
- 小問 設問1 c:エ
- 正答ansC[i]と受験者解答ansE[i]の「対応するビットがともに1である個数」を数えるため、ビット単位の論理積をとった値ansC[i] & ansE[i]をcountMarkBitsに渡します。よって空欄cはエです。
- 小問 設問2 d:イ
- work = work & (work - 1) は最下位の1ビットを0クリアする定石アルゴリズムです。0101 0000 0...0(2進)から1を引くと0100 1111 1...1となり、これと元の値とのビット積(&)は0100 0000 0...0となります。
- 小問 設問2 e:イ
- &&は論理積演算子であり、両オペランドが真(0以外)のときは1(真)を返します。ビット単位の論理積(&)を行わないため、誤った採点結果を返します。
- 小問 設問3 f:ア
- 順不同形式の採点修正プログラムでは、先頭問(type=11)から末尾問(type=13)まで各問のsumEとsumCを集計し、type=13の行でmark[i] = countMarkBits(sumC & sumE)を実行します。i=20, 21ではmark[i]に値が設定されないため初期値0のままであり、i=22(問23)でのみ採点結果が代入されます。図4の答案データでは、ansE[20]はビット4のみが1(1個)、ansE[21]もビット4のみが1(1個)で条件を満たしsumEにORされます。一方ansE[22]はビット2と4が1(2個)のためcountMarkBits == 1を満たさずsumEには反映されません。最終的にsumE = 0000 1000 0...0、sumC = 0101 1000 0...0となり、sumC & sumE = 0000 1000 0...0(1ビットのみ一致)となるため、mark[22] = 1となります。よってmark[20]=0, mark[21]=0, mark[22]=1(ア)です。
- 小問 設問3 g:イ
- sumEは初期値0から、countMarkBits(ansE[i]) == 1を満たす答案のみがOR結合されます。図4よりansE[20](1個)とansE[21](1個)はいずれも0000 1000 0...0であり、ansE[22]は1が2個あるため無視されます。したがってsumEには0000 1000 0...0(イ)が格納されます。
覚えるポイント
- work & (work - 1) は最下位の立っている1ビットを消去する常套句である。
- ビット演算子(&, |)と論理演算子(&&, ||)の混同に注意する。
間違えやすいところ
- 順不同の採点で、mark[20]やmark[21]に途中の点数が入る(または1問ごとに採点される)と勘違いし、fをオやカと答えてしまう間違いです。
- ansE[22]は1のビットが2個あるためsumEのORの対象から外れる、という決まりを見落とし、gをエと間違えるミスです。
出題の前提:平成29年度春期基本情報技術者試験午後問題・問9および公式解答例・採点講評に基づく。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.41 ↗(www.ipa.go.jp) / 公式問題冊子 p.42 ↗(www.ipa.go.jp) / 公式問題冊子 p.43 ↗(www.ipa.go.jp) / 公式問題冊子 p.44 ↗(www.ipa.go.jp) / 公式問題冊子 p.45 ↗(www.ipa.go.jp) / 公式問題冊子 p.46 ↗(www.ipa.go.jp)
売上集計プログラム(COBOL)
ソフトウェア開発(COBOL) · 整列(SORT) / コントロールブレイク / 集計処理・テーブル操作
順ファイルに記録された売上伝票データを集計し、売上マスタファイルに出力するCOBOLプログラムに関する次の設問1、2に答えよ。 各売上伝票レコード(SAL-REC)は、支店番号(2桁)、伝票番号(6桁)、売上日(8桁:YYYYMMDD)、売上金額(6桁)からなる。プログラムは売上伝票ファイルをソートし、月別・支店別に集計して売上マスタファイル(MST-REC)を作成する。 プログラムおよび設問の変更内容に基づき、各空欄に入る適切な記述を選択せよ。
- ア
- 設問1 a: SRT-AMOUNT / 設問1 b: MST-YYYYMM = SRT-YYYYMM / 設問1 c,d: ADD MST-BRANCH(CNT) TO MST-AMOUNT / 設問2 e: 行番号30と31の間 / 設問2 f: 1 THRU 12 / 設問2 g: ADD 1 TO CR-QUART
- イ
- 設問1 a: SRT-BRANCH / 設問1 b: MST-YYYYMM NOT = SRT-YYYYMM / 設問1 c,d: ADD MST-BRANCH(SRT-BRANCH) TO MST-AMOUNT / 設問2 e: 行番号40と41の間 / 設問2 f: 4 THRU 3 / 設問2 g: ADD 3 TO CR-QUART
- ウ
- 設問1 a: SRT-DATE / 設問1 b: MST-YYYYMM = ZERO / 設問1 c,d: ADD SRT-AMOUNT TO MST-BRANCH(CNT) / 設問2 e: 行番号47と48の間 / 設問2 f: 4, 7, 10, 1 / 設問2 g: MOVE CNT TO CR-QUART
- エ
- 設問1 a: SRT-NO / 設問1 b: SRT-YYYYMM = ZERO / 設問1 c,d: ADD SRT-AMOUNT TO MST-BRANCH(SRT-BRANCH) / 設問2 e: 行番号52と53の間 / 設問2 f: 6, 9, 12, 3 / 設問2 g: MOVE ZERO TO CR-QUART
- オ
- 設問1 c,d: MOVE SRT-AMOUNT TO MST-BRANCH(SRT-BRANCH)
解答・解説を表示
解答
設問1 a: ウ, 設問1 b: イ, 設問1 c: エ, 設問1 d: ア, 設問2 e: エ, 設問2 f: エ, 設問2 g: ア
解説
まず要点:COBOLで集計するプログラムでは、並べ替えたキーが変わったところ(キーブレイク)を見つけて、小計を出し・初期化し・新しいキーを控える、という決まった処理の形を覚えることが大切です。また、OCCURSで宣言した表(配列)に添字を使って金額を足し込む基本パターンも押さえます。
解き方
- 設問1では、SORT文のキー指定(売上日の昇順)、ADD-PROCでの年月が変わったときの判定、各伝票を支店の表に足す文、月間合計を求めるループの加算文を順に考えます。
- 設問2では、四半期集計を入れる場所(月ごとの集計の後でマスタを書き出す前)と、四半期末の月を表す条件(6, 9, 12, 3)、書き出した後に四半期カウンタを1増やす処理を探します。
小問ごとの答え
- 小問 設問1 a:ウ
- 月別集計を行うため、売上日順にソートする必要があります。整列用レコードSRT-RECの売上日フィールドはSRT-DATE(8桁:年月+日)であるため、空欄aはウです。
- 小問 設問1 b:イ
- 前レコードと現在レコードの年月を比較して月が変わった(コントロールブレイク発生)時に前月分のマスタ出力(WRI-PROC)を行うため、条件式は MST-YYYYMM NOT = SRT-YYYYMM(イ)となります。
- 小問 設問1 c:エ
- ADD-PROC内で読み込んだ各伝票の売上金額(SRT-AMOUNT)を、該当する支店(SRT-BRANCH)の集計領域に加算するため、ADD SRT-AMOUNT TO MST-BRANCH(SRT-BRANCH)(エ)が入ります。
- 小問 設問1 d:ア
- WRI-PROC内で全8支店の売上金額を合算して当月の全社合計(MST-AMOUNT)を求めるループ処理であるため、ADD MST-BRANCH(CNT) TO MST-AMOUNT(ア)が入ります。
- 小問 設問2 e:エ
- 四半期の判定・出力は各月の集計完了後、かつマスタファイルへの書き出し直前に行う必要があります。したがって、月間合計の計算(行52)完了後でマスタ出力(行53 WRITE MST-REC)の直前である「行番号52と53の間」(エ)に追加します。
- 小問 設問2 f:エ
- 四半期末月は、第1四半期(4〜6月)の6月、第2四半期(7〜9月)の9月、第3四半期(10〜12月)の12月、第4四半期(1〜3月)の3月です。したがって88番レベルの条件値は 6, 9, 12, 3(エ)となります。
- 小問 設問2 g:ア
- 四半期の売上を出力した後、次の四半期(1ST→2ND→3RD→4TH)に進めるため、四半期番号カウンタCR-QUARTを1加算します。したがって ADD 1 TO CR-QUART(ア)が入ります。
覚えるポイント
- コントロールブレイク処理では、キー不一致(NOT =)を契機に出力・クリア・新キー設定を行う。
- 88レベル記述項は直前のデータ項目の値に対する条件名を定義する。
間違えやすいところ
- 設問2のeで、四半期集計を月ごとのマスタ書き出しの後やADD-PROCの中に入れてしまう間違いです。
- 四半期末の月の指定(f)で、始まりの月(4, 7, 10, 1)と終わりの月(6, 9, 12, 3)を逆にしてしまうミスです。
出題の前提:平成29年度春期基本情報技術者試験午後問題・問10および公式解答例・採点講評に基づく。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.47 ↗(www.ipa.go.jp) / 公式問題冊子 p.48 ↗(www.ipa.go.jp) / 公式問題冊子 p.49 ↗(www.ipa.go.jp) / 公式問題冊子 p.50 ↗(www.ipa.go.jp) / 公式問題冊子 p.51 ↗(www.ipa.go.jp)
Javaによる電気料金プランの比較プログラム
ソフトウェア開発 · Java / オブジェクト指向 / 抽象クラス / クラスの継承 / メソッドのオーバーライド
電気料金プランごとの料金計算およびプラン比較を行うJavaプログラムに関する次の設問に答えよ。
- ア
- 設問1 a: abstract / 設問1 b: i / 設問1 c, d: [i + 1][0] / 設問2 e: extends / 設問2 f: ((RatePlan) this) / 設問2 g: (1.0 - discountTiers.map(amount))
- イ
- 設問1 a: final / 設問1 b: i - 1 / 設問1 c, d: [i + 1][1] / 設問2 e: implements / 設問2 f: RatePlan / 設問2 g: (1.0 - discountTiers.map(basicCharge))
- ウ
- 設問1 a: private / 設問1 b: i * 2 / 設問1 c, d: [i + 1][i] / 設問2 e: imports / 設問2 f: super / 設問2 g: (1.0 - discountTiers.map(price))
- エ
- 設問1 a: protected / 設問1 b: i / 2 / 設問1 c, d: [i][0] / 設問2 e: public / 設問2 f: this / 設問2 g: discountTiers.map(amount)
- オ
- 設問1 a: public / 設問1 b: i / 2 + 1 / 設問1 c, d: [i][1] / 設問2 e: throws / 設問2 f: TieredRateTable / 設問2 g: discountTiers.map(basicCharge)
- カ
- 設問1 a: static / 設問1 b: i + 1 / 設問1 c, d: [i][i + 1] / 設問2 f: TierTable / 設問2 g: discountTiers.map(price)
解答・解説を表示
解答
設問1 a: ア, 設問1 b: エ, 設問1 c: ア, 設問1 d: エ, 設問2 e: ア, 設問2 f: ウ, 設問2 g: ウ
解説
まず要点:Javaのオブジェクト指向では、共通の決まりをまとめた抽象クラス(abstract class)と継承(extends)、メソッドの上書き(オーバーライド)、superによる親クラスの処理の再利用が中心になります。料金計算のような段階的な表の参照では、配列の添字(index)の管理と境界値の判定を正しく組み合わせることが欠かせません。
解き方
- プログラム1のTierTableでは、抽象メソッドmapがあることからクラスの修飾子はabstractだと分かり、2要素ずつ格納する処理から配列の添字を計算します。
- プログラム2の料金計算の仕組みを読み、今の段階と次の段階の境界値の差(pairs[i + 1][0] - pairs[i][0])を求めます。
- プログラム6の継承関係(extends)と、親クラスのgetPriceの呼び出し(super.getPrice)、割引額の式を整理して、それぞれの答えを決めます。
小問ごとの答え
- 小問 設問1 a:ア
- TierTableクラスは抽象メソッドmapを持つ抽象クラスとして定義されるため、クラス宣言にはabstract修飾子を指定します。
- 小問 設問1 b:エ
- 可変長引数tiersから2要素ずつ取り出して配列aに格納する際、ループ変数iは2ずつ増加するため、格納先インデックスはi / 2となります。
- 小問 設問1 c:ア
- 使用量が次の段階の区間を超える場合、その段階の使用量は上限境界値から下限境界値を引いて求めるため、上限値であるpairs[i + 1][0]を指定します。
- 小問 設問1 d:エ
- 各段階の使用量を算出するための下限境界値として、現段階の基準値であるpairs[i][0]を指定します。
- 小問 設問2 e:ア
- DiscountPlanクラスはRatePlanクラスを継承して拡張するため、クラスの継承キーワードであるextendsを用います。
- 小問 設問2 f:ウ
- オーバーライドしたgetPriceメソッド内からスーパークラスのgetPriceメソッドを呼び出すため、キーワードsuperを指定します。
- 小問 設問2 g:ウ
- 割引適用後の金額は割引前の電気料金priceに(1.0 - 割引率)を掛けて求めるため、(1.0 - discountTiers.map(price))と記述します。
覚えるポイント
- 抽象クラスの宣言にはabstractを使用する。
- 子クラスから親クラスのオーバーライド元メソッドを呼ぶにはsuperを用いる。
間違えやすいところ
- 配列の要素を2つずつ進めるループで、格納先の添字をiのままにしてしまい、配列の外を参照してしまうことです。
- 割引の計算の引数に、電力量amountではなく、計算済みの電気料金priceを渡してしまうのを見落とすことです。
出題の前提:平成29年度春期基本情報技術者試験午後問11の問題文・解答例および採点講評。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.52 ↗(www.ipa.go.jp) / 公式問題冊子 p.53 ↗(www.ipa.go.jp) / 公式問題冊子 p.54 ↗(www.ipa.go.jp) / 公式問題冊子 p.55 ↗(www.ipa.go.jp) / 公式問題冊子 p.56 ↗(www.ipa.go.jp) / 公式問題冊子 p.57 ↗(www.ipa.go.jp)
CASL IIによる多倍長加算および多倍長乗算プログラム
ソフトウェア開発 · アセンブラ / CASL II / 多倍長演算 / 条件分岐 / ビット演算
1語が16ビットであるCOMET IIにおいて、64ビット加算(プログラム1 ADD64)および32ビット乗算(プログラム2 MUL32)を行うプログラムに関する次の設問に答えよ。
- ア
- 設問1 a, b: AND GR5, =1 / 設問1 c: JOV LOOP / 設問2 d: #0000 / 設問3 e, f: JMI LOWORD
- イ
- 設問1 a, b: CPL GR3, =0 / 設問1 c: JUMP LOOP / 設問2 d: #0001 / 設問3 e, f: JNZ LOWORD
- ウ
- 設問1 a, b: CPL GR3, GR1 / 設問1 c: JZE LOOP / 設問2 d: #2E0C / 設問3 e, f: JPL LOWORD
- エ
- 設問1 a, b: CPL GR3, GR2 / 設問2 d: #2E0D / 設問3 e, f: JZE LOWORD
- オ
- 設問1 a, b: LD GR5, =1 / 設問2 d: #3F1D / 設問3 e, f: LAD GR2, TEMP
- カ
- 設問2 d: #3F1E / 設問3 e, f: LD GR2, =1
- キ
- 設問3 e, f: LD GR2, GR3
- ク
- 設問3 e, f: LD GR2, TEMP
解答・解説を表示
解答
設問1 a: オ, 設問1 b: ウ, 設問1 c: イ, 設問2 d: エ, 設問3 e: ア, 設問3 f: オ
解説
まず要点:COMET IIでは1語が16ビットなので、64ビットのような長い数の足し算は、下の語から順に1語ずつ足し、JOV命令で桁あふれを調べながら上の語へ繰り上がりを送ります。また掛け算は、相手のビットが1のときだけかけられる数を足し、かけられる数を1ビット左へずらす、という2進数の基本のやり方で組み立てます。
解き方
- プログラム1(ADD64)で、桁あふれが起きたときの繰り上がりの保持(LD GR5, =1)と、ループの終わりを決める判定(CPL GR3, GR1)の動きを確かめます。
- 図2の具体的な値を使い、1語目の加算で桁あふれが起きることと、2語目の行7を実行した直後のGR0の値(#2E0C + 1 = #2E0D)を計算します。
- プログラム2(MUL32)で、乗数の下位語と上位語の判定(SUBL GR6, =16の後のJMI)と、64ビットの被乗数を2倍(左シフト)する処理(LAD GR2, TEMP)を求めます。
小問ごとの答え
- 小問 設問1 a:オ
- ADDL実行時に桁上がりが発生するとJOVによりOV1またはOV2に分岐するため、次の桁へのキャリーフラグとしてGR5に1を設定するLD GR5, =1が入ります。
- 小問 設問1 b:ウ
- GR3は最下位語(GR1 + 3)から1語ずつ減算され、最上位語であるGR1の処理完了後に終了判定を行うため、CPL GR3, GR1により一致(ZF=1)を判定します。
- 小問 設問1 c:イ
- 現在の語の加算とポインタ更新が終了した後、次の上位語を処理するためにLOOPへ無条件分岐するJUMP LOOPが入ります。
- 小問 設問2 d:エ
- 1回目の最下位語加算(#A684 + #B759 = #15DDD)で桁上がりが生じてGR0に1が渡され、2回目に(GR1)+2の値#2E0Cと加算されるため、行7実行後のGR0は#2E0Dとなります。
- 小問 設問3 e:ア
- ループカウンタGR5から16を減算した結果が負(0〜15回目)のときは乗数の下位語(LOWORD)をシフトして検査するため、負分岐命令JMI LOWORDが入ります。
- 小問 設問3 f:オ
- 被乗数TEMPを1ビット左シフトする処理はTEMP自身の加算で実現するため、第2引数レジスタGR2にTEMPのアドレスを設定するLAD GR2, TEMPが入ります。
覚えるポイント
- 多倍長加算では下位語からのキャリー伝播をJOVとキャリー用レジスタで管理する。
- 多倍長データの左シフトは、自身を同じ加算ルーチンで加算することで実現できる。
間違えやすいところ
- 16進数の足し算で繰り上がりを見落とし、2語目のGR0の計算結果を繰り上がりなしの値(#2E0C)と間違えることです。
- LAD(アドレスを読み込む)とLD(値を読み込む)を混同して、引数の設定を間違えることです。
出題の前提:平成29年度春期基本情報技術者試験午後問12の問題文・解答例および採点講評。
出典:IPA『2017年度 春期 午後』
公式問題冊子 p.58 ↗(www.ipa.go.jp) / 公式問題冊子 p.59 ↗(www.ipa.go.jp) / 公式問題冊子 p.60 ↗(www.ipa.go.jp) / 公式問題冊子 p.61 ↗(www.ipa.go.jp) / 公式問題冊子 p.62 ↗(www.ipa.go.jp)
宅配便の料金計算
ソフトウェア開発 · 表計算 / マクロ / 照合一致 / 表引き
宅配便の料金計算ワークシートおよび梱包の組合せを求めるマクロに関する問題である。ワークシート「料金表」「商品重量」「重量区分」「料金計算」の仕様、ならびにマクロ「Package_count」の処理内容を読み、設問1〜3の空欄[ a ]〜[ f ]に当てはまる適切な答えを選択せよ。
- 設問1 a ア
- IF(条件付個数(C3:C10, = 料金計算!$A4) = 0, 1, null)
- 設問1 a イ
- IF(条件付個数(C3:C10, = 料金計算!$A4) = 1, 1, null)
- 設問1 a ウ
- IF(条件付個数(C3:C10, = 料金計算!$A4) > 1, null, 1)
- 設問1 a エ
- IF(条件付個数($C3:$C10, = 料金計算!$A4) = 0, null, 1)
- 設問1 a オ
- IF(条件付個数($C3:$C10, = 料金計算!$A4) = 1, null, 1)
- 設問1 a カ
- IF(条件付個数($C3:$C10, = 料金計算!$A4) > 1, 1, null)
- 設問2 b ア
- IF(E4 > 重量区分!E8, '×', 照合一致(E4, 重量区分!D4:D8, 1))
- 設問2 b イ
- IF(E4 > 重量区分!E8, '×', 照合一致(E4, 重量区分!D4:D8, -1))
- 設問2 b ウ
- IF(E4 > 重量区分!E8, '×', 照合一致(E4, 重量区分!E4:E8, 1))
- 設問2 b エ
- IF(E4 > 重量区分!E8, '×', 照合一致(E4, 重量区分!E4:E8, -1))
- 設問2 c ア
- 論理積(G4 ≠ '-', A4 ≠ null)
- 設問2 c イ
- 論理積(論理和(F4 = '-', F4 = '×'), A4 = null)
- 設問2 c ウ
- 論理和(G4 = '-', 合計(料金表!C16:N16) = 0)
- 設問2 c エ
- 論理和(論理積(F4 ≠ '-', F4 ≠ '×'), 合計(料金表!C16:N16) = 1)
- 設問2 d ア
- 垂直照合(F4, 料金表!B11:N15, 照合一致(1, 料金表!C16:N16, 0), 0)
- 設問2 d イ
- 垂直照合(照合一致(1, 料金表!C16:N16, 0), 料金表!B11:N15, F4, 0)
- 設問2 d ウ
- 表引き(料金表!C11:N15, F4, 照合一致(1, 料金表!C16:N16, 0))
- 設問2 d エ
- 表引き(料金表!C11:N15, 照合一致(1, 料金表!C16:N16, 0), F4)
- 設問3 e ア
- 論理積(work_weight < E9, E10 > 重量区分!E8)
- 設問3 e イ
- 論理積(work_weight < E10, E10 ≦ 重量区分!E8)
- 設問3 e ウ
- 論理積(work_weight > E9, E10 > 重量区分!E8)
- 設問3 e エ
- 論理積(work_weight > E10, E10 ≦ 重量区分!E8)
- 設問3 f ア
- 相対(B9, 0, i) ← 相対(B4, 0, i) - 相対(B10, 0, i)
- 設問3 f イ
- 相対(B9, 0, i) ← 相対(B4, 0, i) - 相対(B15, package_no, i)
- 設問3 f ウ
- 相対(B9, 0, i) ← 相対(B9, 0, i) - 相対(B10, 0, i)
- 設問3 f エ
- 相対(B9, 0, i) ← 相対(B9, 0, i) - 相対(B15, package_no, i)
解答・解説を表示
解答
設問1 a: イ, 設問2 b: ア, 設問2 c: ウ, 設問2 d: ウ, 設問3 e: イ, 設問3 f: エ
解説
まず要点:表計算の照合一致関数は、検索の指定が1のとき、検索する範囲が小さい順(昇順)に並んでいる必要があり、「検索値以下の最大値」の位置を返します。階層的な範囲検索では、下限値の列に指定1を使うか、上限値の列に指定-1を使うかを、そろえて考えることが大切です。また表引き関数は、行の位置と列の位置を指定してセルの値を取り出す機能です。
解き方
- 設問1では、セルをコピーするときの相対参照と絶対参照の違いと、条件を満たしたときに返す値を判断します。
- 設問2(b)では、重量区分の「から(下限)」の列と、照合一致の指定「1(値以下の最大値)」の組み合わせを確かめます。
- 設問2(c)(d)では、料金を探せないときのエラー条件(論理和)と、表引き関数の引数の順番(セル範囲, 行, 列)を確かめます。
- 設問3では、マクロの中で最適解(上限以下で最大)を更新する条件と、確定した数量を残数量から引くセルの式を追います。
小問ごとの答え
- 小問 設問1 a:イ
- セルC16からD16〜N16に横方向に複写するため、列の参照は相対参照(C3:C10)である必要があります。また、一致する都道府県があれば1、なければnullを返すため、条件付個数の結果が1のときに1、それ以外はnullとする「IF(条件付個数(C3:C10, = 料金計算!$A4) = 1, 1, null)」が適切です。
- 小問 設問2 b:ア
- E4が発送可能上限(重量区分!E8の28,680g)を超えるときは'×'を表示します。超えない場合は、各区分の下限が昇順に並ぶ「重量区分!D4:D8」を検索範囲とし、検索の指定を1(検索値以下の最大値)とする照合一致関数を用いることで、該当する重量区分番号(1〜5)を取得できます。
- 小問 設問2 c:ウ
- 発送料金の検索ができない条件は、重量オーバー等で梱包後重量G4が'-'であるか、または該当する都道府県が料金表に存在せず作業領域の合計「合計(料金表!C16:N16)」が0である場合です。したがって「論理和(G4 = '-', 合計(料金表!C16:N16) = 0)」となります。
- 小問 設問2 d:ウ
- 表引き関数は「表引き(セル範囲, 行の位置, 列の位置)」の形式です。料金データ範囲「料金表!C11:N15」に対し、行の位置は重量区分F4、列の位置はC16〜N16の中で1がある列番号を求める「照合一致(1, 料金表!C16:N16, 0)」を指定します。
- 小問 設問3 e:イ
- 一つの荷物として発送可能な総重量の上限(重量区分!E8)以下であり、かつそれまでに求めた最大重量(work_weight)よりも大きい作業重量(E10)を見つけたときに更新するため、「論理積(work_weight < E10, E10 ≦ 重量区分!E8)」が正解です。
- 小問 設問3 f:エ
- 確定した荷物に梱包した数量を表示行(行15からpackage_no行下)の各列から取得し、残数量(B9〜D9)から差し引く処理です。したがって「相対(B9, 0, i) ← 相対(B9, 0, i) - 相対(B15, package_no, i)」となります。
覚えるポイント
- 照合一致の指定1は「昇順・値以下の最大値」、指定-1は「降順・値以上の最小値」を検索する。
- 表引き関数の基本書式は「表引き(セル範囲, 行番号, 列番号)」である。
間違えやすいところ
- 数式を横にコピーするときに、列の記号を固定する絶対参照($C)にしてしまう間違いです。
- 照合一致で範囲を検索するとき、上限の列と下限の列のどちらに指定(1または-1)を使うか混同するミスです。
出題の前提:基本情報技術者試験 表計算ソフトの機能・用語の仕様に基づく。
出典:IPA『2017年度 春期 午後』
公式問題冊子 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) / 公式問題冊子 p.71 ↗(www.ipa.go.jp)
2017年度 春期 午後
参照した公式資料
IPAが公開した2017年度 春期 午後の問題・解答資料です。

