レポート提出課題 応用情報処理V(2004)

以下の課題のうち、任意のものを2つを行うこと。できれば、3つやってください。

そして、作成結果のプログラムをXOOPSサイトで提出をすること。

送付するファイルは次の要件を満たしていることを原則とする。

提出したことは、メールでも知らせてください。メールは以下のように記載します。

JBuilder以外での提出も認めますが、その場合は作成したソースファイルなどを、必ず、学籍番号-課題番号 という形式のフォルダに入れ、そのフォルダを部分パスとして含むように圧縮をした結果を添付するのを基準とします。なお、JBuilder以外の開発ツールでの提出の場合には、事前に相談してください。

課題の締め切りは:2005年1月25日(火)とします(決定)

日本時間で1月25日中であればいいとします。もちろん、それ以前に提出してもらってもかまいません。どうしても遅れるけども提出したい場合は、個別にメールで相談してください(若干の猶予はありますが、あまり当てにしないほうがいいでしょう)

提出結果については、指導が入ることがあります。指導はメールで送ります。ない場合もあります。

受け取ったかどうかは、講義のホームページで随時公開します。

課題1

ある整数supに数値を代入する。2〜その整数までの範囲の整数に、素数がいくつ存在するか求めて、その個数を標準出力に書き込むこと。 また、素数でない数はいくつ存在するかも求めて標準出力に書き込むこと。

あわせて、プログラムに、なるべく詳細に意図したことをコメントとして書き込んでおくこと。

コメント:第4回目の講義の練習問題を発展させればできるはず。

課題2

ある整数numberに数値を代入する。そして、1からその数値までに存在するすべての整数の合計を求めて標準出力に書き出す。たとえば、number = 4なら、1+2+3+4=10を求める。もちろん、numberがどんな数でも(とは言っても上限があるが)きちんと求められるようにする。

そして、プログラムを発展させて、numberとして与えてられるいちばん大きな数値はいくつかを求めるプログラムを作成してみること。1からその数までの合計についても、numberと同じ型の変数を使って計算を求めることにする。とりあえず、numberが、short型でやってみてほしいが、そのほかの整数型でもチャレンジしてもらいたい。たとえば、byte型だと、1〜15の合計は120、1〜16の合計は136となるため、16までのすうの合計をbyte型の変数では計算できないことになる。byte型の上限が127であることを思い出そう。

ならば、1から順に数値を増やして行って、たとえば16までの合計が、1つ前の数値、つま15までの合計の数値に16を加えたものかどうかを判断すると、どこかでおかしくなるはずだ。そのときの数値が、上限ということになる。これがヒントであるが、ちょっと複雑な問題なので頭をひねってもらいたい。

課題3

ウインドウに年と月を入力するためのJTextFieldをそれぞれ配置する。そして、ボタンをクリックすると、その月のカレンダーを表示するようなアプレットを作成すること。

カレンダーの表示では、シンプルな方法は、1つのJTextAreaを作り、そこにテキストで作ったカレンダーを表示すればよい。

別の方法としては、JTextFieldを7列5行にわたってきれいに縦横にならべて、その1つ1つに数字を埋めていけばいいだろう。

いずれにしても、凝ってくれてもいいのだけど、とにかく文字が出ればいいです。あまりきれいにレイアウトされていなくてもOKとします。

ウインドウに出すのが難しいと思ったら、標準出力に書き出すのでもかまいません。

この課題にはヒントが必要だと思うので、必要に応じてリクエストをください

ある月の1日が何曜日かを求める方法

プログラムの最初に「import java.util.*;」を書いておく。そして、2001年11月1日の曜日を求めたいのであれば、次のようなプログラムを作成する。2行目で、なぜか(笑〜計算がしやすいなどの理由はあるけど)、月だけは1を引いた数値を与える点に注意をしてほしい。

Calendar cal = Calendar.getInstance();
cal.set(2001,10,1);
int w = cal.get(Calendar.DAY_OF_WEEK);

以上のようにすると、変数wの値から、2行目のsetメソッドの引数で指定した日付の曜日がわかる。wが1なら日曜日、2なら月曜日・・・・というわけで、7なら土曜日となる。

課題4

教科書の第5週目にあるプログラムでは、画像を左上から右下にかけて配置している。これを、右上から左下にかけて配置されるようにプログラムを改造してみること。

課題5

第10回目の練習問題10−1

ウインドウ内に、テキストフィールド(JTextField)が2つ、ドロップダウンリスト(JComboBox)が1つ、ボタンが1つ、ラベル(JLabel)が1つあるようにします。

ドロップダウンリストでは、四則演算の記号、+−×÷を選択できるようにしておく。

そして、テキストフィールドに数字を入れて、ボタンをクリックすると、ドロップダウンリストで選択している演算記号に応じて、それぞれ2つのテキストフィールドの値に対して演算を行った結果をラベルに表示するようにすること。(たとえば、テキストボックスにそれぞれ10と3という数値があって、ドロップダウンリストで×が選択されていれば、ボタンをクリックすると、ラベルに30が表示されるようにする。)

ヒント:JComboBoxで何番目が選択されているかを知るには、getSelectedIndex()メソッドを使えばいい。また、選択されている項目は、getSelectedItem()メソッドを使う。いずれも、引数は指定しない。

画面表示をわかりやすくするために、それ以外のコンポーネントを設定してもいい。

応用問題:ドロップダウンリストの演算記号を選択すると、即座にラベルに選択しなおした演算子による計算結果が入るようにすること。

課題6

整数の変数を3つ定義し、その中の最大値、最小値を求めるプログラムを作成すること。変数は通常の方法で代入するが、いろいろな数値で試してみるように。結果は、標準出力への書き出しでよい。

さらに、数値の配列を与えて、その中での最大値と最小値を求めるプログラムを作成すること。

(余裕があれば、ウインドウのテキストフィールドに数値を入れて最大や最小を求めるようにしてみよう。このとき、元データは、たとえば、カンマで区切ったテキストを入力するなどといった手法で、可変の個数で作業ができるようにしてみるのもいいかもしれない)