トレース表の書き方
表の形を決めておきます
前回は代入を 1 行ずつ追いました。今回は、その追いかけ方を「いつも同じ形」に固めます。試験本番で毎回違う書き方をしていると、書き方そのものに頭を使ってしまい、肝心のコードに集中できません。形を決めて、手が勝手に動く状態にしておくのが目的です。
本コースのトレース表は、いちばん左の列に行番号、その右に変数を 1 つずつ並べます。上から下へ、実行した順に 1 行ずつ足していきます。大事なのは、表の 1 行が「コードの 1 行を実行し終えた瞬間」を表すという点です。実行前ではありません。ここを取り違えると、値が全部 1 行ずつずれます。
4 つの決めごと
表の書き方は次の 4 つに集約されます。
- 実行した行の番号を、必ず左端に書く
- その行で変わった変数だけ、新しい値に書き換える
- 変わらなかった変数は、前の行の値をそのまま書き写す
- まだ一度も代入されていない変数は、ダッシュで「値なし」と示す
3 番を面倒に感じるかもしれませんが、ここを省くと表が読めなくなります。ある行を見たときに、全変数の値がその 1 行だけで分かる状態を保つのが、この表の唯一の価値です。空欄があると、前の行まで目を戻す必要が出て、そこで読み間違えます。
行番号は左端に書く
分岐や繰返しが入ると、コードの上から下へ素直には進まなくなります。同じ行を何度も実行したり、途中の行を飛ばしたりします。だからこそ行番号の列が要ります。行番号を書いておけば、あとで見直すときに「どの順番で通ったか」がそのまま残ります。答えが合わなかったときに、どこで狂ったかを探せるのは、この列があるからです。
変数の欄は先に用意する
表を書き始める前に、宣言の行を読んで、出てくる変数をすべて横に並べておきます。あとから列を足そうとすると、それまでに書いた行の分を埋め直すことになり、そこで書き漏らしが生まれます。宣言の行は読み飛ばされがちですが、表の骨格を決める行なので必ず先に読みます。引数として受け取る変数も、この時点で列に加えます。呼び出されたときにすでに値が入っている変数なので、表のいちばん上の行にはその値を書いておきます。
計算は途中式まで声に出す
右側に式がある代入では、いきなり答えを書かず、いま入っている値を式に当てはめた形を一度作ります。たとえば a が 8、b が 3 のときの a ← a - b なら、まず 8 - 3 という形にしてから 5 を書きます。この一手間で、古い値と新しい値の取り違えがほぼ無くなります。慣れると頭の中で済ませられますが、慣れるまでは書いてください。
やってみます
下の演習は、税抜きの金額から税込みの金額を求めるコードです。変数は 2 つですが、片方の変数が途中で意味を変えます。4 行目で作られた値は、そのままでは求めたい値ではありません。次の行で何が起きるかを見てから判断してください。1 行ずつ、実行したあとの値を予測して入れます。
課題
- 各行を実行したあとの値を入れる
- 値が変わらない変数はそのままの値を入れる
- 計算は今入っている値を式に当てはめてから求める