_Graphics/2014/ex03
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*グラフィックス基礎・演習 2014年度 演習第3回 [#k545d867]
//&color(Red){工事中};
#contents
**注意とおしらせ [#ann]
- &color(#0000a0){この実習では,ls,cd,cpなどのUNIXのコマンドや,emacsというエディタを用います.これらの使い方を忘れた人は,次のページを参照しなさい:}; [[Docs/4UNIXBeginners]]
- [[第1回の注意>Graphics/2014/ex01#note]]
**課題A(TA) 締切: 今回の演習開始30分後 [#kadaiA]
&color(Red){この課題の解答は講義時に配布した用紙に記入し,TAさんに提出してチェックを受けてください.};
//この課題の解答は講義時に配布した用紙に記入し,TAさんに提出してください.
//TAさんは受け取るだけ(採点は高橋が後日行う予定)ですので,callta する必要はありません.
#ref(Graphics:G03exA.png,nolink)
上記に示すソースファイルに関する次の問題に解答しなさい(ソース全体を書き写す必要はない).
実際にプログラムを作成&実行して修正を加えながら解答してくこと.
+右上に向かうかめを表すインスタンスの変数名は何か
+以下の4カ所にそれぞれ指定された処理を行うにはどのように書けばよいか答えなさい
--A(16行目): kame の絵の大きさを10倍にする
--B(17行目): speedAllメソッドを呼び出してかめ全員の速さを高速にする
--C(18行目): speedメソッドを呼び出して kame の速さを変える(引数は99にすること)
--D(22行目): withTurtleAllの値を変化させる(trueからfalseに)
---true, falseについては教科書p.37参照
+上記のABCDに対応する文はそれぞれ以下のアイウエのいずれにあてはまるか答えなさい
--ア:インスタンス変数に値を代入している
--イ:インスタンスメソッドを呼び出している
--ウ:クラス変数に値を代入している
--エ:クラスメソッドを呼び出している
**課題B(self) 完成目標: 今回の演習終了時 [#kadaiB]
以下の三つのことをやりなさい
***B-1 [#q74f49dc]
この科目のページのリンクをたどると(Graphics/Link),Java APIのページにたどりつくことができる.それを用いて,教科書p.24の練習問題3.2をやりなさい.
&color(white,blue){check};
- API仕様文書によると,Java SE 6 の java.awt.Color クラスのコンストラクタは何通りあるか?
- 練習問題3.2 で指定されたコンストラクタでは,引数はどんな型でどんな範囲の数か?
***B-2 [#e5c64ee9]
講義資料と教科書p.23からp.24の上3行を参考に,課題Aのソースの10行目の java.awt.Color を Color と書くように修正しなさい.
&color(white,blue){check};
- この修正でソースを書き換えたのはどことどこ?
***B-3 [#yba1d805]
教科書p.31-33を読み,p.33の練習問題4.1をやりなさい.
&color(white,blue){check};
- 変数 s と n の値を変えるだけで一辺の長さと何角形を描くかを変えられるようにできてる?
- 1辺の長さ 1 で360角形を描く場合,for 文による繰り返しブロックの中の文はそれぞれ何回実行されることになるか?
**課題C(self) 完成目標: 次回授業開始前 [#kadaiC]
以下のリンク先のクラスファイルを手元に保存し,実行してみなさい(このクラスは,TurtleクラスとTurtleFrameクラスを利用します).
[[G03RandomSample.class>Graphics:G03RandomSample.class]]
これは,かめがランダムな角度右に回転してからランダムな距離前進する動作を50回繰り返すプログラムである.
これとほぼ同じ動作をする(↑のサンプルは↓の条件とはちょっと違う動きをしてます)プログラムを作りなさい.
ただし,次のようにすること.
-ソースファイル名は G03Random.java とする.
-回転角度は 0 以上 180 未満の整数の乱数とする.
そのためには,Mathクラスのrandomメソッドを用いて,次のようにすればよい(double型で得られた値をint型に変換している).
int theta = (int)(180*Math.random());
-前進距離は -50 以上 100 未満の整数の乱数とする(どうすればいいかは自分の頭で考えること).
-文字の表示の仕方はp.30を参考にするとよいでしょう.詳しくは次回説明します.
-段階的にプログラムを作っていくことを意識して,次のようにしてみよう
++右に一定角度回転して一定距離前進することを一定回数繰り返すプログラムを作る
++その動作を確認し,間違いを修正する
++角度と距離を表示するようにする
++その動作を確認し,間違いを修正する
++回転角度を乱数にする
++その動作を確認し,間違いを修正する
++前進距離を乱数にする
++その動作を確認し,間違いを修正する
++チェックを受ける
++(おまけ)計算科学IIのランダムウォークをかめさんにやらせてみる.
例えば,確率 P で行動 A を,1-P で行動 B をさせるなら,
if( Math.random() < P ) A; else B;
&color(white,blue){check};
- ちゃんと文字でメッセージを表示するように作ってる?
- 以下はどこがいけてないだろう?
#pre{{
int theta = (int)(180 * Math.random());
for(int i = 0; i < 50; i++){
:
m.rt(theta);
:
}
}}
- 「前進距離は -50 以上 100 未満の整数の乱数とする」をどうやって実現したか,人に説明できるか?
ちゃんと -50「以上」100「未満」になっていることを説明できるか? プログラムの出力を眺めて確認ってのはだめです.理屈で説明すること.
-<次回以降の授業内容に関連した発展的ポイント> 以下の右辺の int へのキャスト((int))を省略すると何が起こるか.実際にやって確かめなさい.
int theta = (int)(180 * Math.random());
ちなみに,Javaと違ってC言語ではこのような場合,何も言わずに勝手に浮動小数点数を整数へ変換してしまう(そのため気づきにくいバグを生むことがある).
**課題D(おまけ) [#kadaiS]
//&color(Red){工事中};
以下のリンク先のクラスファイルを手元に保存し,実行してみなさい(このクラスは,TurtleクラスとTurtleFrameクラスを利用します).
[[G03RandomSample2.class>Graphics:G03RandomSample2.class]]
これは,かめをフレームの中央に配置し,そこからかめまでの距離が一定値以上になるまで,次の動作を繰り返すものである.
>
+ 確率 &jsmath(\frac{1}{2}); ずつで次の行動のいずれかを行なう
++ かめを右に60度回転し,ペンの色を赤にする
++ かめを左に60度回転し,ペンの色を青にする
+ 一定距離前進する
<
これと同じような動作をするプログラムを作成しなさい.ただし,クラス名は G03Random2 とすること.
終了行:
*グラフィックス基礎・演習 2014年度 演習第3回 [#k545d867]
//&color(Red){工事中};
#contents
**注意とおしらせ [#ann]
- &color(#0000a0){この実習では,ls,cd,cpなどのUNIXのコマンドや,emacsというエディタを用います.これらの使い方を忘れた人は,次のページを参照しなさい:}; [[Docs/4UNIXBeginners]]
- [[第1回の注意>Graphics/2014/ex01#note]]
**課題A(TA) 締切: 今回の演習開始30分後 [#kadaiA]
&color(Red){この課題の解答は講義時に配布した用紙に記入し,TAさんに提出してチェックを受けてください.};
//この課題の解答は講義時に配布した用紙に記入し,TAさんに提出してください.
//TAさんは受け取るだけ(採点は高橋が後日行う予定)ですので,callta する必要はありません.
#ref(Graphics:G03exA.png,nolink)
上記に示すソースファイルに関する次の問題に解答しなさい(ソース全体を書き写す必要はない).
実際にプログラムを作成&実行して修正を加えながら解答してくこと.
+右上に向かうかめを表すインスタンスの変数名は何か
+以下の4カ所にそれぞれ指定された処理を行うにはどのように書けばよいか答えなさい
--A(16行目): kame の絵の大きさを10倍にする
--B(17行目): speedAllメソッドを呼び出してかめ全員の速さを高速にする
--C(18行目): speedメソッドを呼び出して kame の速さを変える(引数は99にすること)
--D(22行目): withTurtleAllの値を変化させる(trueからfalseに)
---true, falseについては教科書p.37参照
+上記のABCDに対応する文はそれぞれ以下のアイウエのいずれにあてはまるか答えなさい
--ア:インスタンス変数に値を代入している
--イ:インスタンスメソッドを呼び出している
--ウ:クラス変数に値を代入している
--エ:クラスメソッドを呼び出している
**課題B(self) 完成目標: 今回の演習終了時 [#kadaiB]
以下の三つのことをやりなさい
***B-1 [#q74f49dc]
この科目のページのリンクをたどると(Graphics/Link),Java APIのページにたどりつくことができる.それを用いて,教科書p.24の練習問題3.2をやりなさい.
&color(white,blue){check};
- API仕様文書によると,Java SE 6 の java.awt.Color クラスのコンストラクタは何通りあるか?
- 練習問題3.2 で指定されたコンストラクタでは,引数はどんな型でどんな範囲の数か?
***B-2 [#e5c64ee9]
講義資料と教科書p.23からp.24の上3行を参考に,課題Aのソースの10行目の java.awt.Color を Color と書くように修正しなさい.
&color(white,blue){check};
- この修正でソースを書き換えたのはどことどこ?
***B-3 [#yba1d805]
教科書p.31-33を読み,p.33の練習問題4.1をやりなさい.
&color(white,blue){check};
- 変数 s と n の値を変えるだけで一辺の長さと何角形を描くかを変えられるようにできてる?
- 1辺の長さ 1 で360角形を描く場合,for 文による繰り返しブロックの中の文はそれぞれ何回実行されることになるか?
**課題C(self) 完成目標: 次回授業開始前 [#kadaiC]
以下のリンク先のクラスファイルを手元に保存し,実行してみなさい(このクラスは,TurtleクラスとTurtleFrameクラスを利用します).
[[G03RandomSample.class>Graphics:G03RandomSample.class]]
これは,かめがランダムな角度右に回転してからランダムな距離前進する動作を50回繰り返すプログラムである.
これとほぼ同じ動作をする(↑のサンプルは↓の条件とはちょっと違う動きをしてます)プログラムを作りなさい.
ただし,次のようにすること.
-ソースファイル名は G03Random.java とする.
-回転角度は 0 以上 180 未満の整数の乱数とする.
そのためには,Mathクラスのrandomメソッドを用いて,次のようにすればよい(double型で得られた値をint型に変換している).
int theta = (int)(180*Math.random());
-前進距離は -50 以上 100 未満の整数の乱数とする(どうすればいいかは自分の頭で考えること).
-文字の表示の仕方はp.30を参考にするとよいでしょう.詳しくは次回説明します.
-段階的にプログラムを作っていくことを意識して,次のようにしてみよう
++右に一定角度回転して一定距離前進することを一定回数繰り返すプログラムを作る
++その動作を確認し,間違いを修正する
++角度と距離を表示するようにする
++その動作を確認し,間違いを修正する
++回転角度を乱数にする
++その動作を確認し,間違いを修正する
++前進距離を乱数にする
++その動作を確認し,間違いを修正する
++チェックを受ける
++(おまけ)計算科学IIのランダムウォークをかめさんにやらせてみる.
例えば,確率 P で行動 A を,1-P で行動 B をさせるなら,
if( Math.random() < P ) A; else B;
&color(white,blue){check};
- ちゃんと文字でメッセージを表示するように作ってる?
- 以下はどこがいけてないだろう?
#pre{{
int theta = (int)(180 * Math.random());
for(int i = 0; i < 50; i++){
:
m.rt(theta);
:
}
}}
- 「前進距離は -50 以上 100 未満の整数の乱数とする」をどうやって実現したか,人に説明できるか?
ちゃんと -50「以上」100「未満」になっていることを説明できるか? プログラムの出力を眺めて確認ってのはだめです.理屈で説明すること.
-<次回以降の授業内容に関連した発展的ポイント> 以下の右辺の int へのキャスト((int))を省略すると何が起こるか.実際にやって確かめなさい.
int theta = (int)(180 * Math.random());
ちなみに,Javaと違ってC言語ではこのような場合,何も言わずに勝手に浮動小数点数を整数へ変換してしまう(そのため気づきにくいバグを生むことがある).
**課題D(おまけ) [#kadaiS]
//&color(Red){工事中};
以下のリンク先のクラスファイルを手元に保存し,実行してみなさい(このクラスは,TurtleクラスとTurtleFrameクラスを利用します).
[[G03RandomSample2.class>Graphics:G03RandomSample2.class]]
これは,かめをフレームの中央に配置し,そこからかめまでの距離が一定値以上になるまで,次の動作を繰り返すものである.
>
+ 確率 &jsmath(\frac{1}{2}); ずつで次の行動のいずれかを行なう
++ かめを右に60度回転し,ペンの色を赤にする
++ かめを左に60度回転し,ペンの色を青にする
+ 一定距離前進する
<
これと同じような動作をするプログラムを作成しなさい.ただし,クラス名は G03Random2 とすること.
ページ名: