基本情報技術者の過去問解説まとめ|科目A・科目Bの勉強法と活用法

当ページの画像,リンクには広告を含みます。
基本情報の過去問解説、答えより考え方をつかもうと案内するさめじん

過去問で迷ったときは、答えを覚える前に「どの条件を使うか」「なぜその選択肢になるか」を一つずつ確かめていきましょう。

このページは、基数変換・ビット演算・データ構造など、基本情報の基礎を分野別に復習する解説集です。目次から取り組みたい分野を選び、まず自分で考えてから「解説」を開いてください。

科目Aの知識整理に加え、科目Bのアルゴリズムを読む前の基礎固めにも使えます。科目Bの本番形式は、後述のIPA公開問題で別に練習しましょう。

目次

💡 過去問演習を進める3つのコツ

条件を整理し、答えの理由を自分で説明するさめじんの2コマ
正誤だけで終わらず、迷った条件と答えの理由を短くメモしよう。

1問を次の理解につなげる

  1. 自分で選ぶ:問題文の条件に印を付け、選んだ理由を一言書く。
  2. 解説を照合:用語・計算・手順のどこで迷ったかを分ける。
  3. 閉じて再現:解説を閉じ、式や処理の流れをもう一度書いてみる。

用語から整理したい場合は参考書、処理の動きを見たい場合は動画、質問したい場合は対応のある講座が候補です。今の教材で理解が進んでいれば、そのまま演習を続けましょう。動画や質問機能を追加したいときは、基本情報の通信講座比較で料金・視聴期間・質問対応を比べられます。

[1] テクノロジ系:基礎理論

[1-1] 基数変換・ビット演算・機械学習の基礎

基数変換

【問題】
10進数の演算式7÷32の結果を2進数で表したものはどれか。

(ア)0.001011

(イ)0.001101

(ウ)0.00111

(エ)0.0111

さめじん

【攻略ヒント】
2進数の数を2の累乗で割り算する場合、右に指数分、ビットシフトすれば計算できるよ!

【解説】

①10進数の7を2進数に変換する

 111

②10進数の32を2の累乗で表現する

 25

③7の2進数である111を右に5ビットシフトする
 右に1ビットシフト=11.1
 右に2ビットシフト=1.11
 右に3ビットシフト=0.111
 右に4ビットシフト=0.0111
 右に5ビットシフト=0.00111

【答え】ウ

ビット演算

【問題】
最上位をパリティビットとする8ビット符号において,パリティビット以外の下位7ビットを得るためのビット演算はどれか。

(ア)16進数0FとのANDをとる。

(イ)16進数0FとのORをとる。

(ウ)16進数7FとのANDをとる。

(エ)16進数FFとのXOR(排他的論理和)をとる。

さめじん

【攻略ヒント】
適当な値(10101010)を代入して計算すれば確実だよ!

【解説】

①入力値を2進数の10101010と定義する。

②問題の16進数を値を2進数に変換する。

16進数の0F=2進数の00001111

16進数の7F=2進数の01111111

16進数のFF=2進数の11111111

③ ①と②のビット演算を縦方向に論理演算し、下位7ビットが入力値と一致しているか確認する。

(ア)16進数0FとのANDをとる。

10101010
00001111(AND
00001010

入力値と取り出した値は不一致のため不正解

(イ)16進数0FとのORをとる。

10101010
00001111(OR
10101111

入力値と取り出した値は不一致のため不正解

(ウ)16進数7FとのANDをとる。

10101010
01111111(AND
00101010

入力値と取り出した値が、一致のため正解

(エ)16進数FFとのXOR(排他的論理和)をとる。

10101010
11111111(XOR
01010101

入力値と取り出した値は不一致のため不正解

【答え】(ウ)

命題の真理値

【問題】
P,Q,Rはいずれも命題である。命題Pの真理値は真であり,命題 (not P) or Q 及び命題 (not Q) or R のいずれの真理値も真であることが分かっている。Q,Rの真理値はどれか。ここで,X or Y は X と Y の論理和,not X は X の否定を表す。

 Q  R 
(ア) 偽 偽
(イ) 偽 真
(ウ) 真 偽
(エ) 真 真
さめじん

【攻略ヒント】
落ち着いて、問題の条件を1個ずつ計算しよう!

【解説】

①命題P = 真

②命題 (not P) or Q = 真

   (not 真) or Q = 真

     偽 or Q = 真

       Q = 真

③命題 (not Q) or R=真
  
   (not 真) or R = 真

     偽 or R = 真

       R = 真

【答え】エ

機械学習

【問題】
機械学習における教師あり学習の説明として,最も適切なものはどれか。

(ア)個々の行動に対しての善しあしを得点として与えることによって,得点が最も多く得られるような方策を学習する。

(イ)コンピュータ利用者の挙動データを蓄積し,挙動データの出現頻度に従って次の挙動を推論する。

(ウ)正解のデータを提示したり,データが誤りであることを指摘したりすることによって,未知のデータに対して正誤を得ることを助ける。

(エ)正解のデータを提示せずに,統計的性質や,ある種の条件によって入力パターンを判定したり,クラスタリングしたりする。

さめじん

【攻略ヒント】
①教師あり学習:入力データと正解ラベルの組を使って学ぶ。例は「サメ」「イルカ」と名前を付けた写真から、別の写真を分類する学習。

②教師なし学習:正解ラベルを付けず、データの特徴や似たもののまとまりを見つける。例は写真を特徴の近いグループに分けること。グループに「サメ」という名前を付ける作業とは分けて考えよう。

③強化学習:行動の結果に応じた報酬を使い、得られる報酬を大きくする行動方策を学ぶ。

「正解ラベル」「グループ」「報酬」のどれが与えられるかに注目!

学習の種類は、Googleの機械学習の基礎解説でも、正解を含むデータ・クラスタリング・報酬の違いから整理できます。

【解説】

(ア)「強化学習」に関する記述のため、不正解。

(イ)挙動データの出現頻度から推論する説明で、正解ラベルを与えて学ぶという教師あり学習の特徴は示されていません。

(ウ)「機械学習における教師あり学習」に関する記述であり、正解!

(エ)「機械学習における教師なし学習」に関する記述のため、不正解。

【解答】(ウ)

2分探索木

【問題】
2分探索木として適切なものはどれか。ここで,1~9の数字は,各ノード(節)の値を表す。

H31_FE_AM_Q5
さめじん

【攻略ヒント】
2分探索木とは、左に分岐したほうは小さい値、右に分岐したほうが大きい値となるようにデータを格納する性質があるよ!

【解説】

H31_FE_AM_A5

【解答】(イ)

[1-2] 誤り検査・フィードバック制御・ディープラーニング

フィードバック制御

【問題】フィードバック制御の説明として、適切なものはどれか。

(ア)あらかじめ定められた順序で制御を行う。

(イ)外乱の影響が出力に現れる前に制御を行う。

(ウ)出力結果と目標値とを比較して、一致するように制御を行う。

(エ)出力結果を使用せず制御を行う。

さめじん

【攻略ヒント】
分からなかったら、英語の意味から想像してみよう!
それでも分からなかったら勘で当てに行こうw

【解説】

(ア)不正解×

 シーケンス制御に関する説明です!

(イ)不正解×

 フィードフォワード制御に関する説明です!

(ウ)正解〇

 フィードバック制御の説明です!

(エ)不正解×

 フィードバック制御出力では、出力結果を使用します!

【答え】(ウ)

AI・ディープラーニング

【問題】AIにおけるディープラーニングの特徴はどれか。

 (ア)”AならばBである”というルールを人間があらかじめ設定して、新しい知識を論理式で表現したルールに基づく推論の結果として、解を求めるものである。

 (イ)厳密な解でなくてもなるべく正解に近い解を得るようにする方法であり、特定分野に特化せずに、広範囲で汎用的な問題解決ができるようにするものである。

 (ウ)人間の脳神経回路を模倣して、認識などの知能を実現する方法であり、ニューラルネットワークを用いて、人間と同じような認識ができるようにするものである。

 (エ)判断ルールを作成できる医療診断などの分野に限定されるが、症状から特定の病気に絞り込むといった、確率的に高い判断ができる。

さめじん

【攻略ヒント】
これは常識問題だね。
分からなかったら、英語の意味から想像してみよう!
それでも分からなかったら勘で当てに行こうw

【解説】

 (ア)不正解×

  専門家の意思決定プロセスをエミュレートするエキスパートシステムの特徴です!

 (イ)不正解×

  ディープラーニングは様々な分野に適用できますが、個々のシステム(学習モデル)は1つの事柄の認識に特化したものになります!

 (ウ)正解〇

 ディープラーニングに関する説明です!

 (エ)不正解×

  ディープラーニングは、多数の学習データを用いたトレーニング段階で、システム自らが出力と正解の差異が小さくなるような判断ルールやパラメータに調整します!

  トレーニング用のデータがあれば、判断ルールはシステムが見つけるので人間が判断ルールを作成できない分野にも適用可能です。

【答え】(ウ)

誤り検査方式


【問題】送信側では、ビット列をある生成多項式で割った余りをそのビット列に付加して送信し、受信側では、受信したビット列が同じ生成多項式で割り切れるか否かで誤りの発生を判断する誤り検査方式はどれか。

(ア)CRC方式

(イ)垂直パリティチェック方式

(ウ)水平パリティチェック方式

(エ)ハミング符号方式

さめじん

【攻略ヒント】
これは知ってないと解けない問題だね!
正解以外の回答も覚えておこう!

【解説】

(ア)正解〇

  CRC方式に関する説明です!

(イ)不正解×

 垂直パリティチェック方式は、データに検査用のパリティビットを付加することによって誤りを検出する方式です!

(ウ)不正解×

 水平パリティチェック方式は、パリティビットを付加する方向が違うだけで(イ)と同じです!

(エ)不正解×

 ハミング符号は、情報ビットに対して検査ビットを付加することで、2ビットの誤り検出と1ビットの自動訂正機能をもった方式です!

【答え】(ア)

AI・機械学習

【問題】AIにおける機械学習の説明として、最も適切なものはどれか。

 (ア)記憶したデータから特定のパターンを見つけ出すなどの人が自然に行っている学習能力をコンピュータにもたせるための技術

 (イ)コンピュータ、機械などを使って、生命現象や進化のプロセスを再現するための技術

 (ウ)特定の分野の専門知識をコンピュータに入力し、入力された知識を用いてコンピュータが推論する技術

 (エ)人が双方向学習を行うために、Webシステムなどの情報技術を用いて、教材や学習管理能力をコンピュータにもたせるための技術

さめじん

【攻略ヒント】
これは知ってないと解けない問題だね!
AI関連の問題は毎回出るかもね!覚えておこう!

【解説】

(ア)正解〇

 機械学習に関する説明です!

(イ)不正解×

 人工生命に関する説明です!

(ウ)不正解×

 エキスパートシステムに関する説明です!

(エ)不正解×

 EdTech(エドテック)に関する説明です!

【答え】(ア)

ビット操作(Lv2 スライム)

【問題】8ビットの値の全ビットを反転する操作はどれか。

(ア)16進表記 00 のビット列と排他的論理和をとる。

(イ)16進表記 00 のビット列と論理和をとる。

(ウ)16進表記 FF のビット列と排他的論理和をとる。

(エ)16進表記 FF のビット列と論理和をとる。

【解説】

(ア)不正解×

10101010
00000000(XOR
10101010

(イ)不正解×

10101010
00000000(OR
10101010

(ウ)正解〇

10101010
11111111(XOR
01010101

(エ)不正解×

10101010
11111111(OR
11111111

【答え】ウ

[1-3] 奇数パリティ・論理演算・ビットシフト

奇数パリティ

【問題】8ビットのレジスタがある。このレジスタの各ビットの値を d0,d1,…,d7とし、パリティビットの値をpとする。奇数パリティの場合、常に成立する関係式はどれか。ここで、⊕は排他的論理和演算を表す。

(ア)0⊕d0⊕d1⊕ … ⊕d7=p

(イ)d0⊕d1⊕ … ⊕d7=p

(ウ)d0⊕d1⊕ … ⊕d7⊕p=0

(エ)d0⊕d1⊕ … ⊕d7⊕p=1

さめじん

【攻略ヒント】
奇数パリティ=1の数が奇数個になるように1とすることに着目!

【解説】



奇数パリティは、データを構成するビット全体の中でビット「1」の数が奇数個になるようにパリティビットを付加する方式なので、パリティビットを含めた各ビットをすべてXOR演算した結果は必ず「1」となります。

【答え】(エ)

基数変換

【問題】16進数の小数0.248を10進数の分数で表したものはどれか。
(ア)31/32
(イ)31/125
(ウ)31/512
(エ)73/512

さめじん

【攻略ヒント】
基数変換は落ち着いて解けば確実に点が取れる問題だから頑張って!

【解説】

16進数の小数を10進数で表すと小数第1位が1/16、小数第2位が(1/162=)1/256というように桁が小さくなるごとに1/16ずつ小さくなっていきます。

  2/16 + 4/256 + 8/4096

= 2/16 + 4/256 + 1/512

= (64 + 8 + 1)/512

= 73/512

【答え】(エ)

関数

【問題】Random(n)は、0以上n未満の整数を一様な確率で返す関数である。整数型の変数A、B及びCに対して次の一連の手続を実行したとき、Cの値が0になる確率はどれか。

A = Random(10) 

B = Random(10) 

C = A-B 

(ア)1/100 

(イ)1/20 

(ウ)1/10 

(エ)1/5

さめじん

【攻略ヒント】
Random(10)の返す値は整数0~9の10通り

【解説】

Random(10)の返す値は整数0~9の10通りです。

これにより、確率の分母となるAとBの組合せ総数は次のように計算できます。

10通り×10通り=100通り

次に確立の分子を求めます。

Cの値が0、すなわち「A-B=0」となるのは、AとBが同じ値のときのみです。

これは、A=B=0,A=B=1,…,A=B=9 というように全部で10通りあります。

したがって、Cの値が0になる確率は、

10通り / 100通り=1/10 となります。

【答え】(エ)

ビットシフト

【問題】数値を2進数で表すレジスタがある。このレジスタに格納されている正の整数xを10倍する操作はどれか。ここで,桁あふれは,起こらないものとする。

(ア)xを2ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。

(イ)xを2ビット左にシフトした値にxを加算し,更に2ビット左にシフトする。

(ウ)xを3ビット左にシフトした値と,xを2ビット左にシフトした値を加算する。

(エ)xを3ビット左にシフトした値にxを加算し,更に1ビット左にシフトする。

さめじん

【攻略ヒント】
1ビット左にシフト = 2倍 2ビット左にシフト = 22倍 3ビット左にシフト = 23倍

【解説】

① xを2ビット左にシフト

 x × 2^2 = 4x

② xを加算

 4x + x = 5x

③ 1ビット左にシフト

 5x × 2 = 10x

(イ)不正解×

① xを2ビット左にシフト

 x × 2^2 = 4x

② xを加算
 4x + x = 5x

③ 2ビット左にシフト

 5x × 2^2 = 20x

(ウ)不正解×

① xを3ビット左にシフト

 x × 2^3 = 8x

② xを2ビット左にシフト

 4x + x = 5x 

③ ①と②を加算

 8x + 5x = 13x

(エ)不正解×

① xを3ビット左にシフト

x × 2^3 = 8x

② xを加算

8x + x = 9x

③ 1ビット左にシフト

9x × 2 = 18x

【答え】(ア)

論理演算

【問題】次に示す手順は,列中の少なくとも一つは1であるビット列が与えられたとき,最も右にある1を残し,他のビットを全て0にするアルゴリズムである。例えば,00101000が与えられたとき,00001000が求まる。aに入る論理演算はどれか。

(手順1)与えられたビット列Aを符号なしの2進数と見なし,Aから1を引き,結果をBとする。

(手順2)AとBの排他的論理和(XOR)を求め,結果をCとする。

(手順3)AとCのaを求め,結果をAとする。

(ア)排他的論理和(XOR)

(イ)否定論理積(NAND)

(ウ)論理積(AND)

(エ)論理和(OR)

さめじん

【攻略ヒント】
落ち着いて問題の手順通りに解けば正解できるよ!
この問題が解ければクリアだ!

【解説】

00101000・・・(A)

(手順1)

 A - 1 = B

  00101000 - 1
= 00100111・・・(B)

(手順2)

 A XOR B = C

(手順3)

00101000
00100111(XOR
00001111・・・(C)

(ア)不正解×

00101000
00001111(XOR
00100111

(イ)不正解×

00101000
00001111(NAND
11110111

(ウ)正解〇

00101000
00001111(AND
00001000

(エ)不正解×

00101000
00001111(OR
00101111

【答え】(ウ)

[2] テクノロジ系:アルゴリズムとプログラミング

[2-1] データ構造の基礎:スタック・待ち行列・ハッシュ関数

スタック

【問題】A,B,C,Dの順に到着するデータに対して,一つのスタックだけを用いて出力可能なデータ列はどれか。

(ア)A,D,B,C

(イ)B,D,A,C

(ウ)C,B,D,A

(エ)D,C,A,B

さめじん

【攻略ヒント】
スタック=後入れ先出し(LIFO)のデータ構造だよ!

【解説】

スタックは後入れ先出し(LIFO)のデータ構造で、PUSH命令とPOP命令によってデータを操作します。

“後入れ先出し”ですので、スタックに先に入れたデータは、後から入れたデータよりも先に出力することができません。

(ア)不正解×

PUSH(A) [A]
POP(A)  []
PUSH(B) [B]
PUSH(C) [BC]
PUSH(D) [BCD]
POP(D)  [BC]
POP(B)  NG

BはCより先にスタックに格納されたので、Cより先にBを出力することができません。

(イ)不正解×

PUSH(A) [A]
PUSH(B) [AB]
POP(B)  [A]
PUSH(C) [AC]
PUSH(D) [ACD]
POP(D)  [AC]
POP(A)  NG

AはCより先にスタックに格納されたので、Cより先にAを出力することができません。

(ウ)正解〇

PUSH(A) [A]
PUSH(B) [AB]
PUSH(C) [ABC]
POP(C)  [AB]
POP(B)  [A]
PUSH(D) [AD]
POP(D)   [A]
POP(A)   []

(エ)不正解×

PUSH(A) [A]
PUSH(B) [AB]
PUSH(C) [ABC]
PUSH(D) [ABCD]
POP(D)  [ABC]
POP(C)  [AB]
POP(A)  NG

AはBより先にスタックに格納されたので、Bより先にAを出力することができません。

答え:(ウ)

Java

【問題】JavaScriptの非同期通信の機能を使うことによって,動的なユーザインタフェースを画面遷移を伴わずに実現する技術はどれか。

(ア)Ajax

(イ)CSS

(ウ)RSS

(エ)SNS

さめじん

【攻略ヒント】
答えが分からない場合、諦めずに知っているものがあれば消去法で正解確立を上げよう!1つで分かるのがあれば25%から33%に確立が上がるよ!

【解説】

(ア)正解〇

Webブラウザ内で非同期通信とインターフェイスの構築などを行う技術の総称です。

(イ)不正解×

CSSは、HTMLやXMLの要素を、どのように修飾して表示させるかを定義する文書で、Webページのデザインを記述するために用いられます。

(ウ)不正解×

RSSは、ニュースやブログなど各種のウェブサイトの更新情報を簡単にまとめ、配信するための幾つかの文書フォーマットの総称です。

(エ)不正解×

SNSは、社会的ネットワークをインターネット上で構築するサービスです。

【答え】(ア)

ハッシュ関数

【問題】10進法で5桁のa1a2a3a4a5をハッシュ法を用いて配列に格納したい。ハッシュ関数を mod(a1+a2+a3+a4+a5,13) とし,求めたハッシュ値に対応する位置の配列要素に格納する場合,54321は次の配列のどの位置に入るか。ここで,mod(x,13) は,xを13で割った余りとする。

(ア)1

(イ)2

(ウ)7

(エ)11

さめじん

【攻略ヒント】
ハッシュ法が分からなくても、そのまま代入して計算してみよう!modは除算した余りを求めるよ!

【解説】



ハッシュ法とは、探索するデータのキー値からデータの格納アドレスを直接計算する方法で、この計算の際に使われる関数をハッシュ関数といいます。

問題文より、ハッシュ関数が mod(a1+a2+a3+a4+a5、13) なので、そのまま”54321″を代入します。

mod()は、第1引数を第2引数で割った余りを求めるので、

 mod(5+4+3+2+1,13)

= mod(15,13)

= 2

【答え】(イ)

スタック

【問題】次の二つのスタック操作を定義する。
PUSH n:スタックにデータ(整数値n)をプッシュする。
POP:スタックからデータをポップする。
空のスタックに対して、次の順序でスタック操作を行った結果はどれか。 
PUSH 1 → PUSH 5 → POP → PUSH 7 → PUSH 6 → PUSH 4 → POP → POP → PUSH 3

(ア)[1,7,3]

(イ)[3,4,6]

(ウ)[3,7,1]

(エ)[6,4,3]

さめじん

【攻略ヒント】
スタック=後入れ先出し(LIFO)のデータ構造だよ!2問目だから解けるよね?がんばれー!

【解説】

コンピュータの世界で使われるデータ構造のひとつに「スタック」があります。

スタックは、最後に格納したデータから先に取り出す後入れ先出し(Last-in First-out:LIFO)の構造をもちます。

スタックでは、データを挿入するPUSH命令、データを取り出すPOP命令を使用してデータ操作を行います。
 

PUSH(1) [1]
PUSH(5) [1,5]
POP   [1]
PUSH(7) [1,7]
PUSH(6) [1,7,6]
PUSH(4) [1,7,6,4]
POP   [1,7,6]
POP   [1,7]
PUSH(3) [1,7,3]

【答え】(ア)

行列操作

【問題】待ち行列に対する操作を次のとおり定義する。
ENQ n:待ち行列にデータnを挿入する。
DEQ :待ち行列からデータを取り出す。
空の待ち行列に対し、ENQ1,ENQ2,ENQ3,DEQ,ENQ4,ENQ5,DEQ,ENQ6,DEQ,DEQの操作を行った。
次にDEQ操作を行ったとき、取り出されるデータはどれか。

(ア)1

(イ)2

(ウ)5

(エ)6

さめじん

【攻略ヒント】
スタックの「後入れ後出し方式」と違って、待ち行列は、先入れ先出し方式ということに気を付けてね!

【解説】

待ち行列(キュー構造)は、先に入ったものから先に取り出す「先入れ先出し方式」のデータ構造です。

左を待ち行列の入口、右を出口として操作に伴う待ち行列の変化を追っておきます。


ENQ1 [1]
ENQ2 [2][1]
ENQ3 [3][2][1]
DEQ   [3][2]
ENQ4 [4][3][2]
ENQ5 [5][4][3][2]
DEQ   [5][4][3]
ENQ6 [6][5][4][3]
DEQ  [6][5][4]
DEQ  [6][5]

次に行われるDEQ操作=答え

DEQ  [6] →[5]

【答え】(ウ)

[2-2] アルゴリズムの基礎:探索・ソート・再帰処理

サブルーチン

【問題】
サブルーチンへの引数の渡し方のうち、変数を引数として渡しても、サブルーチンの実行後に変数の値が変更されないことが保証されているものはどれか。

(ア)値呼出し

(イ)結果呼出し

(ウ)参照呼出し

(エ)名前呼出し

さめじん

【攻略ヒント】
これは知っていないと解けない問題だね!
しっかり1個ずつ覚えていこう!

【解説】


(ア)正解〇

 値呼び出し
 →関数内で変数を上書きしても引数はコピーであるため元の変数の値に影響することはありません。

(イ)不正解✕

(ウ)不正解✕

 参照呼出し
 →引数として変数のポインタ(メモリアドレス)を渡す方法。呼び出された関数内で引数の内容に直接アクセスすることになるため、変数の値を上書きすると元の変数の値にも反映されます。

(エ)不正解✕

 名前呼び出し
 →引数として未評価の式(値)を渡す方法。関数の内部で必要となった場合に引数の式(値)が評価される。

【答え】(ア)

2分探索

【問題】2分探索に関する記述のうち、適切なものはどれか。
(ア)2分探索するデータ列は整列されている必要がある。

(イ)2分探索は線形探索より常に速く探索できる。

(ウ)2分探索は探索をデータ列の先頭から開始する。

(エ)n個のデータの探索に要する比較回数は,nlog2nに比例する。

さめじん

【攻略ヒント】
2分探索法は、要素が昇順または降順に整列された集合に対して、探索範囲を1/2に狭めることを繰り返して目的のデータを探索するアルゴリズムのことだよ!

【解説】

(ア)正解〇

 2分探索を適用するにはデータが整列されていることが条件です。

(イ)不正解✕
 
 線形探索より少ない平均比較回数で目的のデータにたどりつけますが、データ列の先頭付近に目的のデータがあるケースでは線形探索のほうが探索が早くなります。

(ウ)不正解✕

 探索範囲の中央に位置する値との比較から開始します。

(エ)不正解✕

 探索対象のデータ範囲がN個のとき、2分探索における平均比較回数は [log2N]です。

【答え】(ア)

Java

【問題】プログラム言語に関する記述のうち、Javaの説明として適切なものはどれか。
(ア)1970年代に開発されたインタプリタ型のオブジェクト指向言語であり、エディタやデバッガなどの統合開発環境やOSの機能などを含む。

(イ)Cにクラスやインヘリタンスといったオブジェクト指向の概念を取り入れたものであり、Cとの上位互換性をもつ。

(ウ)Webで用いられているマーク付け言語であり、タグによって文書の構造を記述する。テキストや動画などを関連付けたハイパテキストを作成できる。

(エ)ブラウザで動作するアプレットなどを作成できる。このアプレットは、仮想マシンを実装した環境上であれば、どこでも実行できる。

さめじん

【攻略ヒント】
これも知っていないと解けないね。
消去法で知っているものがあるか確認してみよう!

【解説】


(ア)不正解✕

 Smalltalkに関する説明です。

(イ)不正解✕

 C++に関する説明です。

 JavaもC言語の文法をベースにしていますが上位互換性はありません。

(ウ)不正解✕

 HTMLに関する説明です。

(エ)正解〇

 Javaは、コンピュータの機種やOSに依存しないソフトウェアが開発できるオブジェクト指向型の言語です。

 過去の実行形態の区別として、ブラウザのプラグイン環境などで動作していたものがJavaアプレット、サーバ側でリクエストを処理するものがJavaサーブレットです。

現在のブラウザはアプレットをサポートせず、Applet APIはJDK 26で削除されています。古い問題では当時の実行形態を区別して読みましょう(OpenJDK JEP 504、2026年10月30日確認)。

【答え】(エ)

データ構造

【問題】十分な大きさの配列Aと初期値が0の変数pに対して、関数f(x)とg()が次のとおり定義されている。配列Aと変数pは、関数f(x)とg()だけでアクセス可能である。これらの関数が操作するデータ構造はどれか。

function f(x) {
 p=p+1;
 A[p]=x;
 return None;
}
function g() {
 x=A[p];
 p=p-1;
 return x;
}

(ア)キュー

(イ)スタック

(ウ)ハッシュ

(エ)ヒープ

さめじん

【攻略ヒント】
f(x)は、配列の最後に引数であるxを代入する関数、g()は、配列の最後の要素を返す関数だよ!

【解説】

この2つの関数で使われている変数pは現在の配列の要素数を保持している変数で、このことを踏まえると、f(x)は、配列の最後に引数であるxを代入する関数、g()は、配列の最後の要素を返す関数と考えることができます。

「配列の最後にデータを追加する」および「最後に追加されたデータを取り出す」という2つの操作を合わせるとLIFO(Last In First Out|後入れ先出し)のデータ構造が実現されることになります。

選択肢の中でLIFOのデータ構造はスタックだけなのでこれが正解となります。

【答え】(イ)

アルゴリズム

【問題】Perlの実行に関する記述のうち、適切なものはどれか。

(ア)動的デバッグは、言語処理系から独立したプログラムを実行して行う。

(イ)UNIX用として開発されており、Windows用の言語処理系はない。

(ウ)実行にWebサーバを必要とする言語であり、CGIの開発に適している。

(エ)プログラムをコンパイルしたファイルを事前に用意する必要はない。

さめじん

【攻略ヒント】
Perl=インタプリタ言語のことだよ!

【解説】


(ア)不正解✕

 付属のPerlデバッガでデバッグ可能です。

(イ)不正解✕

 Windows環境用の言語処理系もあります。

(ウ)不正解✕

 デスクトップアプリケーションも作成できます。

(エ)正解〇

 Perlはインタプリタ言語なので、事前にコンパイルして実行ファイルを作成する必要ありません。

【答え】(エ)

[2-3] プログラミング言語の基礎:変数・制御構造・非同期処理

データ構造

【問題】多数のデータが単方向リスト構造で格納されている。このリスト構造には、先頭ポインタとは別に、末尾のデータを指し示す末尾ポインタがある。次の操作のうち、ポインタを参照する回数が最も多いものはどれか。

(ア)リストの末尾のデータを削除する。

(イ)リストの末尾にデータを挿入する。

(ウ)リストの先頭のデータを削除する。

(エ)リストの先頭にデータを挿入する。

さめじん

【攻略ヒント】
単方向リストなので末尾のデータから一つ前のデータへの逆方向の参照はできないよ!

【解説】



(ア)正解〇

 末尾のデータを削除するには、末尾の1つ前のノードがもつ次ノードへの参照を空にし、末尾ポインタに末尾の一つ前のデータのポインタをセットしなくてはなりません。単方向リストなので末尾のデータから一つ前のデータへの逆方向の参照はできず、先頭から末尾の一つ前まで順番にポインタをたどっていく必要があります。

(イ)不正解✕

 末尾ポインタから末尾データへ飛び、末尾データの次ノードへの参照を追加するデータにします。末尾ポインタに追加するデータの参照をセットします。末尾ポインタ→末尾データで1回。

(ウ)不正解✕

 現在の先頭のデータが持つ次ノードへの参照を、先頭ポインタにセットすることで先頭のデータがリストから削除されたことになります。先頭ポインタ→先頭データで1回。

(エ)不正解✕

 挿入するデータの次ノードへの参照に現在の先頭ポインタの値をセットし、リストの先頭ポインタに挿入するデータのポインタをセットします。ポインタを参照する回数は1回です。

【答え】ア

Java

【問題】Webサービスを利用するときのSOAPの役割として、適切なものはどれか。

(ア)Webサービスのインタフェースを記述して、プログラムからサービスを利用できるようにする。

(イ)Webサービスの送受信プログラム間で、XML形式のメッセージを受け渡す。

(ウ)Webサービスプログラム間の配信保証や重複防止など、データ転送の信頼性を確保する。

(エ)Webサービスの情報を登録しておき、利用者がそのサービスを検索できるようにする。

さめじん

【攻略ヒント】
SOAP=泡じゃないよ!
しっかり覚えていこう!!!

【解説】

(ア)不正解✕

 WSDL(Web Services Description Language)の説明です。

(イ)正解〇

 SOAP(ソープ)は、ソフトウェア同士がメッセージを交換する遠隔手続き呼び出し(RPC)のためのプロトコルです。汎用なデータ形式であるXMLに基づいて記述されており、Webサービスにとって有効な手段の一つとなっています。


(ウ)不正解✕

 WS-RM(Web Services-ReliableMessaging)の説明です。

(エ)不正解✕

 UDDI(Universal Description, Discovery and Integration)の説明です。

【答え】(イ)

コンパイル

【問題】コンパイル済みのオブジェクトコードがサーバに格納されていて、クライアントからの要求によってクライアントへ転送されて実行されるプログラムはどれか。

(ア)アプレット

(イ)スクリプト

(ウ)スレッド

(エ)サーブレット

さめじん

【攻略ヒント】
知らないと解けない問題だね!
答え以外もしっかり覚えていこう!

【解説】



(ア)正解〇

 アプレット(applet)は、Webページと同時にサーバからダウンロードされ、クライアントのWebブラウザ上で動作するコンパイル済のプログラムです。アプレットは利用者が知らない内にダウンロードされて実行されるという特徴をもつため、ユーザ環境のセキュリティを高めるために一般のアプリケーションプログラムにはない機能制限が課せられています。

(イ)不正解✕

 スクリプト(script)は、処理手順をテキストで記述する簡易的なプログラム全般を指す言葉です。実行時にソースコードを1行ごとに解釈しながら実行するインタプリタ方式を採用しているためコンパイル作業が必要ありません。Webブラウザ上で動作するJavaScriptやVBScript、Webサーバ上で動作するPerl、PHPがその一例です。

(ウ)不正解✕

 スレッド(thread)は、プログラムの並列処理を実現するために、タスクをさらに細分化したCPUの処理単位です。

(エ)不正解✕

 サーブレット(servlet)は、サーバ上でデータ処理やWebページの動的生成などを行うプログラムです。

【答え】(ア)

XML

【問題】XMLの特徴として、最も適切なものはどれか。

(ア)XMLでは、ネットワークを介した情報システム間のデータ交換を容易にするために、任意のタグを定義することができる。

(イ)XMLは、SGMLを基に開発されたHTMLとは異なり、独自の仕様として開発された。

(ウ)XMLでは、HTMLにWebページの表示性能の向上を主な目的とした機能を追加している。

(エ)XMLで用いることができるスタイル言語は、HTMLと同じものである。

さめじん

【攻略ヒント】
これは確実に取って欲しい問題だね。
分からなかったらしっかり覚えていこう!

【解説】

(ア)正解〇

 XML(eXtensible Markup Language)は、ユーザが定義したタグを用いて文書構造を記述するマークアップ言語です。
HTMLが、Webページを記述するための言語であるのに対して、XMLは、データ交換のための汎用のデータ形式です。HTMLで使用するタグはあらかじめ定義済みのものですが、XMLではユーザが新しくタグや属性を定義・使用することが可能になっています。

(イ)不正解✕

 XMLもHTMLと同様にSGML(Standard Generalized Markup Language)をベースに開発されました。

(ウ)不正解✕

 XMLはwebサービスのデータ受け渡しにも使用されますが、目的はデータ交換であり、表示性能の向上ではありません。

(エ)不正解✕

 XMLの表示にもCSSを関連付けられます。また、XSLTなどによる文書変換も利用されます。「XMLではCSSを使えない」と覚えるのではなく、この問題では任意のタグでデータの構造を記述できる点(ア)を押さえましょう。

参考:MDNのXML入門(XMLへのCSS適用)、W3Cのスタイルシート関連付け仕様。

【答え】(ア)

Java

【問題】Java VMが稼働している環境だけがあれば,WebブラウザやWebサーバがなくても動作するプログラムはどれか。

(ア)Javaアプレット

(イ)Javaサーブレット

(ウ)Javaアプリケーション

(エ)JavaScript

さめじん

【攻略ヒント】
今日は、java問題多めだねw
しっかり覚えていこうね!!!

【解説】

(ア)不正解✕

 この問題のJavaアプレットは、当時のブラウザ側プラグイン環境などで動作していた実行形態を指します。ブラウザ等を必要としないスタンドアロンのJavaアプリケーション(ウ)と区別しましょう。

現在はブラウザでのアプレット対応が終了し、JDK 26でApplet APIも削除されています。新規開発の方法としてではなく、過去問の用語として整理してください(OpenJDK公式)。

(イ)不正解✕

 Javaサーブレットは、Javaで記述されたWebサーバ上で動作するプログラムです。Webサーバ上に置かれ、クライアントからの要求に基づくウェブページのHTML文書などの動的生成やデータ処理をWebサーバ上で行います。

(ウ)正解〇

 javaアプリケーションは、Javaでつくられたプログラムのうち、スタンドアロンのローカルコンピュータ上で実行できるものを指します。

(エ)不正解✕

 JavaScriptは、主にWebページとともにウェブブラウザに読み込まれ、ブラウザ上で動作する(※サーバ上で動作するものもあります)オブジェクト指向スクリプト言語です。動的なウェブサイトの構築に用いられます。”Java”と”JavaScript”は名称こそ似ていますが、まったく異なるプログラム言語です。

【答え】(ウ)

まとめ:FE合格のための全体戦略

分野別の復習と、本番に近い形式の演習を組み合わせて進めましょう。このページは基礎事項を読み直す辞書として、IPAの公開問題は形式と時間配分を確かめる教材として使い分けられます。

取り組む内容確かめること次の練習
科目Aの基礎用語・計算・選択肢の違い迷った分野を読み直し、理由付きで解く
科目Bの準備変数の変化・処理の順序・セキュリティの条件公式の公開問題を使い、途中経過を書いて解く
仕上げ時間内に解くペースと見直し科目ごとの形式・時間に合わせて演習する

IPAの試験区分案内では、科目Aは90分・60問、科目Bは100分・20問です(2026年10月30日確認)。試験形式の公式案内と科目A・科目Bの公開問題を確認し、受験する形式に合わせて準備してください。

つまずきに合った教材を選ぶ

用語や仕組みを読み直す本、アルゴリズムの途中経過がわかる教材、時間を測る演習用の問題集は役割が違います。手持ちの教材で補える範囲を確認してから、必要なものを追加すると選びやすくなります。

参考書・問題集の比較|用語理解・科目B・仕上げの用途で選ぶ

通信講座の比較|動画の説明・質問対応・料金で選ぶ

正解した問題も、「なぜほかの選択肢は違うのか」を説明できるか確かめてみましょう。迷った分野に戻れるよう、この解説集を日々の復習に役立ててください。

基本情報の過去問解説、答えより考え方をつかもうと案内するさめじん

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次