レポート採点

課題1

合格者リスト

19ec045, 19ec050,19ec057, 20ec004, 20ec007, 20ec016, 20ec018, 20ec019, 20ec024, 20ec025, 20ec027, 20ec029, 20ec030, 20ec042, 20ec048, 20ec049, 20ec050, 20ec057, 20ec058, 20ec060, 20ec062, 20ec064, 20ec065, 20ec066, 20ec069, 20ec071, 20ec079, 20ec081, 20ec083, 20ec084, 20ec085, 20ec087, 20ec092, 20ec103, 20ec110, 20ec111, 20ec115, 20ec118, 20ec401 (39)

採点基準

以下のいずれも満たしているレポートを合格とした。

  1. 学籍番号と氏名が記載されている
  2. プログラムが白黒またはそれに準ずる可読性の高い配色で記載されて いること(特に白地に黄色字などは認めない)。 さらにプログラムに対して、 クラスやメソッドごとに日本語で説明されてい ること
  3. 計算原理が正しく説明されている。 特に、状態遷移図には小数点の入力に対応する状態遷移が書かれていること。
  4. 不正な入力の典型的な例とその復帰について (数を入れずに演算キー、小数点の2度押し、異なる演算キーの連続入力、 ゼロ除算など)
  5. 考察に課題の解決に関して考えたことがが書かれている。 なお、課題に関係のない機能を追加する話は考察と認めない

また、プログラムのコメントや、外部へのリンクは一切採点対象としない。

不合格になった場合、新たに次の条件を追加します。 上記の条件に加えてこの条件を満たすようにレポートを修正して再提出し てください。

追加条件

1.1-200/3.3+4.5 が正しく -55.0060606 または -55.77272727272727 と計算できることを、実行結果を示すこと。

なお、再提出をする場合は、学籍番号-2.pdf というファイル名で 課題1の レポートボックス に アップロードすること 12/1 までに提出すれば再評価をします。

なお、再再提出をする場合は、学籍番号-3.pdf というファイル名で 課題1の レポートボックス に アップロードすること 12/9 までに提出すれば再評価をします。

なお、再再再提出をする場合は、学籍番号-4.pdf というファイル名で 課題1の レポートボックス に アップロードすること 12/16 までに提出すれば再評価をします。

さらに、提出をする場合は、学籍番号-5.pdf のファイル名で 課題1の レポートボックス に アップロードすること 12/23 までに提出すれば再評価をします。

12/24以降は 1/10 までに、学籍番号-6.pdf のファイル名で 課題1の レポートボックス に アップロードすれば、再評価します。

再提出レポートについて

電卓のプログラムはインターネットを探せばいくらでもダウンロードできる という前提なので、 プログラムを載せるだけでは合格になりません。 必ず、クラス、メソッドをすべて日本語または英語で説明してください。 プログラム自体はプログラムの説明ではありません。

また、説明において「Mainは上のようになる」など、プログラムの中身の説 明が「ように」以外無いのは説明と見なさない。 「ように」を禁止するわけではないが、図、プログラムなどが無くても、文章 として意味が通じるようにすること。

状態遷移図の矢印に文字や記号以外が現れてはいけません。 特に「2回目」が現れてはいけません。 かならず、矢印には 文字だけのラベル付にしてください。 有限回の計数は状態 を増やせば状態遷移図で数えられます。

だめな例
良い例

不正入力のテストは、一つ以上入力例を示し、その時の画面も示すこと。

プログラムの説明の例

以下のようなプログラムについて、クラスやメソッドごとの日本語の説明の 見本を示します。


class MyFrame extends JFrame {
    public void setCloseActionListener(ActionListener a){
	closeActionList.add(a);
    }
    private final LinkedList<ActionListener> closeActionList
	= new LinkedList<ActionListener>();
    class MyWindowListener extends WindowAdapter {
        @Override
	public void windowClosed(WindowEvent e){
	    for(ActionListener listener : closeActionList){
		listener.actionPerformed(
                   new ActionEvent(
                     this,ActionEvent.ACTION_PERFORMED,"close"));
	    }
	}
    }
    public MyFrame(){
        super();    
	setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
	addWindowListener(new MyWindowListener());
	setSize(FrameConstant.WIDTH,FrameConstant.HEIGHT);
	setTitle(FrameConstant.TITLE);
    }
}

MyFrameクラスはJFrameクラスを継承したクラスであり、 コンストラクタの他は、 setCloseActionListenerメソッ ドを含んでいる。 また、インナークラスとして、WindowAdapter クラスを継承した MyWindowListener クラスを定義した。また、ActionListener のLinkedList として closeActionList フィールドも定義した。

setCloseActionListerメソッドはActionListener のオブジェクト を引数とし、closeActionList フィールドに受け取ったActionListener を 追加する。

MyWindowListerインナークラスでは、 windowClosedメソッドをオーバライドする。 このメソッドは、closedActionList に含まれるすべてのActionListener に対して、 close を示すActionEvent を与えて actionPerformed メソッドを呼び出す。

コンストラクタでは Window のClose ボタンを押されたときのデフォルトの動作をウィンドウ破棄 (DISPOSE_ON_CLOSE)に設定し、 WindowListener として、インナークラスの MyWindowListener のオブジェク トを与える。 そして、幅と高さを設定し、タイトルを設定する。


坂本直志 <[email protected]>
東京電機大学工学部情報通信工学科