動かしてわかるフローチャート|変数の値を追うトレース表の書き方と練習問題

フローチャートの矢印は追えるのに、「最後の変数の値はいくつ?」と聞かれると分からなくなる。そんなときに役立つのが、実行した順に値を書き出すトレース表です。頭の中だけで計算せず、「どの処理で、どの値が変わったか」を残していきます。
この記事では、数を順番に合計するフローチャートを動かしながら、カウンター i と合計 sum の変化を確認します。プログラミング言語の文法を覚えていなくても取り組めます。まずは小さな数で予想し、実行結果と比べてみてください。
トレース表とは?実行順に変数の値を記録する表
トレースとは、処理の順番をたどり、変数の値や条件判定の結果を確かめることです。たとえば経費の金額を1件ずつ合計するとき、「今見ている明細」と「ここまでの合計」は別々の情報です。繰り返しでも、今扱う数と、それまでに積み上げた結果を分けて追う必要があります。
今回の表は、図の記号を1つ実行するごとに1行追加し、その処理が終わった直後の値を記録します。トレース表には、値が変わったときだけ記入する形式や、ループ1周につき1行にまとめる形式もあります。練習問題では、どの時点の値を記録する表なのかを最初に確認しましょう。
i:今回、合計に加える数。繰り返しを進めるカウンターとしても使います。sum:これまでに加えた数の合計。最初は0です。- 判定:条件式が真か偽か。判定するだけでは、iやsumは変わりません。
図を動かして、現在の値とトレース表を見比べる
初期条件は「iを1から始め、3以下の間、sumにiを加えてからiを1増やす」です。終了時のi・sum・加算回数を予想してから実行してみましょう。緑色の記号と表の最終行は、直前に実行した箇所を表します。条件を変更すると、実行状態と予想の入力はリセットされます。
図の ← は代入を表します。sum ← sum + i は「今のsumとiを足した結果で、sumを書き換える」という意味です。開始・終了は端子、処理は長方形、条件判定はひし形で表しています。
開始前です。
トレース表
| 順 | 実行した箇所 | i | sum | 判定 |
|---|
予想して確認
現在の条件の解答・解説
1から3まで足す例を、最後の判定まで追う
初期化するとiは1、sumは0です。i ≤ 3 が真なので、1を加えてsumを1にします。この時点のiはまだ1です。その後、別の処理でiを2に更新し、条件判定へ戻ります。
| 実行した箇所 | i | sum | 判定 |
|---|---|---|---|
| 初期化 | 1 | 0 | — |
| i ≤ 3を判定 | 1 | 0 | 真 |
| sumにiを加算 | 1 | 1 | — |
| iを1増やす | 2 | 1 | — |
| i ≤ 3を判定 | 2 | 1 | 真 |
| sumにiを加算 | 2 | 3 | — |
| iを1増やす | 3 | 3 | — |
| i ≤ 3を判定 | 3 | 3 | 真 |
| sumにiを加算 | 3 | 6 | — |
| iを1増やす | 4 | 6 | — |
| i ≤ 3を判定 | 4 | 6 | 偽 |
| 終了 | 4 | 6 | — |
終了時のiは3ではなく4です。3を加算したあとにも更新処理を通り、4になってから条件を判定するためです。ただし、4は条件を満たさないので合計には入りません。「最後に加えた数」と「終了時のカウンター」は区別しましょう。
間違えやすい4つのポイント
1. 初期値を途中で消さない
初期化の長方形は、戻り矢印の合流点より前にあります。したがって、sumを0にするのは最初の1回だけです。各周でsumを0に戻してしまうと、それまでの合計が失われます。値が不自然になったら、戻り先が初期化なのか条件判定なのかを確認してください。
2. 代入は右辺を計算してから左辺を書き換える
iが2、sumが1なら、sum ← sum + i の計算は1 + 2です。結果の3をsumへ入れます。iも同時に3になるわけではありません。変更していない変数は、前の行と同じ値を引き継ぎます。
3. 「未満」と「以下」は境界の値が違う
開始値1・終了値3・増分1の場合、i < 3 では1と2を加算し、i ≤ 3 では3も加算します。ただし「以下にすれば必ず1回増える」とは限りません。開始値1・増分2・終了値4なら、iは1、3、5と進み、4を通らないため、どちらの条件でも加算する数は1と3です。
4. 条件判定の回数と処理回数は違う
この前判定ループでは、加算する前に毎回条件を調べ、最後にもう1回、偽になる判定を行います。加算が3回なら判定は4回です。開始時点で条件が偽の場合も、判定は1回ありますが、加算は0回です。教材の「加算回数」は、ひし形を通った回数ではありません。
トレース表の練習問題5問|予想してから答えを見る
すべてsumの初期値は0です。上の教材の「練習問題」で同じ条件を選べます。終了時のi・sum・加算回数の3つを考えてください。
問題1:1から3まで、1ずつ増やす
開始値1、条件i ≤ 3、増分1です。
解答・解説
iは4、sumは6、加算は3回です。1 + 2 + 3 = 6。iを4に更新したあと、条件が偽になって終了します。
問題2:「3以下」を「3未満」に変更
開始値1、条件i < 3、増分1です。
解答・解説
iは3、sumは3、加算は2回です。1と2は加算しますが、3 < 3は偽なので3は加えません。
問題3:1から5まで、2ずつ増やす
開始値1、条件i ≤ 5、増分2です。
解答・解説
iは7、sumは9、加算は3回です。加算する値は1、3、5。5の次は6ではなく7です。終了値までのすべての整数を加えるわけではありません。
問題4:開始値が終了値より大きい
開始値4、条件i ≤ 3、増分1です。
解答・解説
iは4、sumは0、加算は0回です。初期化のあと最初の判定で偽になります。iの更新処理も通らないため、iは5にはなりません。
問題5:0から始めて3未満まで
開始値0、条件i < 3、増分1です。
解答・解説
iは3、sumは3、加算は3回です。0 + 1 + 2 = 3。0を加えてもsumの値は変わりませんが、加算処理は1回実行されています。問題2と合計は同じでも、処理回数は異なります。
仕事や学習でトレースが役立つ場面
集計結果が想定より1件多い、最初のデータだけ飛ばしている、合計が最後の値と同じになる。こうした不具合は、途中の値を書き出すと原因を絞りやすくなります。最初から大量のデータで試さず、1〜3件の小さな例と、条件の境界に当たる値から確認するのが実践的です。
生成AIに処理を作ってもらった場合も、最終結果だけで正しさを判断せず、どの値を何回処理したかを追ってみてください。トレース表は、処理を説明する資料にも、期待する結果と実際の結果を照合する手がかりにもなります。
まとめ|変わった値と、変わらない値を分けて追う
トレース表を書くときは、初期値を記録し、矢印の順番どおりに1つずつ処理します。条件判定だけでは値は変わりません。代入や更新のときに対象の変数を書き換え、最後に条件が偽になるところまで追いましょう。合計が合っていても、回数や終了時のiが違えば、処理の理解にずれがある可能性があります。