SSブログ

変数宣言と初期化 [プログラム]

 夏休みの課題の第一回目に、Javaの初歩的なプログラムの一文一文について、その「文の種類」を書かせる問題を出した。文の種類については、予め、種類を上げて説明しておき、またサンプルも出した上で、三つの初歩的なプログラム(テキストに使用していた結城本の中からピックアップ)について、文の種類を書かせるものだった。

 if文やfor文、あるいはメソッド定義文、try文など、大きめの構文は割合よくできていたが、かなりの学生ができなかったのは、「変数宣言文」と「変数宣言と初期化の代入文」であった。その他に、式だけで文になっているものや、複合代入(+=とか*=とか)なども引っかかっていたが、これは僕の説明も不足していたので、仕方がない。

 しばらく前、このブログでも何度も問題にしたように、プログラムは、変数をどう使うかによって展開していくものである。Wirthの本のタイトルにあるように「アルゴリズム+データ=プログラム」であるとすると、そのデータを担っているのが変数なのであり、それがなければそもそも、有意義なプログラムにはなり得ない。そのデータをどのように処理するか、という方法がアルゴリズムであり、それもデータがなければ、そもそも何の意味もないのである。

 つまり、変数の扱い方に慣れていないと、プログラムが作れないし、逆に変数を中心にプログラムを考えていくと、割合すんなりとプログラムを書けるようになる。

 変数がこのようにプログラムにおいて大事だとして、その変数をそのプログラムに導入するとき、つまり、初出の変数について可能な文は、Java(C言語などでも同じだが)では、二つに限られる。一つは「型(クラス) 変数名」という組による変数宣言文。ここでは、変数に初期値は与えていない。もう一つは、この変数宣言に加えて、代入による初期化も行う場合である。変数はデータを代入しなければ、何の意味もない。したがって、変数を宣言するときに、その値も代入しておくのが、基本的には好ましい。

 これはそれほど難しい話ではないと思うのだが、どうも、学生は、この変数の宣言と初期化が苦手らしい。どうしてなのか、分からない。それほど難しい話ではないと思うが、それは初心を忘れてしまったからかもしれない。もちろん、提出された答案にコメントをつけて返し、再提出をさせるとほとんどが、正解を書いてくるのだから、これもまた僕の説明不足(そもそも、Webページで説明をし、問題をだしている。)によるものかもしれないし、あるいは、これは単に慣れの問題で、それなりの数を こなせば、自然にできるようになることかもしれない。

 課題の第二回目以降は、Pythonでプログラムを教えることにしているが、Javaが初出の変数について二種類の文があったのに対し、Pythonでは、代入による初期化文のみである。型やクラスを宣言する必要もない。これらは代入留するデータの種類によって自動的に決まるからである。実際、初歩のプログラミングを教えるのにPythonを使うのは、いい選択だと思う(それについては、後日、再び取り上げよう。)。シンプルであり、かつ、素直な書き方(その言語特有のイディオムなどが少ない)であるので、初心者には最適である。

 話が逸れてしまったが、何度でも、ことある毎に、この変数の導入についての文には注意を促す必要があると思う。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。