オブジェクト指向プログラミング(実習1回目)


以下の課題を解け. 必要に応じて講義資料を参考にすること.講義資料は ここにある. 課題の提出期限および提出方法は以下の通りとする.

課題1:

Ex1 という名前のプロジェクトを作成し, その中に Ex1 という名前のメインクラス(main()メソッドを持ったクラス)を作成せよ.
さらに, そのメインクラスを実行したときにコンソール上に「Exercise1完成」という文字列が表示されるように, メインクラスを書き換えよ.
なおこの課題は, 完成したソースコードのみ提出すること.

課題2:

Ex2 という名前のプロジェクトを作成し, その中に Ex2 という名前のメインクラスを作成せよ.
次に, Ex2 クラスを以下のように書き換えよ.
さらに, 「System.out.println("found");」の行にブレークポイントを置いてこのプログラムをデバッグ実行せよ.
ブレークポイントに止まったときの変数a, b, cの値はいくつか? 完成したソースコードを提出し, a, b, cの値を入力すること.

public class Ex2 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int a, b, c;
        for (a = 1;; a++) {
            for (b = 1; b <= a; b++) {
                for (c = 1; c <= b; c++) {
                    if (b * b + c * c == a * a) {
                        System.out.println("found");  // この行にブレークポイントを置く
                    }
                }
            }
        }
    }
}

課題3:

Ex3 という名前のプロジェクトを作成し, その中に Ex3 という名前のメインクラスを作成せよ.
次に, Ex3 クラスを以下のように書き換えよ.
さらに, 与えられた2つの引数x, yのうち大きい方の値を返すようにプログラム中のメソッドmax()を完成させよ.
また, 17と12と21のうちの最大値がコンソールに表示されるようにmain()メソッドを完成させよ.
ただし, main()メソッドの完成に当たっては, メソッドmax()を呼び出して使うこと. 課題は, 完成したソースコードのみ提出すること.

public class Ex3 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int a, b, c, d;
        a = 17;
        b = 12;
        c = 21;
        System.out.println("17と12の最大値:" + max(a, b));
        d = [ここを埋める];
        System.out.println("17と12と21の最大値:" + d);
    }

    public static int max(int x, int y) {
        [ここにコードを書く]
    }
}

課題4(必須ではない):

Ex4 という名前のプロジェクトを作成し, その中に Ex4 という名前のメインクラスを作成せよ.
以下のプログラムを参考にし, Ex4 クラスの中に, int型の引数nを与えたときに
次の漸化式で定義される数列{an}の第 n 項の値を計算して int 値で返す再帰関数 f() を作成せよ.
完成したソースコードを提出し, 第 20 項の値を入力すること.

a1 = 1
an+1 = 2 an + 3

さらに, main() メソッドから f() を呼び出して, 第 20 項の値を計算し,
その計算結果がコンソールに出力されるように main() メソッドを書け.
public class Ex4 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int x;
        double y;
        x = 20;
        [ここにコードを書く]
        System.out.println("第20項は" + y);
    }

    public static int f(int n) {
        [ここにコードを書く(ただし, fを再帰呼び出しすること)]
    }
}