第11週目演習基礎固め

下準備

テストドライバの導入

「第11回基礎固め」のテストドライバを導入する。以下の手順で行う。

  1. ダウンロード のページを開く (ここをクリック)
  2. プロジェクト「java20XX」にある「test」の左側の「+」をクリック
  3. ツリーが展開されるので「install-libraries.xml」を右クリック
  4. 「実行(R)」にマウスカーソルを合わせる
  5. 「1 Ant ビルド」をクリック
  6. 「コンソール」タブに"BUILD SUCCESSFUL"と表示されれば成功
  7. eclipseの画面でプロジェクト「java20XX」を右クリック
  8. メニューが表示されるので、「最新表示」をクリック
  9. "week11basic.zip" をデスクトップなどにダウンロード
  10. eclipseの画面でプロジェクト「java20XX」を右クリック
  11. メニューから「インポート(I)」を選択
  12. 「インポート」ウィンドウが表示されるので、「Zip ファイル」あるいは「Archive ファイル」を選択
  13. 「次へ(N)」をクリック
  14. 宛先フォルダー(L): が「java20XX」になっていることを確認
  15. From zip file: の右側にある 「ブラウズ(R)...」をクリック
  16. ファイルダイアログが表示されるので、ダイアログ内に表示されたダウンロードしたファイルをダブルクリック
  17. 前の画面に戻るので、From zip file: のエリアに正しいパスが入力されていることを確認
  18. フォルダ「/」の左にチェックがついていることを確認 (ついていなければチェックボックスをクリック)
  19. 「Overwrite existing resources without warning」にチェックがついていることを確認 (上書きしたくないファイルがある場合はチェックを外す)
  20. 「終了 (F)」をクリック

「第11週基礎固め」のテストドライバの導入に成功すると、java20XX プロジェクトの test フォルダに j1.lesson11basic.xml というファイルが作成される。なお、課題1115の自動テストは含まない。

パッケージの作成

過去の演習を参考にして、「j1.lesson11basic」というパッケージを作成する。

配列を使用したプログラム

配列の内容を出力するプログラムを作成する。

このプログラムでは、整数データを格納した配列を作成し、その配列に入っているデータを分かりやすく出力する。

擬似コードの作成

「プログラム全体」の擬似コード

プログラム全体の擬似コードは以下のようにする。

プログラム全体
    int型配列x = 次の要素を持つ配列 {
          10, 20, 30, 40, 50,
    }
    配列xの各要素をスペースで区切って出力
    改行を出力
    
    int型配列yを長さ10で生成
    配列yに0から9までの平方を格納する
    配列yの各要素をスペースで区切って出力
    改行を出力

骨格の作成

クラスの作成

以下の手順で、パッケージ「j1.lesson11basic」に「ShowArray」クラスを作成する。

  1. 先ほど作成したパッケージ 「j1.lesson11basic」の上で右クリック
  2. マウスカーソルを「新規」に合わせる
  3. 「クラス」をクリック
  4. クラス名は ShowArray とする

擬似コードの貼り付け (骨格のみ)

作成したクラスに、各擬似コードの名前を貼り付ける。

package j1.lesson11basic;

public class ShowArray {
    // プログラム全体

}

mainメソッドの作成 (骨格のみ)

擬似コード「プログラム全体」に合わせて、クラス「ShowArray」内にpublic static void main(String[] args) から始まるメソッドを作成する。

全体の骨格

ここまでのプログラムの骨格は以下のようになる。

package j1.lesson11basic;

public class ShowArray {
    // プログラム全体
    public static void main(String[] args) {
    }
}

骨格テスト

ここまでの作業をCtrl+Sを押して保存し、コンパイルを行う (保存時に自動で行われる)。ここでエラーが発生していたら文法エラーなので見直す。

「ShowArray に対する骨格テスト」 を実行する。

骨格テストを行った際に緑のバーが表示されれば、外側から見たプログラムの骨格は正しくなっている。

赤いバーが表示された場合、メッセージを元にプログラムを見直すこと。修正を行い、Ctrl+Sで保存した後に「実行」ボタンをクリックする。

メッセージ 詳細
(クラス名), existence j1.lesson11basic に対象のクラスが存在していない。パッケージやクラス名を確認
(メソッド名), existence 指定されたメソッドが存在しない
(メソッド名), public メソッドを作る際に public が抜けている
(メソッド名), static メソッドを作る際に static が抜けている
(メソッド名), type <T> メソッドを作る際に戻り値の型を間違えている (正しくは <T>)

プログラムへの変換

main メソッドの実装

main メソッドの中身を記述する。

まずは擬似コードをコメントとして貼り付ける

これを元にプログラムを作成する。

package j1.lesson11basic;

public class ShowArray {

    // プログラム全体
    public static void main(String[] args) {
        // int型配列x = 次の要素を持つ配列 {
        // 10, 20, 30, 40, 50}
        int[] x = { 10, 20, 30, 40, 50 };

        // 配列xの各要素をスペースで区切って出力
        for (int i = 0; i < x.length; i++)
            System.out.print(" " + x[i]);

        // 改行を出力
        System.out.println("");

        // int型配列yを長さ10で生成
        int[] y = new int[10];

        // 配列yに0から9までの平方を格納する
        for (int i = 0; i < 10; i++)
            y[i] = i * i;

        // 配列yの各要素をスペースで区切って出力
        for (int i = 0; i < y.length; i++)
            System.out.print(" " + y[i]);

        // 改行を出力
        System.out.println("");
    }
}

上記のプログラム内にある「改行を出力」を表すJavaの命令

System.out.println("");

は、以下の命令と同じ意味になる。

System.out.println();

このように、引数に何も取らない場合は改行のみを表示する。つまり、空の文字列 ("") を表示した後に改行と同じになる。

プログラムの実行

先週までと同じ手順でプログラムを実行する。

実行が成功すると、以下のように表示される。

 10 20 30 40 50
 0 1 4 9 16 25 36 49 64 81

機能テスト

ここまでの作業をCtrl+Sを押して保存し、コンパイルを行う (保存時に自動で行われる)。ここでエラーが発生していたら文法エラーなので見直す。

「ShowArray に対する機能テスト」 を実行する。

赤いバーが表示された場合、メッセージを元にプログラムを見直すこと。修正を行い、Ctrl+Sで保存した後に「実行」ボタンをクリックする。

メッセージ 詳細
期待された結果と異なります 出力された結果が期待された値と異なる。

機能テストの項目

項目名 テストの内容
testRun プログラムを実行

配列の長さを実行時に決める

配列の長さsizeを入力し、続けてsize個の整数を入力し配列に格納する。配列に格納されたデータから値が60以上の要素を出力する。以上のように動くプログラムを考える。

擬似コードの作成

「プログラム全体」の擬似コード

プログラム全体の擬似コードは以下のようにする。

プログラム全体
  入力の準備
  配列の長さsizeを入力
  長さsizeのint型配列xを生成する
  size個の整数データを入力し配列xに格納する
  配列xの値が60以上の要素を出力

骨格の作成

クラスの作成

以下の手順で、パッケージ「j1.lesson11basic」に「DynamicArray」クラスを作成する。

  1. 先ほど作成したパッケージ 「j1.lesson11basic」の上で右クリック
  2. マウスカーソルを「新規」に合わせる
  3. 「クラス」をクリック
  4. クラス名は DynamicArray とする

mainメソッドの作成 (骨格のみ)

擬似コード「プログラム全体」に合わせて、クラス「DynamicArray」内にpublic static void main(String[] args) から始まるメソッドを作成する。ただし、擬似コード「プログラム全体」ではコンソールからの入力を行っていたので、throws IOExceptionをつける。

全体の骨格

ここまでのプログラムの骨格は以下のようになる。

package j1.lesson11basic;

import java.io.*;

public class DynamicArray {
    // プログラム全体
    public static void main(String[] args) throws IOException {
    }
}

骨格テスト

ここまでの作業をCtrl+Sを押して保存し、コンパイルを行う (保存時に自動で行われる)。ここでエラーが発生していたら文法エラーなので見直す。

「DynamicArray に対する骨格テスト」 を実行する。

骨格テストを行った際に緑のバーが表示されれば、外側から見たプログラムの骨格は正しくなっている。

赤いバーが表示された場合、メッセージを元にプログラムを見直すこと。修正を行い、Ctrl+Sで保存した後に「実行」ボタンをクリックする。

メッセージ 詳細
(クラス名), existence j1.lesson11 に対象のクラスが存在していない。パッケージやクラス名を確認
(メソッド名), existence 指定されたメソッドが存在しない
(メソッド名), public メソッドを作る際に public が抜けている
(メソッド名), static メソッドを作る際に static が抜けている
(メソッド名), type <T> メソッドを作る際に戻り値の型を間違えている (正しくは <T>)
(メソッド名), throws java.io.IOException メソッドを作る際に throws IOException が抜けている

プログラムへの変換

main メソッドの実装

続けて、先ほど作成した DynamicArray クラスの main メソッドの中身を記述する。

まずは擬似コードをコメントとして貼り付ける。

// プログラム全体

    // 入力の準備


    // 配列の長さsizeを入力

    // 長さsizeのint型配列xを生成する

    // size個の整数データを入力し配列xに格納する


    // 配列xの値が60以上の要素を出力

これを元にプログラムを作成する。

// プログラム全体
public static void main(String[] args) throws IOException{
    // 入力の準備
    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

    // 配列の長さsizeを入力
    System.out.print("配列の長さを入力: ");
    int size = Integer.parseInt(reader.readLine());

    // 長さsizeのint型配列xを生成する
    int[] x = new int[size];

    // size個の整数データを入力し配列xに格納する
    for(int i=0; i<x.length; i++){
        System.out.print("第" + i + "番のデータを入力: ");
        x[i] = Integer.parseInt(reader.readLine());
    }

    // 配列xの値が60以上の要素を出力
    for(int i=0; i<x.length; i++)
        if(x[i] >= 60)
            System.out.println("x[" + i + "]=" + x[i]);
}

プログラムの実行

先週までと同じ手順でプログラムを実行する。

入力に 5(size), 10, 90, 30, 60, 50 と順に与えてやると、以下のように表示される。

配列の長さを入力: 5
第0番のデータを入力: 10
第1番のデータ入力: 90
第2番のデータ入力: 30
第3番のデータ入力: 60
第4番のデータ入力: 50
x[1]=90
x[3]=60

機能テスト

ここまでの作業をCtrl+Sを押して保存し、コンパイルを行う (保存時に自動で行われる)。ここでエラーが発生していたら文法エラーなので見直す。

「DynamicArray に対する機能テスト」 を実行する。

赤いバーが表示された場合、メッセージを元にプログラムを見直すこと。修正を行い、Ctrl+Sで保存した後に「実行」ボタンをクリックする。

メッセージ 詳細
期待された結果と異なります 出力された結果が期待された値と異なる。

機能テストの項目

項目名 テストの内容
testRun 入力に 5, 10, 90, 30, 60, 50 を与えてプログラムを実行