プログラム初心者は変数の値を追いかけてみるのがいい [wython]
プログラムの初心者に教えていて、特に繰り返しの構文を説明するとき、何らかの変数が繰り返しのたびに値をどのように変えていくか、表のように示しながら教えている。
整数型変数xに1を入れておく。 整数型変数sumに0を入れておく。 変数xが10以下の間、 変数sumに変数xの値を足す。 変数xに1を足す。 変数sumの値を表示する。
というようなwythonのプログラムがあったとする。ここでは、xとsumという二つの変数が、一方は繰り返しを制御するために使われ、もう一方は数を足し込んでいくために使われている。この表現はシンプルで、慣れた人には分かりやすいが、初心者は、このような変数の使い方は抽象的過ぎて、何をしているのか理解できないことが多い。
そこで、コンピュータに成り代わって実行してみよう、と声をかけ、黒板に
sum ← sum + x 1 ← 0 + 1 ↘ 3 ← 1 + 2 ↘ 6 ← 3 + 3 ↘ 10 ← 6 + 4 .......
というような表を、順々に、プログラムと対応させながら、書いていく。何度かそれを示してから、今度は、自分でその表を手書きでノートに書かせてみる。こうして、「変数」というものが、繰り返しの一度毎に値を変化させていくことを納得してもらおうとしている。
このような具体的な一々の計算の抽象化が上の「繰り返し構文」だということ、逆に言えば、繰り返しの構文を、具体的な数値を使って実演することで、そこで何が起こっているかを理解すること、これが初心者の、プログラム理解の躓きを少なくさせるこつのように思う。
そこで、wythonでは、コマンドラインのオプションで、その時々の文ごとに、そこに使われている変数の値を書き出す機能を作ろうと思う。実際には、プログラムが出来てからでないと機能しないので、果たして初心者の理解を助けるものと言えるかどうかは疑問だが、たとえば、教える側がプログラムを見せて、その動きを説明するには便利だろう。
たとえば、上のプログラムだったら、
整数型変数xに0を入れておく。 > x = 1 整数型変数sumに0を入れておく。 > sum = 0 変数xが10以下の間、 > x = 1 変数sumに変数xの値を足す。 > sum = 1 変数xに1を足す。 > x = 2 ...
というように。かなり冗長だが、ファイルに書き出すだけなら、構わないだろう。TeXのlogファイルも、tracingmacros変数を1や2にすると、膨大な量が出力されるのと同じことだ。
コメント 0