◎第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
一覧へ