基本情報の科目Bをトレースできないときは?値の変化を表にする練習

執筆・編集:まっく部長公開日:
最初に値がずれた行が、読み違えた処理を教えてくれる

科目Bのトレースで答えがずれたら、実行した行と直後の値を表に残します。回答表と比べて最初に違った行へ戻ると、どの処理を読み違えたかが分かります。代入では右辺を今の値で計算し、その結果を左辺へ入れます。更新前の値を使い続けないことが要点です。

ここでは配列の加算、条件分岐、更新順序の自作3題を解きます。配列の要素番号は3題とも1から始まり、コード左端の数字は説明用の行番号です。実際の試験では各問題の開始番号や定義に従います。

目次

直前の代入後の値を使い、終了判定まで追う

初期値、処理後の値、終了判定を残してコードの読み違いを探せる。

トレースはプログラムの処理を順に追い、値や通った条件を確かめることです。IPAの記述形式Ver.5.1・別紙2で代入とif、while、配列の表し方を確認しました。本稿はその一部を使っています。

STEP
前提と初期値を書く

配列の開始番号と変数の初期値を書き、どの条件で処理を繰り返すかを読みます。値がまだない変数を勝手に0と置かず、必要なら「未定義」と残します。

STEP
1つの処理を終えた後の値を1行足す

代入を行ったら、変わった後の値を書きます。条件を見た行では真・偽を記録し、実行しなかった処理で値を変えません。

STEP
終わる条件も記録する

最後の加算で止めず、次の条件判定が偽になるところまで追います。実行した回数と、条件を判定した回数を分けます。

紙には「実行した行」「条件が真か偽か」「変数の値」を並べます。初期化・条件判定・代入を別々に記録します。すると、どこで値が変わったかを追えます。

以下のコード左端の数字は説明用の行番号です。擬似言語そのものの一部ではありません。回答表では初期化の数行をまとめています。その後は条件を判定する行と、値が変わる行を一つずつ記録します。

練習1 配列を順に合計する

配列dataの値を先頭から加えます。コードが終わったときのtotalとi、加算を実行した回数を、回答を開く前に書いてください。

1  整数型の配列: data ← {3, 1, 4}
2  整数型: i ← 1
3  整数型: total ← 0
4  while (i ≦ 3)
5    total ← total + data[i]
6    i ← i + 1
7  endwhile

data[1]は3、data[2]は1、data[3]は4です。要素番号と格納された値は別のものです。

練習1の回答と途中表を開く
実行行・判定itotal
1〜3 初期化後10
4 真10
5 total更新後13
6 i更新後23
4 真23
5 total更新後24
6 i更新後34
4 真34
5 total更新後38
6 i更新後48
4 偽・終了48

最後はtotal=8、i=4です。加算は3回です。iが4になった後の判定が偽なので、存在しないdata[4]を読みに行きません。

合計が4で止まった場合は、i=3の処理を飛ばしていないかを見ます。逆にdata[4]まで読もうとした場合は、最後の判定を省略した場所へ戻ってください。

練習2 条件が偽なら、加算と件数更新を飛ばす

今回は正の値だけを合計し、その件数も数えます。totalとcountの最終値に加え、0を読んだときにどの行を実行しないかも答えてください。

1  整数型の配列: data ← {4, -2, 0, 6}
2  整数型: i ← 1
3  整数型: total ← 0
4  整数型: count ← 0
5  while (i ≦ 4)
6    if (data[i] > 0)
7      total ← total + data[i]
8      count ← count + 1
9    endif
10   i ← i + 1
11 endwhile
練習2の回答と途中表を開く
実行行・判定itotal と count
1〜4 初期化後1total=0
count=0
5 真1total=0
count=0
6 真1total=0
count=0
7 total更新後1total=4
count=0
8 count更新後1total=4
count=1
10 i更新後2total=4
count=1
5 真2total=4
count=1
6 偽2total=4
count=1
10 i更新後3total=4
count=1
5 真3total=4
count=1
6 偽3total=4
count=1
10 i更新後4total=4
count=1
5 真4total=4
count=1
6 真4total=4
count=1
7 total更新後4total=10
count=1
8 count更新後4total=10
count=2
10 i更新後5total=10
count=2
5 偽・終了5total=10
count=2

total=10、count=2で終わります。−2と0は「0より大きい」を満たさないため、7行目と8行目を飛ばします。10行目ではiだけを増やします。

0を含めて合計しても最終的なtotalは10ですが、countまで増やすと件数が3になります。この問題は合計10と件数2の両方が答えです。合計だけが合っている場合にも、条件分岐の読み違いが残ることがあります。

6行目を「data[i] ≧ 0」に変えた別のプログラムなら、最終値はtotal=10、count=3です。変更後は初期値からやり直し、元の条件の答えと混ぜないでください。

練習3 先に増やすと、足す値が変わる

次は配列を使わず、nを増やした後でtotalへ足します。ループに入る条件がn≦3でも、totalへ最後に加える値が3で終わるかを確かめてください。

1  整数型: n ← 1
2  整数型: total ← 0
3  while (n ≦ 3)
4    n ← n + 1
5    total ← total + n
6  endwhile
練習3の回答と途中表を開く
実行行・判定ntotal
1〜2 初期化後10
3 真10
4 n更新後20
5 total更新後22
3 真22
4 n更新後32
5 total更新後35
3 真35
4 n更新後45
5 total更新後49
3 偽・終了49

最後はtotal=9、n=4です。3回目はn=3で条件を通った後、4行目でnが4になります。5行目でその4を足すため、2+3+4=9となります。

total=6と答えた人は、更新前のnを5行目で足していないかを見ます。4行目を実行するとnは増えています。また、ループに入った後でnが変わっても、その場で条件を判定し直すわけではありません。次に3行目へ戻ったときに判定します。

条件を一つだけ変えた場合

次の3例はそれぞれ元のコードに戻し、変数を初期化してから条件を一つだけ変えます。

  • 4・5行目を入れ替え、加算してからnを増やす。total=6。1+2+3を足す。
  • 初期値だけn=4へ変える。total=0。最初の条件が偽で中へ入らない。
  • 条件だけn≦2へ変える。total=5、n=3。2+3を足す。

最初に値がずれた行で、読み違えた処理が分かる

自分の表と回答表を上から見比べ、最初に違った行へ印を付けます。その直前までの値が合っていれば、そこから処理をやり直せます。最終値を覚えるより、最初にずれた理由を説明する練習になります。

添字と値を混ぜた人は練習1へ戻ります。偽の条件でも更新した人は練習2、古い値を使った人は練習3で解き直せます。最後の1回が合わないときは、≦と<や終了時の判定が見直す箇所です。

復習では最初にずれた行と、その直前の値を残せば再現できます。条件を一つ変えて解き直すと、答えの暗記ではなく手順を理解できたかが分かります。

3題の次は、長い配列や関数を含む公式問題へ進む

途中表では、値・条件・代入順を一つずつ確かめます。値を変えて解き直すときも、変数の更新前と更新後を分けて記録してください。

3題を自力で説明できたらIPAの科目Bサンプル問題へ進みます。問題文の注記や長い配列、関数が加わっても追えるか確かめます。別の条件が付いた場合も練習の対象です。公式問題は元ページで利用し、本稿の短い例が本試験の難易度を代表するとは考えないでください。

2026年10月1日確認の基本情報技術者試験の概要では、科目Bは20問・100分です。練習の段階では丁寧に途中を残し、その後は本番の制限時間に合わせて必要な変数や判定を選んで記録する練習へ進みます。

試験範囲や制度は変更されることがあるため、受ける時期の試験要綱・シラバスを確認します。今回使った代入・分岐・反復だけで、科目B全体や次年度の変更点を学び終えた扱いにはしません。

条件の意味で止まる人には、基礎解説や質問支援が役立つ

途中表を見ても条件の意味が分からないなら、分岐や繰り返しから教えてくれる講座が合います。最初に値がずれた行を自分で見つけられる人は、手持ち教材の解説を読み直して同じ処理を練習する方法もあります。

科目Bの問題を配るだけの講座と、途中の値が分からないときに質問できる講座では使い方が違います。科目A免除の対象講座でも、Bの解説や個別支援まで同じ範囲で付くとは限りません。

基本情報技術者の通信講座比較では、科目A免除と科目Bの教材・質問範囲を分けて確認できます。必要な支援が手持ち教材で足りていれば、追加受講を前提にする必要はありません。

短いコードでも、なぜその値になったかを説明する練習ができます。この3題は代入・分岐・更新順の入口です。科目B全体の対策には情報セキュリティや本試験の時間配分も含みます。

制度情報は2026年10月1日時点です。問題と途中表は当サイトの自作教材で、公式問題の難易度や合格可能性を示すものではありません。

書いて整理したい方には、トレースの記録する場所・実行行・変数値 記入票(PDF)と解き直し記録シート(PDF)も使えます。

目次