#author("2021-04-23T17:38:10+09:00","default:takataka","takataka") #author("2021-04-23T17:38:48+09:00","default:takataka","takataka") *グラフィックス基礎及び実習 2021年度 第03回 実習と宿題 [#e9701092] #contents //&color(#ff0000){''工事中''}; //**注意 [#notice] **実習課題A 締切: 当日15:00 [#kadaiA] &color(#00a000){''以下の二つができたら, TA さんを呼んでチェックしてもらいましょう.''}; オンライン受講のひとは moodle を確認してね *** T33 を元にして P35 をつくる [#vb935987] p.28 練習問題3.7をやりましょう.内容は次の通り + T33.java を作る(宿題でやってるはず). + それを元にして P35.java というソースを作り, int n = 8, k = 5; として n 角形の各辺の周りに k 角形が描かれるようにする.n, k をいろいろ変えても正しく動作するようにしてください. *** P35 を改造する [#qf5a8d3c] + P35.java の適切な場所に次の1行を追加 import javafx.scene.paint.*; + P35.java の for(int j = 0; ... の行の直後に,if 文を使った次の処理を挿入する. > - j を 5 で割った余りが 1 か 3 なら m.setColor(Color.RED) する - j を 5 で割ったあまりが 2 なら m.setColor(Color.BLUE) する -上記のいずれにも当てはまらない場合は, m.setColor(Color.GREEN) する < + &color(red){''ソースの最後の行に,氏名と学籍番号をコメントとして記しておいてください''}; **実習課題B 締切: 当日16:10 [#kadaiB] &color(#00a000){''以下のことができたら, TA さんを呼んでチェックしてもらいましょう.''}; オンライン受講のひとは moodle を確認してね &ref(https://www-tlab.math.ryukoku.ac.jp/~takataka/course/Graphics/G03RandomQ.png); 次のことをやりなさい. + 上記のプログラムを作成する(G03Random) + 実行する. + かめさんがフレームの外にいってしまうのを避けるため,次のように修正しよう. > 繰り返しのたびにかめの位置をチェックし,かめがフレーム中央の 300 x 300 ピクセルの領域より外に出ていたら,中央に移動させる.この課題では,フレームの大きさもこの領域の大きさも固定で変更されないものとして考えて構いません(余裕のあるひとは,それらを変数に入れて変更可能にする手を考えるとよいでしょう). < &color(white,blue){check}; 5行目で,TurtleFrame クラスのコンストラクタが引数ありで呼ばれてますね.p.12 の TurtleFrame クラスのAPI仕様のコンストラクタの所を確認すると,この場合,フレームの大きさは ? x ? ですね.ということは,中央 300 x 300 の範囲かどうか調べるにはどういう条件式を書いたらよいでしょう? &color(white,blue){check}; うまくできたと思えたら,実行してメニューから Speed > very fast を選択してみよう. &color(white,blue){check}; &color(red){''ソースの最後の行に,氏名と学籍番号をコメントとして記しておいてください''}; **宿題 [#hw] &color(#00a000){''次回授業までに必ずやっておくこと''}; 次回の授業の資料(PDFや動画)等は [[こちら>../../2021#ex04]] からどうぞ. + 講義資料を入手.紙でほしい方は各自で印刷してください. > キャンパス内各所に設置されたプリンタで印刷することもできます.くわしくは「ポータル > 情報環境 > マニュアル > [[印刷利用マニュアル>https://www.media.ryukoku.ac.jp/local/manual/printsystem_manual.pdf]]」参照. < + 授業動画を視聴する > 学内の実習室等に設置の PC ではスピーカから音が出ませんので,イヤフォン/ヘッドフォンを用意する必要あり < + 講義資料・授業動画に出てくるプログラムを実際に作って実行してみる **実習課題S(omake) 締切: 次回実習時間開始直後 [#kadaiS] &color(#00a000){''これはおまけ課題です.やらなくても減点になりません.やったら加点かも''}; 以下のプログラムとその実行結果を参考にして,キーボードから年月日を入力すると,その日の曜日を教えてくれるプログラムを作ろう. -クラス名は G03WeekdayName とすること -1901年以降について計算できればよい.1901年の1月1日は火曜日である. -自分で導出できない謎の公式を使わずに計算するものとすること. -計算機室のLinux環境では cal コマンドでカレンダーを表示できる(動作確認にどうぞ) $ cal $ cal 1901 -- 「万年カレンダー」でGoogle検索すると,いろんな年の暦を教えてくれるウェブサイトが見つかります -ヒント: http://ja.wikipedia.org/wiki/%E9%96%8F%E5%B9%B4 の「グレゴリオ暦」の項を参照すると,ある年がうるう年かどうかの判定法がわかる. -簡潔なプログラムを書こうと思うと,配列を使いたくなるかもしれない.教科書第6章へどうぞ. - &color(red){''プログラムって,ただコンパイル通るってだけじゃなく,正しく動作することを確認するのがすごく大事です.この課題では,そこを意識してもらうため,次のように条件をつけることにします.''}; -- 他のおまけ課題では,間違ってたら高橋が指摘して再提出してもらうことがありますが,この課題では,それはしません.一発勝負. -- なので,提出前にしっかりテスト&デバグしてください.プログラムの構造を考えると,チェックすべき年月日が何通りもあるのがわかるはず.それらの正しい曜日を調べておいて,プログラムの実行結果が正しいかどうか確認する作業をしましょう. - %%完成したら,Teams チャットで高橋へソースを送ってください.%% → ''moodle の ex03S へ'' - %%完成したら,Teams チャットで高橋へソースを送ってください.%% → ''moodle の ex03課題S へ'' #pre{{ /** キーボードから入力した数の和を表示 */ import java.util.*; // Scanner クラスのために public class G03Scan{ public static void main(String[] args){ // Scannerクラスの使い方は,p.208やJava API参照 Scanner s = new Scanner(System.in); double sum = 0.0; System.out.println("スペースや改行を区切りにしていくつか数値を入力してみてね"); System.out.println("最後は数値以外の文字を入力してね"); while(s.hasNextDouble()){ sum += s.nextDouble(); } System.out.println("合計は" + sum + "だぴょん"); } } }} #pre{{ $ java G03Scan スペースや改行を区切りにしていくつか数値を入力してみてね 最後は数値以外の文字を入力してね 1 1 3.14 ← キーボードからの入力 1 1 1 ← キーボードからの入力 hoge 999 ← キーボードからの入力 合計は8.14だぴょん }}