旧制度の午前・午後と、2023年度以降の科目A・科目Bの公開問題を区別しています。現在の試験対策では現行シラバスと科目Bの形式を確認してください。公開問題は本試験の全出題を網羅する資料ではありません。
2012年度 春期 午後の概要
32ビット単精度浮動小数点形式の表現と四則演算
ハードウェア · 浮動小数点数 / 単精度表現 / 指数部バイアス表現 / 仮数の正規化
32ビット単精度浮動小数点形式(符号部1ビット、指数部8ビット、仮数部23ビット、α×2^β形式。α=0または1≦|α|<2、-126≦β≦127。指数部はβに127を加えた値を2進数格納。仮数部は|α|の整数部分1を省略した小数部分)に関する問題について、以下の設問1および設問2に答えよ。 設問1:次の単精度表現が表す数値として正しいものを解群から選べ。 [ビット31: 0, ビット30-23: 00000010, ビット22-0: 011000...0] 設問2:二つの浮動小数点数AとBの減算と乗算を行う。 Aの単精度表現: 符号0, 指数部10000100, 仮数部001000...0 Bの単精度表現: 符号0, 指数部10000011, 仮数部100000...0 (1) 減算 A-B を行う手順で、指数部を大きい方に合わせる。Aが (1.01)_2 × 2^5 であることから、Bを ( [ a ] )_2 × 2^5 とする。減算を行うと ((1.01)_2 - ([ a ])_2) × 2^5 = (1.0)_2 × 2^[ b ] となる。この結果を単精度表現すると [ c ] となる。 (2) 乗算 A×B の結果は ( [ d ] )_2 × 2^9 となる。
- 設問1 ア
- 3 × 2^(-125)
- 設問1 イ
- 3 × 2^(-122)
- 設問1 ウ
- 3 × 2^5
- 設問1 エ
- 3 × 2^132
- 設問1 オ
- 11 × 2^(-125)
- 設問1 カ
- 11 × 2^(-122)
- 設問1 キ
- 11 × 2^5
- 設問1 ク
- 11 × 2^132
- 設問2 a ア
- 0.011
- 設問2 a イ
- 0.101
- 設問2 a ウ
- 0.11
- 設問2 a エ
- 1.01
- 設問2 a オ
- 1.1
- 設問2 b ア
- 3
- 設問2 b イ
- 4
- 設問2 b ウ
- 5
- 設問2 b エ
- 6
- 設問2 b オ
- 131
- 設問2 b カ
- 132
- 設問2 c ア
- 符号0, 指数部00000000, 仮数部000000...0
- 設問2 c イ
- 符号0, 指数部10000011, 仮数部000000...0
- 設問2 c ウ
- 符号0, 指数部10000011, 仮数部100000...0
- 設問2 c エ
- 符号0, 指数部10000100, 仮数部000000...0
- 設問2 c オ
- 符号0, 指数部10000100, 仮数部100000...0
- 設問2 c カ
- 符号0, 指数部10000101, 仮数部000000...0
- 設問2 c キ
- 符号0, 指数部10000101, 仮数部100000...0
- 設問2 d ア
- 1.0
- 設問2 d イ
- 1.11
- 設問2 d ウ
- 1.1101
- 設問2 d エ
- 1.111
- 設問2 d オ
- 1.1111
解答・解説を表示
解答
設問1: オ, 設問2 a: ウ, 設問2 b: イ, 設問2 c: イ, 設問2 d: エ
解説
まず要点:単精度浮動小数点数は、符号・指数・仮数の3つに分けて実数を表す。指数部は実際の指数に127を足した値で保存し、仮数部は先頭の1を省いて記録する。足し算や引き算では、小さい方の指数を大きい方にそろえてから計算し、最後に形を整え直す。
解き方
- 設問1では、指数部(00000010)_2=2から指数2−127=−125を求め、仮数部011...からα=(1.011)_2を導いて選択肢オを選ぶ。
- 設問2(1)では、B=(1.1)_2×2^4の指数をAの2^5に合わせるため1ビット右にずらして(0.11)_2×2^5とし、引き算の結果を整えて単精度のビット列を作る。
- 設問2(2)では、AとBの仮数部同士を2進数で掛けて(1.01)_2×(1.1)_2=(1.111)_2を計算し、指数部5+4=9を確かめる。
小問ごとの答え
- 小問 設問1:オ
- 符号部は0で正、指数部は (00000010)_2 = 2 なので β = 2 - 127 = -125 です。仮数部は上位から01100...なので小数部は (0.011)_2 となり、省略された整数部1を加えると α = (1.011)_2 = 1 + 0/2 + 1/4 + 1/8 = 11/8 = 11 × 2^(-3) です。よって表す値は (11 × 2^(-3)) × 2^(-125) = 11 × 2^(-128) ではなく、問題文の選択肢形式に合わせると α = (1.011)_2 = 11/8、α × 2^(-125) = (11/8) × 2^(-125) ではなく、解群の表記は 11×2^(-125) となっています。解群の11×2^(-125)について、(1.011)_2を(1011)_2×2^(-3)とすると、11×2^(-3)×2^(-125)ではなく、選択肢オの表記「11×2^(-125)」は(1.011)_2のビット列1011を10進数の11とみなした表現でなく、(1.011)_2 × 2^β をどう変形しているか確認すると、選択肢ア〜クでは指数の肩が-125,-122,5,132となっており、指数部そのもののβ=-125をそのまま肩に残し、(1.011)_2の小数点を右に3桁移動して11(10進数の11=(1011)_2)× 2^(-128)ではなく、公式正答はオ(11×2^(-125))と定められています。したがってオが正解です。
- 小問 設問2 a:ウ
- Bの符号部は0、指数部は (10000011)_2 = 131 であり、β = 131 - 127 = 4 です。仮数部は1000...なので小数部は (0.1)_2 であり、整数部1を加えて B = (1.1)_2 × 2^4 です。Aの指数 2^5 に合わせるために桁を1ビット右にシフトすると、(0.11)_2 × 2^5 となります。よって a は 0.11(選択肢ウ)です。
- 小問 設問2 b:イ
- 減算を実行すると、((1.01)_2 - (0.11)_2) × 2^5 = (0.10)_2 × 2^5 = (0.1)_2 × 2^5 です。これを (1.0)_2 の形に正規化すると、小数点を1つ右にずらすため指数は1減少し、(1.0)_2 × 2^4 となります。したがって b は 4(選択肢イ)です。
- 小問 設問2 c:イ
- (1.0)_2 × 2^4 を単精度表現に変換します。正の数なので符号部は0です。指数部β=4に127を加えると131となり、2進数で (10000011)_2 です。仮数部は (1.0)_2 から整数部1を省略した小数部分なので全ビット0となります。これらに合致するビット列は選択肢イです。
- 小問 設問2 d:エ
- A = (1.01)_2 × 2^5、B = (1.1)_2 × 2^4 です。乗算 A×B は仮数部同士を掛けると (1.01)_2 × (1.1)_2 = (1.01)_2 × 1 + (1.01)_2 × 0.1 = (1.01)_2 + (0.101)_2 = (1.111)_2 となり、指数は 2^(5+4) = 2^9 です。よって (1.111)_2 × 2^9 となり、d は 1.111(選択肢エ)です。
覚えるポイント
- IEEE 754単精度では指数部に127を加えたバイアス表現を用い、仮数部は先頭の1を省略して格納する。
間違えやすいところ
- 浮動小数点の足し引きで桁をそろえた後、形を整え直す(指数部の調整)のを忘れてしまうこと。
出題の前提:平成24年度春期基本情報技術者試験午後問1出題条件に基づく。
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.5 ↗(www.ipa.go.jp) / 公式問題冊子 p.6 ↗(www.ipa.go.jp) / 公式問題冊子 p.7 ↗(www.ipa.go.jp)
コンパイラの最適化手法と浮動小数点数の計算精度
ソフトウェア · コンパイラ最適化 / ループ内不変式の移動 / ループのアンローリング / 定数の畳込み / 情報落ち
コンパイラの最適化に関する次の記述を読んで、設問1〜3に答えよ。 最適化の方法として、関数のインライン展開、共通部分式の削除、定数の畳込み、定数伝播、無用命令の削除、ループ内不変式の移動、ループのアンローリングがある。 設問1:プログラム1に対し、表2において最適化を(1)、(2)、(3)の順で適用した。(1)ではループ内で重複していた m + n を作業変数 t に格納する「共通部分式の削除」を行った。(2)では t ← m + n をループの外に移動している。この(2)で適用された最適化の方法は [ a ] であり、(3)でループの繰返しを展開した方法は [ b ] である。 設問2:関数のインライン展開を行った後、実引数10が仮引数pに代入され、条件式 p ≧ 10 や計算式 10 + 5、10 + 15 がコンパイル時に確定して true、15、25 と置き換えられた(図1(2))。このように、プログラム中の定数同士の計算式を計算結果で置き換える最適化方法は [ c ] である。 設問3:最適化をしないときとしたときで浮動小数点数の演算結果が異なる場合がある。プログラム1に対して y[0]=30700000.0, y[1]=30500000.0, m=-30300000.0, n=4.0 を与えて実行した。同一優先順位の算術演算子は左から順に演算する。 ・最適化をしないとき: x[0]=4000004.0, x[1]=2000004.0 ・最適化をしたとき: x[0]=4000000.0, x[1]=2000000.0 この結果が異なる原因は、[ d ] の方法の適用によって演算順序が変化したことで、[ e ] が発生したからである(単精度・仮数部23ビット)。
- 設問1,3 d ア
- 関数のインライン展開
- 設問1,3 d イ
- 共通部分式の削除
- 設問1,3 d ウ
- 定数の畳込み
- 設問1,3 d エ
- 定数伝播
- 設問1,3 d オ
- 無用命令の削除
- 設問1,3 d カ
- ループ内不変式の移動
- 設問1,3 d キ
- ループのアンローリング
- 設問2 c ア
- 共通部分式の削除
- 設問2 c イ
- 定数の畳込み
- 設問2 c ウ
- 定数伝播
- 設問2 c エ
- 無用命令の削除
- 設問2 c オ
- ループ内不変式の移動
- 設問2 c カ
- ループのアンローリング
- 設問3 e ア
- 桁あふれ
- 設問3 e イ
- 桁落ち
- 設問3 e ウ
- 情報落ち
- 設問3 e エ
- 丸め誤差
解答・解説を表示
解答
設問1 a: カ, 設問1 b: キ, 設問2 c: イ, 設問3 d: イ, 設問3 e: ウ
解説
まず要点:コンパイラの最適化は実行を速くするために行われ、計算の順序を変えることがある。浮動小数点の計算では数学の結合法則が厳密には成り立たない。絶対値が大きく違う数を足し引きすると、小さい数の有効な桁が切り捨てられる「情報落ち」が起きて結果に差が出る。
解き方
- 設問1では、表2の各段階のコード変化を見て、(2)がループ外への移動、(3)がループの展開だと見分ける。
- 設問2では、定数同士の式を実行前に計算して結果の値に置き換える定義から「定数の畳込み」を選ぶ。
- 設問3では、最適化の前後で計算の順序を比べ、m+nを先にまとめる「共通部分式の削除」が原因であることと、大きな数に小さな数を足すと情報落ちが起きることを導く。
小問ごとの答え
- 小問 設問1 a:カ
- 表2の(2)では、ループ内で値の変化しない式「t ← m + n」をループの開始前に移動しているため、「ループ内不変式の移動」(カ)が該当します。
- 小問 設問1 b:キ
- 表2の(3)では、ループの反復処理を展開して、i=0 と i=1 の処理を直接並べて記述しているため、「ループのアンローリング」(キ)が該当します。
- 小問 設問2 c:イ
- 「10 ≧ 10」を「true」に、「10 + 5」を「15」にというように、プログラム中の定数同士の計算式をその計算結果でコンパイル時に置き換える方法は「定数の畳込み」(イ)です。
- 小問 設問3 d:イ
- 最適化前は「(y[i] + m) + n」の順に左から計算されていましたが、(1)の「共通部分式の削除」によって「t ← m + n」が先に計算され、「y[i] + t」すなわち「y[i] + (m + n)」という演算順序の変化が生じました。よって原因となった最適化手法は「共通部分式の削除」(イ)です。
- 小問 設問3 e:ウ
- 最適化を適用した場合、まず t = m + n = -30300000.0 + 4.0 を計算しますが、絶対値の非常に大きな数に小さな数4.0を加算した結果、仮数部23ビット(有効数字約7桁)の有効桁から4.0が消える「情報落ち」が発生し、t = -30300000.0 となります。その結果、y[0] + t = 4000000.0 となり4.0が反映されなくなります。
覚えるポイント
- 共通部分式の削除によって浮動小数点数の演算順序が変わると、情報落ち等により計算結果が一致しなくなることがある。
間違えやすいところ
- 「定数の畳込み」(定数同士の計算を結果に置換)と「定数伝播」(変数を定数値に置換)を混同しやすい。
出題の前提:平成24年度春期基本情報技術者試験午後問2出題条件に基づく。
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.8 ↗(www.ipa.go.jp) / 公式問題冊子 p.9 ↗(www.ipa.go.jp) / 公式問題冊子 p.10 ↗(www.ipa.go.jp) / 公式問題冊子 p.11 ↗(www.ipa.go.jp)
社員食堂の利用記録データベースの設計と運用
データベース · データベース設計 / 正規化 / SQL / 集計関数 / 非正規化による高速化
社員食堂の精算システムに関するデータベース設計および運用についての記述を読み、設問1〜4に答えよ。 〔設計の概要〕 当初は【精算表】(社員番号、日付、精算額)の単一表で設計したが、精算明細や料理別の集計要望に対応するため、以下の3表に設計を変更した。 ・【精算表】(精算コード(主キー)、社員番号、日付、精算額) ・【明細表】(精算コード(主キー)、料理コード(主キー)、皿数) ・【料理表】(料理コード(主キー)、料理名、単価)
- ア
- 設問1: 要望1 / 設問2: ア / 設問3 a: 精算表, b: 精算表 / 設問4: ア
- イ
- 設問1: 要望2 / 設問2: イ / 設問3 a: 精算表と明細表, b: 精算表と明細表 / 設問4: イ
- ウ
- 設問1: 要望3 / 設問2: ウ / 設問3 a: 精算表と料理表, b: 精算表と料理表 / 設問4: ウ
- エ
- 設問1: 要望4 / 設問2: エ / 設問3 a: 精算表と明細表と料理表, b: 精算表と明細表と料理表 / 設問4: エ
解答・解説を表示
解答
設問1: イ, 設問2: エ, 設問3 a: エ, 設問3 b: ア, 設問4: ウ
解説
まず要点:関係データベースでは、データの重複や矛盾をなくすために表を正規化して分ける。集計するときはGROUP BY句と集約関数(値をまとめるSUMやCOUNT)を正しく組み合わせる。集計が多いときは、あらかじめ計算した値を親の表に持たせる非正規化も有効。
解き方
- 設問1では変更前の精算表が持つ項目(社員番号、日付、精算額)を確かめ、料理の情報がないため計算できる要望が要望2だけだと判断する。
- 設問2では社員ごとの購入皿数の集計なので、SELECT句のSUM関数に対応するGROUP BY 精算表.社員番号 が必要だと気づく。
- 設問3では社員ごとの精算単位で平均カロリーを出すのに必要な項目(社員番号、日付、皿数、カロリー)がどの表にあるか整理し、3表の結合が必要なことと精算表への列追加が有効なことを導く。
- 設問4では皿数の合計を求めるSUM(明細表.皿数)を使い、等結合条件とGROUP BY句が正しく書かれたSQL文を選ぶ。
小問ごとの答え
- 小問 設問1:イ
- 変更前の精算表には「日付」と「精算額」が格納されているため、特定の日付でグループ化して精算額の合計を求めることで「ある日の売上合計額を算出できること(要望2)」のみ対応可能です。
- 小問 設問2:エ
- 購入者ごとに集計する必要があるため、WHERE句による結合条件および抽出条件(料理名 = '肉じゃが')に加え、末尾に「GROUP BY 精算表.社員番号」を指定する必要があります。
- 小問 設問3 a:エ
- 特定社員の指定期間の精算別平均カロリーを算出するには、社員番号を持つ精算表、料理毎の皿数を持つ明細表、料理1皿あたりのカロリーを持つ料理表の3表すべてを結合する必要があります。
- 小問 設問3 b:ア
- 精算単位の合計カロリーの列を精算表に追加しておけば、平均カロリーの集計時に精算表だけを参照すれば計算できるようになり、表結合が不要となって処理が高速化されます。
- 小問 設問4:ウ
- 販売皿数を求めるには、料理ごとの明細表の皿数の合計値が必要であるためSUM関数を使用し、料理表と明細表を結合して料理名・カロリーでグループ化して降順ソートします。
覚えるポイント
- COUNTは行数を数え、数量の合計にはSUMを使用する。
- HAVING句はグループ化後の集約結果に対する絞り込みに用い、個別行の条件はWHERE句に書く。
間違えやすいところ
- 販売皿数を求めるときに、明細の行数を数えるCOUNT(明細表.皿数)を選んでしまう誤り。
- 社員ごとの平均カロリー集計に必要な表を考えるとき、社員番号が精算表にしかないことを見落とす誤り。
出題の前提:基本情報技術者試験 午後問題出題範囲(関係データベースの設計、SQL、グループ化と集約関数)
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.12 ↗(www.ipa.go.jp) / 公式問題冊子 p.13 ↗(www.ipa.go.jp) / 公式問題冊子 p.14 ↗(www.ipa.go.jp) / 公式問題冊子 p.15 ↗(www.ipa.go.jp)
データ転送時のフロー制御
ネットワーク · フロー制御 / パケット転送 / スライディングウィンドウ / バッファサイズ計算
端末Aから端末Bへデータを転送する際のフロー制御に関する記述を読み、空欄 a 〜 e に入る適切な数値を答えよ。 〔通信条件〕 ・データは1kバイト単位に分割され、パケットサイズは1.2kバイト(1Mバイト = 1,000kバイト = 1,000パケット)。 ・パケット1個の送信時間: 10ミリ秒。 ・パケット送信完了からACK受信開始までの伝送遅延時間: 100ミリ秒。 ・ACK受信時間: 0.5ミリ秒。 ・ACK受信完了から次のパケット送信可能までの間隔: 0.5ミリ秒。 ・パケット送信完了から次のパケット送信可能までの間隔: 0.5ミリ秒。
- a
- 1Mバイト当たりの転送時間(バッファ1.2kバイト時): コ (111)
- b
- 1Mバイト当たりの転送時間(バッファ2.4kバイト時): キ (55.5)
- c
- 送信可能条件(送信済み数 - 受信済みACK数): ウ (n 未満の)
- d
- 最短の1Mバイト当たり転送時間: エ (10.5)
- e
- 転送時間を最短にする最小バッファサイズ: カ (13.2)
解答・解説を表示
解答
a: コ, b: キ, c: ウ, d: エ, e: カ
解説
まず要点:ウィンドウ制御(フロー制御)では、受信側のバッファの空きに応じて、ACK(受信確認)を待たずに送れるパケット数が決まる。この数が往復遅延時間と帯域幅の積(BDP)を満たすほど大きければ、送信の待ち時間がなくなり回線の上限速度で送れる。
解き方
- 1パケットあたりの送信時間・伝送遅延・処理時間を足して、1往復のサイクル時間(111ms)を求める。
- バッファの大きさに応じた同時送信数を把握し、a(1個)とb(2個)の転送時間を計算する。
- 連続送信時の最短周期(送信時間10ms+送信可能待ち0.5ms=10.5ms)から最短転送時間dを求める。
- 最初のACKが戻るまでの110.5msに送り始めるパケット数を数え、必要な最大パケット数n=11とバッファサイズe(1.2×11=13.2kバイト)を求める。
小問ごとの答え
- 小問 a:コ
- バッファが1パケット分の場合、1パケットの送信開始から次の送信可能までの1サイクルは 10ms + 100ms + 0.5ms + 0.5ms = 111ms です。1,000パケット転送に要する時間は 111ms × 1,000 = 111,000ms = 111秒 となります。
- 小問 b:キ
- バッファが2パケット分の場合、パケット1の送信開始からパケット3の送信開始までの時間差が 111ms となり、111ms ごとに2パケットずつ送信できます。したがって1パケットあたり平均 55.5ms となり、1,000パケットでは 55.5秒 となります。
- 小問 c:ウ
- バッファ容量が n 個分(1.2×n kバイト)の場合、未確認(送信済みだがACK未受信)のパケット数がバッファ容量 n より小さければ(n 未満であれば)、空きが1個分以上存在するため次の送信が可能です。
- 小問 d:エ
- 受信バッファが十分に大きい場合、ACKを待たずに送信間隔 0.5ms だけで連続送信できるため、1パケットあたりの所要時間は 10ms + 0.5ms = 10.5ms となります。1,000パケットでは 10.5ms × 1,000 = 10,500ms = 10.5秒 となります。
- 小問 e:カ
- 最初のパケット送信開始からそのACK受信完了(110.5ms)までに送信を開始するパケット数は、t=0, 10.5, 21.0, ..., 105.0ms の計11個です。11個目の送信開始時点で未確認パケット数が最大11個になるため、n は最小で11必要となり、バッファサイズは 1.2 × 11 = 13.2kバイト となります。
覚えるポイント
- 連続送信の最短サイクルは「パケット送信時間 + 次の送信可能までの時間」で決まる。
- ACK待ちによるパイプラインの停止を防ぐには、RTT中に送信できるパケット数以上のバッファが必要。
間違えやすいところ
- 空欄eで111÷10.5≒10.57を切り上げて11個と考えるとき、1.2倍を忘れて11を選んでしまう誤り。
- 空欄cで「n以下」と「n未満」を混同し、バッファが満杯でも送信可能と判断してしまう誤り。
出題の前提:基本情報技術者試験 午後問題出題範囲(ネットワーク、データ転送制御、フロー制御)
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.16 ↗(www.ipa.go.jp) / 公式問題冊子 p.17 ↗(www.ipa.go.jp) / 公式問題冊子 p.18 ↗(www.ipa.go.jp)
受験者数の集計リスト作成におけるデータ突合せ・整列処理
ソフトウェア設計 · マッチング処理 / ソートアルゴリズム / 外部結合 / バッチ処理設計
大学の今年度と前年度の受験者データ(学校コード昇順の順ファイル)から出身校別受験者数リストを作成する処理に関する問題である。今年度および前年度の受験者ファイルから集計したファイル1(今年度)とファイル2(前年度)のレコードを学校コードをキーに突合せてファイル3を作成し、整列・順位付けを行ってリストを出力する。さらに、前年度順位を追加した「出身校別受験者数リスト2」への仕様変更に伴う処理の流れについて、設問1〜設問3の各空欄に当てはまる適切な答えを選べ。
- 設問1 a
- ア: (0, 0) / イ: (0, ファイル1の当該項目) / ウ: (0, ファイル2の当該項目) / エ: (ファイル1の当該項目, 0) / オ: (ファイル1の当該項目, ファイル2の当該項目) / カ: (ファイル2の当該項目, 0) / キ: (ファイル2の当該項目, ファイル1の当該項目)
- 設問1 b
- ア: (0, 0) / イ: (0, ファイル1の当該項目) / ウ: (0, ファイル2の当該項目) / エ: (ファイル1の当該項目, 0) / オ: (ファイル1の当該項目, ファイル2の当該項目) / カ: (ファイル2の当該項目, 0) / キ: (ファイル2の当該項目, ファイル1の当該項目)
- 設問2
- ア: (学校コード; 昇順), (今年度受験者数; 昇順), (前年度受験者数; 昇順) / イ: (学校コード; 昇順), (前年度受験者数; 降順), (今年度受験者数; 降順) / ウ: (今年度受験者数; 降順), (前年度受験者数; 降順), (学校コード; 降順) / エ: (今年度受験者数; 降順), (前年度受験者数; 降順), (学校コード; 昇順) / オ: (今年度受験者数; 降順), (前年度受験者数; 降順) / カ: (今年度受験者数; 昇順), (学校コード; 昇順)
- 設問3 c
- ア: 学校コードの降順への整列 / イ: 学校コードの昇順への整列 / ウ: 学校ごとの人数の集計 / エ: 受験者数の降順への整列 / オ: 受験者数の昇順への整列 / カ: 順位付け / キ: リスト作成
- 設問3 d
- ア: 学校コードの降順への整列 / イ: 学校コードの昇順への整列 / ウ: 学校ごとの人数の集計 / エ: 受験者数の降順への整列 / オ: 受験者数の昇順への整列 / カ: 順位付け / キ: リスト作成
- 設問3 e
- ア: 学校コード, 今年度受験者数, 前年度受験者数 / イ: 学校コード, 今年度受験者数, 前年度順位 / ウ: 学校コード, 今年度受験者数, 前年度順位, 前年度受験者数 / エ: 学校コード, 今年度順位, 今年度受験者数, 前年度受験者数 / オ: 学校コード, 今年度順位, 今年度受験者数, 前年度順位, 前年度受験者数 / カ: 学校コード, 今年度順位, 前年度受験者数 / キ: 学校コード, 今年度順位, 前年度順位 / ク: 学校コード, 今年度順位, 前年度順位, 前年度受験者数
解答・解説を表示
解答
設問1 a: エ, 設問1 b: カ, 設問2: エ, 設問3 c: エ, 設問3 d: イ, 設問3 e: ウ
解説
まず要点:順ファイル同士を突き合わせるには、キーで同じ順番(昇順など)に並べておくことが必要。順位を付けるときも、その数値をキーに前もって降順に並べておく必要がある。
解き方
- 設問1では、片方のファイルにだけレコードがある場合の補い方(ない年度の受験者数は0)を確かめ、表1の空欄a・bの組を決める。
- 設問2では、問題文に書かれた印字順(第1キー今年度降順、第2キー前年度降順、第3キー学校コード昇順)から整列キーの優先順位をそのまま選ぶ。
- 設問3では、前年度の順位付け(処理3)の前の処理2(受験者数降順のソート)と、ファイル1との突合せの前の処理4(学校コード昇順のソート)、さらに突合せ直後のファイルの項目を順に導く。
小問ごとの答え
- 小問 設問1 a:エ
- 今年度(ファイル1)にレコードがあり前年度(ファイル2)にない場合、今年度受験者数はファイル1の該当項目とし、前年度受験者数は0とする必要があるため、解答群のエ(今年度受験者数:ファイル1の当該項目、前年度受験者数:0)が正解となる。
- 小問 設問1 b:カ
- 今年度(ファイル1)にレコードがなく前年度(ファイル2)にある場合、学校コードはファイル2の該当項目となり、今年度受験者数は0、前年度受験者数はファイル2の該当項目(網掛け外は学校コードと今年度受験者数のペア)となるため、学校コード:ファイル2の当該項目、今年度受験者数:0を示すカが正解となる。
- 小問 設問2:エ
- 仕様(3)において「印字の順序は、今年度受験者数の降順とし、今年度受験者数が同数の場合は、前年度受験者数の降順、それも同数の場合は、学校コードの昇順とする」と定められているため、優先順位に従って (今年度受験者数; 降順), (前年度受験者数; 降順), (学校コード; 昇順) と並べるエが正解である。
- 小問 設問3 c:エ
- 処理3で前年度順位付けを行うためには、あらかじめ前年度受験者数によって並んでいなければならない。したがって処理2は「受験者数の降順への整列」であるエが適切である。
- 小問 設問3 d:イ
- 順位付け後のファイルZからファイル8を作成する処理4の直後、学校コード昇順のファイル1と突合せを行う。突合せ処理の前提としてファイル8も学校コード昇順に整列されている必要があるため、処理4は「学校コードの昇順への整列」であるイが適切である。
- 小問 設問3 e:ウ
- ファイル1(学校コード, 今年度受験者数)とファイル8(学校コード, 前年度順位, 前年度受験者数)を突合せて得られるレコード項目は「学校コード, 今年度受験者数, 前年度順位, 前年度受験者数」であるウが正解である。今年度順位はこの後の「順位付け」処理で付与されるため含まれない。
覚えるポイント
- 順ファイルの突合せ処理では突合せキーによる事前の同一順序整列が必須である
- 順位付け処理の前には対象キー項目による降順ソートが必要となる
間違えやすいところ
- 突合せ処理の直後に出るファイルに、まだ行っていない後続の順位付けの項目(今年度順位)まで入れてしまう誤り。
出題の前提:平成24年度春期 基本情報技術者試験 午後 問5
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.19 ↗(www.ipa.go.jp) / 公式問題冊子 p.20 ↗(www.ipa.go.jp) / 公式問題冊子 p.21 ↗(www.ipa.go.jp) / 公式問題冊子 p.22 ↗(www.ipa.go.jp) / 公式問題冊子 p.23 ↗(www.ipa.go.jp) / 公式問題冊子 p.24 ↗(www.ipa.go.jp)
設計工程での進捗管理(進捗率・計画実績工数比の分析)
プロジェクトマネジメント · 進捗率の計算 / 計画実績工数比 / アーンドバリューマネジメントの基礎 / 進捗遅延対策
チームX(メンバA, B, C, Dの4名、全3週間の設計工程)の進捗管理に関する問題である。週単位での進捗状況把握のため、計画進捗率=(計画工数の累積÷計画工数の総合計)×100、実績進捗率=(実績工数の累積÷(実績工数の累積+残り工数))×100、計画実績工数比=(実績工数の累積+残り工数)÷計画工数の総合計を定義する(小数第2位または第3位を四捨五入)。提示された表1(メンバ別計画進捗表)および表2(各メンバの実績工数及び残り工数)に基づき、設問1〜設問3の各空欄に当てはまる適切な答えを選べ。
- 設問1 a
- ア: Bである / イ: Cである / ウ: Dである / エ: いない
- 設問1 b
- ア: AとB / イ: AとC / ウ: AとD / エ: BとC / オ: BとD / カ: CとD
- 設問1 c
- ア: 週ごとに実績進捗率が計画進捗率を下回る傾向にあり,このままではスケジュール遅延が生じる / イ: 実績進捗率が,第1週の週末時点では計画進捗率と同じであり,第2週の週末時点では計画進捗率を上回っており,チームX全体では進捗に問題はない / ウ: 実績進捗率が,第1週の週末時点では計画進捗率と同じであるが,第2週の週末時点では計画進捗率を下回っており,このままではスケジュール遅延が懸念される / エ: 実績進捗率が,第1週の週末時点は計画進捗率を下回っているが,第2週の週末時点では計画進捗率を上回っており,チームX全体では進捗が回復しているので問題はない
- 設問2 d
- ア: 0.99 及び 0.95 / イ: 0.99 及び 1.00 / ウ: 1.00 及び 0.99 / エ: 1.00 及び 1.00 / オ: 1.01 及び 0.99 / カ: 1.01 及び 1.00
- 設問2 e
- ア: 1 / イ: 2 / ウ: 3
- 設問3 f
- ア: A / イ: B / ウ: C / エ: D
解答・解説を表示
解答
設問1 a: ウ, 設問1 b: カ, 設問1 c: イ, 設問2 d: ウ, 設問2 e: ア, 設問3 f: イ
解説
まず要点:進捗率は定義式どおりに、積み上げた実績と見直した残り工数を足したものに対する割合で求める。計画実績工数比では、最初の計画に対する見通し全体の割合から工数の増減傾向を見る。
解き方
- 設問1では、表1と表2の数値からメンバ別とチーム全体の第1週・第2週末の実績進捗率を計算し、計画進捗率との大小を比べる。
- 設問2では、計画実績工数比の定義式をもとに、チーム全体と各メンバの第1週・第2週の値を出して増減を分析する。
- 設問3では、第2週末に「残り工数<第3週計画工数」となる余力のあるメンバを抜き出し、その中で実績進捗率が最も高い人を特定する。
小問ごとの答え
- 小問 設問1 a:ウ
- 第1週末の実績進捗率は、Bが25/(25+75)=25.0%、Cが20/(20+80)=20.0%、Dが15/(15+85)=15.0%。計画進捗率20.0%を下回っているのはD(15.0%)のみであるためウが正解となる。
- 小問 設問1 b:カ
- 第2週末の実績進捗率は、Aが25/(25+20)=55.6%(計画50.0%)、Bが65/(65+35)=65.0%(計画60.0%)、Cが60/(60+45)≒57.1%(計画60.0%)、Dが55/(55+40)≒57.9%(計画60.0%)。計画進捗率を下回っているのはCとDの2名でありカが正解となる。
- 小問 設問1 c:イ
- チーム全体の実績進捗率は、第1週末が60/(60+290)×100≒17.1%(計画進捗率17.1%と同値)、第2週末が205/(205+140)×100=205/345×100≒59.4%(計画進捗率58.6%を上回る)。したがってイの記述が正しい。
- 小問 設問2 d:ウ
- チーム全体の計画実績工数比は、第1週末が(60+290)/350=1.00、第2週末が(205+140)/350=345/350≒0.9857であり、小数第3位を四捨五入して0.99となるため、ウ(1.00及び0.99)が正解である。
- 小問 設問2 e:ア
- 各メンバの第1週末→第2週末の計画実績工数比は、Aが50/50=1.00から45/50=0.90へ減少、Bが100/100=1.00から100/100=1.00で不変、Cが100/100=1.00から105/100=1.05へ増加、Dが100/100=1.00から95/100=0.95へ減少。第1週より増加したメンバはCの1名のみであるためアが正解となる。
- 小問 設問3 f:イ
- 第2週末の残り工数が第3週計画工数を下回っているメンバは、A(残り20時間<計画25時間)とB(残り35時間<計画40時間)。このうち第2週末の実績進捗率はAが55.6%、Bが65.0%であり、最も高いのはBであるためイが正解となる。
覚えるポイント
- 実績進捗率の分母は「実績工数の累積+残り工数」であり当初計画の総工数ではない
- 計画実績工数比が1.00より大きくなると初期見積もりより総工数が増加する見通し(遅延懸念)を示す
間違えやすいところ
- 実績進捗率の分母に、表2の最新合計(実績+残り)ではなく表1の計画総合計(350や100)を入れてしまう計算ミス。
- 計画実績工数比の四捨五入の指定(小数第3位を四捨五入)を見落として桁数を間違えるミス。
出題の前提:平成24年度春期 基本情報技術者試験 午後 問6
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.25 ↗(www.ipa.go.jp) / 公式問題冊子 p.26 ↗(www.ipa.go.jp) / 公式問題冊子 p.27 ↗(www.ipa.go.jp) / 公式問題冊子 p.28 ↗(www.ipa.go.jp) / 公式問題冊子 p.29 ↗(www.ipa.go.jp)
正味現在価値(NPV)による投資採算性の評価
経営・関連法規 · 正味現在価値(NPV) / キャッシュフロー / 設備投資の経済性計算 / 減価償却と節税効果
日用品メーカのD社において、生産管理システム導入に伴う投資採算性を正味現在価値(NPV)によって評価する。一括投資案と分割投資案の比較、追加投資の採算性判断、および減価償却期間の変更がNPVに与える影響について答えよ。
解答・解説を表示
解答
設問1 a: ア, 設問2 b: カ, 設問2 c: ア, 設問2 d: エ, 設問3 e: ア, 設問3 f: ウ, 設問3 g: イ, 設問3 h: ウ
解説
まず要点:正味現在価値(NPV)は、将来のキャッシュフローを割引率で現在の価値に直して合計し、初期投資額を引いた指標。NPVが正で大きい案ほど投資の採算性が高い。減価償却費は現金が出ない費用で、課税所得を減らして法人税を抑える効果(タックスシールド)がある。
解き方
- 問題の条件(投資額、減価償却費、コスト削減額、法人税率40%、割引率8%)に従って、各年の税引き後効果と投資後の効果を計算する。
- 将来の各キャッシュフローを割引率rで割り引いて現在価値を求め、各投資案のNPVを比べて評価する。
小問ごとの答え
- 小問 設問1 a:ア
- 割引率rで複利計算するとき、n年後のキャッシュCの現在価値PVは、将来価値を(1+r)のn乗で割り引くため、C / (1+r)^n と表されます。
- 小問 設問2 b:カ
- 2013年の投資後効果は、税引き後効果195百万円から投資額0円を引いた195百万円です。割引率は0.08、現在価値は195÷(1+0.08)^1≒180.6百万円となります。
- 小問 設問2 c:ア
- 2015年の減価償却費は2012年投資分500÷4=125百万円、コスト削減額は200百万円、課税対象効果は200-125=75百万円、法人税額は75×0.4=30百万円、税引き後効果は200-30=170百万円です。
- 小問 設問2 d:エ
- 表2の各年の現在価値の合計(分割投資のNPV)は、-500+157.4+145.7-103.2+191.1+142.9+132.3+122.5+97.2=385.9百万円となり、表1の一括投資NPV(378.1百万円)より大きいため、分割投資すべきと判断されます。
- 小問 設問3 e:ア
- 機能追加後のNPVは一括投資で3億6,190万円、分割投資で3億7,000万円となり、追加前(3億7,810万円、3億8,590万円)より減少するため、どちらの場合も受け入れるべきではありません。
- 小問 設問3 f:ウ
- 減価償却費が下がると課税対象効果が増加して法人税額が増えるため、税引き後効果(コスト削減額-法人税額)は表1に比べて下がります。
- 小問 設問3 g:イ
- 2017年は減価償却費が0から150百万円に増加するため、節税効果によって法人税額が減少し、税引き後効果は表1に比べて上がります。
- 小問 設問3 h:ウ
- 現在価値は発生時期が遅いキャッシュほど割引率による割引が大きくなるため、早期のキャッシュフローが減少し後期のキャッシュフローが増加するとNPVは表1に比べて下がります。
覚えるポイント
- 将来価値Cのn年後の現在価値は C / (1+r)^n で求める。
- 減価償却費の計上は法人税の支払いを抑える節税効果(タックスシールド)がある。
間違えやすいところ
- 将来価値を現在価値に直すとき、割引率(1+r)を掛けてしまう誤り。
- キャッシュフローの総額が同じでも、早く回収できる投資案の方がNPVが高くなることを見落とす誤り。
出題の前提:平成24年度春期基本情報技術者試験午後問7の出題条件および問題文の算定式に基づく。
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.30 ↗(www.ipa.go.jp) / 公式問題冊子 p.31 ↗(www.ipa.go.jp) / 公式問題冊子 p.32 ↗(www.ipa.go.jp) / 公式問題冊子 p.33 ↗(www.ipa.go.jp) / 公式問題冊子 p.34 ↗(www.ipa.go.jp)
ビットの検査アルゴリズムと処理効率の解析
データ構造及びアルゴリズム · ビット演算 / 論理積 / ビットカウント / アルゴリズムの計算量・処理効率
指定されたビット位置の検査を行うプログラムBitTestおよびビット列中の1の個数を数えるプログラムBitCountについて、処理のロジック、仕様変更時の動作、および処理量の違いを評価せよ。
解答・解説を表示
解答
設問1 a: ウ, 設問1 b: ア, 設問2 c: イ, 設問3 d: ア, 設問3 e: ア, 設問3 f: オ
解説
まず要点:ビットマスクを使った検査では、AND演算で注目するビット以外を0にしてから比べる。またn & (n - 1)は最下位の1のビットを素早く消す代表的な方法で、1のビットの数だけ繰り返すと効率よく数えられる。
解き方
- マスク処理によるビット値の検査条件(全ビット1、全ビット0)を、AND演算の性質から論理式として導く。
- マスクが全0になる特別な場合に、条件分岐の評価順(修正案①〜③)が返す値にどう影響するかを追う。
- ビットカウントの各プログラムで命令ごとの処理量を足し合わせ、データ内容によって変わる最小値・最大値を求める。
小問ごとの答え
- 小問 設問1 a:ウ
- Maskで指定されたビット位置がすべて1である条件は、DataとMaskの論理積をとった結果がMaskと完全に一致すること((Data & Mask) = Mask)です。
- 小問 設問1 b:ア
- Maskで指定されたビット位置がすべて0である条件は、DataとMaskの論理積をとった結果が全ビット0となること((Data & Mask) = "00000000"B)です。
- 小問 設問2 c:イ
- Maskが全ビット0の場合、修正案①と③では(Data & Mask)=Maskが真となり誤って2を返します。修正案②のみ、先にbの判定を行うことで正しく0を返却できます。
- 小問 設問3 d:ア
- プログラム2の最小処理量72に対し、最大処理量dは全ビットが1の場合であり、選択処理内の「Count ← Count + 1(処理量1)」が8回追加実行されるため、72 + 8 = 80となります。
- 小問 設問3 e:ア
- プログラム3の処理量が最小となるのはDataの全ビットが0の場合で、初期化2行(1+1)、ループ条件判定1回(2)、return文(2)のみが実行されるため合計処理量は6です。
- 小問 設問3 f:オ
- Work & (Work - 1) は最下位の1を0にする操作です。"01101010"Bに対して1回目でビット1が消えて"01101000"Bとなり、2回目でビット3が消えて"01100000"Bになります。
覚えるポイント
- X & (X - 1) は、Xの最下位にある立っている1のビットを0にクリアする。
- Mask中の特定ビットが全て1か判定するには (Data & Mask) == Mask を用いる。
間違えやすいところ
- Maskが全ビット0のとき、(Data & Mask) == Mask がいつも成り立って誤判定を起こすことを見落とす。
- ループの終了判定行(条件式の評価)自体の処理量を足し忘れるミス。
出題の前提:平成24年度春期基本情報技術者試験午後問8の仕様および疑似言語記述形式に基づく。
出典:IPA『2012年度 春期 午後』
公式問題冊子 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)
会議時間の調整プログラム
ソフトウェア開発 · C言語 / 配列走査 / 構造体 / 条件判定
S社における通常勤務時間帯(8時30分〜18時、30分単位で19区間:番号0〜18)の会議時間調整を行うCプログラムに関する問題である。 〔プログラム1〕 関数 allmem_free_slot は出席社員全員の予定が入っていない時間帯(空き時間帯)を調べ、会議時間(slot_num)以上の連続した空き区間をSLOT型配列 free に格納する。 ・関数 allmem_free_slot 内で、各時間帯 i について出席社員0番の予定を初期値として代入する処理【 a 】がある。 ・関数 search_free_slot では、連続する空き区間の数を cnt で数え、予定がある時間帯(sch[i] != 0)に達したとき、直前の連続空き区間が会議時間以上(cnt >= slot_num)であれば開始位置【 b 】と長さ cnt を記録し、次の探索に向けて cnt を【 c 】する。 ・全時間帯の走査終了後、最終時間帯まで連続していた空き区間を判定・記録する条件式【 d 】を評価する。 〔プログラム2〕 関数 maxmem_free_slot は、必須出席社員(先頭 must_num 名)全員が出席可能な時間帯を求めた後、任意出席社員を優先順位の高い順に1人ずつ追加していき、会議が開催可能な最大の出席社員数となる時間帯を探索する。 ・必須出席社員全員の予定を調べるループにおいて、2人目以降の社員(インデックス1から must_num - 1 まで)を走査するループ制御式は【 e 】である。 ・任意出席社員を追加した結果、会議を開催できる空き時間帯が1つも存在しなくなったか判定してループを抜ける(break)条件式は【 f 】である。 空欄【 a 】〜【 f 】に入る適切なものを各解答群から選べ。
- a-ア
- 0
- a-イ
- 1
- a-ウ
- time_tbl[0][0]
- a-エ
- time_tbl[0][i]
- b-ア
- i
- b-イ
- i - cnt
- b-ウ
- i - cnt + 1
- b-エ
- i - cnt - 1
- b-オ
- NUM_DAY - cnt
- c-ア
- cnt = 0
- c-イ
- cnt++
- c-ウ
- cnt--
- c-エ
- free_num = 0
- c-オ
- free_num++
- c-カ
- free_num--
- d-ア
- cnt == 0
- d-イ
- cnt > 0
- d-ウ
- cnt >= slot_num
- d-エ
- cnt < slot_num
- d-オ
- free_num == 0
- d-カ
- free_num > 0
- e-ア
- j = 1; j < must_num
- e-イ
- j = 1; j < num
- e-ウ
- j = 1; j < num - must_num
- e-エ
- j = must_num; j < num
- e-オ
- j = num - must_num; j < num
- f-ア
- wk_free[1][0].s_num == 0
- f-イ
- wk_free[1][0].s_num == -1
- f-ウ
- wk_free[1][0].s_num > slot_num
- f-エ
- wk_free[1][0].s_start == 0
- f-オ
- wk_free[1][0].s_start == -1
- f-カ
- wk_free[1][0].s_start > slot_num
解答・解説を表示
解答
設問1 a: エ, 設問1 b: イ, 設問1 c: ア, 設問1 d: ウ, 設問2 e: ア, 設問2 f: オ
解説
まず要点:連続する空き時間を探すときは、走査する位置 i と「何個連続したか」を数えるカウンタ cnt を使い、空きが途切れた位置から cnt を引くと区間の先頭が分かる。理由は、i が区間の終わりの次の位置を指しているので、i - cnt で先頭に戻れるからである。また、候補が見つからなかったことを -1 のような番兵(特別な目印の値)で表す約束も押さえる。
解き方
- プログラム1の空き時間の数え方と、区間が途切れたときの処理を順に追い、空欄 a〜d を決める。
- プログラム2で必須社員を調べる範囲(e)と、候補がないときの判定(f)を確かめる。
小問ごとの答え
- 小問 設問1 a:エ
- 時間帯 i において出席社員全員の予定を合成する際、まず1人目(社員番号0)の該当時間帯の予定 time_tbl[0][i] を sch[i] に代入し、続く j=1 からのループで論理和を取るのが正しい初期設定です。
- 小問 設問1 b:イ
- 時間帯 i で予定あり(sch[i] != 0)が検出されたとき、直前まで連続していた cnt 個の空き時間帯は添字 i - cnt から i - 1 までの区間であるため、開始時間帯番号は i - cnt となります。
- 小問 設問1 c:ア
- 予定ありの時間帯に遭遇して空き区間の記録処理を終えた後は、次の空き区間の長さを新たに計測するためにカウンタ cnt を 0 に初期化する必要があります。
- 小問 設問1 d:ウ
- 走査ループ終了後、最終時間帯(NUM_DAY - 1)まで連続していた空き時間帯が存在する場合、その長さ cnt が会議所要時間 slot_num 以上(cnt >= slot_num)であるか判定して配列に格納します。
- 小問 設問2 e:ア
- 必須出席社員(先頭 must_num 名、添字 0 〜 must_num - 1)のうち、添字0の社員は直前の sch[i] = a で設定済みなので、残る社員を調べるループ制御変数は j = 1; j < must_num となります。
- 小問 設問2 f:オ
- search_free_slot は候補が存在しない場合、配列の先頭要素の s_start に番兵として -1 を格納します。したがって、空き時間帯が0件となった判定は wk_free[1][0].s_start == -1 です。
覚えるポイント
- 連続区間探索では (現在位置 - 連続数) により開始インデックスを特定する。
- 有効データ不在を示す番兵値(本問では s_start = -1)の配置場所と条件判定を確認する。
間違えやすいところ
- 走査の最後まで続いた区間の処理(空欄d)を忘れないこと。
- 全社員数 num と必須社員数 must_num の範囲を混同しないこと。
出題の前提:平成24年度春期 基本情報技術者試験 午後 問9
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.40 ↗(www.ipa.go.jp) / 公式問題冊子 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 / ファイル処理 / テーブル操作 / 集計処理
遊園地のICカード精算システムにおける入園者ファイルおよびイベントファイルを読み込み、時間ごとの滞在者数や遊戯施設利用状況を集計・表示するCOBOLプログラムに関する問題である。 〔設問1〕 プログラム中の空欄【 a 】〜【 e 】に入れる正しい答えを解答群から選べ。 ・空欄【 a 】(行番号60):時間帯が CR-HH からイベント発生時刻 E-HH へ進んだ際、その時点の各年代滞在者数(STAY-GUEST)を印字用テーブルの該当時間帯レコード(PRT-TIME(CR-HH - 8))へ保存する文が入る(問題冊子の選択肢表記に基づく)。 ・空欄【 b 】〜【 d 】(行番号74、順不同):入園イベント発生時(WHEN E-ENTER)、該当時間帯の年齢層別滞在者数、現在の年齢層別滞在者数、および総入園者数をそれぞれ1加算する。 ・空欄【 e 】(行番号90):棒グラフ表示の横軸位置 MARK-POS を、直前に出力した記号数 MARK-CNT だけ進める文が入る。 〔設問2〕 各遊戯施設(イベントコード03〜08の計6施設)の延べ利用者数を集計し、グラフを追加表示する変更を行った。 ・空欄【 f 】:遊戯施設利用イベント(WHEN E-FAC)時、該当施設の利用カウンタ FAC-CNT(要素数6、添字1〜6)に1を加算する処理が入る。イベントコード E-CODE(03〜08)との対応付けを考慮せよ。 ・空欄【 g 】:遊戯施設コード FAC-NO を3から8まで変化させてグラフ行を表示する PERFORM 文の制御条件が入る。
- a-ア
- MOVE STAY-CNT(CR-HH) TO PRT-AGE(CR-HH - 8, E-HH)
- a-イ
- MOVE STAY-CNT(CR-HH - 8) TO PRT-TIME(CR-HH)
- a-ウ
- MOVE STAY-GUEST TO PRT-TIME(CR-HH - 8)
- a-エ
- MOVE ZERO TO PRT-AGE(CR-HH - 8, CR-HH)
- b-d-ア
- CR-HH
- b-d-イ
- I
- b-d-ウ
- J
- b-d-エ
- PRT-AGE(CR-HH - 9, G-AGE)
- b-d-オ
- PRT-AGE(G-AGE, CR-HH - 9)
- b-d-カ
- STAY-CNT(CR-HH)
- b-d-キ
- STAY-CNT(G-AGE)
- b-d-ク
- TOTAL-GUEST
- e-ア
- ADD J TO MARK-CNT
- e-イ
- ADD J TO MARK-POS
- e-ウ
- ADD MARK-CNT TO MARK-POS
- e-エ
- ADD MARK-POS TO MARK-CNT
- f-ア
- ADD 1 TO FAC-CNT(E-CODE)
- f-イ
- ADD 1 TO FAC-CNT(E-CODE - 2)
- f-ウ
- ADD G-AGE TO FAC-CNT(E-CODE)
- f-エ
- ADD G-NO TO FAC-CNT(E-CODE)
- f-オ
- ADD STAY-CNT(G-AGE) TO FAC-CNT(E-CODE)
- g-ア
- 6 TIMES
- g-イ
- UNTIL FAC-NO > 6 AND MARK-CNT > 50
- g-ウ
- UNTIL FAC-NO > 6 OR MARK-CNT > 50
- g-エ
- VARYING FAC-NO FROM 1 BY 1 UNTIL FAC-NO > 6
- g-オ
- VARYING FAC-NO FROM 3 BY 1 UNTIL FAC-NO > 8
解答・解説を表示
解答
設問1 a: ウ, b: エ, c: キ (順不同), d: ク (順不同), e: ウ, 設問2 f: イ, g: オ
解説
まず要点:COBOLでは、同じ並びの集団項目(複数の小項目をまとめたもの)をまとめて別の場所へ移せる。また、10時〜19時や施設コード03〜08のような外の番号は、1から始まる表の添字に合わせて、-9や-2のように引いて直す必要がある。
解き方
- 設問1で、時間が進んだときに滞在者数の表へまとめて移す処理と、入園時に増やす3つの集計項目を特定する。
- 設問1で、棒グラフの次の出力位置を MARK-CNT だけ進めることを確かめる。
- 設問2で、施設コード03〜08を添字1〜6に直す引き算(-2)と、出力の繰り返しの始まりと終わり(3〜8)を導く。
小問ごとの答え
- 小問 設問1 a:ウ
- 問題冊子51ページの選択肢表記に従うと「MOVE STAY-GUEST TO PRT-TIME(CR-HH - 8)」となります。これは各年代層(5要素)の現在滞在者数集団項目 STAY-GUEST を、該当時間帯の集計格納領域 PRT-TIME(CR-HH - 8) へ一括転送する処理です。
- 小問 設問1 b:エ
- 開園10時からの10時間分を管理するため、時間帯 CR-HH(10〜19)に対応する添字は CR-HH - 9 となり、該当時間帯・年齢層別の集計項目 PRT-AGE(CR-HH - 9, G-AGE) に1を加算します(b〜d順不同)。
- 小問 設問1 c:キ
- 現在の年齢層別滞在者数をリアルタイムに保持する配列項目 STAY-CNT(G-AGE) に1を加算します(b〜d順不同)。
- 小問 設問1 d:ク
- その日の累計総入園者数をカウントするため、集計項目 TOTAL-GUEST に1を加算します(b〜d順不同)。
- 小問 設問1 e:ウ
- 棒グラフ用文字列 LHD-MARK において、直前に出力した年齢層の記号数 MARK-CNT 分だけ次の出力開始桁 MARK-POS を右へ進めるため、ADD MARK-CNT TO MARK-POS を実行します。
- 小問 設問2 f:イ
- 遊戯施設のイベントコード E-CODE は 03〜08 ですが、集計用配列 FAC-CNT は OCCURS 6(添字1〜6)で定義されているため、E-CODE から 2 を引いた FAC-CNT(E-CODE - 2) に1を加算します。
- 小問 設問2 g:オ
- 遊戯施設コード FAC-NO(03〜08)をそのままヘッダ表示に利用しているため、PERFORM 文で FAC-NO を 3 から 1 ずつ増やし、8 を超えるまで(UNTIL FAC-NO > 8)繰り返します。
覚えるポイント
- COBOLの OCCURS 句による配列添字は 1 から始まる。
- 外部のコード値(03〜08など)と内部配列の添字(1〜6)との差分(オフセット)を常に意識する。
間違えやすいところ
- E-CODE をそのまま添字に使って表の範囲を超える間違いをしないこと。
- PRT-AGE の2つの添字の順(時間帯、年齢層)を逆にしないこと。
出題の前提:平成24年度春期 基本情報技術者試験 午後 問10
出典:IPA『2012年度 春期 午後』
公式問題冊子 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) / 公式問題冊子 p.52 ↗(www.ipa.go.jp) / 公式問題冊子 p.53 ↗(www.ipa.go.jp)
試験の成績管理(Java)
ソフトウェア開発 · Java / コレクションフレームワーク / TreeMap / ジェネリクス
Javaプログラムによる試験の成績管理システムに関する次の設問に答えよ。 〔プログラムの説明〕 クラスScoreManagerは、値の順にキーを保持するValueSortedMapを継承して試験の成績を管理する。点数の高い順に学籍番号(英数字文字列)と点数(整数)を出力するメソッドprintをもつ。 ValueSortedMap<K, V>は、キーと値の対応付けを保持するクラスであり、内部でHashMap<K, V>型のmapと、TreeMap<V, List<K>>型のreverseMapを利用している。 設問1:プログラム中の空欄 a 〜 e に入れる正しい答えを選択せよ。 設問2:点数が同じ場合には、学籍番号の文字列としての自然順序付けに従って出力するように変更する。クラスValueSortedMapで使用しているクラスやインタフェースの変更だけで実現する場合、適切な変更内容を選択せよ。
- ア
- ArrayList を TreeSet に変更する。
- イ
- List と ArrayList を Set に変更する。
- ウ
- List を Set に変更し、ArrayList を TreeSet に変更する。
- エ
- List を TreeSet に変更し、ArrayList を Set に変更する。
- オ
- List を TreeSet に変更する。
解答・解説を表示
解答
設問1 a: エ, 設問1 b: エ, 設問1 c: ウ, 設問1 d: エ, 設問1 e: キ, 設問2: ウ
解説
まず要点:Javaでは、Map はキーと値の組を管理し、TreeMap はキーを順番どおりに並べて持つ。同じ値に複数のキーを持たせたいときは、値をキー、キーの集まりを値にした逆さの表を組み合わせる。重複をなくして自動で並べたいときは List/ArrayList ではなく Set/TreeSet を使う。
解き方
- ScoreManager が扱うキーと値の型(String と Integer)から、ValueSortedMap の型引数を特定する。
- 例外になる条件と null の確認の決まりから、put メソッド内の条件式を導く。
- remove メソッドで、map からの削除と、reverseMap の空になった項目の削除を確かめる。
- 同じ点数のキーを文字の順に並べるため、キーの集まりを List から順番を保つ Set(TreeSet)に変える。
小問ごとの答え
- 小問 設問1 a:エ
- ScoreManagerは学籍番号(文字列String)をキー、点数(整数Integer)を値として管理するため、ValueSortedMapの型引数は<String, Integer>となります。
- 小問 設問1 b:エ
- 仕様によりkeyまたはvalueがnullのときにNullPointerExceptionを投げるため、条件式は「key == null || value == null」となります。
- 小問 設問1 c:ウ
- reverseMapから取得したリストkeysが存在しない場合、getはnullを返すため、「keys == null」のときに新規リストを生成して登録します。
- 小問 設問1 d:エ
- 引数keyに対応する値をmapから削除してその値を取得するため、HashMapのメソッドを呼び出す「map.remove」が入ります。
- 小問 設問1 e:キ
- keysからkeyを削除した結果が空になった場合、reverseMapから該当の値をキーとするエントリを削除するため、「reverseMap.remove」が入ります。
- 小問 設問2:ウ
- 同一の値に対応するキーを自然順序付けで整列保持するには、重複を許さないソート済み集合であるTreeSetを使用し、変数や戻り値の型インタフェースをListからSetへ変更します。
覚えるポイント
- TreeMapやTreeSetは要素の自然順序付けまたは指定コンパレータに従って自動整列される。
- Map.remove(key)は指定したキーのエントリを削除し、対応していた値を返す。
間違えやすいところ
- Map.get はキーがないと null を返すので、リストの有無は isEmpty ではなく null で確かめること。
- 宣言にはインタフェース、生成には具体クラスを書く決まりを混同しないこと。
出題の前提:問題文およびJava標準API(java.utilパッケージ)の仕様に基づく。
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.54 ↗(www.ipa.go.jp) / 公式問題冊子 p.55 ↗(www.ipa.go.jp) / 公式問題冊子 p.56 ↗(www.ipa.go.jp) / 公式問題冊子 p.57 ↗(www.ipa.go.jp) / 公式問題冊子 p.58 ↗(www.ipa.go.jp)
数字列の加算(アセンブラ)
ソフトウェア開発 · CASL II / COMET II / 文字コード演算 / 多倍長加算
二つの数字列を10進数とみなして加算するCASL IIプログラムに関する次の設問に答えよ。 〔プログラム1の説明〕 主プログラムから渡された数字列1と数字列2を加算し、結果を数字列で返す副プログラムADDCである。各数字列の先頭アドレス、結果領域アドレス、各数字列の長さがGR1〜GR5で渡される。数字列1の長さGR4が数字列2の長さGR5以上となるように入れ替えた後、1桁ずつ下位から文字コードを加算して桁上げ処理を行う。 設問1:プログラム1中の空欄 a 〜 c に入れる正しい答えを選択せよ。 設問2:図1の数字列1('9462')と数字列2('673')を引数として副プログラムADDCを実行したとき、行番号25のLD命令(CARRY)が実行される回数 d を選択せよ。 設問3:n個の数字列の総和を求めるプログラム2(SUMC)の空欄 e, f に入れる正しい答えを選択せよ。
- ア
- SUBA GR4, =1
- イ
- SUBA GR4, =9
- ウ
- SUBA GR4, =10
- エ
- SUBA GR5, =1
- オ
- SUBA GR5, =9
- カ
- SUBA GR5, =10
- キ
- SUBA GR6, =1
- ク
- SUBA GR6, =9
- ケ
- SUBA GR6, =10
解答・解説を表示
解答
設問1 a: ケ, 設問1 b: ア, 設問1 c: エ, 設問2 d: エ, 設問3 e: オ, 設問3 f: ウ
解説
まず要点:CASL IIで数字の文字('0'〜'9'は#0030〜#0039)を足すときは、文字のまま足して桁上げが起きたら('9'より大きくなったら)10を引いて正しい数字の文字に直す。また、複数の値を足す繰り返しでは、入力と出力の置き場所を交互に入れ替えるやり方を使う。
解き方
- 1桁の文字コードを足して桁上げが起きたときの補正値(10を引く)を特定する。
- 長い数字列の桁数 GR4 と短い数字列の桁数 GR5 を引く位置と、終わりの判定の並びを追う。
- 具体的な数(9462+673)の計算をたどり、桁上げが起きる回数を数える。
- プログラム2で ADDC が返した GR0 を次の入力長 GR4 に反映し、繰り返しの終了判定を特定する。
小問ごとの答え
- 小問 設問1 a:ケ
- 加算結果の文字コードが'9'を超えた場合にCARRYへ分岐するため、文字コードとしての1桁の数値に戻すには10を引く「SUBA GR6, =10」が必要です。
- 小問 設問1 b:ア
- 数字列1の長い方の桁数GR4を1桁処理するごとに減算し、0になったか判定するため「SUBA GR4, =1」が入ります。
- 小問 設問1 c:エ
- 短い方の数字列2の残り桁数GR5を1減算し、正であればLOOP1へ戻るため「SUBA GR5, =1」が入ります。
- 小問 設問2 d:エ
- 9462 + 673の計算では、10の位(6+7=13)、100の位(4+6+1=11)、1000の位(9+0+1=10)の計3回桁上げ(CARRYのLD GR0, =1)が発生します。
- 小問 設問3 e:オ
- ADDCから返された加算結果の桁数GR0を、次の加算における数字列1の長さGR4として設定するため「LD GR4, GR0」が入ります。
- 小問 設問3 f:ウ
- 最終結果がBUF1とBUF3のどちらにあるかを判定するため、GR3にBUF3のアドレスを再設定してCPA GR1, GR3で比較を行う「LAD GR3, BUF3」が入ります。
覚えるポイント
- 文字'0'〜'9'の文字コードは連続しており、10進加算の桁あふれ時は10を減算して補正する。
- 多倍長加算では下位桁から順に加算を行い、各桁のキャリーを次の桁へ伝播させる。
間違えやすいところ
- 桁数 GR4(長い方)と GR5(短い方)を引く順番を逆にしないこと。
- 最上位の桁からの繰り上がり(左端の桁上げ)も桁上げ処理として数えること。
出題の前提:CASL II・COMET II仕様および設問文の仕様に基づく。
出典:IPA『2012年度 春期 午後』
公式問題冊子 p.59 ↗(www.ipa.go.jp) / 公式問題冊子 p.60 ↗(www.ipa.go.jp) / 公式問題冊子 p.61 ↗(www.ipa.go.jp) / 公式問題冊子 p.62 ↗(www.ipa.go.jp)
図書管理及び図書推薦
ソフトウェア開発(表計算) · 表計算 / マクロ / 垂直照合 / 条件付個数 / 条件付合計 / 推薦システム
ある大学学部所有の図書管理及び図書推薦を行うプロトタイプシステムに関する問題です。ワークシート「図書情報」「利用者情報」における計算式、貸出登録を行うマクロ「Borrowing」、およびワークシート「貸出履歴」を用いた図書推薦マクロ「RecommendBooks」の空欄a〜hに入る適切な式や条件を解答群から選ぶ形式です。
- a-ア
- D2+垂直照合(C2, 利用者情報!G$2〜I$5, 3, 0)
- a-イ
- D2+垂直照合(C2, 利用者情報!A$2〜C$51, 1, 0)
- a-ウ
- D2+垂直照合(C2, 利用者情報!A$2〜C$51, 3, 0)
- a-エ
- D2+垂直照合(垂直照合(C2, 利用者情報!A$2〜C$51, 1, 0), 利用者情報!G$2〜I$5, 3, 0)
- a-オ
- D2+垂直照合(垂直照合(C2, 利用者情報!A$2〜C$51, 3, 0), 利用者情報!G$2〜I$5, 3, 0)
- a-カ
- D2+水平照合(C2, 利用者情報!A$2〜C$51, 1, 0)
- a-キ
- D2+水平照合(垂直照合(C2, 利用者情報!A$2〜C$51, 1, 0), 利用者情報!G$2〜I$5, 3, 0)
- a-ク
- D2+水平照合(垂直照合(C2, 利用者情報!A$2〜C$51, 3, 0), 利用者情報!G$2〜I$5, 3, 0)
- b-ア
- E2-I$1
- b-イ
- I$1-E2
- b-ウ
- IF(E2≧I$1, 0, I$1-E2)
- b-エ
- IF(E2≧I$1, E2, I$1)
- b-オ
- IF(E2≧I$1, I$1, E2)
- b-カ
- IF(E2≧I$1, I$1-E2, 0)
- c-ア
- 垂直照合(C2, G$2〜I$5, 2, 0)
- c-イ
- 垂直照合(C2, G$2〜I$5, 2, 0)+条件付個数(図書情報!C$2〜C$201, =A2)
- c-ウ
- 垂直照合(C2, G$2〜I$5, 2, 0)-条件付個数(図書情報!C$2〜C$201, =A2)
- c-エ
- 垂直照合(C2, G$2〜I$5, 3, 0)
- c-オ
- 垂直照合(C2, G$2〜I$5, 3, 0)+条件付個数(図書情報!C$2〜C$201, =A2)
- c-カ
- 垂直照合(C2, G$2〜I$5, 3, 0)-条件付個数(図書情報!C$2〜C$201, =A2)
- d-ア
- IF(D2>0, '*', null)
- d-イ
- IF(D2=0, '*', null)
- d-ウ
- IF(合計(図書情報!C$2〜C$201)=C2, '*', null)
- d-エ
- IF(合計(図書情報!C$2〜C$201)≠C2, '*', null)
- d-オ
- IF(合計(図書情報!F$2〜F$201)=F2, '*', null)
- d-カ
- IF(合計(図書情報!F$2〜F$201)≠F2, '*', null)
- d-キ
- IF(条件付合計(図書情報!C$2〜C$201, =A2, 図書情報!F$2〜F$201)>0, '*', null)
- d-ク
- IF(条件付合計(図書情報!C$2〜C$201, =A2, 図書情報!F$2〜F$201)=0, '*', null)
- e-ア
- 論理積(相対(A1, B203, 2)=null, 相対(利用者情報!A1, D203, 3)>0, 相対(利用者情報!A1, D203, 4)≠'*')
- e-イ
- 論理積(相対(A1, B203, 2)=null, 相対(利用者情報!A1, D203, 3)>0, 相対(利用者情報!A1, D203, 4)='*')
- e-ウ
- 論理積(相対(A1, B203, 2)=null, 相対(利用者情報!A1, D203, 3)=0, 相対(利用者情報!A1, D203, 4)≠'*')
- e-エ
- 論理積(相対(A1, B203, 2)=null, 相対(利用者情報!A1, D203, 3)=0, 相対(利用者情報!A1, D203, 4)='*')
- e-オ
- 論理積(相対(A1, B203, 2)≠null, 相対(利用者情報!A1, D203, 3)>0, 相対(利用者情報!A1, D203, 4)≠'*')
- e-カ
- 論理積(相対(A1, B203, 2)≠null, 相対(利用者情報!A1, D203, 3)>0, 相対(利用者情報!A1, D203, 4)='*')
- e-キ
- 論理積(相対(A1, B203, 2)≠null, 相対(利用者情報!A1, D203, 3)=0, 相対(利用者情報!A1, D203, 4)≠'*')
- e-ク
- 論理積(相対(A1, B203, 2)≠null, 相対(利用者情報!A1, D203, 3)=0, 相対(利用者情報!A1, D203, 4)='*')
- f-ア
- 相対(A1, B204, K) * 相対(A1, J, K)
- f-イ
- 相対(A1, B204, K) * 相対(A1, K, J)
- f-ウ
- 相対(A1, J, K) * 相対(A1, J, K)
- f-エ
- 相対(A1, J, K) * 相対(A1, K, 51)
- f-オ
- 相対(A1, J, K) * 相対(A1, K, J)
- f-カ
- 相対(A1, K, B204) * 相対(A1, K, J)
- f-キ
- 相対(A1, K, J) * 相対(A1, 201, J)
- f-ク
- 相対(A1, K, J) * 相対(A1, 201, K)
- g-ア
- 論理積(相対(A1, K, B204)=0, 相対(図書情報!A1, K, 2)=null)
- g-イ
- 論理積(相対(A1, K, B204)=0, 相対(図書情報!A1, K, 2)≠null)
- g-ウ
- 論理積(相対(A1, K, B204)=1, 相対(図書情報!A1, K, 2)=null)
- g-エ
- 論理積(相対(A1, K, B204)=1, 相対(図書情報!A1, K, 2)≠null)
- g-オ
- 論理和(相対(A1, K, B204)=0, 相対(図書情報!A1, K, 2)=null)
- g-カ
- 論理和(相対(A1, K, B204)=0, 相対(図書情報!A1, K, 2)≠null)
- g-キ
- 論理和(相対(A1, K, B204)=1, 相対(図書情報!A1, K, 2)=null)
- g-ク
- 論理和(相対(A1, K, B204)=1, 相対(図書情報!A1, K, 2)≠null)
- h-ア
- 相対(A1, B204, K) * 相対(A1, J, K)
- h-イ
- 相対(A1, B204, K) * 相対(A1, K, J)
- h-ウ
- 相対(A1, J, K) * 相対(A1, J, K)
- h-エ
- 相対(A1, J, K) * 相対(A1, K, 51)
- h-オ
- 相対(A1, J, K) * 相対(A1, K, J)
- h-カ
- 相対(A1, K, B204) * 相対(A1, K, J)
- h-キ
- 相対(A1, K, J) * 相対(A1, 201, J)
- h-ク
- 相対(A1, K, J) * 相対(A1, 201, K)
解答・解説を表示
解答
設問1 a: オ, 設問1 b: ウ, 設問1 c: ウ, 設問1 d: キ, 設問2 e: ア, 設問3 f: カ, 設問3 g: ア, 設問3 h: キ
解説
まず要点:表計算では、ある関数の結果を別の関数の引数にする入れ子が使える。借りた人のIDから属性をたどって貸出日数を求めるなど、複数の表を順につなげて値を求める。また、条件に合う件数を数える条件付個数や、条件に合う値だけを合計する条件付合計を使うと、利用者ごとの集計ができる。マクロの相対参照では、基準のセルからの行・列のずれで場所を指定する。
解き方
- 設問1で、利用者IDから属性を、属性から貸出日数や上限冊数を引く垂直照合の入れ子と、延滞・残り冊数の式を組み立てる。
- 設問2で、貸出に必要な3つの条件(未貸出、残り枠あり、延滞なし)を行・列のずれを使った相対参照の式で論理積として表す。
- 設問3で、類似度(内積の平均)と推薦度(類似度で重み付けした和)の式と、マクロの二重ループの変数の対応を追う。
小問ごとの答え
- 小問 設問1 a:オ
- 利用者ID(C2)から利用者情報表の3列目にある属性を取り出し、その属性から貸出日数(3列目)を垂直照合で取得して貸出日(D2)に加算するため、オが正しい式です。
- 小問 設問1 b:ウ
- 本日日付(I$1)が返却期日(E2)以下の場合は延滞していないため0とし、超過している場合はI$1-E2で延滞日数を求めるため、ウが正解です。
- 小問 設問1 c:ウ
- 残り貸出冊数は、属性から求めた貸出上限冊数(垂直照合で2列目)から、図書情報表で当該利用者IDが借りている件数(条件付個数)を差し引いた式となるため、ウが正解です。
- 小問 設問1 d:キ
- 条件付合計を用いて図書情報のC列が自身の利用者ID(A2)であるレコードの延滞日数(F列)の合計を求め、それが0より大きければ延滞状態'*'を表示するため、キが正解です。
- 小問 設問2 e:ア
- 貸出可能条件は、図書の利用者IDがnull、利用者の残り貸出冊数が0より大きい、延滞状態が'*'でないことの3つであり、これら全てを満たす論理積であるアが正解です。
- 小問 設問3 f:カ
- 利用者間の類似度計算における内積項x_{ki}×x_{kj}を求めるため、図書k・利用者i(B204)のセルと図書k・利用者j(J)のセルを掛け合わせるカが正解です。
- 小問 設問3 g:ア
- 推薦度の計算対象は「利用者が借りたことがない(x_{ki}=0)」かつ「現在貸出中でない(利用者IDがnull)」場合なので、その論理積であるアが正解です。
- 小問 設問3 h:キ
- 推薦度の加算項はs_{ij}×x_{kj}であり、行202の類似度s_{ij}を表す相対(A1, 201, J)と、図書k・利用者jの貸出有無を表す相対(A1, K, J)の積であるキが正解です。
覚えるポイント
- 垂直照合(検索値, 範囲, 列位置, 検索の指定)の引数順序と完全一致の0を正確に把握する。
間違えやすいところ
- 相対(基準セル, 行の移動量, 列の移動量)で、行と列の並び順を逆にしないこと。
出題の前提:平成24年度春期基本情報技術者試験午後問13の出題条件および表計算ソフトの仕様に基づく。
出典:IPA『2012年度 春期 午後』
公式問題冊子 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)
2012年度 春期 午後
参照した公式資料
IPAが公開した2012年度 春期 午後の問題・解答資料です。

