ホームページ目次1997年前の話次の話

UNIXとCのテストも何とか済ましちゃった

1997年8月2日

さて、最終日には試験をやった。各章毎にディレクトリを作らせて、練習 のプログラムはその中に作成させておいた。だから、最終日には試験専用の ディレクトリを作成させて、その試験用のディレクトリで演習を行なわせた。

さて、試験問題、どんな問題にしようかずっと悩んでいた訳ではない。問題の 出し方にも様々な種類が考えられる。

  1. 文章で作るべきプログラムを説明し、プログラムを作らせる。
  2. 正しく動作するソースプログラムを入力させ、キー入力ミスなどを自分で 取り除かせる。
  3. プログラムに一部手を加えて、機能を付け加える。
  4. プログラムの構成を変えさせる。
  5. 正常に動作しないソースプログラムを与え、ミスを見つけさせる。
  6. ペーパーテストを行なう(穴埋めとか)。
など、まあ色々考えられるんだけれども、実際には以下のように行なった。

正しく動作する短い簡単なプログラムを、試験前日の夜に急遽作成したので ある。そのプログラムは、100以下の素数をプリントするという極めて簡単 なものである。

結局、このソースプログラムを与えて、キー入力させた。正しいソースプロ グラムを用意しておき、コピーして使わせてもよかったのだが、それではキー 入力時に犯す入力ミスを意識させることができない。ちゃんと、自分で入力し、 ミスし、コンパイルエラーが出て悩ませられることが重要なのである。

生まれて始めてコンピュータに触っている2人には、入力はきついだろうが、 何とかやっていた。日本の大学生に比較すれば、きっと入力ミスは遥かに少な いのではないかと思う。

まあ、各自、少なくとも1個所位はミスってくれて、コンパイルエラーを出 しながらやっていた。それでも、キー入力は、初めての2人を除いてはホイホ イできてしまった感じである。

2人は、キー入力が遅いこともあって、今までの練習量も他の者達より遥か に少ない。コンパイルエラーが1つ、自分ではどうしても取れないようであっ た。エラーメッセージで示された行に誤りがあり、非常に簡単なパターンなの であるが、エラーメッセージの行以外のところばっかりに視線が行ってしまう のである。「この行にエラーがあるよ」と教えても、他の行を見てしまうので ある。仕方がないから、プリントアウトし、「この個所にエラーがあるから探 しなさい」とサインペンで範囲指定して、やっと見つけてもらえた。

最初は、絶対に全員が出来る筈のプログラムの変更である。上限数を100 固定ではなく、キー入力で自由に指定できるように変更する問題である。これ は、ほとんど同じことを今までにやっていたから、すんなりと出来た。

次は、素数のカウントである。何個素数があったかを数えるのである。この あたりから生徒により差が出て来るが、それでも、この問題も全員がちゃんと できた。

最後の問題が、関数化に関するものである。これはちょっと難しいだろうか ら、時間がかかるであろうと思っていた。前日に、別の内容について、プログ ラムも一部を関数にするのを実際にやっていたが、関数全体で1日しかやらな かったのでちょっと練習不足とは思われたが、やはり難しかったようだ。

作る関数は、int isprime(int k) という関数で、main() の一部を関数 isprime の中に移動して、あとは若干の繕いを行なえばいいのであるが、そう は言っても慣れなければ難しい。

問2までで随分差がついていたのだが、最終問題でちょっと苦しんでいる間 に、コンピュータ初めての2人が追い付いてしまった。

main の一部を分けて別の関数の中に入れる所までは、皆何とかできた。しか し、その後の若干の繕い物がなかなか出来ないようであった。main 側は移動後 簡単な修正だから、すんなり出来てしまった。でも、それからが問題であった。

main を正しく補修し、isprime の補修を忘れて動かすものだから、正しく 動作しない。まあ、ほとんどが 前日習ったばかりの return 文を忘れている だけなのだが、これが大変だったのである。isprime から帰ってきた値をプリ ントさせるととんでもない値になったりしているのであるが、この修正に、せっ かく正しく動作している main 側を変更しようとしたり、 isprime の方に何 やら不可思議な細工を施したりであった。

それで、ちょっとヒントを与えることにした。というより、「もし倍数だっ たら return 0; 素数だったら return 1; なんだよ」というあたり前のことを、 プログラムに従ってちょっと説明しただけである。

最終的には、それから若干苦しんで、皆正しく動作するところまで辿りつい たのである。そして、最終的に出来上がったプログラムが、いままでぐちゃぐ ちゃと手を入れていたものより遥かに単純なものであったので、皆、「なんだ、 こんな簡単なので良かったのか」という顔をしていた。

たった5人の生徒であったが、思考先行派の人と、とにかく触ってみる派の 人がちゃんといた。ネパールでも、コンピュータ、とくにプログラミングは若 い人の方が習得は速いようであった。といっても、おじさん2名は、コンピュー タのない場所から来て、いきなり Linux だ、 C だとやらされて、国家建設の 意欲に燃えていても大変だったことと思う。

という訳で試験も無事(?)終え、最終日の残り時間に持参していったVRML のCDをインストールし、3次元シミュレーションを体験してもらった。あと 何年かすると、彼らは仕事上で VRML を利用する可能性がかなり高い職場にい るので、この体験は重要な筈である。

それから、もちろん Linux のアプリケーションとして重要なゲームも体験 してもらった。ネパールは観光立国である。国家収入の多くが、観光と国際援 助に頼っているのである。観光客にはゲームが重要であり、君達もゲームくら いは知ってなくてはいけないということで、ちょっとxjewel(JEWEL BOX)のデモ もした。たったの10万点位しか出なかった。彼らもやったが、相当難しく、 まだテトリスの段階であった。

まあ、そういう訳で研修も済み、最後にC言語研修の打ち上げをやりに、夜 景の見えるという高いビルに登って夜まで飲んだり食べたりした。食べること に関しては、なかなかに大変なのである。各自の宗教の違いなどで、食べられ ないものがあり、我々日本人のように何でも注文できる訳ではない。

そんな訳で、研修が終り、この『パソコン生活つれづれノート』のネパール 特集も、今回で終ることにする。


ホームページ目次1997年前の話次の話