基本情報技術者試験
基本情報技術者 科目A公開問題:基礎理論・アルゴリズム・SQLの6問
基本情報技術者試験の科目A公開問題から、浮動小数点の丸め誤差、2分探索木、クイックソート、遷移確率、SQLのIN句と主キーの制約違反の6問を解けます。用語の取り違えをどこで見分けるか、問題文の見る場所をまとめました。
基本情報技術者試験
令和7年度 科目A 公開問題 問2
IPA 公表問題
浮動小数点形式で表現された数値の演算結果における丸め誤差の説明はどれか。
答えと選択肢ごとの根拠を見る
正解:イ(数表現のけた数に限度があるので,最下位けたより小さい部分について四捨五入や切上げ,切捨てを行うことによって生じる誤差である。) IPA 公表の解答例による
ア × 誤り 扱える範囲を超えるとき生じる誤差を,丸め誤差と考えた
扱える最大値を超えるのはオーバフローで,誤差というより表せなくなる現象。丸め誤差は,範囲内でも桁数が足りずに端数を処理するときに生じる。
イ ○ 正しい
仮数部のけた数は決まっているので,入りきらない最下位けた以下は四捨五入・切上げ・切捨てで処理される。このときに出る差が丸め誤差。たとえば 0.1 を2進数で表すと割り切れず,けた数の限度で端数が丸められる。
ウ × 誤り 指数部をそろえるときに下位が失われる現象を,丸め誤差と考えた
指数部が小さい方の仮数部の下位が失われるのは情報落ちで,指数部をそろえる加減算で起きる。乗除算ではなく,丸め誤差でもない。
エ × 誤り 有効数字が失われる誤差なので,丸め誤差の一種だと考えた
ほぼ等しい数の引き算で有効けたが減るのは桁落ち。丸め誤差とは別の名前の誤差。
基本情報技術者試験
令和7年度 科目A 公開問題 問3
IPA 公表問題
図の木構造は 2 分探索木である。a~g の値の大小関係として,適切なものはどれか。ここで,a~g の値は重複しないものとする。
原文の図は,根 a の下に b と c,b の下に d と e,c の下に f と g がつながる木で,a~g は節点。当サイトで次の表に描き直した。
| 節点 | 左の子 | 右の子 |
|---|---|---|
| a(根) | b | c |
| b | d | e |
| c | f | g |
| d,e,f,g | なし | なし |
答えと選択肢ごとの根拠を見る
正解:イ(d<b<e<a<f<c<g) IPA 公表の解答例による
ア × 誤り 根から順にたどった並び(a,b,d,e,c,f,g)を,小さい順だと考えた
この並びは根から左の枝を先にたどる順(先行順)で,小さい順ではない。この式だと a が左の子 b より小さくなるが,2分探索木では左の子は親より小さくなければならない。
イ ○ 正しい
2分探索木では,どの節点も,左の部分木の値より大きく右の部分木の値より小さい。a の左側(d,b,e)が a より小さく,右側(f,c,g)が a より大きい。b の左は d,右は e なので d<b<e,c の左は f,右は g なので f<c<g。左から右へ(d,b,e,a,f,c,g)読むと小さい順になる。
ウ × 誤り 木の下の段の節点ほど小さいと考えた
この式では a が最大になり,a の右の子 c が a より小さくなってしまう。2分探索木では右の子は親より大きい。
エ × 誤り 右の節点ほど小さいと考えた
この式でも a が最大になり,右の子 c が a より小さくなる。また e が b より小さい式になっており,b の右の子 e は b より大きい,という決まりにも合わない。
基本情報技術者試験
令和7年度 科目A 公開問題 問6
IPA 公表問題
“商品”表に対する SQL 文と同じ結果が得られる SELECT 文はどれか。
| 商品 ID | 商品名称 | 仕入先 ID | 単価 |
|---|---|---|---|
| S001 | 冷蔵庫 | M001 | 155,000 |
| S002 | 食器洗い機 | M002 | 85,000 |
| S003 | 電子レンジ | M003 | 78,000 |
| S004 | 炊飯器 | M003 | 32,000 |
| S005 | コーヒーメーカー | M004 | 15,000 |
| S006 | ホットプレート | M004 | 12,000 |
〔SQL 文〕
SELECT * FROM 商品 WHERE 仕入先 ID IN ('M002', 'M004')
答えと選択肢ごとの根拠を見る
正解:ウ(`SELECT * FROM 商品 WHERE 仕入先 ID = 'M002' OR 仕入先 ID = 'M004'`) IPA 公表の解答例による
ア × 誤り 二つの値のどちらかではなく,両方を満たす行を探す式だと考えた
AND は両方の条件を同じ行が満たすときだけ真になる。一つの行の仕入先 ID が M002 と M004 を同時にもつことはないので,結果は 0 行になる。
イ × 誤り 二つの結果を合わせると考えて,積集合と和集合を取り違えた
INTERSECT は二つの結果に共通する行だけを返す(積集合)。M002 の行と M004 の行に共通する行はないので,結果は 0 行になる。
ウ ○ 正しい
IN ('M002', 'M004') は,仕入先 ID が M002 か M004 のどちらかに当たる行を選ぶ。OR で二つの条件をつないだ式と同じで,S002,S005,S006 の 3 行が返る。
エ × 誤り M002 と M004 の二つだけが対象になると考えた
BETWEEN は M002 から M004 までの範囲を選ぶ。間の M003 の行(S003 電子レンジ,S004 炊飯器)も入るので,IN の結果(S002,S005,S006)より 2 行多い。
基本情報技術者試験
令和8年度 科目A 公開問題 問1
IPA 公表問題
入力されたビットに対して出力されるビットが 0 か 1 のいずれかである確率を遷移確率という。遷移確率を表にしたとき,a,b,c,d の関係はどれか。
原文の表は,斜線で区切った左上の欄で,上の見出しを出力,左の見出しを入力としている。当サイトで次の表に描き直した。
| 入力\出力 | 出力 0 | 出力 1 |
|---|---|---|
| 入力 0 | a | b |
| 入力 1 | c | d |
答えと選択肢ごとの根拠を見る
正解:イ(a + b = 1,c + d = 1) IPA 公表の解答例による
ア × 誤り 表の中の確率を全部足すと 1 になると考えた
全部足して 1 になるのは,4 通りの組合せ全体を一つの試行とみたときの話。ここでは入力が 0 の場合と 1 の場合のそれぞれで確率を考えるので,合計は 2 になる。
イ ○ 正しい
入力が 0 のとき,出力は 0 か 1 のどちらかなので,その確率 a と b の和は 1。入力が 1 のときも同じで,c と d の和が 1 になる。表の行ごとに足すと 1 になる。
ウ × 誤り 表を縦(出力ごと)に足すと 1 になると考えた
a + c は「出力が 0 になる確率」を,入力が 0 の場合と 1 の場合で足したもの。入力ごとに別の条件の確率なので,足しても 1 になるとは限らない。
エ × 誤り 「入力と出力が同じ」と「違う」の組合せで 1 になると考えた
a + d は「入力と出力が同じ」になる確率を二つの入力について足したもの,b + c は「違う」になる確率の和。入力ごとの条件が混ざるので,1 になる決まりはない。
基本情報技術者試験
令和8年度 科目A 公開問題 問2
IPA 公表問題
クイックソートの処理方法を説明したものはどれか。
答えと選択肢ごとの根拠を見る
正解:ウ(適当な基準値を選び,それよりも小さな値のグループと大きな値のグループにデータを分割する。同様にして,グループの中で基準値を選び,それぞれのグループを分割する。この操作を繰り返していく方法である。) IPA 公表の解答例による
ア × 誤り 整列済みの列に追加していく方法を,速く並べる方法のことだと考えた
整列済みの列の正しい位置に一つずつ入れていくのは挿入ソート。クイックソートは基準値でグループに分けるので,別の方法。
イ × 誤り 小さい順に取り出していく方法が一番速いと考えた
最小値を順に取り出していくのは選択ソート。クイックソートは最小値を探さず,基準値との大小でデータを二つに分ける。
ウ ○ 正しい
基準値(ピボット)を選んで,小さいグループと大きいグループに分け,各グループにも同じ操作を繰り返す。これがクイックソートの処理方法。
エ × 誤り 入替えを繰り返すので,速いソートのクイックソートだと考えた
隣同士を比べて入れ替え,小さい値を端へ寄せていくのはバブルソート。クイックソートは離れた位置の要素も基準値と比べて振り分ける。
基本情報技術者試験
令和8年度 科目A 公開問題 問7
IPA 公表問題
次の SQL 文によって定義され,値が格納されている“商品”表に対して,制約違反で実行エラーとなる SQL 文はどれか。
〔SQL 文〕CREATE TABLE 商品 (商品コード CHAR(4) PRIMARY KEY, 商品名 VARCHAR(21), 仕入先コード CHAR(4), 仕入単価 INT, 在庫数 INT)
| 商品コード | 商品名 | 仕入先コード | 仕入単価 | 在庫数 |
|---|---|---|---|---|
| A111 | テレビ | S001 | 75,000 | 0 |
| A222 | デジタルカメラ | S002 | 50,000 | 50 |
| A333 | DVDプレーヤ | NULL | NULL | NULL |
| A444 | 洗濯機 | S004 | 45,000 | 20 |
答えと選択肢ごとの根拠を見る
正解:エ(`UPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20`) IPA 公表の解答例による
ア × 誤り NULL を含む行を消すと,制約に反すると考えた
仕入先コードが NULL の行は A333 の 1 行。行を削除しても,主キーの重複などは起きないので,エラーにならない。
イ × 誤り 表にない仕入先コードを入れると,制約違反になると考えた
A555 は表にない商品コードなので,主キーは重複しない。仕入先コードに外部キー制約はないので,S005 でもエラーにならない。
ウ × 誤り 主キーの値は書き換えられないと考えた
主キーの値も,ほかの行と重ならなければ更新できる。A666 は表にない値で,更新される行も A444 の 1 行だけなので,エラーにならない。
エ ○ 正しい
在庫数が 20 以上の行は A222(50)と A444(20)の 2 行。2 行とも商品コードが A777 になり,主キーが重複するので,制約違反でエラーになる。A333 の在庫数は NULL で,条件に当てはまらない。
解説
この6問で問われること
6問は用語の名前と中身を結びつける問題と、手を動かして確かめる問題に分かれます。丸め誤差(令和7年度 問2)とクイックソート(令和8年度 問2)は、似た名前の別の現象や別のアルゴリズムが選択肢に並ぶので、名前から中身を言えるかが問われます。2分探索木(令和7年度 問3)、遷移確率(令和8年度 問1)、SQLの2問(令和7年度 問6、令和8年度 問7)は、決まりを一つ覚えておけば、あとは表や式に当てはめて確かめられます。
図や表のある問題はこのページの表を見ながら読めるように書いています。
令和7年度 問2(浮動小数点の丸め誤差):誤差の名前は原因ごとに違う
答えはイ(数表現のけた数に限度があるので、最下位けたより小さい部分を四捨五入や切上げ、切捨てして生じる誤差)です。浮動小数点では仮数部のけた数が決まっているので、入りきらない端数を処理します。このときに出る差が丸め誤差です。0.1を2進数にすると割り切れず、けた数の限度で端数が丸められる、というのが身近な例です。
ほかの三つは誤差や現象の別の名前の説明です。
- アは最大値を超える現象で、オーバフローです。範囲の中で端数を処理する丸め誤差とは、起きる場面が違います。
- ウは指数部が小さい方の仮数部の下位が失われる現象で、情報落ちです。指数部をそろえる加減算で起き、乗除算ではありません。
- エはほぼ等しい数の引き算で有効けたが減る現象で、桁落ちです。
三つとも誤差に似た現象なので、丸め誤差と見分けにくくなります。見分けるのは何をしたときに起きるかです。端数を処理したなら丸め誤差、範囲を超えたならオーバフロー、指数をそろえる加減算なら情報落ち、近い数の引き算なら桁落ちです。
令和7年度 問3(2分探索木):左の子は小さく、右の子は大きい
答えはイ(d<b<e<a<f<c<g)です。2分探索木は、どの節点も左の部分木の値より大きく、右の部分木の値より小さい木です。問題の木は次の表のとおりで、根aの左側がb、d、e、右側がc、f、gです。
| 節点 | 左の子 | 右の子 |
|---|---|---|
| a(根) | b | c |
| b | d | e |
| c | f | g |
| d、e、f、g | なし | なし |
aの左側(d、b、e)はaより小さく、右側(f、c、g)はaより大きくなります。bの左はd、右はeなので d<b<e、cの左はf、右はgなので f<c<g です。左から右へ並べると d、b、e、a、f、c、g で、これが小さい順になります。
誤答は木の形から勝手な並びを作った式です。
- アは根から左の枝を先にたどった順(a、b、d、e、c、f、g)で、小さい順ではありません。a<bと書かれていますが、左の子bはaより小さくなければなりません。
- ウは下の段の節点ほど小さいとした式です。aが最大になるので、右の子cがaより小さくなり、決まりに反します。
- エは右の節点ほど小さいとした式で、やはりcがaより小さくなります。
選択肢を一つずつ「aの右の子cは、aより大きいか」で確かめると、ウとエが落ちます。残るアとイは「aの左の子bは、aより小さいか」で分かれます。
令和8年度 問2(クイックソート):基準値で二つに分ける
答えはウ(基準値を選び、それより小さい値のグループと大きい値のグループに分け、各グループにも同じ操作を繰り返す方法)です。基準値(ピボット)を決めてデータを二つに分け、できたグループの中でまた基準値を選んで分けていくのが、クイックソートの処理です。
ほかの三つは別のソートの説明です。
- アは整列済みの列の正しい位置にデータを一つずつ入れる方法で、挿入ソートです。
- イは最小値を探して取り出す操作を繰り返す方法で、選択ソートです。
- エは隣り合ったデータを比べて入れ替え、小さい値を端へ寄せていく方法で、バブルソートです。
エは「入替えを繰り返す」ので、名前の響きから速いソートを連想して選びやすい選択肢です。見るところはデータをどう扱うかです。基準値で振り分けるならクイックソート、整列済みの列に入れていくなら挿入、最小値を順に取るなら選択、隣同士を入れ替えるならバブルです。
令和8年度 問1(遷移確率):足して1になるのは行ごと
答えはイ(a+b=1、c+d=1)です。次の表は左端が入力、上の見出しが出力です。
| 入力\出力 | 出力0 | 出力1 |
|---|---|---|
| 入力0 | a | b |
| 入力1 | c | d |
入力が0のとき、出力は0か1のどちらかです。その確率aとbを足すと1になります。入力が1のときも同じで、cとdを足すと1です。つまり表を行ごとに足すと、どの行も1になります。
誤答は足す範囲を取り違えた式です。
- アの a+b+c+d=1 は4通りを一つの試行とみた場合の話です。入力0と入力1は別の条件なので、全部足すと2になります。
- ウの a+c=1 は表を縦に足した式です。aは入力0のとき出力0になる確率、cは入力1のとき出力0になる確率で、条件が違うので足しても1になるとは限りません。
- エの a+d=1 は斜めに足した式で、これも入力が混ざります。
確率の問題は「何が起きたことにしての確率か」を問題文から読みます。この問題では、確率は入力を一つ決めたうえでの出力の確率なので、足して1になる組は同じ入力の行に限られます。
令和7年度 問6(SQLのINと同じ結果):どちらかに当たる行を選ぶ
答えはウ(仕入先IDが’M002’か’M004’のどちらか)です。IN ('M002', 'M004') は、列の値が括弧の中のどれかに当たる行を選びます。ORで二つの条件をつないだ式と同じ意味で、商品表からは S002、S005、S006 の3行が返ります。
誤答は条件のつなぎ方を取り違えた式です。
- アは AND で、一つの行が M002 と M004 の両方を同時にもつ行を探します。1行の仕入先IDは一つの値なので、結果は0行です。
- イは INTERSECT で、M002 の行と M004 の行の両方に含まれる行を探します。共通の行はないので、これも0行です。和集合ではなく積集合なので、「二つを合わせる」と思って選ぶと誤ります。
- エは BETWEEN で、M002 から M004 までの範囲です。間の M003 の2行(S003、S004)が入るので、INの結果より2行多くなります。
「M002 と M004」の「と」を日本語のまま読むと、ANDやINTERSECTを選びたくなります。SQLでは複数の値のうちどれかに当たる行を選ぶのが IN です。
令和8年度 問7(制約違反になるSQL):主キーの値が重なるか
答えはエ(UPDATE 商品 SET 商品コード = 'A777' WHERE 在庫数 >= 20)です。商品コードが主キーなので、同じ値の行を二つ作れません。在庫数が20以上の行は A222(50)と A444(20)の2行で、この2行の商品コードがどちらも A777 になり、主キーが重なって実行エラーになります。A333 の在庫数は NULL で、>= 20 の条件に当てはまりません。
エラーにならない三つは次のとおりです。
- アは仕入先コードが NULL の行(A333 の1行)を削除します。行を消しても、主キーの重なりは起きません。
- イは表にない商品コード A555 の行を追加します。仕入先コードの S005 は表にない値ですが、外部キー制約は定義されていないので、エラーにはなりません。
- ウは A444 の商品コードを表にない A666 に変えます。主キーの値でも、ほかの行と重ならなければ更新できます。
制約違反の問題は制約の種類を確かめてから、実行したあとの表で値が重ならないか、NULL が入らないかを見ます。ここでは CREATE 文に PRIMARY KEY があるだけで、ほかの制約は定義されていません。更新の問題はWHERE 条件に当てはまる行が何行あるかを数えるのが先です。一つの値を複数の行に入れる更新は、主キーの列だと失敗します。
残りの選択肢が何の説明かまで言う
令和7年度 問2のアはオーバフロー、ウは情報落ち、エは桁落ちの説明でした。令和7年度 問3のア・ウ・エは木の形から作った並びで、右の子が親より小さい(または左の子が大きい)式です。令和8年度 問2のアは挿入ソート、イは選択ソート、エはバブルソートです。令和8年度 問1のア・ウ・エは足す範囲が入力の条件をまたいでいる式でした。令和7年度 問6のアとイは結果が0行になる式、エは間の値まで入る範囲指定です。令和8年度 問7のア・イ・ウは主キーが重ならず、エラーにならない操作でした。答えを選んだあとで、残りがこのどれに当たるかを言えれば、次に同じ用語や形が別の姿で出ても迷いにくくなります。
ハードウェアとネットワークの問題は「基本情報技術者 科目A公開問題:ハードウェア・信頼性・ネットワークの6問」に、設計とインフラの5問は「基本情報技術者 科目A公開問題:設計とインフラ(E-R・多相性・クラウド・ping)の5問」に、経営・企業活動の問題は「基本情報技術者 科目A公開問題:ストラテジ(分析・経営・マーケティング)の5問」にあります。