基本情報技術者 学習ページ|科目B・基礎理論

数学を処理に置き換える

平均や分散、数列、行列、グラフは、式だけでなく繰返し処理として読めることが重要です。配列のどの要素を集計しているかを追い、数式とプログラムを対応させます。

代表値を集計する

平均値は、値の合計をデータ数で割って求めます。最大値を求めるときは、先頭の値などを現在の最大値としておき、残りの要素と順に比較します。

プログラムを読むときは、合計用の変数と最大値用の変数を区別します。同じfor文でも、加算する処理と比較して更新する処理では目的が異なることを意識します。

集計変数が何を表すかを決めてから繰返しを追う。

ばらつきを求める

分散は、各データが平均値からどれだけ離れているかを表す値です。平均との差をそのまま足すと正負が打ち消し合うため、差を二乗して合計します。この合計を偏差平方和といい、データ数で割ると分散になります。

プログラムでは、先に平均を求め、その後でもう一度配列を走査して平均との差の二乗を加える形にできます。平均との差と平均との差の二乗を取り違えないようにします。

差の二乗の合計(偏差平方和)をデータ数で割ると分散。

数列を更新する

数列は、前の項から次の項を決める規則を繰返し処理に置き換えられます。例えば二つ前までの項を使う数列では、次の値を計算した後、古い値を順に更新します。

更新順序を誤ると、まだ使うはずの値を上書きしてしまいます。次の値を一時変数へ保存してから項をずらすと安全に追跡できます。

複数の前項を使う数列では更新順序に注意する。

行列を計算する

同じ大きさの行列の和は、同じ行番号・列番号の要素どうしを加えます。一方、行列の積では、左側の行と右側の列の対応する要素を掛け、その合計を一つの要素にします。

積をプログラムにすると、結果の行、結果の列、そして左の行列の列(=右の行列の行)を順に動かす添字の三つの繰返しが現れます。添字がどの行列の行と列を指しているかを紙に書いて整理します。

行列積は左の行と右の列の積和を求める。

隣接行列を読む

グラフでは、頂点どうしが辺で結ばれているかを隣接行列で表せます。自己ループ(同じ頂点を結ぶ辺)のない無向グラフを0と1で表すなら、ある頂点に対応する行の1を数えることで、その頂点の次数を求められます。

無向グラフでは、頂点iとjが結ばれていれば、i行j列とj行i列の両方に対応が現れます。行の合計がその頂点につながる辺の本数になる形を確認します。

0と1の隣接行列では行の1の個数から次数を求められる。

本番の形で解いてみる

科目Bの形: プログラム(擬似言語)を読んで解答群から選ぶ(このページのために作った問題)

次のプログラム中の【a】、【b】に入れる正しい答えの組合せを、解答群の中から選べ。関数spreadは、整数型配列aについて、各要素と平均値との差の二乗を合計して返す。平均値は整数の商で求める。

 1○整数型: spread(整数型の配列: a)
 2  整数型: sum ← 0
 3  整数型: mean
 4  整数型: total ← 0
 5  整数型: i, d
 6  for (i を 1 から aの要素数 まで 1 ずつ増やす)
 7    sum ← sum + a[i]
 8  endfor
 9  a
10  for (i を 1 から aの要素数 まで 1 ずつ増やす)
11    d ← a[i] - mean
12    b
13  endfor
14  return total
  1. a: mean ← sum ÷ aの要素数 の商 b: total ← total + d × d
  2. a: mean ← sum ÷ aの要素数 の商 b: total ← total + d
  3. a: mean ← sum b: total ← total + d × d
  4. a: mean ← sum ÷ aの要素数 の商 b: total ← total + a[i] × a[i]
  5. a: mean ← sum ÷ 2 の商 b: total ← total + d × d
答えと解説を見る

正解: a: mean ← sum ÷ aの要素数 の商 b: total ← total + d × d

平均値は全要素の合計を要素数で割って求めます。ばらつきを表すため、各要素と平均値との差dを二乗してtotalへ加えます。

まちがえやすい点: 平均との差をそのまま合計すると正負が打ち消し合う。

科目Bの形: プログラム(擬似言語)を読んで解答群から選ぶ(このページのために作った問題)

次のプログラム中の【a】、【b】に入れる正しい答えの組合せを、解答群の中から選べ。関数sequenceは、第1項を2、第2項を5とし、第3項以降は直前の二項の和とする数列の第n項を返す。nは2以上とする。

 1○整数型: sequence(整数型: n)
 2  整数型: p ← 2
 3  整数型: q ← 5
 4  整数型: next, i
 5  for (i を 3 から n まで 1 ずつ増やす)
 6    next ← p + q
 7    a
 8    b
 9  endfor
10  return q
  1. a: p ← q b: q ← next
  2. a: q ← next b: p ← q
  3. a: p ← next b: q ← p
  4. a: p ← q b: q ← p + q
  5. a: p ← next b: q ← next
答えと解説を見る

正解: a: p ← q b: q ← next

nextには更新前のpとqの和を保存します。その後、古いqをpへ移し、nextを新しいqへ移せば、次の繰返しでも直前の二項を利用できます。

まちがえやすい点: qを先に更新してからpへ代入すると、古いqの値が失われる。

科目Bの形: プログラム(擬似言語)を読んで解答群から選ぶ(このページのために作った問題)

次のプログラムを実行したとき、出力される値の並びとして正しいものを解答群の中から選べ。gは4頂点の無向グラフを表す隣接行列であり、1は二つの頂点が辺で結ばれていることを表す。

 1整数型の二次元配列: g ← {{0, 1, 1, 0}, {1, 0, 1, 0}, {1, 1, 0, 1}, {0, 0, 1, 0}}
 2整数型: i, j, degree
 3for (i を 1 から 4 まで 1 ずつ増やす)
 4  degree ← 0
 5  for (j を 1 から 4 まで 1 ずつ増やす)
 6    degree ← degree + g[i, j]
 7  endfor
 8  degree を出力する
 9endfor
  1. 2, 2, 3, 1
  2. 2, 2, 2, 2
  3. 1, 2, 3, 2
  4. 2, 3, 2, 1
  5. 3, 3, 4, 2
答えと解説を見る

正解: 2, 2, 3, 1

各行の1の個数を数えます。第1行は2個、第2行は2個、第3行は3個、第4行は1個なので、順に2、2、3、1が出力されます。

まちがえやすい点: 無向グラフでは同じ辺が行列の対称な二か所に現れるが、一つの頂点の次数は一行だけを数える。

基本情報の学習ページ

ほかの学習ページの一覧と、2択の用語カード(750語)は、基本情報技術者のページにあります。

基本情報技術者のページへ →

このページの内容は、IPA「基本情報技術者試験 シラバス Ver.9.2」(2026年1月公表)と試験要綱Ver.5.6の範囲にもとづきます(2026年10月確認)。IPAは2027年度春ごろから新しい試験制度に移る予定です。