旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。
2009年度 秋期 午後の概要
半加算器と全加算器の論理回路と補数加算
ハードウェア · 半加算器 / 全加算器 / 2の補数 / 論理回路
半加算器と全加算器に関する問題である。表1(半加算器の真理値表)および表2(全加算器の真理値表)を基に、以下の問いに答えよ。 〔設問1〕半加算器を実現する図1の論理回路において、aに入れる正しい論理ゲートを解答群から選べ。 〔設問2〕半加算器を2段接続して全加算器を実現する図2の論理回路および表3(Cin, X, YとC1, C2の関係)について、bおよびcに入れる正しい答えをそれぞれ選べ。 〔設問3〕2の補数表現による4ビット符号付2進整数A(A4A3A2A1)とB(B4B3B2B1)を半加算器と全加算器を組み合わせて加算する(図3)。A = -1、B = -2(10進数)を与えたときの各桁のけた上がりC1〜C4の値の組合せとして正しいものを解答群から選べ。
- ア
- 設問1: AND / 設問2(b): AND / 設問2(c): C1=0, C2=0 / 設問3: C1=0, C2=1, C3=0, C4=0
- イ
- 設問1: NAND / 設問2(b): NAND / 設問2(c): C1=0, C2=1 / 設問3: C1=0, C2=1, C3=0, C4=1
- ウ
- 設問1: NOR / 設問2(b): NOR / 設問2(c): C1=1, C2=0 / 設問3: C1=0, C2=1, C3=1, C4=0
- エ
- 設問1: OR / 設問2(b): OR / 設問2(c): C1=1, C2=1 / 設問3: C1=0, C2=1, C3=1, C4=1
- オ
- 設問1: XOR / 設問3: C1=1, C2=0, C3=0, C4=0
- カ
- 設問3: C1=1, C2=0, C3=0, C4=1
- キ
- 設問3: C1=1, C2=0, C3=1, C4=0
- ク
- 設問3: C1=1, C2=0, C3=1, C4=1
解答・解説を表示
解答
設問1 a: オ, 設問2 b: エ, 設問2 c: ウ, 設問3: エ
解説
まず要点:半加算器は2つの数を足して「和」と「けた上がり」を出す回路で、全加算器は下からのけた上がりも含めて3つを足します。 半加算器の和はXOR(2つが違うときだけ1になる演算)、けた上がりはAND(2つとも1のときだけ1になる演算)で求めます。 半加算器を2段に組み合わせた全加算器では、2つのけた上がりのどちらかが出たら1になるので、最後はOR(どちらかが1なら1)でまとめます。
解き方
- 半加算器の真理値表から和Zの式を求め、それに合う論理素子XORを見つける。
- 半加算器を2段つないだときの内部の信号C1とC2の値を求め、全けた上がりCを出すゲートORを決める。
- 10進数の-1と-2を2の補数表現(1111と1110)に直し、下の桁から順に各全加算器のけた上がりを追う。
小問ごとの答え
- 小問 設問1 a:オ
- 表1の和Zの出力を見ると、(X,Y)=(0,0)で0、(0,1)で1、(1,0)で1、(1,1)で0となっており、排他的論理和(XOR)と完全に一致します。
- 小問 設問2 b:エ
- 表3よりC1とC2が同時に1になることはなく、全加算器のけた上がりCはC1とC2のいずれかが1のときに1となるため、論理和(OR)となります。
- 小問 設問2 c:ウ
- Cin=1, X=1, Y=1のとき、半加算器1はXとYを加算してけた上がりC1=1、和0を出力します。半加算器2はその和0とCin=1を加算するので、けた上がりC2=0となります。
- 小問 設問3:エ
- 4ビット2の補数で-1は1111(2)、-2は1110(2)です。最下位から加算すると、第1桁は1+0でS1=1, C1=0。第2桁は1+1+0でS2=0, C2=1。第3桁は1+1+1でS3=1, C3=1。第4桁は1+1+1でS4=1, C4=1となります。
覚えるポイント
- 半加算器の和はXOR、桁上がりはANDで構成される。
- 4ビット2の補数は、正の数のビット反転に1を加えることで得られる。
間違えやすいところ
- 全加算器の2つ半加算器のけた上がりが同時に1にはならない点を見落とし、Cのまとめ方を間違える。
- 負の数の2進数表現を2の補数ではなく符号絶対値表現と取り違えて足し算してしまう。
出題の前提:基本情報技術者試験 2009年度秋期午後 問1の出題条件による。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp) / 公式問題冊子 p.8 ↗(www.ipa.go.jp) / 公式問題冊子 p.9 ↗(www.ipa.go.jp)
倉庫内の保管棚を用いた書類管理データベースとSQL
データベース · SQL / E-R図 / 外部結合 / 関係データベース設計
倉庫内の保管棚を用いた書類管理に関する問題である。提示されたE-R図、表定義、および業務要件を基に、以下の問いに答えよ。 〔設問1〕書類を保管していない保管棚が各階に幾つあるかを検索するSQL文の空欄a, bに入る字句を選べ。 〔設問2〕預かってから1年を超え、未返却である書類を検索するSQL文(検索日: 2009年10月18日)の結合条件等の空欄c, dに入る字句を選べ(cとdは順不同)。 〔設問3〕保管棚の配置変更や箱間の書類移し替えに関する記述として、A社の書類管理データベースの説明として正しいものを解答群から選べ。
- ア
- 設問1(a): EXISTS / 設問2: 書類預託表.書類番号 = 書類表.書類番号 / 設問3: ある箱に入っている書類を、同一の保管棚の別の箱に移す場合、箱表と書類預託表のそれぞれを更新すればよい。
- イ
- 設問1(a,b): GROUP BY / 設問2: 書類預託表.書類番号 <> 書類表.書類番号 / 設問3: ある箱に入っている書類を、別の保管棚の別の箱に移す場合、書類預託表の棚番号だけを更新すればよい。
- ウ
- 設問1(a): IN / 設問2: 書類預託表.預託日 <= 書類預託表.返却日 / 設問3: 保管している書類の保管棚とその位置を検索する場合、書類番号だけでは検索できない。
- エ
- 設問1(a): LIKE / 設問2: 棚表.棚配置日 = 書類預託表.預託日 / 設問3: 保管棚の配置されている区画名称を変更する場合、区画表は更新しなくてよい。
- オ
- 設問1(a): NOT IN / 設問3: 保管棚の配置を変更する場合、書類預託表は更新しなくてよい。
- カ
- 設問1(b): ORDER BY / 設問2: 棚表.棚番号 = 書類預託表.棚番号
- キ
- 設問2: 棚表.棚番号 <> 書類預託表.棚番号
解答・解説を表示
解答
設問1 a: オ, 設問1 b: イ, 設問2 c: ア (順不同), 設問2 d: カ (順不同), 設問3: オ
解説
まず要点:データを実体ごとに別の表に分けておくと、ある情報の変更はその表だけを直せばよくなります。 倉庫の棚の配置は棚表が持つ情報なので、配置を変えても棚表を更新するだけで済みます。 書類と棚の結び付きを表す書類預託表はそのままでよい点が、正規化(重複をなくすように表を分けること)の利点です。
解き方
- 設問1の副問合せが未返却の書類がある棚番号を返すと読み、それを含まないNOT INを選び、階ごとにまとめるGROUP BYを補う。
- 設問2で使う3つの表(棚表、書類預託表、書類表)を結び付けるための、2組のキーの一致条件を導く。
- 設問3の各選択肢について、E-R図と表の作りから各情報がどの表にあるかを確かめ、更新すべき表を判断する。
小問ごとの答え
- 小問 設問1 a:オ
- 未返却の書類が存在する棚番号一覧を副問合せで抽出しているため、書類を保管していない棚を求めるには「WHERE 棚表.棚番号 NOT IN (...)」と除外条件を指定します。
- 小問 設問1 b:イ
- 各階に幾つあるかを階ごとに集計して件数を数えるため、「GROUP BY 棚表.階番号」を指定します。
- 小問 設問2 c:ア
- FROM句にある書類預託表と書類表を結合するための条件式として「書類預託表.書類番号 = 書類表.書類番号」が必要です(dと順不同)。
- 小問 設問2 d:カ
- FROM句にある棚表と書類預託表を結合するための条件式として「棚表.棚番号 = 書類預託表.棚番号」が必要です(cと順不同)。
- 小問 設問3:オ
- 保管棚の位置(階番号と区画番号)は棚表に保持されており、書類預託表は棚番号のみを参照しているため、棚の配置場所が変わっても書類預託表の更新は不要で、棚表のみ更新すれば済みます。
覚えるポイント
- 不在条件の検索には「NOT IN (副問合せ)」や「NOT EXISTS」が用いられる。
- 関係データベースでは属性の独立性により、棚自体の属性変更時にトランザクション(預託)レコードを書き換える必要がない。
間違えやすいところ
- 副問合せの結果に含まれない行を取り出すとき、INとNOT INを逆にしてしまう。
- 箱番号は棚ごとに重複することがあり、階や区画の情報は棚表が持つ点を見落として、更新する表を間違える。
出題の前提:基本情報技術者試験 2009年度秋期午後 問2の出題条件による。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 p.10 ↗(www.ipa.go.jp) / 公式問題冊子 p.11 ↗(www.ipa.go.jp) / 公式問題冊子 p.12 ↗(www.ipa.go.jp) / 公式問題冊子 p.13 ↗(www.ipa.go.jp)
データ送信とその符号化
ネットワーク · パケット通信 / データ伝送効率 / 差分符号化 / 期待値計算
センサからのデータ送信及びデータの符号化に関する問題である。1秒当たり100回取得される4バイトの測定値を、ヘッダ長150バイト、最大長1,478バイトのパケットに格納してネットワーク送信する。1パケットに含める測定値数と送信量の関係、最大格納時間、必要帯域幅の計算式、及び測定値の差分符号化における平均ビット長の期待値を求める。
解答・解説を表示
解答
設問1: イ, 設問2 a: イ, 設問2 b: ク, 設問2 c: エ, 設問3 d: イ
解説
まず要点:パケット通信では実データを大きくまとめるほど、ヘッダ(荷物の宛先票のような付加情報)の割合が減って伝送のむだが減ります。 各パケットには決まった長さのヘッダが必ず付くので、パケット数を減らすほどヘッダの総量が減ります。 また、よく出る差分値に短いビット列を割り当てる可変長符号化(データを圧縮する符号)を使うと、平均のデータ量を小さくできます。
解き方
- 設問1では、1秒あたりのヘッダ総量がパケットを送る回数に比例するので、1パケットに入れる個数と総送信量の関係を導く。
- 設問2では、パケットが運べる最大の実データ長から最大個数とそれにかかる時間を求め、1秒のパケット数と大きさから必要な帯域の式を立てる。
- 設問3では、与えられた差分符号のビット長と出る確率をかけ合わせて足し、平均ビット長の期待値を求める。
小問ごとの答え
- 小問 設問1:イ
- 単位時間(1秒間)に発生する測定値の総量は100回×4バイト=400バイトで一定です。1パケットに格納する測定値の個数をnとすると、1秒間に送信するパケット数は100/n個となります。パケットごとに150バイトのヘッダが付加されるため、1秒間のヘッダ送信量は150×(100/n)バイトとなり、nが大きいほどヘッダの総送信量が減少します。したがって、測定値の個数が多いほど単位時間当たりの送信量は少なくなります。
- 小問 設問2 a:イ
- パケットの最大長は1,478バイトであり、ヘッダ長が150バイトであるため、測定値の列に割り当て可能な最大サイズは1,478-150=1,328バイトです。測定値1個は4バイトなので、格納できる最大個数は1,328÷4=332個となります。測定値は1秒間に100回取得されるため、格納できる最大時間は332÷100=3.32秒分となります。
- 小問 設問2 b:ク
- 1秒間に発生する測定値は100個であり、1パケットにn個の測定値を格納して送信するため、1秒間に送信されるパケット数は100/nパケットとなります。帯域w(ビット/秒)の式において、1パケットのビット長に掛ける秒間パケット数に該当するため、bには「100/n」が入ります。
- 小問 設問2 c:エ
- 1パケットのデータ長(バイト)は、ヘッダの150バイトに加えて、測定値1個あたり4バイトがn個分格納されるため「150+4n」バイトとなります。帯域の計算式「b × 8 × (150 + c)」の括弧内はパケット長を表しているため、cには「4n」が入ります。
- 小問 設問3 d:イ
- 各差の範囲ごとのビット長に出現確率を乗じて合計することで期待値を算出します。9×0.70+18×0.25+27×0.04+35×0.01=6.30+4.50+1.08+0.35=12.23ビットとなります。
覚えるポイント
- 伝送効率=データ本体サイズ÷(データ本体サイズ+ヘッダサイズ)であり、パケットサイズが大きいほど効率は高くなります。
- 離散確率分布における期待値は、各事象の値とその生起確率の積を全て足し合わせた積和計算で求められます。
間違えやすいところ
- 1パケットの測定値数を増やすとパケットは大きくなるので送信量も増えると思いがちですが、パケット数が減るのでヘッダの総量はむしろ減ります。
- パケット最大長1,478バイトをそのまま4バイトで割ってしまい、固定ヘッダ150バイトを引くのを忘れるミスが多いです。
出題の前提:平成21年度秋期基本情報技術者試験午後問3の出題条件に基づく
出典:IPA『2009年度 秋期 午後』
公式問題冊子 p.14 ↗(www.ipa.go.jp) / 公式問題冊子 p.15 ↗(www.ipa.go.jp) / 公式問題冊子 p.16 ↗(www.ipa.go.jp)
利用者認証方式とセキュリティリスク
情報セキュリティ · パスワード強度 / チャレンジレスポンス認証 / ワンタイムパスワード / 盗聴耐性 / キーロガー対策
利用者認証方式(方式1: 利用者IDとパスワード方式、方式2: チャレンジレスポンス方式、方式3: 時刻同期型トークン方式)におけるパスワード強度及びセキュリティリスクに関する問題である。文字種や桁数の拡張による総当たり攻撃耐性の変化、並びに通信経路上の盗聴・端末上のキーロガー・不正サーバ誤接続の各脅威に対する認証方式ごとの安全性を検討する。
解答・解説を表示
解答
設問1 a: カ, 設問1 b: エ, 設問2 c: ア, 設問2 d: エ, 設問2 e: ア
解説
まず要点:パスワードを総当たりで破るのに必要な手間は「文字の種類^桁数」の組み合わせ数で決まります。 方式1はパスワードをそのまま送るので、経路の盗聴・偽サーバ・キーロガー(キー入力を記録する悪質なソフト)のどれにも弱いです。 方式2はハッシュ関数(元に戻せない変換)で経路の盗聴は防げますが、端末で入力する固定パスワードは守れず、方式3は1回限りのパスワードで使い回しを防ぎます。
解き方
- 設問1では、組み合わせの総数(文字が2つ増えると26^2、文字種が2倍なら2^8)を計算し、必要な時間の倍率を求める。
- 設問2(1)では、通信の途中にパスワードがそのまま(平文で)流れる方式を探す。
- 設問2(2)では、キーボードから決まったパスワードを入力する方式(方式1と方式2)を選ぶ。
- 設問2(3)では、偽サーバに送った情報を本物のサーバへの認証に何度も使い回せてしまう方式を探す。
小問ごとの答え
- 小問 設問1 a:カ
- 英小文字26文字からなる8文字のパスワードの総パターン数は26の8乗です。これを10文字に増やした場合の総パターン数は26の10乗となります。総当たりに必要な最大時間は総パターン数に比例するため、26^10 ÷ 26^8 = 26^2 = 676倍となります。
- 小問 設問1 b:エ
- 英大文字を追加すると利用可能な文字種は26+26=52文字となり、元の2倍になります。8文字のパスワードの場合、総パターン数は52の8乗=(2×26)^8=2^8 × 26^8となります。したがって、必要な最大時間は元の2^8=256倍となります。
- 小問 設問2 c:ア
- 通信経路上で盗聴された場合、方式1では固定パスワードそのものが平文で送信されているため、盗んだ情報をそのまま用いていつでも不正ログインが可能です。方式2では毎回異なるチャレンジ値に対するハッシュ値(レスポンス)が流れるためリプレイ攻撃は成立しません。方式3では時刻に依存するワンタイムパスワードであるため、一定時間が経過すると再利用できません。よって該当するのは「方式1だけ」です。
- 小問 設問2 d:エ
- 端末上のキーロガーで入力内容を盗まれた場合、方式1では固定パスワードが盗まれます。方式2でも利用者がキーボードから入力した固定パスワードpそのものが盗まれるため、攻撃者はサーバから送られる任意のチャレンジcに対して正しいレスポンスh(p, c)を計算可能となり、いつでも不正ログインが可能になります。一方、方式3でキーボード入力するのはトークンが表示したワンタイムパスワードであるため、有効期限が切れると利用できず、いつでもログインすることは不可能です。よって該当するのは「方式1,2だけ」です。
- 小問 設問2 e:ア
- 不正な偽サーバに誤接続した場合、方式1では端末から送信された固定パスワードを不正サーバに直接奪われるため、本物サーバへの不正ログインがいつでも可能になります。方式2では不正サーバが提示したチャレンジに対するレスポンスが送信されますが、ハッシュ関数の不可逆性により固定パスワード自体は逆算できず、本物サーバの別のチャレンジには適合しないためログインできません。方式3でも送信されるのはその時点のワンタイムパスワードであり恒久的な不正利用はできません。よって該当するのは「方式1だけ」です。
覚えるポイント
- パスワードの探索空間は「文字種数^文字数」であり、文字数を増やすほうが指数関数的に強固になります。
- チャレンジレスポンス方式は通信経路上での盗聴には耐性がありますが、クライアント端末がキーロガー等で侵害され固定パスワードが漏洩した場合には無力です。
間違えやすいところ
- 設問1で「2文字増えたから26×2=52倍」「文字種が2倍だから2倍」と単純に比例で考えてしまう誤り。
- 方式2でもキーボードから固定パスワードを打つ点を見落とし、キーロガーにも強いと勘違いしてしまうミス。
出題の前提:平成21年度秋期基本情報技術者試験午後問4の出題条件に基づく
出典:IPA『2009年度 秋期 午後』
公式問題冊子 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 / クラス図 / シーケンス図
航空券発券システムを対象としたオブジェクト指向分析/設計に関する記述と図(クラス図、シーケンス図)を読み、設問1〜3の空欄[ a ]〜[ g ]に当てはまる適切な語句を選択せよ。
- ア
- 【設問1】空港 / 【設問2】空席を確認する / 【設問3】空席を確認する
- イ
- 【設問1】航空会社 / 【設問2】航空券を発券する / 【設問3】顧客情報を登録する
- ウ
- 【設問1】航空機 / 【設問2】顧客情報を登録する / 【設問3】出発日時を登録する
- エ
- 【設問1】航空券 / 【設問2】出発日時を問い合わせる / 【設問3】発券可否を確認する
- オ
- 【設問1】航空券発券システム / 【設問2】出発日時を登録する / 【設問3】発券可否を表示する
- カ
- 【設問1】便 / 【設問2】発券可否を確認する / 【設問3】便の座席数を確認する
解答・解説を表示
解答
設問1 a: ア, 設問1 b: エ, 設問1 c: カ, 設問2 d: カ, 設問2 e: ア, 設問3 f: イ (順不同), 設問3 g: オ (順不同)
解説
まず要点:クラス図はシステムの変わらない構造(どんなクラスがあり、どうつながるか)を表し、シーケンス図は処理の流れを時間の順に表します。 クラス図では属性・関連・多重度(1つのものが何個と対応するか)を読み取ります。 シーケンス図ではオブジェクト間でやり取りされるメッセージの順番を追い、両方を対応させて考えます。
解き方
- クラス図の属性・多重度・関連名(出発空港や到着空港など)から、それぞれの役割を読み取ってクラス名を決める。
- シーケンス図で送る側と受ける側のクラス、引数、戻り値を追い、対応する操作メッセージを導き出す。
- シーケンス図で画面クラスが関わるメッセージと図3の操作一覧を比べ、足りない操作を特定する。
小問ごとの答え
- 小問 設問1 a:ア
- 属性に名称や所在地を持ち、出発空港・到着空港として参照されるクラスであるため「空港」が当てはまります。
- 小問 設問1 b:エ
- 顧客および販売担当者と関連を持ち、発券日時を属性として持ち、座席とも関連する実体であるため「航空券」が適切です。
- 小問 設問1 c:カ
- 便名、出発日時、到着日時を属性として保持し、出発空港・到着空港と関連して座席を管理するクラスであるため「便」が適切です。
- 小問 設問2 d:カ
- 航空券発券画面が入力内容を受け、航空券発券管理クラスに対して発券が可能かどうかを問い合わせるメッセージであるため「発券可否を確認する」となります。
- 小問 設問2 e:ア
- 航空券発券管理クラスから便オブジェクトに対して空席の有無を問い合わせ、返却値として「空席状態」を受け取っているため「空席を確認する」が入ります。
- 小問 設問3 f:イ
- 図2のシーケンス図で航空券発券画面がアクタから受信するメッセージのうち、図3の操作一覧に未記載の操作は「顧客情報を登録する」です(gと順不同)。
- 小問 設問3 g:オ
- 図2のシーケンス図で航空券発券管理から可否結果を受信した後に画面側で実行される操作は「発券可否を表示する」です(fと順不同)。
覚えるポイント
- クラス図では属性と多重度に着目して各エンティティの責務を正確に読み取ること。
- シーケンス図の矢印はメッセージ(呼び出し操作)を表し、受信側オブジェクトの操作(メソッド)に対応すること。
間違えやすいところ
- 画面クラスが自分で表示する処理や利用者からのメッセージ受け取りを、管理クラスの操作と混同してしまう。
- 便クラスと空港クラスの多重度(1つの便に出発と到着でそれぞれ1つの空港)を間違える。
出題の前提:平成21年度秋期基本情報技術者試験午後問5の出題条件およびUML仕様に基づく。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 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)
インシデント及び問題の管理プロセスの改善
ITサービスマネジメント · インシデント管理 / 問題管理 / 変更管理 / ITIL
流通業F社の受注システム障害における反省点を踏まえた、インシデント管理および問題管理のプロセス改善、障害管理データベースの改修に関する記述を読み、空欄[ a ]〜[ f ]に入る適切な字句を選択せよ。
- ア
- 【a〜c, f】解決日時 / 【d】原因が特定できず、その後再発しない問題 / 【e】キャパシティ管理
- イ
- 【a〜c, f】解決方法の詳細(記述形式) / 【d】システム部にスキルのある担当者がいないので、解決できない問題 / 【e】構成管理
- ウ
- 【a〜c, f】解決予定日時 / 【d】放置しておいても、業務に大きな支障がない問題 / 【e】サービスレベル管理
- エ
- 【a〜c, f】障害対応の経緯(追記形式) / 【d】予算不足で、システム変更作業ができない問題 / 【e】変更管理
- オ
- 【a〜c, f】障害の影響度
- カ
- 【a〜c, f】障害の発生日時
解答・解説を表示
解答
a: オ, b: エ, c: ウ, d: ア, e: エ, f: ア
解説
まず要点:インシデント管理はサービスを早く元に戻すことが目的で、影響の大きさに応じてすぐ報告・引き継ぎをします。 問題管理は障害の根本的な原因を突き止め、同じ障害が起きないよう恒久的な対策を考えます。 実際にシステムを変える作業は、変更管理という別のプロセスと連携して行います。
解き方
- 報告の基準になるレベル判定(影響する範囲や重要度)から、最初に足す項目aを「障害の影響度」と決める。
- 対応の記録を時間の順に残すための項目bを「障害対応の経緯(追記形式)」と判断する。
- 問題管理委員会が追う基準となる項目cを「解決予定日時」、未解決かどうかを分ける項目fを「解決日時」が空欄であることだと導く。
- 未解決の問題を終わらせる理由(再発せず原因が分からない)からdを選び、解決作業を渡すプロセスeを「変更管理」と決める。
小問ごとの答え
- 小問 a:オ
- 表2でレベル3〜1に分類して通報先や方法を決定する基準であり、障害発生時に真っ先に評価されるべき項目は「障害の影響度」です。
- 小問 b:エ
- ホワイトボードに時系列でメモしていた対応状況や回復状況をDBで順次記録・共有するための項目は「障害対応の経緯(追記形式)」です。
- 小問 c:ウ
- 週ごとの問題管理委員会で解決状況をフォローする基準となる日時は「解決予定日時」です。
- 小問 d:ア
- 長期間未解決のまま残り、これ以上の調査・対策が困難で問題管理委員会で終了扱いとする対象は「原因が特定できず、その後再発しない問題」です。
- 小問 e:エ
- 根本原因に対する解決策が決まった後、システムの改修や構成変更を本番環境へ安全に適用・実施するプロセスは「変更管理」です。
- 小問 f:ア
- 未解決の問題を抽出する条件として、空欄であるべき項目は「解決日時」です(解決日時が空欄=未解決)。
覚えるポイント
- インシデント管理(迅速復旧)と問題管理(原因究明・再発防止)、変更管理(変更作業の統制)の役割分担を整理すること。
- 未解決の問題管理レコードは「解決日時が未設定(NULL・空欄)」で判別され、優先順位は「影響度」でソートすること。
間違えやすいところ
- dで「業務に支障がないから終了にする」を選ぶ誤り。支障が小さくても、放置して終了する理由にはなりません。
- 解決作業を渡す先のプロセスeで、構成管理やサービスレベル管理と混同してしまう。
出題の前提:平成21年度秋期基本情報技術者試験午後問6の出題条件およびITILマネジメントプロセスに基づく。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 p.26 ↗(www.ipa.go.jp) / 公式問題冊子 p.27 ↗(www.ipa.go.jp) / 公式問題冊子 p.28 ↗(www.ipa.go.jp)
情報システムの効果見積りと損益計算への影響
システム戦略 · 情報システム投資評価 / 投資回収期間 / 損益計算書 / 営業利益
日用品メーカT社における情報システムの効果見積りに関する次の記述を読み、設問1・2に答えよ。 T社の売上高は年間4,000百万円、製品の製造に要する資材の調達費は年間2,000百万円である。企画課では以下の3システムの開発効果を見積もっている。 ・営業支援システム:開発費50百万円、年間運用費2百万円、販売量増加により年間売上高を3%増加 ・資材調達システム:開発費30百万円、年間運用費2百万円、年間の資材調達費を2%削減 ・契約管理システム:開発費8百万円、年間運用費0.4百万円、法務課(間接部門)の年間労務費を5百万円削減 〔設問1〕 企画課では、年間売上高が今後も一定であるとして資材調達システムの投資回収期間を見積もった。投資回収期間は、見積もった[ a ]までの期間を計算することで求められる。資材調達システムの投資回収期間は[ b ]である。 〔設問2〕 各システムの開発費は5年で定額償却し、減価償却費とシステム運用費は販売費及び一般管理費(販管費)に計上する。 T社の年間損益計算(抜粋): 売上高:4,000百万円 売上原価:3,000百万円(資材調達費、その他の関連費用) 売上総利益:1,000百万円 販管費:800百万円(資材の調達や製品の製造にかかった以外の費用) 営業利益:200百万円 ・営業支援システムを開発した場合、売上高売上原価率は変わらず、販管費は減価償却費10百万円と運用費2百万円を合わせて12百万円増えるので、営業利益効果は[ c ]百万円となる。 ・資材調達システムを開発した場合、効果見積りは資材調達費の2%削減なので、[ d ]を40百万円削減できる。営業利益効果は32百万円となる。 ・契約管理システムを開発した場合、間接部門である法務課の労務費を5百万円削減できる。一方、減価償却費1.6百万円と運用費0.4百万円を合わせて2百万円が発生する。したがって、[ e ]となる。 ・営業支援システムと資材調達システムを開発し同時に利用した場合、資材調達システムの利用によって[ f ]が期待できる。そのため、営業利益効果は[ c ]百万円[ g ]営業利益効果となる。したがって、両システムを同時に利用することで得られる営業利益効果は、それぞれの営業利益効果の合計[ g ]。
- 設問1 a ア
- 効果が開発費と運用費の合計を上回る
- 設問1 a イ
- 効果が開発費と運用費の合計を下回る
- 設問1 a ウ
- 効果と運用費の合計が開発費を上回る
- 設問1 a エ
- 効果と運用費の合計が開発費を下回る
- 設問1 b ア
- 1年未満
- 設問1 b イ
- 1年以上2年未満
- 設問1 b ウ
- 2年以上3年未満
- 設問1 b エ
- 3年以上
- 設問2 c ア
- 18
- 設問2 c イ
- 30
- 設問2 c ウ
- 108
- 設問2 c エ
- 120
- 設問2 d ア
- 売上原価
- 設問2 d イ
- 売上総利益
- 設問2 d ウ
- 売上高
- 設問2 d エ
- 営業利益
- 設問2 d オ
- 販管費
- 設問2 e ア
- 売上原価を3百万円削減でき,営業利益効果は3百万円
- 設問2 e イ
- 売上原価を5百万円削減でき,営業利益効果は5百万円
- 設問2 e ウ
- 販管費を3百万円削減でき,営業利益効果は3百万円
- 設問2 e エ
- 販管費を5百万円削減でき,営業利益効果は5百万円
- 設問2 f ア
- 売上高売上原価率の上昇
- 設問2 f イ
- 売上高売上原価率の低下
- 設問2 f ウ
- 売上高の増加
- 設問2 f エ
- 売上高の減少
- 設問2 g ア
- と等しい
- 設問2 g イ
- を上回る
- 設問2 g ウ
- を下回る
解答・解説を表示
解答
設問1 a: ア, 設問1 b: ア, 設問2 c: ア, 設問2 d: ア, 設問2 e: ウ, 設問2 f: イ, 設問2 g: イ
解説
まず要点:システム投資の評価では、投資したお金を何年で取り戻せるか(投資回収期間)と、損益計算書のどの項目がどれだけ変わるかを正しく分けて計算します。 損益計算書は、売上高から売上原価を引いた売上総利益、そこから販管費(販売や管理にかかる費用)を引いた営業利益という順に並びます。 効果が売上原価に効くのか販管費に効くのかで、利益への表れ方が変わる点に注意します。
解き方
- 設問1:資材調達システムの1年の効果(2,000百万円×2%=40百万円)を求め、1年目の投資額(開発費30+運用費2=32百万円)と比べて回収期間を判断する。
- 設問2(c):営業支援システムで増える売上高120百万円に粗利率25%をかけた30百万円から、増える販管費12百万円を引いて営業利益効果を求める。
- 設問2(d)(e):資材調達費は売上原価、法務課の労務費は販管費に入るという会計上の区分を整理して効果を計算する。
- 設問2(f)(g):2つのシステムを一緒に使うと、原価率の低下と売上の増加が重なり合って、それぞれ単独の効果の合計を上回ることを導く。
小問ごとの答え
- 小問 設問1 a:ア
- 開発と運用のための投資を回収するとは、累計の効果額が累計の投資額(開発費と運用費の合計)を上回ることを意味します。
- 小問 設問1 b:ア
- 年間の削減効果は2,000×0.02=40百万円です。1年目の総費用は開発費30+運用費2=32百万円であり、1年目で40>32となるため回収期間は1年未満です。
- 小問 設問2 c:ア
- 売上高が3%(120百万円)増えると、売上原価率75%より売上原価も90百万円増加し、粗利増加額は30百万円です。ここから販管費増加12百万円を引くと営業利益効果は18百万円となります。
- 小問 設問2 d:ア
- 資材調達費は製品の製造にかかる費用であるため、損益計算書上では売上原価に分類されます。
- 小問 設問2 e:ウ
- 法務課の労務費は販管費に該当します。労務費削減5百万円に対し減価償却費・運用費の増加が2百万円であるため、純粋な販管費削減額および営業利益効果は3百万円となります。
- 小問 設問2 f:イ
- 資材調達システムによって資材調達費が削減されると、製品製造コストが下がるため売上高に対する売上原価の比率(売上高売上原価率)が低下します。
- 小問 設問2 g:イ
- 売上高売上原価率が低下した状態で売上高が増加すると、粗利の増加幅が単独試算時よりも大きくなるため、営業利益効果は18百万円および個別効果の合計を上回ります。
覚えるポイント
- 投資回収期間 = 投資総額(初期費用+運用費)を回収効果の累計が上回るまでの期間
- 売上高 - 売上原価 = 売上総利益、売上総利益 - 販管費 = 営業利益
間違えやすいところ
- 売上が増えると売上原価も一緒に増えることを考え忘れてしまうミス。
- 資材調達費(売上原価)と間接部門の労務費(販管費)の仕分けを混同するミス。
出題の前提:平成21年度秋期 基本情報技術者試験 午後 問7
出典:IPA『2009年度 秋期 午後』
公式問題冊子 p.29 ↗(www.ipa.go.jp) / 公式問題冊子 p.30 ↗(www.ipa.go.jp) / 公式問題冊子 p.31 ↗(www.ipa.go.jp) / 公式問題冊子 p.32 ↗(www.ipa.go.jp)
ニュートン法による方程式の数値計算と計算誤差
データ構造及びアルゴリズム · ニュートン法 / ホーナー法 / 浮動小数点数 / 丸め誤差 / けた落ち
ニュートン法による方程式の数値計算および計算誤差に関する次の記述を読み、空欄[ a ]〜[ e ]に入れる適切な答えを選べ。 〔アルゴリズムの説明〕 ニュートン法は、解の予測値 x から始めて漸化式 x ← x - f / d(f は方程式 f(x) の値、d は導関数 f'(x) の値)により近似値を更新するアルゴリズムである。 多項式 f(x) = a_n・x^n + … + a_1・x + a_0 に対して、導関数は d(x) = b_{n-1}・x^{n-1} + … + b_0 (ただし b_{k-1} = k × a_k)となる。 〔設問〕 (1) 3次方程式 x^3 - 3x^2 - x + 3 = 0 を解いたプログラム1の印字結果(図1)において、行番号6と7の印字された x の値はともに 3.000000(有効数字7桁表示)であった。この時点で変数 x に保持されていた実際の値をそれぞれ x6, x7 と表すと、[ a ]である。 (2) プログラム2では、係数を配列 a[k](k=0〜n)に、導関数の係数を配列 b[k](k=0〜n-1)に格納する(図2)。 ・手順(2)の処理(行番号9〜11): k: n, k ≧ 1, -1 の繰返し内で[ b ]を実行する。 ・手順(3)のホーナー法による多項式計算(行番号13〜18): f ← a[n] × x + a[n-1] d ← [ c ] k: n-2, k ≧ 0, -1 の繰返し内で f ← f × x + a[k] d ← d × x + [ d ] (3) 4次方程式 (x-2)^4 = x^4 - 8x^3 + 24x^2 - 32x + 16 = 0(解はすべて2)に対し、予測値 x = 2.00001 を与えて実行したところ、行番号2で x が解から遠ざかる現象が見られた。f を求める式の中間結果を調べると、(A)の計算部分で演算の過程で[ e ]が徐々に累積し、最後に 16.0 を加算するときにけた落ちが発生したことが判明した。
- a ア
- x6 = x7 である
- a イ
- x6 ≠ x7 である
- a ウ
- x6 = x7 とも x6 ≠ x7 ともいえない
- b ア
- b[k-1] ← (k-1) × a[k]
- b イ
- b[k-1] ← k × a[k]
- b ウ
- b[k] ← k × a[k+1]
- b エ
- b[k] ← (k+1) × a[k+1]
- c ア
- b[k-1]
- c イ
- b[k]
- c ウ
- b[k+1]
- c エ
- b[n-1]
- c オ
- b[n-1] × x
- c カ
- b[n-1] × x + b[n-2]
- d ア
- b[k-1]
- d イ
- b[k]
- d ウ
- b[k+1]
- d エ
- b[n-1]
- d オ
- b[n-1] × x
- d カ
- b[n-1] × x + b[n-2]
- e ア
- けたあふれ
- e イ
- けた落ち
- e ウ
- 指数下位けたあふれ
- e エ
- 丸め誤差
解答・解説を表示
解答
a: イ, b: イ, c: エ, d: イ, e: エ
解説
まず要点:ニュートン法は、導関数(傾きを表す関数)を使って方程式の解を少しずつ近づけていく計算方法です。 多項式の値を計算するときは、掛け算の回数を減らせるホーナー法を使います。 コンピュータの小数計算では、表せる桁数が限られるため丸め誤差(四捨五入で生じる小さな誤差)が積み重なったり、近い値どうしを引いて有効な桁が減るけた落ちが起きたりします。
解き方
- 設問(1):表示は7桁までだが内部では十数桁を保っている違いに注目し、印字されたfの値が違うことから内部のxも違うと判断する。
- 設問(2)b:図2の対応表(b[0]=1×a[1], …, b[n-1]=n×a[n])から、kがnから1へ減るループの代入式を選ぶ。
- 設問(2)c, d:最高次の係数から始めてxをかけ次の係数を足すホーナー法を導関数d(x)に当てはめ、cとdを埋める。
- 設問(3)e:計算の途中で少しずつ積み重なる誤差(丸め誤差)と、最後に起きた誤差(けた落ち)の関係を問題文から読み取る。
小問ごとの答え
- 小問 a:イ
- 行番号6での f の値は 7.527369×10^-9 であり、行番号7では 0.000000 と異なっています。関数値 f が異なることから、代入された x の内部値も x6 ≠ x7 であることが分かります。
- 小問 b:イ
- 図2の定義より、添字 k に対する係数 a_k(a[k])から導かれる b の要素は b[k-1] = k × a[k] です。k は n から 1 まで変化するため「b[k-1] ← k × a[k]」となります。
- 小問 c:エ
- 導関数 d(x) の最高次は n-1 次であり、その係数は b[n-1] です。ホーナー法による積和演算の初期値として「b[n-1]」を格納します。
- 小問 d:イ
- ループ変数 k が n-2 から 0 まで減少する過程で、各次数の係数 b[k] を順次「d ← d × x + b[k]」として加算していきます。
- 小問 e:エ
- 浮動小数点演算の各ステップで生じる「丸め誤差」が徐々に累積し、その結果ほぼ大きさが等しく符号が反対の数値同士(約 -16.0 と +16.0)の加算が行われて「けた落ち」が発生します。
覚えるポイント
- ホーナー法(Horner's method):多項式を a_n・x + a_{n-1} のように括り出し、積和の繰返しで計算量を O(n) に抑える手法
- 丸め誤差の累積によって値の精度が劣化し、近い値の減算(または異符号の加算)で「けた落ち」が発生する
間違えやすいところ
- 印字された見た目(3.000000)だけで判断し、浮動小数点数の内部の値の違いを見落とすミス。
- ホーナー法で、多項式の係数と導関数の係数の最高次数(nとn-1)のずれを間違えるミス。
出題の前提:平成21年度秋期 基本情報技術者試験 午後 問8
出典:IPA『2009年度 秋期 午後』
公式問題冊子 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) / 公式問題冊子 p.38 ↗(www.ipa.go.jp)
多倍長整数の加算(C言語)
ソフトウェア開発 · C言語 / 多倍長整数 / 配列と構造体 / 基数変換・桁上がり
正の多倍長整数の入出力および加算を行うC言語プログラムに関する問題である。構造体MPは要素数(length)と下位から9桁ごとに区切った数値を格納する配列(data)を持つ。関数setは数字文字列をMP構造体に変換し、関数printは多倍長整数を表示し、関数addは二つの多倍長整数の加算を行う。プログラム中の空欄a〜dを埋め、さらに設問2における関数addの行αおよび行βの実行回数を答えよ。
- ア
- 設問1 a: str_idx != 0 / b: i < NUM_DIGIT / c: %= 10 / d: i = 0; i <= num->length - 1; i++、設問2: 0
- イ
- 設問1 a: str_idx < 0 / b: i < NUM_DIGIT && str_idx <= 0 / c: *= 10 / d: i = 0; i <= num->length - 2; i++、設問2: 1
- ウ
- 設問1 a: str_idx <= 0 / b: i < NUM_DIGIT && str_idx >= 0 / c: += 10 / d: i = num->length - 1; i >= 0; i--、設問2: 2
- エ
- 設問1 a: str_idx > 0 / b: i < NUM_DIGIT || str_idx <= 0 / c: -= 10 / d: i = num->length - 2; i >= 0; i--、設問2: 3
- オ
- 設問1 a: str_idx >= 0 / b: i < NUM_DIGIT || str_idx >= 0 / c: /= 10、設問2: 4
- カ
- 設問2: 5
- キ
- 設問2: 6
- ク
- 設問2: 7
解答・解説を表示
解答
設問1 a: オ, 設問1 b: ウ, 設問1 c: イ, 設問1 d: エ, 設問2 e: オ, 設問2 f: イ, 設問2 g: エ
解説
まず要点:大きな数は9桁ずつのブロックに分けて配列に覚えさせる。筆算と同じで、下のブロックから足し、あふれたら次のブロックに1を繰り上げる。ブロックごとに分ければ、基本の型では扱えない桁数でも計算できる。
解き方
- 文字列から数値配列への変換では、末尾の桁から9桁ずつ取り出して10進数に組み立て、配列の外を触らない条件を決める。
- 表示するときは、一番上のブロックだけ普通に出し、それより下のブロックは9桁になるよう0で埋めて出す。
- 足し算では、二つの数の大きい方のブロック数だけ繰り返し、桁あふれ(α)と繰り上がり代入(β)が起こる条件をブロックごとに調べる。
小問ごとの答え
- 小問 設問1 a:オ
- 文字列の末尾から先頭(インデックス0)に向かって1文字ずつ処理するため、ループ継続条件は str_idx >= 0 です。
- 小問 設問1 b:ウ
- 1つの配列要素に最大9桁(NUM_DIGIT)格納し、かつ文字列の先頭を越えないようにするため、i < NUM_DIGIT && str_idx >= 0 が適切です。
- 小問 設問1 c:イ
- 下位桁から上位桁へ進むにつれて桁の重みを10倍にするため、mul *= 10; と更新します。
- 小問 設問1 d:エ
- 最上位要素は先行ゼロなしで既に出力されているため、残りの要素(num->length - 2 から 0 まで)を降順にゼロ埋め9桁で出力するループ i = num->length - 2; i >= 0; i-- となります。
- 小問 設問2 e:オ
- (1)の数値aは4要素、bは3要素であるため、i_maxはmax(4, 3) = 4となります。ループはi=0から3までの4回実行されるため、α部分の実行回数は4回です。
- 小問 設問2 f:イ
- (1)の加算において、i=0, 1では繰り上がりが発生せず、i=2の加算(123456789 + 999999999 = 1123456788)で1回だけ繰り上がりが発生してβが実行されます。i=3では繰り上がりは生じないため、βの実行回数は1回です。
- 小問 設問2 g:エ
- (2)の各ブロックの加算を追跡すると、i=0(和が10^9以上で繰り上がり1回目)、i=1(繰り上がり込みで和が10^9で繰り上がり2回目)、i=3(和が10^9以上で繰り上がり3回目)の計3回、βの繰り上がり処理が実行されます。
覚えるポイント
- 多倍長整数の基数表現では10の累乗を基数として分割管理する。
- 下位ブロックから加算して繰り上がりを上位に送るアルゴリズムを把握する。
間違えやすいところ
- 一番上のブロックにも0埋めをしてしまい、余計な0を表示するミス。
- 繰り上がりが次の桁に足された結果、さらに繰り上がりが続くのを見落とすミス。
出題の前提:問題文中に示されたC言語プログラムの構文および多倍長整数の仕様に基づく。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 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)
ソフトウェア開発 · COBOL / ファイル処理 / SORT / 集計処理
売上伝票ファイルから月単位の売上情報を支店ごとに集計して売上マスタファイルに格納し、画面に降順で表示するCOBOLプログラムである。設問1ではプログラム中の空欄a〜dを、設問2では前年同月比の表示を追加するための空欄e〜gを埋めよ。
- ア
- a, b, d群: ADD MAST-AMOUNT(CNT) TO MAST-TOTAL / c群: ASCENDING KEY SORT-AMOUNT / e群: MOVE MAST-AMOUNT(CNT) TO THIS-TOTAL / f, g群: COMPUTE RATIO = MAST-AMOUNT(SORT-BR) * 100 / SORT-AMOUNT
- イ
- a, b, d群: ADD SALES-AMOUNT TO MAST-TOTAL / c群: ASCENDING KEY SORT-BR / e群: MOVE MAST-REC TO W-MAST / f, g群: COMPUTE RATIO = MAST-TOTAL * 100 / THIS-TOTAL
- ウ
- a, b, d群: ADD SALES-AMOUNT TO SORT-AMOUNT / c群: DESCENDING KEY SORT-AMOUNT / e群: MOVE MAST-TOTAL TO THIS-TOTAL / f, g群: COMPUTE RATIO = SORT-AMOUNT * 100 / MAST-AMOUNT(SORT-BR)
- エ
- a, b, d群: MOVE MAST-AMOUNT(CNT) TO SORT-AMOUNT / c群: DESCENDING KEY SORT-BR / e群: MOVE W-MAST TO MAST-REC / f, g群: COMPUTE RATIO = SORT-AMOUNT * 100 / MAST-TOTAL
- オ
- a, b, d群: MOVE SALES-AMOUNT TO SORT-AMOUNT / f, g群: COMPUTE RATIO = THIS-TOTAL * 100 / MAST-TOTAL
- カ
- a, b, d群: MOVE SALES-BR TO SORT-BR
- キ
- a, b, d群: MOVE SALES-YYYYMM TO MAST-YYYYMM
解答・解説を表示
解答
設問1 a: キ, 設問1 b: ア, 設問1 c: ウ, 設問1 d: エ, 設問2 e: ウ, 設問2 f: ウ, 設問2 g: オ
解説
まず要点:COBOLの集計では、順に読んだレコードを配列(OCCURS項目)に足し込み、SORT文で並べ替える。同じマスタ領域に上書きで読み込むときは、必要な当月の値を先に作業領域へ退避しておく。
解き方
- 最初のレコードから処理する年月キーを取り出して覚え、あとのレコードの売上金額を支店コードごとに足し込む。
- 集計が終わったら全支店の合計額を出し、SORTの入力手続きで各支店データをソート用ファイルに渡す。
- 前年同月比を出す処理では、前年同月データを読む前に当月の合計値を退避し、当月÷前年同月の百分率を計算する。
小問ごとの答え
- 小問 設問1 a:キ
- 最初の伝票レコードを読み込んだ直後、売上年月を作業領域のキー項目に設定するため、MOVE SALES-YYYYMM TO MAST-YYYYMM を実行します。
- 小問 設問1 b:ア
- 各支店の売上金額(MAST-AMOUNT(CNT))を足し合わせて当月の全支店合計(MAST-TOTAL)を算出するため、ADD MAST-AMOUNT(CNT) TO MAST-TOTAL となります。
- 小問 設問1 c:ウ
- 支店別売上金額を降順に整列して表示するため、SORT文のキー指定は DESCENDING KEY SORT-AMOUNT です。
- 小問 設問1 d:エ
- ソート入力手続きにおいて、支店ごとの売上金額をソートレコードに設定して解放するため、MOVE MAST-AMOUNT(CNT) TO SORT-AMOUNT となります。
- 小問 設問2 e:ウ
- 前年同月のマスタレコードをW-MASTに読み込むと当月のMAST-TOTALが上書きされてしまうため、事前に当月合計を退避する MOVE MAST-TOTAL TO THIS-TOTAL を行います。
- 小問 設問2 f:ウ
- 各支店の対前年同月比は(当月売上 / 前年同月売上)× 100 で計算するため、COMPUTE RATIO = SORT-AMOUNT * 100 / MAST-AMOUNT(SORT-BR) となります。
- 小問 設問2 g:オ
- 全社合計の対前年同月比は(当月合計 / 前年同月合計)× 100 で計算するため、COMPUTE RATIO = THIS-TOTAL * 100 / MAST-TOTAL となります。
覚えるポイント
- SORT文では降順整列にDESCENDING KEY、昇順整列にASCENDING KEYを指定する。
- 対前年同月比などの比率計算では、比較基準となる前年同月の値が分母になる。
間違えやすいところ
- 前年同月比の計算で、当月売上と前年売上の割り算の順序を逆にしてしまうミス。
- マスタを読み直すと当月の合計値が消えるのを見落とし、退避を忘れるミス。
出題の前提:問題文に示されたCOBOLの構文仕様およびファイル構造の定義に基づく。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 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)
ソフトウェア開発 · Java / オブジェクト指向 / インタフェース / クラスの継承
携帯電話の利用状況(通話時間およびパケット数)に対して最も安価な料金プランを提示するJavaプログラムである。通話料金を計算するクラスCallingPlan、パケット料金を計算するインタフェースPacketPlanとその実装クラスMeasured・Tiered、さらに割引上限サービスを拡張したTieredBoundedなどが定義されている。プログラム1〜7中の空欄 a 〜 i に入る適切な字句を解答群から選べ。
解答・解説を表示
解答
設問1 a: イ, 設問1 b: ア, 設問1 c: エ, 設問1 d: エ, 設問1 e: ウ, 設問1 f: エ, 設問2 g: イ, 設問2 h: カ, 設問2 i: オ
解説
まず要点:Javaではインタフェースを実装するときはimplements、クラスを継承するときはextendsを使う。親クラスの処理を子クラスから使うときはsuperを使う。最小値をさがす初期値には十分大きいInteger.MAX_VALUE、切り上げの割り算は「(値 + 単位 - 1) / 単位」が定石。
解き方
- 設問1では、無料通話分の扱いと負の値の補正、インタフェース実装の構文、切り上げ計算の定石、最小値さがしの初期値と呼び出し文を順に確かめる。
- 設問2では、TieredBoundedがTieredの派生クラスだと見抜き、継承の構文と親メソッドの呼び出し(super)、上限値の比較を当てはめる。
小問ごとの答え
- 小問 設問1 a:イ (callingRate * minutes - included)
- 無料通話分includedは金額換算で与えられているため、利用通話時間分の金額callingRate * minutesから無料通話分を減算して超過通話料を求めます。
- 小問 設問1 b:ア (callingCharge < 0)
- 通話料が無料通話分未満の場合はcallingChargeが負の値となるため、callingCharge < 0の条件で超過分を0に補正します。
- 小問 設問1 c:エ (implements PacketPlan)
- プログラム3においてPacketPlanはインタフェースとして宣言されているため、クラスでその仕様を実装するキーワードはimplements PacketPlanとなります。
- 小問 設問1 d:エ (packets - allowance + 99)
- 無料枠allowanceを超過したパケット数(packets - allowance)を100単位で切り上げるため、99を加算して100で整除する計算式を用います。
- 小問 設問1 e:ウ (Integer.MAX_VALUE)
- 複数の料金プランの中から最小値を探索するアルゴリズムであるため、初期値minChargeにはint型の最大値であるInteger.MAX_VALUEを設定します。
- 小問 設問1 f:エ (cellPhonePlan.calculateCharge(minutes, packets))
- 各組み合わせプランを表すCellPhonePlanオブジェクトに対し、通話時間とパケット数を引数にして料金計算メソッドcalculateChargeを呼び出します。
- 小問 設問2 g:イ (extends Tiered)
- TieredBoundedクラスは既存の段階制料金クラスTieredの機能を再利用・拡張するため、extends Tieredと宣言してクラスを継承します。
- 小問 設問2 h:カ (super.calculateCharge(packets))
- 上限額を適用する前の通常料金を親クラスTieredの処理で算出するため、親クラスのメソッドsuper.calculateCharge(packets)を呼び出します。
- 小問 設問2 i:オ (maxCharge)
- 算出した料金chargeが割引サービスの上限額maxChargeを超えているか判定し、超えている場合はmaxChargeを請求金額とします。
覚えるポイント
- インタフェースの実装はimplements、クラスの継承はextendsを使用する。
- 整数の切り上げ除算は (x + M - 1) / M のイディオムを用いる。
- 最小値探索を行う変数の初期値には型に応じた最大値を代入する。
間違えやすいところ
- 無料通話分(included)を通話時間(分)と混同して計算式を間違える。
- 最小値をさがす初期値にInteger.MIN_VALUEや0を入れて、正しく更新されなくなるミス。
出題の前提:平成21年度秋期基本情報技術者試験午後問11の出題条件およびJavaプログラミング仕様に基づく。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 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)
ビット列の置換えプログラム(CASL II / COMET II)
ソフトウェア開発 · CASL II / COMET II / ビット演算 / シフト演算 / マスク処理
連続したn語(16×nビット)をビット列Aとみなし、ビット列Aの(p+1)ビット目からのqビットを、別のqビットのビット列Bで置き換える副プログラム REPLACE である。主プログラムから渡された p=55, q=12, GR0=1011000111010000 に対するレジスタ値の変化(設問1 a〜d)、および対象語の置換位置を0クリアするための論理演算命令(設問2 e, f)を解答群から選べ。
解答・解説を表示
解答
設問1 a: ウ, 設問1 b: エ, 設問1 c: イ, 設問1 d: ウ, 設問2 e: イ (順不同), 設問2 f: キ (順不同)
解説
まず要点:COMET IIにはビット反転(NOT)の専用命令がないため、ANDとXORを組み合わせてマスク位置を0にする。マスクビット列Mを使い「D ← D XOR (M AND D)」または「M ← M XOR D; D ← D AND M」のどちらの順でも、マスクの位置は0、それ以外は元の値のまま残る。
解き方
- 設問1では、p=55・q=12に対して、1語16ビットの割り算(商と余り)と論理シフト命令の動きを追い、各レジスタの値を計算する。
- 設問2では、第i語と第i+1語の置き換えるビットを0にするため、マスク値と対象語のAND・XORの関係を真理値で確かめる。
小問ごとの答え
- 小問 設問1 a:ウ (7)
- p=55を16で割った余りを求めるため、行6の AND GR2, =#000F により下位4ビットが抽出され、55 mod 16 = 7 となります。
- 小問 設問1 b:エ (9)
- 行7で GR4 に 16 が入り、行8の SUBA GR4, GR2 で 16 - 7 = 9 が計算されるため、GR4 の値は 9 となります。
- 小問 設問1 c:イ (0000000101100011)
- GR0(1011000111010000)を行14で右に GR2=7 ビット論理シフト(SRL)するため、上位に7個の0が補填され 0000000101100011 となります。
- 小問 設問1 d:ウ (1010000000000000)
- 行9でGR0がコピーされたGR5を行16で左に GR4=9 ビット論理シフト(SLL)するため、下位7ビットが上位へ送られ 1010000000000000 となります。
- 小問 設問2 e:イ (AND) ※順不同
- マスクレジスタ(置換位置が1)と対象語の間で AND と XOR を順次適用することにより、置換位置のビットのみを確実に0クリアできます。
- 小問 設問2 f:キ (XOR) ※順不同
- 行19・20で AND と XOR を任意の順序(順不同)で実行することにより、NOT命令のないCOMET IIで特定ビットのゼロクリアを実現します。
覚えるポイント
- COMET IIでビットを0クリアするには、マスクとAND/XORを組み合わせて用いる。
- 16ビット境界を跨ぐビット列の置換は、第i語への右シフトと第i+1語への左シフトに分割して合成する。
間違えやすいところ
- 算術シフト(SRA)と論理シフト(SRL)で符号ビットの埋め方が違うのを混同すること。
- SUBA命令の引数の順番(第1オペランドから第2オペランドを引く)を取り違えて計算するミス。
出題の前提:平成21年度秋期基本情報技術者試験午後問12の出題条件およびアセンブラ言語COMET II仕様に基づく。
出典:IPA『2009年度 秋期 午後』
公式問題冊子 p.56 ↗(www.ipa.go.jp) / 公式問題冊子 p.57 ↗(www.ipa.go.jp) / 公式問題冊子 p.58 ↗(www.ipa.go.jp)
勤怠管理と出勤割当表の作成
ソフトウェア開発(表計算) · 表計算 / IF関数 / 論理演算 / セル参照(絶対参照・相対参照) / 順位関数
アルバイトの勤怠管理及び翌月の出勤割当を行う表計算ワークシートに関する次の設問に答えよ。 〔設問1〕 ワークシート「勤怠管理」において、各日のペナルティを算出するセルG4の式中の空欄 a, b、及び各日の勤務時間を算出するセルE4の式中の空欄 c に入る正しい答えを選択せよ。 〔設問2〕 ワークシート「出勤割当表」において、先々月ペナルティ順位を求めるセルB38の式中の空欄、評価値を算出するセルAB3・AB4の式中の空欄 d, e, f、及び出勤者を決定するセルB3の式中の空欄 g, h に入る正しい答えを選択せよ(g と h は順不同)。
- a-オ
- 論理積(B4=1, C4='')
- b-イ
- 論理積(B4=1, 論理和(C4>(10/24), D4<(17/24)))
- c-イ
- 最小(D4, 12/24)-最小(C4, 12/24)+最大(D4, 13/24)-最大(C4, 13/24)
- d-ウ
- B$38
- e-イ
- B$36
- f-キ
- 合計(B$3〜B3)
- g-イ
- 勤務可能調査!B3=1
- h-キ
- 順位(AB3, $AB3〜$AP3, 0)≦5
解答・解説を表示
解答
設問1 a: オ, 設問1 b: イ, 設問1 c: イ, 設問2 d: ウ, 設問2 e: イ, 設問2 f: キ, 設問2 g: イ (順不同), 設問2 h: キ (順不同)
解説
まず要点:表計算で複雑な条件を判定するときは、IF関数を入れ子にして論理積・論理和と組み合わせ、条件が重ならないよう分ける。式を多くのセルにコピーするときは、固定したい行や列に「$」を付ける絶対参照と、コピー先でずらす相対参照を使い分ける。
解き方
- 設問1:ペナルティ判定の条件(正当な理由、欠勤、遅刻・早退)を整理し、内部時刻(1日=1)を使った論理式を組み立てる。昼休みを除く計算では、午前と午後の境界の扱いを最小・最大関数で表す。
- 設問2:割り当ての優先順位を表す評価値の桁の並び(出社可否、ペナルティ順位、前日までの割当回数、経験順位)と、式のコピー方向(行固定・相対参照)を確かめ、順位関数と勤務可能フラグの論理積で割り当ての条件が満たされることを確認する。
小問ごとの答え
- 小問 設問1 a:オ
- 欠勤(ペナルティ3)の条件は「正当な理由がなく出社予定日に欠勤した場合」である。F4=1(正当な理由あり)でないことは外側のIFで判定済みなため、出社予定日(B4=1)かつ出社時刻が未入力(C4='')である条件「論理積(B4=1, C4='')」が該当する。
- 小問 設問1 b:イ
- 遅刻・早退(ペナルティ1)の条件は、出社予定日(B4=1)であり、かつ「出社が10時より遅い(C4 > 10/24)」または「退社が17時より早い(D4 < 17/24)」のいずれかを満たすことである。したがって「論理積(B4=1, 論理和(C4>(10/24), D4<(17/24)))」となる。
- 小問 設問1 c:イ
- 昼休み(12:00〜13:00)を除く勤務時間を求める。午前帯(12時まで)の実働時間は「最小(D4, 12/24)-最小(C4, 12/24)」、午後帯(13時以降)の実働時間は「最大(D4, 13/24)-最大(C4, 13/24)」で表され、これらを合算する式イが、午前のみ・午後のみ勤務や未出社(0扱い)にも過不足なく適合する。
- 小問 設問2 d:ウ
- 評価値の上位2〜3桁目には「先々月ペナルティ順位」を設定する。これは38行目に計算されている。式を横(列方向)に複写した際は各人の列を参照し、縦(行方向)に複写した際は常に38行目を固定参照する必要があるため、行固定の複合参照「B$38」を指定する。
- 小問 設問2 e:イ
- 評価値の最下位2桁には「経験順位」を設定する。これは36行目に入力されている。縦方向への複写で行番号を36に固定し、横方向への複写で列を変化させるため、行固定の「B$36」を指定する。
- 小問 設問2 f:キ
- 評価値の4〜5桁目には「前日までの割当回数」を設定する。セルAB4(2日目)時点での前日(初日・3行目)までの割当回数の合計は「合計(B$3〜B3)」である。これを縦に複写すると合計範囲がB$3〜B4、B$3〜B5と自動拡張され、正しく前日までの累計が得られる。
- 小問 設問2 g:イ
- 出勤割当の条件として、対象者がその日に出社可能であること「勤務可能調査!B3=1」が必要である(gとhは順不同)。
- 小問 設問2 h:キ
- 評価値が小さい順(昇順=順序0)に上位5人以内である条件「順位(AB3, $AB3〜$AP3, 0)≦5」を論理積で組み合わせる。出社可能者が5人以下の場合でも、出社不可者は評価値が100万以上(最上位が1)となり出社可能者より下位になるため、出社可能者全員のみが「出社可能かつ5位以内」を満たして正しく割り当てられる(gとhは順不同)。
覚えるポイント
- 時間帯をまたぐ勤務時間の計算では、最小関数と最大関数で時間帯ごとの境界を切り分けるテクニックが有効である。
- 累計計算を行う際は、合計の開始セルを行固定(例:B$3)、終了セルを相対参照(例:B3)にして複写する。
間違えやすいところ
- 遅刻と早退の条件を組み合わせる際に「論理積」と「論理和」を取り違え、両方を満たすときだけ遅刻扱いにしてしまう誤り。
- セルをコピーするときに「$」を付け忘れ、参照する行が思わずずれてしまう誤り。
出題の前提:平成21年度秋期基本情報技術者試験午後問題問13
出典:IPA『2009年度 秋期 午後』
公式問題冊子 p.59 ↗(www.ipa.go.jp) / 公式問題冊子 p.60 ↗(www.ipa.go.jp) / 公式問題冊子 p.61 ↗(www.ipa.go.jp) / 公式問題冊子 p.62 ↗(www.ipa.go.jp) / 公式問題冊子 p.63 ↗(www.ipa.go.jp) / 公式問題冊子 p.64 ↗(www.ipa.go.jp) / 公式問題冊子 p.65 ↗(www.ipa.go.jp)
2009年度 秋期 午後
参照した公式資料
IPAが公開した2009年度 秋期 午後の問題・解答資料です。

