中部大学教育研究13
38/148

い。試行錯誤して、適切なプログラムにする努力の過程が大切で、この努力を放棄すれば、いつまでたってもプログラムの作成能力は身につかない。4模擬試験毎年度、12月の最終授業日の前の週に模擬試験を行っている。そして、12月最終の週に、採点したものを返却する。楽天的な性格の学生も多く、それらの学生は何とか単位が取得できるものと思っている。実際の模擬試験の成績は非常に悪い。これが定期試験ならば、7割は不合格である。模擬試験の結果から、これでは再履修になってしまうと危機感をもつ者も多い。それで、冬休みに挽回すべく勉強する学生は救われる。勿論、何の手も打たない者もいる。単位取得をあきらめてしまっている学生もいる。模擬試験は、自分の実力を評価するのに効果がある。自分でプログラムを作れるようになることが授業の目的であるので、授業最終日(2月中旬)に行う定期試験には、勿論、模擬試験とは同じ問題は出さない。プログラムが十分に作れない学生には、冬休みに頑張って勉強すれば、必ず、定期試験で良い点がとれ、合格すると激励している。実際、模擬試験が0点で、冬休みにかなり勉強して、定期試験で80点をとった学生もいる。模擬試験の採点には時間がかかり、苦痛であるが、それだけの時間を使う価値はあると思っている。5実習課題提出時の質問例実習課題の提出では、友達のプログラムをコピーして提出することが目立つ。それを防ぐには、提出時に、自分でプログラムを作ったならば、すぐに答えられる簡単な質問をすることが効果的である。これは大変に疲れる仕事である。普通は、そこまではしないようであるが、コピーを防ぐには、これしかないと思われる。以下に、質問の具体例を示すことにする。【質問例1】main(){intmax,k;max=0;while(scanf("%d",&k)!=EOF)if(k>max)max=k;printf("%d\n",max);}上記のプログラムは、CNTLキーを押した状態でDキーを押す(unix環境)まで、繰り返し入力した正の整数のうちの最大値を求めるものである。この場合、max=0;という文は、「最大値としてありえない数」を最初に初期値として設定している。学生には、このプログラムを簡単に説明し、10000未満の正整数を入力したとき、その最小値を求めるプログラムに変更したものを作れという課題を与える。大方の学生は以下のような正しいプログラムを書く。main(){intmin,k;min=10000;while(scanf("%d",&k)!=EOF)if(k

元のページ  ../index.html#38