[[プログラミング入門(2017年度前期)]] 第4回の演習の総評です. * 全般 [#m630baf6] ** 再提出の基準 [#y38dd812] - 今回は再提出のチャンスはありません - 提出されたものを採点したら,課題提出システム上の状態を「受理」に変更しています - 提出された内容に誤りがある場合は,その旨を個別にコメントしています ** README [#ka4087d4] - README.TXT は必ず書いて提出しましょう - 少なくとも問題とファイルの対応付けは明記されていないと,採点に時間がかかります ** すべての課題に共通するコメント [#bf51fa6d] - 不要な変数を定義するのはやめましょう -- 定義だけされていて一度も代入しない変数が見受けられました - インスタンス変数にするべきか,ローカル変数にするべきかを適切に判断しましょう -- 1つのメソッドの中でしか使わない変数をインスタンス変数にする積極的理由はありません - クラス名・メソッド名の付け方に注意しましょう -- 例: ParsleyDrag のようなクラス名をつけているのに,ドラッグに関する機能を何も実装してないものがありました.この場合 Drag という名前をつけるのは不適切です - 問題文中で指定されたクラス名・メソッド名は守りましょう -- 例: FibSpiral に getLength というメソッドを定義する問題で,getlength や length といったメソッドを定義するのは誤りです. * 各課題について [#p4f635ec] ** 4-1 [#x77a85c9] - ほとんどの人が正解していました - 以下のようなコードを書いている人がいましたが,一旦 square に Square のインスタンスを代入する必要はありません. ResizableObject resizableObj; Square square; square = new Square(); resizableObj = square; -- Square は Resizable インターフェースを implements しているので以下のように書けます resizableObj = new Square(); ** 4-2 [#j44d79d2] - Parsley のスペルが間違っているものがありました - また,複数のファイルで Parsley のスペルが一貫していないものもありました - countBranches メソッドが呼び出されるたびに違う値を返すものがありました -- 例: インスタンス変数を使って count をインクリメントしており,countBranches を呼び出すたびに,4 -> 8 -> 12 のような結果が返る - 複数の Parsley を描画した場合,countBranches メソッドが正しい枝の数を返さないものがありました -- 例: 数を数えるために static 変数を使っている場合,すべての Parsley のインスタンスで同じ変数を共有するため問題が発生します ** 4-3 [#z7d200bb] - getLength メソッドの定義を忘れている人がいました - getLength について,Parsley の countBranches と同様の誤りをしている人がいました - TODO: 基準点 - FibSpiral のコンストラクタの引数 point の座標が,渦巻きに外接する長方形の左上の座標になる必要があります ** 4-4 [#bd23a8a7] - 最後の点までつないだあと,キャンバスをクリックすると java.lang.ArrayIndexOutOfBoundsException 例外 (エラー) になるものが多くありました -- 例: 長さ3の配列 a に対して,a[3] を実行するとこのようなエラーになります - 上級者向け?: 画面がクリックした際に,すべての点について点がクリックされたか判定しているコードが多くありました.この場合,点の数が多くなるとプログラムの実行にかかる時間が長くなります.点の数に関わらず一定の時間で次の点がクリックされたかを判定することが出来ます. ** 4-5・4-6 [#v7539156] - これらの問題に取り組んだ人はほとんど正解していました - computePi がπではなく,4/πを返しているものがありました