*グラフィックス基礎及び実習 2017年度 第6回 [#e9701092]
 
#contents

//&color(#ff0000){工事中}; 

//**注意 [#b90cec8d]
**課題A(self) 完成目標: 今回の実習終了まで [#kadaiA]

問1,2を全てやりなさい

***問1  配列の配列 [#pe2941c5]

+ 教科書 p.47-48 「5.3 多次元の配列」を読み,T52 を実際に作成して動作確認しなさい.
+ 教科書 p.48-49 「5.4 配列の配列」を読み,次の手順で T53 を作りなさい
++ T52.java を cp コマンドで T53.java にコピー
++ リスト5.3 に示されたように修正 + 練習問題 5.12 をやる

&color(white,blue){check};
- n をループ変数とする for 文2箇所の繰り返し条件式「n < ほげ」のほげは,整数ではなく tm のインスタンス変数を使っているか? 正解は→ &color(white){ n < tm.length };
- m をループ変数とする for 文2箇所についても,同様になっているか? 正解は→ &color(white){ m < tm[n].length };
- T53 において tm.length と tm[2].length はそれぞれいくつか? 正解は→ &color(white){ 3 }; と &color(white){ 4 };
***問2  mainの引数 [#e8fb655f]

+ 教科書 p.51-52 「5.6 main の引数」と前回資料 5/5 を読みなさい
+ Args51 (教科書版と資料版のどちらでもよい)を作って動作確認しなさい.

&color(white,blue){check};
- 5行目の println の引数を args[i] + 999 に変更して実行してみなさい.
- 上記の +999 を整数の意味でやらせたい場合は,p.52 のように Integer クラスのクラスメソッド parseInt を使って int 型に変換する必要がある.余裕があれば試してみよう.前回講義資料も参照.
**課題B(self) 完成目標: 今回の実習終了まで [#kadaiB]

問1,2 を全てやりなさい

***問1 プリミティブ型 [#x45e7e18]

+ 教科書 p.53-54 「6.1 プリミティブ型」を読み,以下のソースを手元に保存してコンパイルし,実行してみなさい.
+ どうしてそのような実行結果が得られるのか考えながら,結果を講義資料 2/4 の「実行結果」欄に記入しなさい.

&gist(fb3ee50b1e0e2757c43a0781f032ac08);
***問2 数の演算,変数への代入,キャスト [#y36468a1]

+ 下記のソースを手元に保存してコンパイルしなさい.2箇所でコンパイルエラーが出るだろう.どうしてエラーになるか考えながら,1箇所はコメント通りに修正,もう1箇所はその行をまるごとコメントにしてしまおう.
+ ソース中のコメントと実行結果を見比べてよく考えながら,実行結果を講義資料 3/4 の空欄にメモしておきなさい.(3) では乱数を生成しているので,何度も実行してみること.

&gist(4d8b4c7214034d712add40bac0c4ec17);


**課題C(TA) 締切: 次回の実習開始直後  [#kadaiC]
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G06Pascal-tex.png,nolink);

行数をint型変数 n で指定するとこのような数表を出力するプログラムをつくろう( G06Pascal ).
ただし,
-以下のプログラムの7行目から15行目までに当てはまる部分を考えること.
--&color(red){行数は増減して構わないが,記されている部分を変更してはならない};
-繰り返しのプログラミングの練習として,次の制約条件のもとで作成すること
--&color(red){for文やwhile文のような繰り返しは使ってよいが,if文やswitch文のような条件分岐は使ってはならない.};


&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G06Pascal.png,nolink);

上記のプログラムの空白部分を埋めて実行すると,次の出力が得られればよい.
nを1以上の整数としてある程度大きな数まで(例えば n = 10)問題なく動くようにすること.

#pre{{
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
}}

提出時には,このプログラムの出力の最後の行が &mathjax{ (a+b)^{10} }; の展開に利用できるように n を適切に選んでおくこと.

**課題S (omake) [#kadaiS]

コマンドライン引数として2つの数を指定すると,下図のような図形を描くプログラムを作りなさい.
クラス名は G06Rainbow とすること.
これは,教科書p.56の練習問題6.2のP62を元に,次の機能を追加したものになっている.

+三角形毎に色を変える
+コマンドライン引数で三角形の数と斜辺の長さを指定する

1.については,Colorの配列を用いて実現すること(どんな色を使うかは自分で決めればよいが,色数は以下の例以上にすること).
実行結果の図が示すように,色を順番に使って使い果たしたらまた最初の色から順に使うようにすること.

2.については,次のような動作を実現しよう.
#pre{{
$ java G06Rainbow 6 50   ← 引数を二つ指定すると図形を描く

$ java G06Rainbow     ← 引数を指定しないと以下のメッセージを出して終了
使い方: java G06Rainbow r d
r: 三角形の数, d: 斜辺の長さ

$ java G06Rainbow 6 50 hoge  ← 余分な引数を指定した場合も同様
使い方: java G06Rainbow r d
r: 三角形の数, d: 斜辺の長さ

$ java G06Rainbow 6 hoge  ← 引数が正しい形式でない場合も同様
使い方: java G06Rainbow r d
r: 三角形の数, d: 斜辺の長さ
}}

引数が正しい形式でない場合のチェックを行うには,Integer.parseInt() メソッドの例外処理を行えばよい.
教科書 p.94-97 を参考にしよう.



&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G06Rainbow-r06.png,nolink);
&ref(http://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G06Rainbow-r12.png,nolink);

ひとりごと: 
色の配列の要素をランダムにまたは順に選択することで線の色を切り替えながら描くようなプログラムを作るのも楽しいかもね.
色の配列の要素をランダムに選択することで線の色を切り替えながら描くようなプログラムを作るのも楽しいかもね.

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS