基本情報技術者 学習ページ|科目B・アルゴリズムとプログラミング

擬似言語を追う

科目Bのプログラムは、型、代入、条件分岐、繰返し、関数呼出しを順に追うと読みやすくなります。このページでは、変数と配列の値を表に書き出し、処理の流れから空欄や実行結果を決める力を養います。

型と変数を確認

整数型や論理型などの型は、変数に入る値の種類を示します。最初に宣言を見て、各変数が数値、真偽、配列のどれなのかを整理します。

代入は「左の変数 ← 右の式」です。右辺を今の値で計算してから左辺を書き換えるので、x ← x + 1 はxを1増やす処理になります。

計算途中の値を欄外に残すと、更新前の値との取り違えも防げます。

代入では右辺を計算してから左辺を書き換える。

配列は添字で追う

配列は複数の値を順に持つデータです。この教材では要素番号を1から数えるので、a[1]が先頭、a[aの要素数]が末尾です。

繰返しの中でa[i]を書き換えるときは、iの値と変更前後の要素を表にすると混乱しにくくなります。隣の要素を上書きする順序によって結果が変わる処理にも注意します。

小さな配列で一周だけ手計算すると、更新方向の意味を確かめられます。

配列は添字と更新順序をセットで追う。

条件分岐を絞る

ifでは条件式がtrueのときだけ対応する処理を実行します。elseifが続く場合は上から判定し、最初にtrueになった枝だけを実行します。

複数条件ではandは両方がtrue、orはいずれかがtrueのときにtrueです。比較対象が値なのか添字なのかを区別すると、空欄候補を消しやすくなります。

分岐は上から評価し、最初に成立した枝へ進む。

繰返しを数える

forは開始値、終了値、増減量を先に確認します。whileは条件を先に判定し、doから始まる繰返しは処理後に条件を判定します。

トレースでは、各周回の先頭で制御変数と主要変数の値を書き、周回の終わりに更新後の値を記録します。何回実行されるかを先に数えると読み違いを減らせます。

終了条件の直前と直後の値まで書くと、境界の読み違いを見つけやすくなります。

繰返しは開始・終了・更新の三点を先に押さえる。

関数は入出力で読む

関数を読むときは、引数として何を受け取り、returnで何を返すかを先に確認します。呼出し先の中身に入る前に、実引数が仮引数へどの値として渡るかを書きます。

関数内の変数は、その関数の処理を追うためのものです。呼出し元に戻る値を意識すると、長いプログラムでも部分ごとに分けて考えられます。

呼出しが複数ある場合も、返った値を一つずつ元の式へ戻して追います。

関数は引数、処理、戻り値の順で分けて追う。

本番の形で解いてみる

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

次のプログラム中の【a】に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。関数sumPositiveは、整数型の配列dataを受け取り、0より大きい要素だけの合計を返す。

 1○整数型: sumPositive(整数型の配列: data)
 2  整数型: total ← 0
 3  整数型: i
 4  for (i を 1 から dataの要素数 まで 1 ずつ増やす)
 5    if (a)
 6      total ← total + data[i]
 7    endif
 8  endfor
 9  return total
  1. a: data[i] > 0
  2. a: data[i] > total
  3. a: i > 0
  4. a: total > 0
  5. a: data[i] < 0
答えと解説を見る

正解: a: data[i] > 0

合計へ加えるのは、要素の値が0より大きい場合だけです。したがって調べる対象はdata[i]で、条件はdata[i] > 0です。

まちがえやすい点: 添字iではなく、配列要素data[i]の値を判定する。

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

次のプログラム中の【a】、【b】に入れる正しい答えの組合せを、解答群の中から選べ。関数countBetweenは、整数型の配列dataと整数型low、highを受け取り、low以上high以下の要素の個数を返す。lowはhigh以下とする。

 1○整数型: countBetween(整数型の配列: data, 整数型: low, 整数型: high)
 2  整数型: count ← 0
 3  整数型: i
 4  for (i を 1 から dataの要素数 まで 1 ずつ増やす)
 5    if (a)
 6      b
 7    endif
 8  endfor
 9  return count
  1. a: data[i] ≧ low and data[i] ≦ high b: count ← count + 1
  2. a: data[i] > low and data[i] < high b: count ← count + 1
  3. a: data[i] ≧ low or data[i] ≦ high b: count ← count + 1
  4. a: i ≧ low and i ≦ high b: count ← count + 1
  5. a: data[i] ≧ low and data[i] ≦ high b: count ← count + data[i]
答えと解説を見る

正解: a: data[i] ≧ low and data[i] ≦ high b: count ← count + 1

範囲の両端を含むので、要素がlow以上かつhigh以下かを調べます。条件を満たした要素を一つ見つけるごとにcountを1増やします。

まちがえやすい点: 両端を含む条件なので、>と<ではなく≧と≦を使う。

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

次の関数stepCountをstepCount(19)として呼び出したとき、戻り値として正しいものを解答群から選べ。

 1○整数型: stepCount(整数型: x)
 2  整数型: n ← 0
 3  while (x > 1)
 4    if (x mod 2 = 0)
 5      x ← x ÷ 2 の商
 6    else
 7      x ← x - 3
 8    endif
 9    n ← n + 1
10  endwhile
11  return n
  1. 3
  2. 4
  3. 5
  4. 6
  5. 7
答えと解説を見る

正解: 5

xは19→16→8→4→2→1と変化します。whileの本体は5回実行されるので、nの戻り値は5です。

まちがえやすい点: 初期値19を1回目として数えず、処理を実行した回数を数える。

基本情報の学習ページ

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

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

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