学生時代、感動した話を今の学生にした。
「電卓は四則演算(加減乗除) を総て加算器で計算している。
引き算も、掛け算も、割り算さえ・・・」
昔、授業でこの話を聞いた時には 「感動」 したものだ。
だからと言って、今の学生に感動を強要する訳ではない。
感動する事から興味がわき、勉強するようになるものだ。
昔の政治家の吉野作造氏の言葉に、学生本来の姿を諭しているものがある。
「学生の真理探究の態度は多情でなくてはなりません。・・・・・・
常により正しからんとして、いつでも態度を改めうるように用意していなくてはなりません」
◇ ◇ ◇
先日、ある学生から次のような質問があった。
char a[5][10]={"abcde", "fg", "hijk", "lmn", "opqrtuvw"};
char *b;
b=a;
printf("%s\n",b);
先生、3行目でエラーです!
そんなハズは無いと思うが・・・、しかしエラーである。
我々は教科書上でしか判断しないので、若い感性の疑問に驚かされる。
確かにエラーである。
一次元配列のアドレスもダメである b=a[0];、 b=&a[0][0]; なども試してみた。
ポインタ配列 char *a[5]={"abcde",・・・ なら、とやってみた。
江崎玲於奈先生(ノーベル賞学者)がトンネルダイオードを発見したが、最初は学生の発見からだった事実を思い出した。
改めて調べてみたが要領を得ない。その時、「ダブルポインタ」なる言葉が、隣の隣の席から聞こえてきた。
そこで、3行目をキャストしてみたらうまくいった。
b=(char*)a; //char **
理由を紙に書いて、学生に渡した。
そしたら、その学生から、次のような質問も受けた。
「4行目、『 printf("%s\n", a+1); 』 にしたらうまくいきますが、
『 printf("%s\n", a+=1); 』 にするとエラーです?」
その理由については、学生自身が考えるように少し時間を置いた。
それにしても、これからが楽しみな授業になりそうである!
PR