トレース表の書き方

表の形を決めておきます

前回は代入を 1 行ずつ追いました。今回は、その追いかけ方を「いつも同じ形」に固めます。試験本番で毎回違う書き方をしていると、書き方そのものに頭を使ってしまい、肝心のコードに集中できません。形を決めて、手が勝手に動く状態にしておくのが目的です。

本コースのトレース表は、いちばん左の列に行番号、その右に変数を 1 つずつ並べます。上から下へ、実行した順に 1 行ずつ足していきます。大事なのは、表の 1 行が「コードの 1 行を実行し終えた瞬間」を表すという点です。実行前ではありません。ここを取り違えると、値が全部 1 行ずつずれます。

4 つの決めごと

表の書き方は次の 4 つに集約されます。

  1. 実行した行の番号を、必ず左端に書く
  2. その行で変わった変数だけ、新しい値に書き換える
  3. 変わらなかった変数は、前の行の値をそのまま書き写す
  4. まだ一度も代入されていない変数は、ダッシュで「値なし」と示す

3 番を面倒に感じるかもしれませんが、ここを省くと表が読めなくなります。ある行を見たときに、全変数の値がその 1 行だけで分かる状態を保つのが、この表の唯一の価値です。空欄があると、前の行まで目を戻す必要が出て、そこで読み間違えます。

行番号は左端に書く

分岐や繰返しが入ると、コードの上から下へ素直には進まなくなります。同じ行を何度も実行したり、途中の行を飛ばしたりします。だからこそ行番号の列が要ります。行番号を書いておけば、あとで見直すときに「どの順番で通ったか」がそのまま残ります。答えが合わなかったときに、どこで狂ったかを探せるのは、この列があるからです。

変数の欄は先に用意する

表を書き始める前に、宣言の行を読んで、出てくる変数をすべて横に並べておきます。あとから列を足そうとすると、それまでに書いた行の分を埋め直すことになり、そこで書き漏らしが生まれます。宣言の行は読み飛ばされがちですが、表の骨格を決める行なので必ず先に読みます。引数として受け取る変数も、この時点で列に加えます。呼び出されたときにすでに値が入っている変数なので、表のいちばん上の行にはその値を書いておきます。

計算は途中式まで声に出す

右側に式がある代入では、いきなり答えを書かず、いま入っている値を式に当てはめた形を一度作ります。たとえば a が 8、b が 3 のときの a ← a - b なら、まず 8 - 3 という形にしてから 5 を書きます。この一手間で、古い値と新しい値の取り違えがほぼ無くなります。慣れると頭の中で済ませられますが、慣れるまでは書いてください。

やってみます

下の演習は、税抜きの金額から税込みの金額を求めるコードです。変数は 2 つですが、片方の変数が途中で意味を変えます。4 行目で作られた値は、そのままでは求めたい値ではありません。次の行で何が起きるかを見てから判断してください。1 行ずつ、実行したあとの値を予測して入れます。

課題

  1. 各行を実行したあとの値を入れる
  2. 値が変わらない変数はそのままの値を入れる
  3. 計算は今入っている値を式に当てはめてから求める

ヒント

1 / 6 行目のトレース

1○整数型: zeikomi()
2 整数型: kingaku, zei
3 kingaku ← 1200
4 zei ← kingaku × 10
5 zei ← zei ÷ 100
6 kingaku ← kingaku + zei
7 zei ← 0
8 return kingaku
実行した行kingakuzei
実行前
3 行目

3 行目を実行したあとの値を入れてください。変わらない変数は、 そのままの値を入れます。まだ値が入っていない変数は「」と入れます。