・   「Java I 実習」 第2回

2:アルゴリズムとメソッドの役割

複数のメソッド間の「呼び出し」 と「繰り返し」や「条件分岐」の構造について練習します。


・ 準備:

  1. LinuxもしくはWindowdsの環境でログインしなさい。
  2. 作業のための端末エミュレータのウィンドウを開きなさい。
  3. ホームディレクトリの下の Javaの作業用のディレクトリ java の中に移動しなさい。

・ 基本課題1:「メソッドの定義と呼び出し」
複数のメソッドを定義して、それを呼び出すプログラムです。 if文を用いた「条件分岐」も使用します。
プログラムの中で時刻を調べるには java.util.Calendar クラスの機能を利用できます。

  1. ソースファイル GoodMorning.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. java コマンドを通じてプログラムを実行しなさい。

vi  GoodMorning.java
javac  GoodMorning.java
java  GoodMorning

・ 基本課題2:「メソッドの定義と呼び出し(2)」
今度は少し複雑な計算の処理を行なうメソッドを定義してみましょう。

  1. ソースファイル Calculation.java (教科書 P.29-30)を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. java コマンドを通じてプログラムを実行しなさい。

vi  Calculation.java
javac  Calculation.java
java  Calculation


・ メールによるレポート課題: 以下の結果を tatsuo宛のメール で知らせてください。 件名(Subject)は program2 (全員必ず提出すること。)

  1. 課題1:のプログラムを実行した時刻と、実行した出力結果。
  2. 課題2:のプログラムを実行して得られた、 2の30乗の値と、100000の後の最初の素数の値。

・ 応用課題1:「プログラムの処理の内容の変更」

  1. 課題4のプログラムを 3の10乗の値と 300000 の後の最初の素数を 計算するように書き直しなさい。
  2. コンパイルし直し、実行してみなさい。

・ 応用課題2:「占いのプログラム」
乱数を発生させ、 if文を用いた「条件分岐」によって運勢のメッセージを表示させます。
乱数の発生には java.lang.Math クラスの機能を利用できます。

  1. ソースファイル Fortune.javaを作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. java コマンドを通じてプログラムを実行しなさい。
  4. 実行を何回か繰り返してメッセージがランダムに表示されることを確認しなさい。

・ 応用課題3:「switch-caseによる条件分岐」

  1. GoodMorningのプログラムを switch-case で書き直したソースファイル GoodMorning2.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. java コマンドを通じてプログラムを実行しなさい。
  4. 時刻が12時を過ぎてから実行してみなさい。 メッセージの内容が変わることを確認してください。

・ 応用課題4:「2重ループの練習」
2重ループを用いて九九の掛け算の表示を行います。

  1. ソースファイル KuKu.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. java コマンドを通じてプログラムを実行しなさい。

・ 応用課題5:「繰り返しと条件分岐の組み合わせ」

  1. ソースファイル Loan.java を作成しなさい。
  2. javac コマンドでコンパイルをしなさい。
  3. java コマンドを通じてプログラムを実行しなさい。
  4. 460万円の学資ローンを借り、 月利0.8%(年利約10%)の場合、毎月4万円ずつ返済しようとすると、 何年何ヵ月かかりますか?

・ 応用課題6:「プログラムの処理の内容の変更」

  1. 余力のある人は、 課題5のプログラムを修正して、 利息がない場合はどれだけの期間で返済できるか計算させ、 先程の結果と比較しなさい。

・ 応用課題7:「プログラムの処理の内容の変更」

  1. さらに余力のある人は、 課題4のプログラムを修正して、 次のように数字がきれいにそろうように工夫してみなさい。 ヒント:(java.io.PrintStreamのAPIドキュメント)

 1  2  3  4  5  6  7  8  9 
 2  4  6  8 10 12 14 16 18 
 3  6  9 12 15 18 21 24 27 
 4  8 12 16 20 24 28 32 36 
 5 10 15 20 25 30 35 40 45 
 6 12 18 24 30 36 42 48 54 
 7 14 21 28 35 42 49 56 63 
 8 16 24 32 40 48 56 64 72 
 9 18 27 36 45 54 63 72 81


・ 応用課題8:「今月のカレンダーを表示させる」

  1. さらに余力のある人は、Calendarクラスの機能を利用して、 calコマンドのように今月のカレンダーを表示するプログラムを作成してみなさい。 (ヒント1)
  2. 可能ならば、本物のcalコマンドのように指定された月、 年のカレンダーも表示できるようにしてみなさい。 (ヒント2:外部から与えられた引数は、main()メソッドの Stringの配列 argvに渡されますが、その文字列をint型のデータに変換するためには java.lang.Integer クラスを利用します。)

・ ボーナス課題: 応用課題7 もしくは応用課題8 ができた人は、そのソースファイルの内容を、 tatsuo宛のメール で知らせてください。 件名(Subject)は ouyou2 (正解者は実習の評価に得点がプラスされます。)


実習の目次   今週の講義の内容