SSブログ

変数と代入と繰り返し [プログラム]

プログラミングを学ぶ初心者が、最初にぶつかり、そこを何とか越えないと結局、少しでもプログラミングができるようにならない、そういう難関が、何かの値を変数に代入し、変数を参照し、その変数によって繰り返し処理を制御する、という、この三つの要素である。

 ある程度プログラミングができるようになった人からすれば、それがどうして難しいのか、どうして、これらが分からないのか、分からないことだろう。変数という箱を用意して、そこに値を入れ、必要になれば、その値を取り出す。一回ごとの繰り返しに値を変化させて、ある条件になったら繰り返しを抜ける、これは別段難しいことではない。

 初心者向けと称するプログラミングの入門書でも、せいぜい、箱の絵に値を入れたり出したりするような、イラスト入りではあれ、たいてい、通り一遍の説明で、先を急いでいる。

 しかし、ここのところが本当の初心者には難しいのである。とにかく、変数といい、値といい、代入といい、これらはかなり抽象的な概念なのである。そうでしょう?

 前にも書いたが、プログラムはバーチャルな一つの世界であり、その世界を構成する存在要素は、個々の具体的なデータと、それらを抽象化し、一般化した変数である。(定数とかもあるが、これはなくても困らない。)こういう非常に限られた構成要素を使い、それらの間に「作用」を起こさせる演算子、関数、制御構文が、それら構成要素を縫い合わせることで、一枚の服、すなわち一つのプログラムが出来上がっている。

 こういう抽象的な理解は、初心者、特に数学を苦手とする文系の初心者には、当初難しいものである。これを一つ乗り越えてしまえば、つまり、こういうバーチャルな世界の構成の仕方が身に付いてしまえば、あとは雪だるま式にプログラムを勉強していくことができる。

 そこで、まずはとにかく、そのプログラムで使う変数を宣言し、データをそこに格納させるべきである。プログラムの最初に、その世界では何をするのか、を考え、それに必要な道具を揃えさせる。道具とは、つまり変数である。その場合、どういう目的でその変数を用意したか、日本語でちゃんと書かせる必要がある。

 データを用意すると言っても、それは素のままでデータを使うのではなく、必ず変数に代入させる。これは宣言と初期化をセットで、プログラムの最初にしておく、ということだ。

 変数にはデータは出したり入れたりする。大抵は、変数とデータを使って計算をし、その結果をもう一度変数に入れ直す、という形ですることが多い。この基本を徹底的に覚え込ませる必要がある。計算は数値だけではなく、文字列についても、合成することができる。

 また変数には、計算だけではなく、その計算を関数に分離して、関数にデータを渡し、結果だけを戻して、それを変数に代入することも多い。これも代入の一種であるが、また関数を使う使い方を覚えるのでもある。

 変数とその値という考え方も徹底して理解しないといけない。代入の左辺にくるのは、変数という入れ物、右辺に変数が使われると、その変数に入っているデータ・値を使うことになる。この区別は、ある意味では自然だし、特に断らなくても分かる場合があるが、そもそも変数や代入にもたもたしているような場合には、その変数と値と代入の関係について、図を書きながら、ゆっくり、何度も教えなければならないだろう。

 繰り返しも、その変数の値の変化によって動くものである。逆に言うと、一回の繰り返しごと、変数の値が変化し、そによって実行される内容や繰り返しのカウントが変わっていく。これも非常に強い抽象である。だって、一回のデータの代入は、とにかく一つ一つ順番に辿れば理解できるだろう。しかし、繰り返し処理は、いわば、毎回変化する値を使いながら、ある一つの作業のひな形、テンプレートのようなものである。そのテンプレートを、一度ずつ変数が変化しながら、実行する。

 後は若干の関数を知っていれば、以上の道具立てで相当な長さのプログラム、あるいは多種多様なプログラムを書くことができる。と同時に、ここまでを徹底的に理解するためには、そのレヴェルでの練習問題を数多くこなす必要がある。

 実は、初心者にとって、上に挙げたような説明よりも、この練習問題を解くのがすごく難しいのだ。ある問題を解決するために、どうしたらいいか。何もない白紙の状態から、そこにデータと変数を生み出し、それらを組み合わせて、最終的に問題を解決する仕組みを作り上げていく。

 問題を前にして、紙の上にいろいろな値を具体的に書き、どのような手順で問題を解決するかを、落書きしてからプログラムを作り始めるようにしよう。何も見通しなくコンピュータに何かを書き始めてしまってはならない。初心者が書くような短いプログラムであれば、手書きで擬似コードを書いても、大した手間ではない。それなくして直接入力し始めてしまうと、どうしてそういう変数を用意したのか、よく考えることなく入力してしまう。そうなると応用がきかなくなってしまう。手を動かして自分の頭で考えてみる、これが大事なことである。

 いずれにせよ、これまでプログラムの教授はうまくいった試しがない。毎年工夫をしてはいるが、初心者のためのプログラミングではまだ成功したことがない。今年も、すでに反省材料が山のように出来てしまった。それでも、今年を棒に振るわけにはいかないのだから、現状から出発して、最低限でも身に付くように、いろいろと励ましていかなければならないだろう。


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

nice! 0

コメント 0

コメントを書く

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

トラックバック 0

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