◎第12回 プログラムの作成

下へ一覧へ
○テキスト
7章、8章

下へ上へ よいプログラムを作成するために,インタフェース,プログラム書法, データ構造の選択,プログラムのテストなど
下へ上へ よいプログラム ・正しい結果を出す ・使いやすい ・修正しやすい
下へ上へ 正しさの検証 プログラムのテスト 典型的データでの動作 通常、一般的に想定されるデータで 正しい結果が得られるか 境界での動作 通常許される(あるいは、想定される)データと そうでないデータの境目にあるデータでは どういう動作をするか? 誤ったデータでの動作 誤ったデータでも致命的結果を招かないか? 部分的にも、総合的にもテストする
下へ上へ テストの結果、間違いが判明したら、修正する。 「間違い」の種類 1. もともとのアルゴリズムに問題がある。 2. アルゴリズムをプログラムにする段階で誤りがある。 (人間の理解とコンパイラなどシステムの理解に相違があるなど) 3. プログラムを入力する段階で誤りがある。 これら間違いを起きにくくする、もし起こっても、その原因の発見を容易 にするためには、次の二つ事項「データ構造」「プログラミングスタイル」が 大事である。また、これらは機能を拡張するなどの場合にも大事である。
下へ上へ データ構造の選択 単純な配列がよいか スタックがよいか キューがよいか 線形リストがよいか 木構造がよいか 適切に選択するとプログラムが簡単になって 見やすい・修正しやすい・間違いにくい などが実現しやすくなる。
下へ上へ プログラムのスタイル 見やすい 修正しやすい 間違いにくい C言語・Pascal言語 などは、ブロック構造があるので、段つけ(インデント、 字下げ)をして一目で制御構造がわかるようにする。 わかりやすい変数名をつける。 単に a, b, c では、後でなにを意味しているかがわからない。 コメント(注釈)をつける。 他人にわかるようにする。コメントをつけないと、 3日もすれば自分でもわからなくなる。(3日後の自分は他人)
下へ上へ 意味のない例 a=b; /* aにbを代入する */ (このコメントの内容なら、プログラムを見ればわかる!) もう少しよい例 i=n; /* i をデータの個数で初期化する */ ( これがある繰り返しの初期化であることと、 n がデータの個数であることが、わかる )
下へ上へ もう少しよい例 i=kosuu; /* i をデータの個数で初期化する */ ( 変数名を見るだけでそれが、(データの?)個数で あることがわかる。i=numData;のほうがもっと わかりやすいかも知れない ) すべての文につける必要はないが、「何」をしているかは 書くようにする。上の例でわかるように、「何」はプロ グラミング上の事項よりは、解決するべき問題に即した 事項を書く。
下へ上へ 使いやすさ 人間とのインタフェース (マン・マシンインタフェース) (入出力) ・わかりやすいメッセージを出す ・誤ったデータの処理 まず、判断する。 対応 メッセージを出す 再入力 無視する 下へ上へ ・入力データが修正が容易にできる 沢山のデータを入力する時、間違いは必ずあるので 全部入れ直すことは避けたい あらかじめ、ファイルに入れておいてファイルを読めるようにすると 自分の好きなエディタで編集できる。 ・出力データが見やすい やたら多くのメッセージを出せばよいというわけではない。 多すぎると必要なデータが見えないこともある。 多くのデータはファイルに出力できるようにしておくとよい 他のプログラムで利用しやすい形にしておくと便利 (gnuplot など) 下へ上へ ・いくつかの「モード」を作る 多くのメッセージを出すモード「冗舌」モード verbose mode 中間結果を出すモード 「デバッグ」モード debug mode メッセージをほとんど出さないモード 「静粛」モード silent mode これらのモードは、コマンドラインから指定できるようにする。 ( 「微分方程式」を数値的な近似解を求める、ちょっと複雑な プログラムの例として ~eenagai/ic2/sample12.c を参照できる )
下へ上へ ○演習(提出する必要はありません) (これまでの課題を提出していない人は、それを優先してください) これまでのプログラム( 課題・演習・例題等 )を 使いやすい、きれいなプログラムに直してみよ
一覧へ上へ ◯課題 1.最後なので実質的にはありません。これまでの課題でやっていない ものがあればやってください。 2.コンピュータ入門第二の演習をしての感想・意見を出してください。 方法は、次のどれか( 可能なかぎり a)、どうしてもだめなら b) ) (〆切 2/5(木)10:40) a)メール アドレス: E1 クラス、ta101031@edu.cc.uec.ac.jp E2 クラス、sa101024@edu.cc.uec.ac.jp E3 クラス、eenagai@edu.cc.uec.ac.jp b)A4 レポート用紙 (idと名前を書いてください) 提出先: E1 クラス:w8-615 E2 クラス:w2-407 E3 クラス:w2-421
一覧へ