問題1 次の情報表現に関する記述は,コンピュータの勉強を始めたばかりのB君と,かなり詳しく知っているM君の会話である

Similar documents
模擬試験問題(第1章~第3章)

問題1 次の情報表現に関する記述は,コンピュータの勉強を始めたばかりのB君と,かなり詳しく知っているM君の会話である

スライド 1

平成29年度後期 情報システム試験 システムデザインスキルの問題

模擬試験問題(第1章~第3章)

平成28年度前期 情報システム試験 基本スキルの問題

平成24年度後期 情報システム試験 プログラミングスキルの問題

第 1 節 関数とは 関数とは 与えられた文字や数値に対し 定められた処理を行って結果を返す命令のことです 例えば パンをホームベーカリーで作るには 最初に材料となる小麦粉などを入れ 次いでドライイースト 最後に水を入れるという順序があります そして スタートボタンを押すとパンが完成します ホームベ

スライド 1

問題1 次の情報表現に関する記述は,コンピュータの勉強を始めたばかりのB君と,かなり詳しく知っているM君の会話である

平成28年度前期 情報活用試験2級 試験問題

コンピュータリテラシ 第 6 回表計算 2 このスライド 例題 /reidai6.xlsx /reidai6a.xlsx 課題 12 /reidai6b.xlsx /table12_13.xlsx

Section1_入力用テンプレートの作成

PowerPoint プレゼンテーション

平成29年度前期 情報システム試験 基本スキルの問題

変更履歴 版数変更日変更内容 /9/1 初版設定

スライド 1

Microsoft PowerPoint - algo ppt [互換モード]

平成29年度前期 情報活用試験 2級の問題

Week 1 理解度確認クイズ解答 解説 問題 1 (4 2 点 =8 点 ) 以下の各問いに答えよ 問題 bit 版の Windows8.1 に Java をインストールする時 必要なパッケージはどれか 但し Java のコンパイルができる環境をインストールするものとする 1. jdk

ビ Ⅱ4-2 (1-2) 検索関数 VLOOKUP 関数 VLOOKUP 関数は 指定した範囲の表を縦 ( 列方向 ) に検索する関数です [ 関数の挿入 で 検索 / 行列 の分類中にある 書き方 VLOOKUP( 検索値, 範囲, 列番号, 検索方法 ) 検索値... 検索したい値 または値が入

ExcelVBA 実技 問題集

PowerPoint Presentation

平成29年度前期 情報活用試験 3級の問題

平成30年度後期 情報活用試験 3級の試験問題

平成28年度後期 情報活用試験 3級の問題

データ構造

Microsoft PowerPoint - 5Chap15.ppt

平成30年度前期 情報活用試験 1級の試験問題

2

メソッドのまとめ

次に示す数値の並びを昇順にソートするものとする このソートでは配列の末尾側から操作を行っていく まず 末尾の数値 9 と 8 に着目する 昇順にソートするので この値を交換すると以下の数値の並びになる 次に末尾側から 2 番目と 3 番目の 1

Java講座

PowerPoint プレゼンテーション

Microsoft Word - ExcelTable.docx

C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ

RX ファミリ用 C/C++ コンパイラ V.1.00 Release 02 ご使用上のお願い RX ファミリ用 C/C++ コンパイラの使用上の注意事項 4 件を連絡します #pragma option 使用時の 1 または 2 バイトの整数型の関数戻り値に関する注意事項 (RXC#012) 共用

Excel2013基礎 数式と表編集

4-4 while 文 for 文と同様 ある処理を繰り返し実行するためのものだが for 文と違うのは while 文で指定するのは 継続条件のみであるということ for 文で書かれた左のプログラムを while 文で書き換えると右のようになる /* 読込んだ正の整数値までカウントアップ (for

簡単な検索と整列(ソート)

2 / 16 ページ 第 7 講データ処理 ブック ( ファイル ) を開く第 6 講で保存したブック internet.xlsx を開きましょう 1. [Office ボタン ] から [ 開く ] をクリックします 2. [ ファイルの場所 ] がデータを保存している場所になっている

<4D F736F F D20438CBE8CEA8D758DC F0939A82C282AB2E646F63>

問題 1 次の文章は Excel の作業環境について述べたものである 下線部の記述の正誤を判断し 解答群 { } の記号で答えよ ただし 下線部以外の記述に誤りはないものとする 設問 1. クイックアクセスツールバーには アプリケーション名やファイル名が表示される 設問 2. 数式バーのる ボタンを

プログラム言語及び演習Ⅲ

Taro-ファイル処理(公開版).jtd

問題 1 次の文章は Excel の作業環境について述べたものである 下線部の記述の正誤を判断し 解答群 { } の記号で答えよ ただし 下線部以外の記述に誤りはないものとする 設問 1. 数値データが入力されている複数のセルを選択すると 選択した範囲のデータの個数や合計が ステータスバー上に表示さ

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

問題 1 次の文章は Access データベース およびデータベースの概要について述べたものである にあてはまる適切なものを解答群 { } より選び その記号で答えよ 設問 1. Microsoft Access 2007 データベースのテーブルでは 表す としてデータを { ア. レコードを列 フ

情報工学実験 C コンパイラ第 2 回説明資料 (2017 年度 ) 担当 : 笹倉 佐藤

ボタンメンバーを追加登録入力項目をクリア一つ前に戻る 説明社員を閲覧者に追加します アンケートのタイトル部分 閲覧者を登録します その後 質問登録画面を表示します 入力した内容をクリアし 元の状態へ戻します 入力した内容をキャンセルし 一覧画面に戻ります アンケート完成時のタイトル 説明文 画像の表

< 目次 > 1. 練習ファイルのダウンロード 表計算ソフト Excel の基本 Excel でできること Excel の画面 セル 行 列の選択 セルにデータを入力する ( 半角英数字の場合 )

Taro-再帰関数Ⅲ(公開版).jtd

「不動産リスト」を解く

Microsoft Word A08

Transcription:

文部科学省後援 平成 27 年度前期情報検定 < 実施平成 27 年 9 月 13 日 ( 日 )> 情報システム試験 ( 説明時間 10:00~10:10) ( 試験時間 10:10~11:40) 試験問題は試験開始の合図があるまで開かないでください 解答用紙( マークシート ) への必要事項の記入は, 試験開始の合図と同時に行いますので, それまで伏せておいてください 試験開始の合図の後, 次のページを開いてください < 受験上の注意 >が記載されています 必ず目を通してから解答を始めてください 試験問題は, すべてマークシート方式です 正解と思われるものを1つ選び, 解答欄のをHBの黒鉛筆でぬりつぶしてください 2つ以上ぬりつぶすと, 不正解になります 辞書, 参考書類の使用および筆記用具の貸し借りは一切禁止です 電卓の使用が認められます ただし, 下記の機種については使用が認められません < 使用を認めない電卓 >.. 1. 電池式 ( 太陽電池を含む ) 以外の電卓 2. 文字表示領域が複数行ある電卓 ( 計算状態表示の一行は含まない ) 3. プログラムを組み込む機能がある電卓 4. 電卓が主たる機能ではないもの * パソコン ( 電子メール専用機等を含む ), 携帯電話 (PHS), スマートフォン, タブレット, 電子手帳, 電子メモ, 電子辞書, 翻訳機能付き電卓, 音声応答のある電卓, 電卓付腕時計等 5. その他試験監督者が不適切と認めるもの 一般財団法人職業教育 キャリア教育財団 1

< 受験上の注意 > 1. この試験問題は31ページあります ページ数を確認してください 乱丁等がある場合は, 手をあげて試験監督者に合図してください 問題を読みやすくするために空白ページを設けている場合があります 2. 解答用紙 ( マークシート ) に, 受験者氏名 受験番号を記入し, 受験番号下欄の数字をぬりつぶしてください 正しく記入されていない場合は, 採点されませんので十分注意してください 3. 試験問題についての質問には, 一切答えられません 自分で判断して解答してください 4. 試験中の筆記用具の貸し借りは一切禁止します 筆記用具が破損等により使用不能となった場合は, 手をあげて試験監督者に合図してください 5. 試験を開始してから30 分以内は途中退出できません 30 分経過後退出する場合は, もう一度, 受験番号 マーク 氏名が記載されているか確認して退出してください なお, 試験終了 5 分前の合図以降は退出できません 試験問題は各自お持ち帰りください 6. 試験後にお知らせする合否結果 ( 合否通知 ), および合格者に交付する 合格証 認定証 はすべて,Webページ(PC, モバイル ) での認証によるデジタル 合否通知, デジタル 合格証 認定証 に移行しました 1 団体宛にはこれまでと同様に合否結果一覧ほか, 試験結果資料一式を送付します 2 合否等の結果についての電話 手紙等でのお問い合わせには, 一切応じられませんので, ご了承ください 2

< 問題の構成 > 必須問題全員解答 問題1~問2 ページ~16 ページ題4選択問題次の問題から1 問選択し解答せよ... ( 選択した問題は解答用紙 選択欄 に必ずマークすること) 選択欄にマークがなく, 解答のみマークした場合は採点を行いません C 言語の問題 18 ページ ~22 ページ 表計算の問題 23 ページ ~28 ページ アセンブラの問題 29 ページ ~31 ページ 1

必須問題 問題 1 次の二分木に関する記述を読み, 各設問に答えよ 二分木とは,1 つの親ノードが最大 2 つの子ノードを持つデータ構造である 親 子 子 図 1 二分木の構造 二分木を走査する考え方に, 幅優先探索と深さ優先探索がある 幅優先探索は, ノードの深さが同じレベルを走査する 図 2のような構造であった場合,A B C D E Fの順に走査される 走査開始 A B C D E F 走査終了 図 2 幅優先探索 深さ優先探索は, ノードを縦方向 ( 深さ ) に走査し, 行き止まりになったら, 後戻りして別のノードを縦方向に走査する 操作する順序により, 次の3つに分けられる 1. 先行順 ( 前順, 行きがけ順とも言う ) ノード 左部分木 右部分木の順に走査する A A B C の順に走査 B C 図 3 先行順の走査 2. 中間順 ( 間順, 通りがけ順とも言う ) 左部分木 ノード 右部分木の順に走査する A B A C の順に走査 B C 図 4 中間順の走査 2

須問題必3. 後行順 ( 後順, 帰りがけ順とも言う ) 左部分木 右部分木 ノードの順に走査する オ.D B C カ.E C D A B C Aの順に走査 B C 図 5 後行順の走査 < 設問 1> 次の二分木の操作に関する記述中の (1) に入れるべき適切な字句を 解答群から選べ A B E C D 図 6 二分木 図 6の二分木をルートから走査するときの順番を考える 幅優先探索で考える場合は,A B (1) の順に走査される 深さ優先探索で考えると, 先行順 :A B (2) 中間順 :C B (3) 後行順 :C D (4) の順に走査される (1) ~ (4) の解答群 ア.A D B イ.B E A ウ.C D E エ.D A E 3

< 設問 2> 二分木を使ったデータ表現に関する記述中の (1) に入れるべき適切 な字句を解答群から選べ 図 7は数式を二分木で表現したものである 深さ優先探索の中間順で走査すると A+B と走査できる また, 深さ優先探索の後行順で走査したものは (5) と なる + A B 図 7 数式を二分木表現 (5) の解答群ア.+AB ウ.AB+ イ.+BA エ.BA+ 4

問題 2 次の表探索に関する記述を読み, 各設問に答えよ [ 線形探索法の説明 ] 線形探索法は,1 次元配列に対して, 先頭要素から順に探索する手法である 配列中に, 探したいデータと等しい値が見つかれば探索を終了し, 末尾要素まで探索しても等しい値が見つからないときは, 配列中に探したいデータが存在しないことになる 1 次元配列に格納されるデータの並び順は関係ない [ 二分探索法の説明 ] 二分探索法は, 整列済みの1 次元配列に対して行われる手法である ここでは, 配列の大きさは n に, 探したいデータは X に,1 次元配列は,DAT[0]~DAT[n-1] に昇順に格納済みとする 1 探索範囲の先頭要素の添字を L, 末尾要素の添字を H とする なお, 初期値は, L=0,H=n-1 である 2 探索範囲の中央要素となる DAT[i] と X を比較する ただし,i=(L+H) 2 とし, 小数点以下は切り捨てる DAT[i]<X なら,L=i+1 とし, 次の探索範囲を, 配列の要素位置が i より大きい方 とする X 30 L i H DAT 3 20 50 次の探索範囲 図 1 比較例 1 DAT[i]>X なら,H=i-1 とし, 次の探索範囲を, 配列の要素位置が i より小さい方 とする X 10 L i H DAT 3 20 50 次の探索範囲 図 2 比較例 2 DAT[i]=X なら, 見つかった時の処理をする 3 L>H となるまで,2を繰り返す L>H の場合は, 探したいデータ X と同じ値が配列 DAT に存在しないことになる 5

< 設問 1> 次の表探索における比較回数に関する記述中の (1) に入るべき適切 な字句を解答群から選べ 添字 0 1 2 3 4 5 6 7 8 9 DAT 1 3 4 7 9 12 15 18 20 23 図 3 1 次元配列 DAT の例 線形探索法を用いて, 図 3の1 次元配列から, 23 を探索したときに X と1 次元配列の要素を比較する回数は, (1) 回である 二分探索法を用いて, 図 3の1 次元配列から, 15 を探索したときに X と1 次元配列の要素を比較する回数は, (2) 回である (1),(2) の解答群ア.3 イ.4 ウ.6 エ.7 オ.9 カ.10 < 設問 2> 次の流れ図の説明を読み, 流れ図中の (1) に入るべき適切な字句を 解答群から選べ [ 流れ図の説明 ] 要素数がn 個の1 次元配列 DAT[i](i=0, 1,, n-1) から二分探索法によりデータを探索する流れ図である なお, 見つかった場合はその位置 ( 添字の値 ) を, 見つからなかった場合は-1 を, 変数 P に設定するものとする (3) の解答群ア.L < H ウ.L > H イ.L H エ.L H (4),(5) の解答群 ア.H i - 1 イ.H i + 1 ウ.L i - 1 エ.L i + 1 6

[ 流れ図 ] 開始 H n 1 L 0 P -1 探索データを X に読み込む ループ P = -1 かつ (3) の間繰り返す i (L + H) 2 小数点以下切り捨て < X : DAT[i] = > (4) P i (5) ループ 終了 7

問題 3 次の流れ図の説明を読み, 各設問に答えよ [ 流れ図の説明 ] あるラーメンチェーン店における1 日の売上を集計する処理である 店舗には券売機が設置されており, 来店者は券売機で商品のチケットを購入して注文する 各店舗の売上情報は券売機に蓄積されており, 営業終了時間である午後 10 時過ぎに, その日の売上情報を一括で本部に伝送し, 夜間バッチ処理により売上累積に追加する なお, 商品の単価は全店で同じであり, 必ず1 日分のデータのみ伝送され, その日に売り上げが無い商品のデータは伝送されない また, 新規店舗の開店や既存店の閉店はないものとする 店舗売上 1 店舗売上 2 店舗売上 n 併合処理 1 売上ファイル 整列処理 商品マスタ 整列済み売上ファイル 突合せ処理 作業ファイル エラー 集計処理 売上累積 集計ファイル 併合処理 2 新売上累積 図 1 1 日の売上集計作業の流れ 8

[ 各ファイルについて ] 店舗売上店舗から伝送される順編成ファイルで, 売上日付, 売上時間の昇順に整列されている 売上ファイル各店舗の売上を併合した順編成ファイルである 整列済み売上ファイル売上ファイルを整列した順編成ファイルである 作業ファイル整列済み売上ファイルに売上金額を付加した順編成ファイルである 売上金額は商品の単価に数量を掛けたものである 集計ファイル作業ファイルを商品コード, 店舗コードごとに売上金額を集計した順編成ファイルである 商品マスタ商品名と単価を記録している順編成ファイルで, 商品コードの昇順に整列されている なお, 同じ商品コードを持つレコードは存在しない 売上累積商品, 店舗, 売上日付ごとの売上金額を蓄積するもので, 商品コード, 店舗コード, 売上日付の昇順に整列済みである 新売上累積売上累積と集計ファイルを併合したもので, 売上累積と同じ並びで生成される [ 各ファイルの形式について ] 店舗売上, 売上ファイル, 整列済み売上ファイル 店舗コード 商品コード 数量 売上日付 売上時間 t_tenpo t_code suryo t_hizuke t_jikan 作業ファイル 商品コード 店舗コード 売上日付 売上金額 w_code w_tenpo w_hizuke w_kingaku 集計ファイル 商品コード 店舗コード 売上日付 売上金額 g_code g_tenpo g_hizuke g_kingaku 商品マスタ 商品コード 商品名 単価 m_code m_name tanka 売上累積, 新売上累積商品コード店舗コード売上日付売上金額 注 ) 項目の下に記述してある名称は流れ図で使用する変数名である 9

[ 各処理について ] 併合処理 1 店舗の売上を店舗 1から店舗 nまで, 順番に売上ファイルへ出力する 整列処理突合せ処理の準備のため, 売上ファイルを整列する 突合せ処理売上ファイルと商品マスタを突合せ, 売上金額を求めて作業ファイルへ出力する 集計処理商品コード, 店舗コードごとに売上金額を集計し, 集計ファイルに出力する 併合処理 2 売上累積と集計ファイルを併合し, 新売上累積ファイルに出力する < 設問 1> 併合処理 1の後に生成される売上ファイルのレコードの並び順を解答群から選べ なお, 項目名の並び順は, 左から第 1キー, 第 2キー, 第 3キーである (1) の解答群ア. 売上日付, 売上時間, 商品コードウ. 商品コード, 売上日付, 売上時間 イ. 売上日付, 売上時間, 店舗コードエ. 店舗コード, 売上日付, 売上時間 < 設問 2> 整列処理の並び替えのキーを解答群から選べ なお, 項目名が複数ある場合は左から順に第 1キー, 第 2キーとする (2) の解答群ア. 商品コード, 店舗コードウ. 店舗コード, 売上日付 イ. 店舗コードエ. 店舗コード, 商品コード < 設問 3> 図 2は突合せ処理の流れ図である 流れ図中の (1) に入れるべき適切な字句を解答群から選べ なお, 流れ図中で使用している 最高値 は, システムで表現できる一番大きな値であり, コードとして使用しない (3) の解答群ア.m_code : t_code ウ.t_code : m_code イ.m_code : 最高値エ.t_code : 最高値 (4) の解答群ア.w_kingaku tanka suryo イ.w_kingaku w_kingaku + suryo ウ.w_kingaku w_kingaku + tanka エ.w_kingaku w_kingaku + tanka suryo 10

商品マスタ入力 整列済み売上ファイル入力 商品マスタを読む 整列済み売上ファイルを読む ファイルの終わり Yes ファイルの終わり Yes No m_code 最高値 No t_code 最高値 出口 w_tenpo t_tenpo w_code t_code w_hizuke t_hizuke 出 口 開始 商品マスタ入力 整列済み売上ファイル入力 突合せループ m_code 最高値または t_code 最高値の間繰り返す < (3) > = 商品マスタ入力 (4) エラー出力 作業ファイル出力 整列済み売上ファイル入力 整列済み売上ファイル入力 突合せループ 終了 図 2 突合せ処理の流れ図 11

< 設問 4> 図 2 の流れ図で, エラー出力になる場合を解答群から選べ (5) の解答群ア. 数量に数字以外の文字があったイ. 整列済み売上ファイルのレコードを読み終えたウ. 商品マスタの商品コードが整列済み売上ファイルの中に見つからなかったエ. 整列済み売上ファイルの商品コードが商品マスタの中に見つからなかった < 設問 5> 図 2の流れ図で出力される作業ファイルに関する記述として適切なものを解答群から選べ (6) の解答群ア. 売上金額が0になるデータが含まれる場合もあるイ. 同じ商品コードの売上金額は合算してから出力されるウ. 最高値が出力されるエ. 作業ファイル中の商品コードは商品マスタに全て存在する < 設問 6> 次の図 3は集計処理の流れ図である 流れ図中の (1) に入れるべき 適切な字句を解答群から選べ (7),(9) の解答群ア.0 イ.g_kingaku ウ.gokei エ.w_kingaku (8) の解答群ア.gokei gokei + g_kingaku イ.gokei gokei + w_kingaku ウ.g_kingaku g_kingaku + gokei エ.g_kingaku g_kingaku + w_kingaku 12

開始 作業ファイル入力 作業ファイル入力 作業ファイルを読む 集計ループ 1 w_tenpo 最高値の間繰り返す ファイルの終わり No Yes w_tenpo 最高値 w_code 最高値 old_tenpo w_tenpo old_code w_code old_hizuke w_hizuke gokei 0 (7) 出口 集計ループ 2 w_tenpo = old_tenpo かつ w_code = old_code の間繰り返す (8) 作業ファイル入力 集計ループ 2 g_tenpo old_tenpo g_code old_code g_hizuke old_hizuke g_kingaku gokei (9) 集計ファイル出力 集計ループ 1 終開始了 図 3 集計処理の流れ図 13

問題 4 次のプログラムの説明および擬似言語の記述を読み, 各設問に答えよ [ プログラムの説明 ] データが記録されている1 次元配列 data の先頭要素から順に目的のデータXを探索し, 見つけた位置を返す関数 senkei である 図の探索の例の場合, 目的のデータ Xは 14 であり, 配列 data[4] に格納されているので,4を返す 1 次元配列 data の大きさは充分に確保されており, データ数はN 個とし, 添字は 0から始まる なお, 要素中に存在する目的のデータは1つであり, 存在しない場合は-1 を返す 0 1 2 3 4 5 6 N-2 N-1 配列 data 5 12 3 8 14 21 10 22 7 先頭要素から順番に比較をし, 目的データと一致した,4を返す データX 14 図探索の例 [ 擬似言語の記述形式の説明 ] 記述形式説明 手続き, 変数などの名前, 型などを宣言する 変数 式変数に式の値を代入する /* 文 */ 注釈を記述する条件式 処理 1 選択処理を示す 条件式が真の時は処理 1を実行し, 処理 2 偽の時は処理 2を実行する 条件式 処理 前判定繰り返し処理を示す 条件式が真の間, 処理を実行する 14

[ プログラム1] senkei( 整数型 :N, 整数型 :data[], 整数型 :X) 整数型 :k, m /* 配列の中から X を探索する */ k 0 k < N α data[k] = X β (1) break /* 繰り返し処理から抜け出す */ k k + 1 k = N (2) return m < 設問 1> プログラム 1 中の (1) に入れるべき適切な字句を解答群から選べ (1),(2) の解答群 ア.m -1 イ.m 0 ウ.m k エ.m k + 1 オ.m N - 1 カ.m N 15

< 設問 2> 次のプログラムの改良に関する記述を読み, プログラム 2 中の (1) に 入れるべき適切な字句を解答群から選べ プログラム1では, 繰り返すたびに α と β の比較を行っている この比較回数を減らすため, 探索前に配列 data の末尾へ目的のデータXを追加して探索を行うようにしたものがプログラム2である [ プログラム2] senkei( 整数型 :N, 整数型 :data[], 整数型 :X) 整数型 :k, m /* 末尾に X を追加 */ (3) /* 配列の中から X を探索する */ k 0 (4) k k + 1 k < N (5) m -1 return m (3),(5) の解答群 ア.data[0] X イ.data[N] X ウ.data[N-1] X エ.m 0 オ.m k カ.m k + 1 (4) の解答群ア.data[k] = X ウ.data[N] = X イ.data[k] X エ.data[N] X 16

< 選択問題 > 選択問題は問題から1つ選択し解答せよ 選択した問題は必ず, 解答用紙 選択欄 にマークすること 選択欄にマークがなく, 解答のみの場合は採点を行いません 各構成は以下のとおり 選択問題 C 言語の問題 18 ページ ~22 ページ 表計算の問題 23 ページ ~28 ページ アセンブラの問題 29 ページ ~31 ページ 17

選択問題 C 言語の問題 次の C 言語プログラムの説明を読み, 各設問に答えよ [ プログラムの説明 ] ボイヤー ムーア法により文字列を探索するbm_searchである ボイヤー ムーア法とは,1 文字ずつ探索位置を移動しながら判断する方法に対して, 探索位置の移動量をその都度変化させることにより効率化したアルゴリズムである [ ボイヤー ムーア法について ] ボイヤー ムーア法では, 文字列の探索は探索パターンの末尾の文字から1 文字ずつ前方に比較する 全ての文字が一致すれば探索パターンが存在したことになるが, 一致しない文字が出現した場合, その文字が探索パターンに含まれている形態により, 次に探索を開始する位置を調整する 図 1の場合は, 一致しない位置の探索対象文字列は Z であり, 探索パターンに含まれていない この場合は, 一致しない位置に, 探索パターンの文字数である4を加えて次の探索開始位置とする 一致しない位置 次の探索開始位置 探索対象文字列 X Y Z A B C A B 探索パターン A B C A 探索 1 A B C A 探索 2 A B C A 図 1 探索パターンに不一致文字が含まれない場合 図 2の場合は, 最初に比較する探索対象文字列の C と探索パターンの E は一致しないが, C は探索パターンに含まれている この場合, C は探索パターン内では末尾から2 文字離れているので, 一致しなかった位置に2を加えて次の探索開始位置とする 18

選択問題C言語一致しない位置 次の探索開始位置 探索対象文字列 A B C D E F G H 探索パターン C D E 探索 1 C D E 探索 2 C D E 図 2 探索パターンに不一致文字が含まれる場合つまり, 一致しない文字が見つかった場合に次の探索を開始する位置のために移動する量は, 一致しない文字が探索パターンに含まれていれば探索パターンの末尾から離れている数で, 含まれていなければ探索パターンの文字数で決定する なお, 探索パターンの中に同じ文字があった場合, 値の小さい方を採用する 例えば, 探索パターンが abac であれば, 移動量は図 3のようになる 文字 a b c その他 移動量 1 2 0 4 図 3 移動量 なお, 移動量のみを使用すると, 無限ループになる場合があるので, それまで調べた文字数と移動量を比較して大きい方の値を使用する 図 4は, 一致しない場所は探索対象文字列が A で検索パターンが X である 移動量は A が0になるため,0を加えても次の探索開始位置は変化せず, 無限ループになる このような場合, 一致しない位置まで2 文字を調べたので,2を加える 一致しない位置次の探索開始位置 探索対象文字列 A A B B 探索パターン X A 探索 1 X A 探索 2 X A 図 4 無限ループを考慮した探索 19

[ ボイヤー ムーア法の実装 ] 次の探索開始位置を求めるために使用する移動量は, あらかじめテーブルに用意しておく 具体的には, 探索パターンの中に出現する文字と, その文字に対する移動量を対応付けたテーブルである 該当する文字をテーブルから探索し, 対応する移動量と調べた文字数を比較し, 大きい方の値を探索対象文字列の添え字に加えて, 次の探索開始位置とする なお, 本問において, 文字と移動量が対応付けられたテーブルは既に作成されているものとし, その値を取り出すには関数 bm_index を利用する [ 関数の説明 ] bm_search 関数引数 : 探索対象文字列, 探索パターン機能 : ボイヤー ムーア法により探索対象文字列の中から探索パターンを探索する 探索に成功した場合は, その先頭位置を0から始まる整数値で返す また, 検索に失敗した場合は-1 を返す 戻り値 : 探索結果の整数値 max 関数引数 : 整数値, 整数値機能 :2つの整数値のうち, 大きい値を返す 同値の場合は2つ目の引数を返す 戻り値 : 整数値 bm_index 関数引数 : 文字, 整数値機能 : 文字に対応する移動量をテーブルから探索して返す なお, テーブル中に文字が存在しない場合は引数の整数値を返す 戻り値 : 整数値 bm_index は問題に掲載しない < 設問 1> 次のプログラム中の に入れるべき適切な字句を解答群から選べ [ プログラム ] #define NOTFOUND (-1) int bm_search(unsigned char txt[], unsigned char ptn[]) { 0000int t_idx, p_idx, t_len, p_len, i, flg1, flg2, skip, chars; 0000t_len = strlen(txt); /* 探索対象文字列の長さ */ 0000p_len = strlen(ptn); /* 探索パターンの長さ */ 0000flg1 = 0; /* 探索結果のフラグ初期化 */ 0000t_idx = p_len - 1; /* 探索対象文字列の添え字初期化 */ 20

0000while( t_idx < t_len && flg1 == 0) { 00000000p_idx = p_len - 1; /* 探索パターンの添え字初期化 */ 00000000flg2 = 0; 00000000while( p_idx >= 0 && flg2 == 0) { 000000000000if (txt[t_idx] == ptn[p_idx]) { 0000000000000000 (1) ; 000000000000} else { 0000000000000000 (2) ; 000000000000} 00000000} 00000000if ( (3) ) { 000000000000flg1 = 1; /* 探索成功 */ 00000000} else { /* 一致しない文字に応じて移動 */ 000000000000skip = bm_index(txt[t_idx], p_len); /* 移動量 */ 000000000000chars = p_len - p_idx; /* 調べた文字数 */ 00000000000 (4) += max(skip, chars); /* 次の探索開始位置の計算 */ 00000000} 0000} 0000if (flg1 == 1) 00000000return (t_idx + 1); 0000else 00000000return NOTFOUND; } int max(int value1, int value2) { if ( (5) ) return value1; else return value2; } (1) の解答群ア.t_idx-- p_idx-- ウ.t_idx++ p_idx-- イ.t_idx-- p_idx++ エ.t_idx++ p_idx++ (2) の解答群 ア.flg1 = 1 イ.flg2 = 1 ウ.p_idx = 0 エ.t_idx = 0 21

(3) の解答群 ア.p_idx < 0 ウ.t_idx < 0 イ.p_idx > p_len エ.t_idx > t_len (4) の解答群 ア.p_idx ウ.t_idx イ.p_len エ.t_len (5) の解答群 ア.value1 == value2 ウ.value1 > value2 イ.value1!= value2 エ.value1 < value2 < 設問 2> 次の文字列を bm_search に与えた時, 破線で囲まれた命令 ( 次の探索開始位置の計算 ) を実行する回数を解答群から選べ なお, 移動量を持つテーブルは, その都度再構築される (6) 検索対象文字列 A B A B C A B C D 検索パターン A B C (7) 検索対象文字列 A B C D E F G H I 検索パターン E F G (8) 検索対象文字列 A A C C A A 検索パターン C A (6) ~ (8) の解答群ア.1 イ.2 ウ.3 エ.4 22

択問題表計算選択問題表計算の問題 次の表計算ソフトの記述を読み, 各設問に答えよ この問題で使用する表計算ソフトの仕様は下記のとおりである COUNTIF 関数範囲のセルの中で条件に一致するセルの数を返す 書式 :COUNTIF( 範囲, 条件 ) IF 関数条件が真の時に真の場合, 偽の時に偽の場合の計算結果や値を返す 書式 :IF( 条件式, 真の場合, 偽の場合 ) IFERROR 関数式にエラーが無ければ式の値を, エラーがあればエラー処理の結果を返す 書式 :IFERROR( 式, エラー処理 ) ROUNDUP 関数指定した桁で値を切り上げる 桁を 0 にすると, 小数点以下第 1 位で切り上げる 書式 :ROUNDUP( 式または値, 桁 ) ROUNDDOWN 関数指定した桁で値を切り捨てる 桁を 0 にすると, 小数点以下第 1 位で切り捨てる 書式 :ROUNDDOWN( 式または値, 桁数 ) SUM 関数指定した範囲の合計値を求める 書式 :SUM( 範囲 ) VLOOKUP 関数検索値を左端に含む行を範囲の中から検索し, 指定した列位置の値を返す 検索の型に0を指定すると検索値と完全に一致する値を検索し,1を指定すると検索値と一致する値がない場合に, 検索値未満で一番大きい値を検索する なお, 該当する行が検索できなかった場合は, エラーになる 書式 :VLOOKUP( 検索値, 検索範囲, 位置, 検索の型 ) 式 = に続けて計算式や関数などを入力する 選23

アンパサンド (&) 演算子文字列を連結して1つの文字列にする セル番地の参照セル番地に $ を付けることで, 絶対番地 ( 絶対参照 ) を表す 他のワークシートの参照 ワークシート名! セル番地 とすることで他のワークシートのセルを参照することができる 自動車の販売を行っているJ 社では, 表計算ソフトを利用して簡易的な見積書を作成している 営業担当者が必要事項を入力することにより, 見積書が作成される A B C D E F G 1 2 XXXX 年 9 月 16 日 御 見 積 書 3 30201 4 郷 覚 様 5 販売会社 J 社 K 営業所 6 下記の通り御見積申し上げます 担当者 須藤 わたる 1503 7 8 御見積金額 2,500,120 9 上記お見積もりは XXXX 年 9 月 30 日まで有効です 10 11 車種 カルア 12 グレード V 13 14 15 車体本体価格 2,480,000 ディーラーオプション明細 金額 16 お値引き額 200,000 ロアガーニッシュ フロント 43,200 X 17 車両店頭引渡価格 2,280,000 ロアガーニッシュ サイド 45,000 X 18 ディーラーオプション合計 220,120 ロアガーニッシュ リア 43,200 X 19 オートDナイトミラー 25,000 20 メーカーオプション明細 金額 フロアマット 18,000 X 21 カーナビ B 150,000 ドアバイザー 10,000 22 フォグランプ 80,000 23 ボディーカラー A 50,000 24 25 26 27 小計 184,400 28 点検パック 41,160 29 延長保証マモル 13,000 30 お値引き額 18,440 31 メーカーオプション合計 280,000 ディーラーオプション合計 220,120 32 図 1 見積書 ワークシート 日付は, 見積書作成日が自動的に表示されるように関数が設定されている は, 営業所ごとに連番が自動的に設定される 車種とグレード, メーカーオプション, ディーラーオプションは, お客様が希望するものが入力される 24

自動車に標準で装備されていない部品等はオプションとして用意されており, 自動車製造時に取り付けるメーカーオプションと, 販売店で取り付けるディーラーオプションがある メーカーオプションの金額は, 車両本体価格に合算される セルC16 の お値引き額 は, 営業担当者によって入力される 点検パック と 延長保証マモル は, ディーラーオプションとして入力される < 設問 1> 見積書 ワークシートの担当者の表示に関する次の記述中の (1) に 入れるべき適切な字句を解答群から選べ セル G6 に入力された社員番号を 社員表 ワークシートから検索し, 氏名を表示するため, セル F6 に次の式を入力する なお, 社員表 ワークシートには 100 行までデータが入力されており, セル G6 が未入力であれば空表示にする また, 社員表 ワークシート中に社員番号が存在しなければ "ERROR" と表示する = (1) A B 1 社員番号氏 名 2 1008 吾川 聡 3 1013 斉藤 良文 4 1019 福田 浅子 5 1025 工藤 雄三 6 1027 安西 絵美 7 1033 高橋 敬 100 1941 渡辺美奈子 図 2 社員表 ワークシート (1) の解答群ア.IF(G6="", "", IFERROR(VLOOKUP(G6, 社員表!A2:B100, 2, 0), "ERROR")) イ.IF(G6="", IFERROR(VLOOKUP(G6, 社員表!A2:B100, 2, 0), "ERROR"), "") ウ.IF(G6="", "ERROR", IFERROR(VLOOKUP(G6, 社員表!A2:B100, 2, 0), "")) エ.IF(G6<>"", IFERROR(VLOOKUP(G6, 社員表!A2:B100, 2, 0), ""), "ERROR") < 設問 2> メーカーオプションの表示に関する次の記述中の (1) に入れるべき 適切な字句を解答群から選べ セル B21 以降に入力されたメーカーオプション明細の品名を メーカーオプション ワークシートから検索し, 金額を表示するため, セル C21 に次の式を入力し, セル C22 ~C30 まで複写した なお, メーカーオプション ワークシートには 30 行までデータが入力されており, メーカーオプション ワークシート中にオプション品が存在しなければ空表示にする = (2) 25

A B 1 品名 金額 2 カーナビ A 120,000 3 カーナビ B 150,000 4 カーナビ C 220,000 5 バックカメラ 30,000 6 15インチアルミホイール4 本セット 80,000 7 16インチアルミホイール4 本セット 120,000 8 17インチアルミホイール4 本セット 150,000 9 エアロセット 200,000 10 フォグランプ 80,000 30 シートカラー C 38,000 図 3 メーカーオプション ワークシート また, セル C31 にメーカーオプションの合計金額を求めるため, 次の式を入力した = SUM(C21:C30) (2) の解答群ア.IFERROR(VLOOKUP(B21, メーカーオプション!A2:B30, 2, 0), "") イ.IFERROR(VLOOKUP(B21, メーカーオプション!A$2:B$30, 2, 0), "") ウ.IFERROR(VLOOKUP(B21, メーカーオプション!$A2:$B30, 2, 0), "") エ.IFERROR(VLOOKUP(B21, メーカーオプション!$A2:B30, 2, 1), "") < 設問 3> ディーラーオプションの表示に関する次の記述中の (1) に入れるべ き適切な字句を解答群から選べ セル E16 以降に入力されたディーラーオプションの品名を ディーラーオプション ワークシートから検索し, 金額を表示するため, セル F16 に次の式を入力し, セル F17 ~F26 まで複写した なお, ディーラーオプション ワークシートには 50 行までデータが入力されており, ディーラーオプション ワークシート中にオプション品が存在しなければ空表示にする = (3) A B C 1 品名 金額 割引パック 2 ロアガーニッシュフロント 43,200 X 3 ロアガーニッシュリア 43,200 X 4 ロアガーニッシュサイド 45,000 X 5 フロントグリル 51,000 X 6 テールゲートスポイラー 29,900 7 エンブレムイルミネーション 29,900 8 ゴールドエンブレム 5,250 9 ドアライニングイルミネーション 32,800 50 ドアバイザー 10,000 図 4 ディーラーオプション ワークシート また, ディーラーオプションには割引が適用される場合がある ディーラーオプション ワークシートの 割引パック に "X" が入力されているものを購入した場合, 26

その個数によって割引率が決まる この商品が3または4 個含まれていれば 10%,5 個以上含まれていれば 15% をディーラーオプションの合計金額から割引く そこで, 対象となるオプション品かをセル G16~G26 に "X" で表示するため, セル G16 に金額を表示するための式と同様の式を入力し, セル G17~G26 まで複写した なお, 付属品明細ワークシート中に付属品が存在しなければ空表示にする ディーラーオプションの割引が適用された場合, セル E30 に お値引き額 と表示し, その金額をセル F30 に表示する 割引が適用されない場合は, 両方とも空表示にする セル E30 には次の式を入力した = IF( (4), " お値引き額 ", "") セル F30 には次の式を入力した なお, 小数点以下が発生する場合は, お値引き額 が大きくなるように整数値に調整する = IF(COUNTIF(G16:G26, "X")>4, (5), IF( (4), (6), "")) セル F31 は, 値引き額を考慮したディーラーオプションの合計を求める次の式を入力した = IF(E30="", (7), (7) - F30) (3) の解答群ア.=IFERROR(VLOOKUP(E16, ディーラーオプション!A2:C50, 2, 0), "") イ.=IFERROR(VLOOKUP(E16, ディーラーオプション!A$2:C$50, 2, 0), "") ウ.=IFERROR(VLOOKUP(E16, ディーラーオプション!$A2:$C50, 2, 0), "") エ.=IFERROR(VLOOKUP(E16, ディーラーオプション!$A2:C50, 2, 1), "") (4) の解答群ア.COUNTIF(G16:G26, "X")>2 ウ.COUNTIF(G16:G26, "X")>4 イ.COUNTIF(G16:G26, "X")>3 エ.COUNTIF(G16:G26, "X")>5 (5),(6) の解答群 ア.ROUNDUP(F27*0.1, 0) イ.ROUNDUP(F27*0.15, 0) ウ.ROUNDDOWN(F27*0.1, 0) エ.ROUNDDOWN(F27*0.15, 0) (7) の解答群ア.SUM(F28:F30) ウ.SUM(F27:F29) イ.SUM(F16:F29) エ.SUM(F27:F30) 27

< 設問 4> 車体本体価格の表示に関する次の記述中の (1) に入れるべき適切な 字句を解答群から選べ セル C15 に車体価格とメーカーオプションを加算した車体本体価格を求める 車体価格は 価格表 ワークシートから車種とグレードにより検索する なお, 価格表の A 列は, 検索に使用するために車種とグレードを結合した文字列である 価格表に車種とグレードが存在しなければ空表示にする また, 価格表 ワークシートには 50 行までデータが入力されている = (8) A B C D 1 検索キー 車種 グレード 車体価格 2 MOCOTTOB MOCOTTO B 1,200,000 3 MOCOTTOSパッケージ MOCOTTO Sパッケー 1,360,000 4 MOCOTTOXパッケージ MOCOTTO Xパッケー 1,400,000 5 MワゴンX Mワゴン X 1,500,000 6 MワゴンZ Mワゴン Z 1,650,000 50 スーパースター E スーパースター E 4,700,000 図 5 価格表 ワークシート セル C17 は, 車体本体価格から値引き額を引いた値を計算するため, 次の式を入力 した = C15-C16 セル C18 は, セル F31 の値を参照するため, 次の式を入力した = F31 セル D8 には見積金額として, セル C17 と C18 の和を計算するため, 次の式を入力した = C17+C18 (8) の解答群ア.IFERROR(VLOOKUP(D11&D12, 価格表!A2:D50, 3, 0) + C31,"") イ.IFERROR(VLOOKUP(D11&D12, 価格表!A2:D50, 3, 0) + F31,"") ウ.IFERROR(VLOOKUP(D11&D12, 価格表!A2:D50, 4, 0) + C31,"") エ.IFERROR(VLOOKUP(D11&D12, 価格表!A2:D50, 4, 0) + F31,"") 28

択問題アセンブラ選択問題アセンブラの問題 次のアセンブラ言語 CASLⅡ プログラムの説明を読み, 各設問に答えよ [ プログラムの説明 ] 要素数 Nの1 次元配列 DATを, 挿入法により昇順に整列するプログラムである 配列 DATは,DAT+0 番地以降に連続して格納済みであり, 要素数はN 番地に格納済みである ただし, 要素数は,2 以上 100 以下とする [ 挿入法の手順 ] 1 次元配列 DATが,DAT+0~DAT+i-1 番地まで昇順に整列されているとき,DAT+i 番地の内容を格納すべき位置を見つけて挿入する手順は, 次のようになる なお,iの値は1~N-1とする 1 DAT+i 番地の内容をwに退避する 2 jをi-1とする 3 DAT+j 番地の内容 wであれば格納すべき位置を見つけたことになる ( 繰り返しを終了して4へ ) そうでなければ,DAT+j 番地の内容をDAT+j+1 番地へ格納してj から1を引き,3へ戻る 4 wをdat+j+1 番地へ格納する DAT+i-1 番地まで整列済み i 0 1 2 3 4 5 6 7 8 9 3 5 8 10 15 9 1 17 6 12 W 9 DAT+i 番地まで整列する i 0 1 2 3 4 5 6 7 8 9 図 1 挿入法の例 (N=10) 29

[ プログラム ] 行番号 ラベル 命令 オペランド コメント 100 ISORT START 110 LD GR1,=1 ; i の設定 120 LOOP1 LD GR0,DAT,GR1 ; W へ退避 130 (1) ; j の設定 140 LOOP2 LD GR3,GR2 150 SUBA GR2,=1 160 (2) ; 整列済範囲の比較終了 170 LD GR4,DAT,GR2 180 CPA GR0,GR4 190 JPL FIND ; 挿入位置見つかる 200 JZE FIND ; 挿入位置見つかる 210 (3) 220 JUMP LOOP2 230 FIND ST GR0,DAT,GR3 240 (4) 250 CPA GR1,N ; i の終了判定 260 JMI LOOP1 270 RET 280 N DS 1 290 DAT DS 100 300 END < 設問 1> プログラム中の (1) に入れるべき適切な字句を解答群から選べ (1) の解答群 ア.LD GR2,=1 イ.LD GR2,=2 ウ.LD GR2,GR0 エ.LD GR2,GR1 (2) の解答群ア.JMI FIND ウ.JZE FIND イ.JMI LOOP1 エ.JZE LOOP1 (3) の解答群ア.ST GR0,DAT,GR2 ウ.ST GR4,DAT,GR2 イ.ST GR0,DAT,GR3 エ.ST GR4,DAT,GR3 30

(4) の解答群 ア.ADDA GR1,=1 ウ.SUBA GR1,=1 イ.ADDA GR3,=1 エ.SUBA GR3,=1 < 設問 2> 行番号 140 の命令は, 他の命令に置き換えても結果に影響しない 置き換え可能な命令を解答群から選べ ただし, ラベル (LOOP2) はそのままとする (5) の解答群 ア.LD GR3,=1 イ.LD GR3,=2 ウ.LAD GR3,-1,GR1 エ.LAD GR3,0,GR2 < 設問 3> 次の実行回数に関する記述を読み, 記述中の (1) に入れるべき適切 な字句を解答群から選べ 1 次元配列 DAT の要素数が 10 の場合, 行番号 180 の実行回数を考える 実行回数が最小となるのは配列が昇順に整列済みの場合であり, (6) 回である また, 実行回数が最大となるのは配列が降順に整列済みの場合であり, (7) 回である (6),(7) の解答群ア.1 イ.9 ウ.10 エ.45 オ.55 31

< メモ欄 > 32

< メモ欄 > 33

34