Top > 授業 > Delphi プログラミング >Lesson 5b
Lesson 5b
(2004/09/14)
問合せ メール 戻る

Lesson 5b について

1.このLesson 5b では Lesson 5a での提出用課題に当たるサンプルプログラムを解説します。

2.サンプルプログラムを眺め、自分の練習問題の結果と比較してください。

3.Lesson 5a の練習問題に当たるサンプルプログラムをまずダウンロードしてください(クリック)。解凍して出てくるのは、P502、P503、P507〜P509のDelphi プログラムです。なお、解凍するにはパスワードが必要です。パスワードは Lesson 5a の提出用課題を出した人には伝えてあります。
P502のポイント

a.このプログラムは、P501 の練習問題3の解答例です
・手続きTForm1.StartBtnClickを、座標の線を描く手続きDrawFrameと、Sin、Cos カーヴを描く手続きDrawGraph に分けています。両方ともパラメータのない手続きです。
・特に解説は要さないと思います。
P503 のポイント

a.このプログラムは、P501 の練習問題4の解答例です
・P502 のDrawGraph(Sin、Cos カーヴを描く手続き)の中に、座標を求める手続きGetPositions、線の色を返す関数GetColor を導入しています。

b.座標を求める手続きGetPositionsは変数パラメータのある手続きです。
P507 のポイント

a.このプログラムは、P506 の練習問題1の解答例です
(図形の線対称移動、点対称移動の手続きを作り、鳥のもとの図形、線対称移動した図形、点対称移動した図形、をそれぞれ1つずつ描くプログラムを作れ)

b.線対称と点対称を導入しています
・線対称の移動先の座標を求めるのが手続きTrans2、点対称を施すのが手続きTrans3 です。Trans1は無変換の手続きで、形式を揃えるために使っています。
・Trans1〜Trans3 はレコード型points20の変数 x (パラメータ)を入力し、同じレコード型の変数 y を返しています。
P508のポイント

a.このプログラムは、P506 の練習問題2の解答例です
(ダウンロードしたファイルの P508.exe と同様の動作をするプログラムを書け)

b.原理的には P508 は P506 と同じです
・このプログラムでは鳥の図形の位置を円周上に置き、それぞれの鳥の方向が、その位置と円周の原典を結ぶ線を基点に外側に設定しています。この設定は手続き _Change で与えています。つまり、まず方向を次のラジアン theta で決めます。
 theta := Int(i-1)/12.0*2.0*Pi;
次に円周上の位置は次の式で求めます。
 xy[1] := xy0[1] - r_circle * Cos(theta);
 xy[2] := xy0[1] + r_circle * Sin(theta);
P509のポイント

a.このプログラムは、P506 の練習問題3の解答例です
(ダウンロードしたファイルの P509.exe と同様の動作をするプログラムを書け)

b.このプログラムも原理的には P508 と同じです
・違っているのは鳥の円が五重になっていること、鳥の数が増えていることです。
・工夫を要する箇所があるとすれば、一円周上の鳥の色をどう決めるか、という点でしょう。ここでは鳥を24個描いていますが、鳥の色を指定する定数配列CColorでは16個の色しか指定していません。P509では、色を指定する変数coL を次の式で決め、色が循環するようにしました。
 coL := (12*(j-1) + i) mod 16 + 1;
次回に向けて

次の Lesson 6 では乱数の使い方を練習します。