Comments
Transcript
第 7 回授業に対するコメントおよびアドバイス 村川 猛彦 2010 年 12 月 6
第 7 回授業に対するコメントおよびアドバイス 村川 猛彦 2010 年 12 月 6 日 1. プログラム打ち込みについて ソースファイルの作成方法についての相談があった.プログラミング基礎Ⅱの課題を 通じて,習慣づけてほしい.野球の守備(構え,キャッチし,投げ,次に備える)や 料理(下ごしらえ,加熱など,盛りつけ,食事,後片付け)などと同様に,プログラ ミングにも「手順」がある. 端末で emacs floatbit.c & を実行して Emacs を起動すると,編集に不要なものが下半 分に表示される.これは C-x 1(Ctrl を押しながら X を押し,両方を離して,1 を押す) とすれば消せる.Emacs において C-x 1 は,編集中のバッファだけを表示させてそれ 以外は表示しないようにするというコマンドである. ファイル名を「floatbit.c」以外にしている学生がいた.指示書きには隅から隅まで目 を通そう.また,「.c」で終わっていないファイル名で開いて,編集していると,キー ワードの色付けや自動インデントといった,テキストエディタの編集支援機能(Emacs の c-mode)の恩恵を受けることができない.残念ながら大学の授業では,箸の上げ下 ろしまで教えることはできない.そこで,①指示があれば指示の通りに,なければ常 識を働かせて行動すること,②何をしているのかを理解するよう努めること(教員・ TA に,何ができて何ができないのかを言うときに役に立つ),③プログラミングの方 法やソフトウェアの活用に関しても授業後に復習すること,を提案したい. 打ち込みを終わってすぐに時間記録の停止ボタンを押す学生がいた.指示したとおり, プログラムの(ある入力での)動作確認を完了してからボタンを押さないといけない. Emacs 上でコンパイルをしようとして,やり方が分からないという相談がかなりあっ た.スムーズな作業のためには,テキストエディタは編集に専念し,コンパイルや実 行は端末(シェル)を使うことを推奨する.Alt-Tab(Alt キーを押しながら,Tab キ ーを押す)によるウィンドウ切り替えは,Windows でも Linux でも利用可能である. もし Emacs だけでコンパイル・実行したければ,次のようにするとよい.まず Emacs のメニューで「ツール」 「コンパイル」の順に選ぶ.ミニバッファで入力を 求められるので,キーボードを使って実行ファイル名を打ち込んで(今回の課題 なら「floatbit」),Enter キーを押す.コマンド実行は,M-!(Alt と Shift を押し ながら,Q のキーの上にある 1 のキーを押して, すべて離す) とし, 「shell command:」 と出れば「./floatbit -3.5」と打ち込んで Enter を押す. 1 2. 論述に対する添削例(「//」以降は村川のコメント) このプログラムは,実数値を入力すると… // 「入力する」のは一般にユーザであり, プログラムではない. (小さな)プログラムや関数の仕様を言うときの決まり文句があり, 「これは,~ を入力にとり,~をするプログラム(または関数)である」がその一例である. なお,「出力する」と書くときの主語は,プログラムや関数でよい. では単純に「実数値を入力にとり」と書き換えればいいかというと,まだ難点が ある.argv で取得する際には文字列だからである.実数だとか float だとかはプロ グラムの内部状態の話だ,とも言える.そのことを意識して例えば「これは,数 値を入力にとり,float 型オブジェクトとしての数値のビットパターンを出力する プログラムである」と書けば,良くなる(もっと洗練できる.考えてほしい). プログラムの中で定義している関数は,main,printf,atof である // main はそうだ が,printf と atof は間違い.これらは,標準ライブラリ関数として別途,定義されて いるのを呼び出しているだけである. 関数は,main, argc, argv // これも間違い.main は関数名,argc と argv は変数名(よ り正確には,関数 main における仮引数の名前)である. 変数は,tmp, p, q, delta, c, b である // 変数を列挙するだけでなく,各変数の意味・役 割を明記してほしい. .|floatbit -3.5 // スラッシュ(”/”)が,パイプ記号(”|”.縦棒とも言う)やバックス ラッシュにならないよう,丁寧に書こう. 3. 論述に対するコメント もっと書けるようになろう. 「論述」できるようになろう.箇条書きは, 「メモ」 (論述の前段階)のように見える. 最初に「これは何をするプログラムなのか」が分かるような文を書くように. 変数の説明をする際,プログラム(あるいは関数)の中で出現順に書くとよい. 4. 良い論述の共通点 十分に書けているいくつかの答案には,ソースファイル(論述記載面の裏)に書き込み があった.授業の説明を聞き,自分なりにプログラムコードを理解しながら,書き込んだ ものと思われる.この技法は,試験の論述でも有用である. 2