令和５年度

基本情報技術者試験
公開問題

科目 B

問題番号

問１～問６

選択方法

全問必須

注意事項
1.

実際の試験は20問で構成されますが，そのうちの6問を公開しています。

2.

問題に関する質問にはお答えできません。文意どおり解釈してください。

－ 1 －擬似言語の記述形式（基本情報技術者試験用）
擬似言語を使用した問題では，各問題文中に注記がない限り，次の記述形式が適用されているものとする。
〔擬似言語の記述形式〕
記述形式

説明

○手続名又は関数名

手続又は関数を宣言する。

型名: 変数名

変数を宣言する。

/* 注釈 */

注釈を記述する。

// 注釈

変数名 ← 式

変数に式の値を代入する。

手続名又は関数名(引数, …)

手続又は関数を呼び出し，引数を受け渡す。

if (条件式 1)

選択処理を示す。

処理 1
elseif (条件式 2)

処理 2
elseif (条件式 n)

処理 nelse

処理 n ＋ 1
endif
while (条件式)

処理
endwhiledo

条件式 を上から評価し，最初に真になった 条件式に対応する 処理 を実行する。以降の 条件式 は評価せず，対応する 処理 も実行しない。どの条件式 も真にならないときは，処理 n ＋ 1 を実行する。
各処理は，0 以上の文の集まりである。
elseif と処理の組みは，複数記述することがあり，省略することもある。
else と処理 n ＋ 1 の組みは一つだけ記述し，省略することもある。
前判定繰返し処理を示す。

条件式が真の間，処理を繰返し実行する。
処理は，0 以上の文の集まりである。
後判定繰返し処理を示す。

処理
while (条件式)

処理 を実行し，条件式 が真の間，処理 を繰返し実行する。

処理は，0 以上の文の集まりである。
for (制御記述)

処理
endfor

繰返し処理を示す。

制御記述の内容に基づいて，処理を繰返し実行する。
処理は，0 以上の文の集まりである。

－ 2 －〔演算子と優先順位〕
演算子の種類演算子式() .

単項演算子

not ＋ －

二項演算子

優先度
高乗除

mod × ÷加減＋ －関係≠ ≦ ≧ ＜ ＝ ＞

論理積

and論理和or低

注記 演算子 . は，メンバ変数又はメソッドのアクセスを表す。
演算子 mod は，剰余算を表す。

〔論理型の定数〕
true，false〔配列〕
配列の要素は，“[”と“]”の間にアクセス対象要素の要素番号を指定することでアクセスする。なお，二次元配列の要素番号は，行番号，列番号の順に“,”で区切って指定する。
“{”は配列の内容の始まりを，“}”は配列の内容の終わりを表す。ただし，二次元配列において，内側の“{”と“}”に囲まれた部分は，1 行分の内容を表す。

〔未定義，未定義の値〕
変数に値が格納されていない状態を，“未定義”という。変数に“未定義の値”を代入すると，その変数は未定義になる。

－ 3 －

問１

次のプログラム中のとaに入れる正しい答えの組合せを，b解答群の中から選べ。ここで，配列の要素番号は 1 から始まる。

関数 findPrimeNumbers は，引数で与えられた整数以下の，全ての素数だけを格納した配列を返す関数である。ここで，引数に与える整数は 2 以上である。

〔プログラム〕○整数型の配列: findPrimeNumbers(整数型: maxNum)
整数型の配列: pnList ← {} // 要素数0の配列
整数型: i, j
論理型: divideFlag
for (i を 2 からaまで 1 ずつ増やす)

divideFlag ← true/* iの正の平方根の整数部分が2未満のときは，繰返し処理を実行しない */for (j を 2 から iの正の平方根の整数部分 まで 1 ずつ増やす) // αif (b)

divideFlag ← falseαの行から始まる繰返し処理を終了する
endif
endforif (divideFlag が true と等しい)pnListの末尾 に iの値 を追加する
endif
endforreturn pnList

解答群
ab

ア

maxNumi ÷ j の余り が 0 と等しい

イ

maxNumi ÷ j の商 が 1 と等しくないウ

maxNum ＋ 1

i ÷ j の余り が 0 と等しいエmaxNum ＋ 1i ÷ j の商 が 1 と等しくない

－ 4 －

問２

次の記述中のに入れる正しい答えを，解答群の中から選べ。

次のプログラムにおいて，手続 proc2 を呼び出すと，の順に出力される。

〔プログラム〕○proc1()"A" を出力する
proc3()○proc2()
proc3()"B" を出力する
proc1()○proc3()"C" を出力する

解答群
ア “A”，
“B”
，“B”，
“C”

イ

“A”，
“C”

ウ “A”，
“C”
，“B”，
“C”

エ“B”，“A”，“B”，“C”

オ “B”，“C”
，“B”，
“A”

カ“C”，
“B”

キ “C”，“B”，“A”

ク“C”，“B”
，“A”，
“C”

－ 5 －

問３

次の記述中のに入れる正しい答えを，解答群の中から選べ。ここで，配列の要素番号は 1 から始まる。

次の手続 sort は，大域の整数型の配列 data の，引数 first で与えられた要素番号から引数 last で与えられた要素番号までの要素を昇順に整列する。ここで，first＜ last とする。手続 sort を sort(1, 5) として呼び出すと，/*** α ***/ の行を最初に実行したときの出力は“”となる。

〔プログラム〕
大域: 整数型の配列: data ← {2, 1, 3, 5, 4}○sort(整数型: first, 整数型: last)
整数型: pivot, i, jpivot ← data[(first ＋ last) ÷ 2 の商]i ← firstj ← lastwhile (true)
while (data[i] ＜ pivot)i ← i ＋ 1
endwhile
while (pivot ＜ data[j])j ← j － 1
endwhile
if (i ≧ j)繰返し処理を終了する
endif
data[i]とdata[j]の値を入れ替えるi ← i ＋ 1j ← j － 1
endwhiledataの全要素の値を要素番号の順に空白区切りで出力する
if (first ＜ i － 1)
sort(first, i － 1)
endif
if (j ＋ 1 ＜ last)sort(j ＋ 1, last)endif－ 6 －/*** α ***/

解答群
ア 1 2 3 4 5イ1 2 3 5 4

ウ 2 1 3 4 5エ

2 1 3 5 4－ 7 －問４

次の記述中のに入れる正しい答えを，解答群の中から選べ。ここで，配列の要素番号は 1 から始まる。

関数 add は，引数で指定された正の整数 value を大域の整数型の配列 hashArray に格納する。格納できた場合は true を返し，格納できなかった場合は false を返す。
ここで，整数 value を hashArray のどの要素に格納すべきかを，関数 calcHash1 及びcalcHash2 を利用して決める。
手続 test は，関数 add を呼び出して，hashArray に正の整数を格納する。手続
test の処理が終了した直後の hashArray の内容は，〔プログラム〕
大域: 整数型の配列: hashArray○論理型: add(整数型: value)
整数型: i ← calcHash1(value)if (hashArray[i] ＝ －1)
hashArray[i] ← value
return trueelse
i ← calcHash2(value)if (hashArray[i] ＝ －1)
hashArray[i] ← value
return true
endif
endif
return false○整数型: calcHash1(整数型: value)
return (value mod hashArrayの要素数) ＋ 1○整数型: calcHash2(整数型: value)
return ((value ＋ 3) mod hashArrayの要素数) ＋ 1○test()
hashArray ← {5個の －1}
add(3)
add(18)add(11)－ 8 －である。

解答群
ア {－1, 3, －1, 18, 11}
イ {－1, 11, －1, 3, －1}
ウ {－1, 11, －1, 18, －1}
エ {－1, 18, －1, 3, 11}
オ {－1, 18, 11, 3, －1}

－ 9 －

問５

次のプログラム中のaとに入れる正しい答えの組合せを，b解答群の中から選べ。ここで，配列の要素番号は 1 から始まる。
コサイン類似度は，二つのベクトルの向きの類似性を測る尺度である。関数
calcCosineSimilarity は，いずれも要素数が n(n≧1) である実数型の配列 vector1と vector2 を受け取り，二つの配列のコサイン類似度を返す。配列 vector1 が {a1,a2, …, an}，配列 vector2 が {b1, b2, …, bn} のとき，コサイン類似度は次の数式で計算される。ここで，配列 vector1 と配列 vector2 のいずれも，全ての要素に 0 が格納されていることはないものとする。

a1 b1 ＋ a2 b2 ＋ … ＋ an bn
2a12 ＋ a2 ＋ … ＋ an2222b1 ＋ b2 ＋ … ＋ bn

〔プログラム〕○実数型: calcCosineSimilarity(実数型の配列: vector1,実数型の配列: vector2)
実数型: similarity, numerator, denominator, temp ← 0
整数型: inumerator ← 0for (i を 1 から vector1の要素数 まで 1 ずつ増やす)
numerator ← numerator ＋aendfor
for (i を 1 から vector1の要素数 まで 1 ずつ増やす)
temp ← temp ＋ vector1[i]の2乗
endfordenominator ← tempの正の平方根
temp ← 0for (i を 1 から vector2の要素数 まで 1 ずつ増やす)
temp ← temp ＋ vector2[i]の2乗
endfordenominator ←bsimilarity ← numerator ÷ denominator
return similarity－ 10 －

解答群abア(vector1[i] × vector2[i])の正の平方根

denominator × (tempの正の平方根)イ(vector1[i] × vector2[i])の正の平方根

denominator ＋ (tempの正の平方根)ウ(vector1[i] × vector2[i])の正の平方根

tempの正の平方根エ

vector1[i] × vector2[i]denominator × (tempの正の平方根)オ

vector1[i] × vector2[i]denominator ＋ (tempの正の平方根)カ

vector1[i] × vector2[i]tempの正の平方根

キ

vector1[i]の2乗

denominator × (tempの正の平方根)

ク

vector1[i]の2乗

denominator ＋ (tempの正の平方根)ケ

vector1[i]の2乗

tempの正の平方根－ 11 －

問６

A 社は，放送会社や運輸会社向けに広告制作ビジネスを展開している。A 社は，人事業務の効率化を図るべく，人事業務の委託を検討することにした。A 社が委託する業務（以下，B 業務という）を図 1 に示す。

・採用予定者から郵送されてくる入社時の誓約書，前職の源泉徴収票などの書類を PDF フ
ァイルに変換し，ファイルサーバに格納する。
（省略）

図1

B 業務

委託先候補の C 社は，B 業務について，次のように A 社に提案した。
・B 業務だけに従事する専任の従業員を割り当てる。
・B 業務では，図 2 の複合機のスキャン機能を使用する。

・スキャン機能を使用する際は，従業員ごとに付与した利用者 ID とパスワードをパネルに入力する。
・スキャンしたデータを PDF ファイルに変換する。
・PDF ファイルを従業員ごとに異なる鍵で暗号化して，電子メールに添付する。
・スキャンを実行した本人宛てに電子メールを送信する。
・PDF ファイルが大きい場合は，PDF ファイルを添付する代わりに，自社の社内ネットワーク上に設置したサーバ（以下，B サーバという）1)に自動的に保存し，保存先の URL を電子メールの本文に記載して送信する。
注 1) B サーバにアクセスする際は，従業員ごとの利用者 ID とパスワードが必要になる。

図2複合機のスキャン機能（抜粋）A 社は，C 社と業務委託契約を締結する前に，秘密保持契約を締結した。その後，C社に質問表を送付し，回答を受けて，業務委託での情報セキュリティリスクの評価を実施した。その結果，図 3 の発見があった。

・複合機のスキャン機能では，電子メールの差出人アドレス，件名，本文及び添付ファイル名を初期設定 1)の状態で使用しており，誰がスキャンを実行しても同じである。
・複合機のスキャン機能の初期設定情報はベンダーの Web サイトで公開されており，誰でも閲覧できる。
注 1)

複合機の初期設定は C 社の情報システム部だけが変更可能である。

図3

発見事項－ 12 －

そこで，A 社では，初期設定の状態のままでは A 社にとって情報セキュリティリスクがあり，初期設定から変更するという対策が必要であると評価した。

設問

対策が必要であると A 社が評価した情報セキュリティリスクはどれか。解答群のうち，最も適切なものを選べ。

解答群
ア B 業務に従事する従業員が，攻撃者からの電子メールを複合機からのものと信じて本文中にある URL をクリックし，フィッシングサイトに誘導される。その結果，A 社の採用予定者の個人情報が漏えいする。
イ B 業務に従事する従業員が，複合機から送信される電子メールをスパムメールと誤認し，電子メールを削除する。その結果，再スキャンが必要となり，B 業務が遅延する。
ウ 攻撃者が，複合機から送信される電子メールを盗聴し，添付ファイルを暗号化して身代金を要求する。その結果，A 社が復号鍵を受け取るために多額の身代金を支払うことになる。
エ 攻撃者が，複合機から送信される電子メールを盗聴し，本文に記載されているURL を使って B サーバにアクセスする。その結果，A 社の採用予定者の個人情報が漏えいする。

－ 13 －

〔メモ用－ 14 －紙〕

〔メモ用－ 15 －紙〕

試験問題に記載されている会社名又は製品名は，それぞれ各社の商標又は登録商標です。
TM

なお，試験問題では，及び ® を明記していません。

©2023－ 16 －

独立行政法人情報処理推進機構