名前と、今の値を分ける
値を追うときは、変数名を列に、実行した文を行にした表を作ります。名前xが変わるのではなく、xに格納した値が変わります。
宣言は名前や型を定めること、初期化は最初に使う値を格納すること。この入門では整数を扱い、値を読む前に初期値を定めます。
値を入れていない変数を勝手に0と仮定しません。表の「—」はこの例でまだyの初期化をしていない段階を表し、数値0とは別です。
| 段階 | x | y |
|---|---|---|
| 初期値 | 3 | まだ格納していない |
| y ← x + 2の後 | 3 | 5 |
| x ← y × 2の後 | 10 | 5 |
右辺を評価してから、左辺を更新する
初期値x=3からy ← x + 2を実行すると、右辺は5になり、yへ5を格納します。この文はxを変えません。
続くx ← y × 2では、今のy=5を読んで10をxへ格納します。二つの文を同時に計算すると実行順が失われます。
トレース表には各文を終えた直後の値を記録し、使われた値と更新された値を分けて確認します。
コピーした値は、後から連動しない
今回の整数の代入でyへ格納した5は、後でxを10にしても変わりません。yは「いつでもx+2を計算する式」になったわけではないからです。
一方、別の文でyを更新すれば値は変わります。オブジェクトの参照など別の仕組みはこの授業の範囲外。
まずこの例の整数の値と順次処理を追います。初期値を0や4へ変え、式は同じでも結果が変わることを確認問題で確かめます。