下準備
テストドライバの導入
「第11回基礎固め」のテストドライバを導入する。以下の手順で行う。
- ダウンロード のページを開く (ここをクリック)
- プロジェクト「java20XX」にある「test」の左側の「+」をクリック
- ツリーが展開されるので「install-libraries.xml」を右クリック
- 「実行(R)」にマウスカーソルを合わせる
- 「1 Ant ビルド」をクリック
- 「コンソール」タブに"BUILD SUCCESSFUL"と表示されれば成功
- eclipseの画面でプロジェクト「java20XX」を右クリック
- メニューが表示されるので、「最新表示」をクリック
- "week11basic.zip" をデスクトップなどにダウンロード
- eclipseの画面でプロジェクト「java20XX」を右クリック
- メニューから「インポート(I)」を選択
- 「インポート」ウィンドウが表示されるので、「Zip ファイル」あるいは「Archive ファイル」を選択
- 「次へ(N)」をクリック
- 宛先フォルダー(L): が「java20XX」になっていることを確認
- From zip file: の右側にある 「ブラウズ(R)...」をクリック
- ファイルダイアログが表示されるので、ダイアログ内に表示されたダウンロードしたファイルをダブルクリック
- 前の画面に戻るので、From zip file: のエリアに正しいパスが入力されていることを確認
- フォルダ「/」の左にチェックがついていることを確認 (ついていなければチェックボックスをクリック)
- 「Overwrite existing resources without warning」にチェックがついていることを確認 (上書きしたくないファイルがある場合はチェックを外す)
- 「終了 (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」クラスを作成する。
- 先ほど作成したパッケージ 「j1.lesson11basic」の上で右クリック
- マウスカーソルを「新規」に合わせる
- 「クラス」をクリック
- クラス名は 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」クラスを作成する。
- 先ほど作成したパッケージ 「j1.lesson11basic」の上で右クリック
- マウスカーソルを「新規」に合わせる
- 「クラス」をクリック
- クラス名は 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 を与えてプログラムを実行 |