Hokokaku() の中身 続きの続き の続き
|
| |
|
Hokokaku() 関数の構造。
なぜ条件分岐のが必要かを 考える。
|
プ
ロ
グ
ラ
ム
13-1
表13-2
|
Function Hokokaku(dX, dY) As Double の内容
Function Hokokaku(dX, dY) As Double
Select Case dX
Case Is > 0
Select Case dY
Case Is > 0
Hokokaku = Atn(dY / dX) 条件番号 1
Case Is = 0
Hokokaku = 0 条件番号 2
Case Is < 0
Hokokaku = 2 * pi + Atn(dY / dX) 条件番号 3
End Select
Case Is = 0
Select Case dY
Case Is > 0
Hokokaku = 1 / 2 * pi 条件番号 4
Case Is = 0
Hokokaku = 0 条件番号 5
Case Is < 0
Hokokaku = 3 / 2 * pi 条件番号 6
End Select
Case Is < 0
Select Case dY
Case Is > 0
Hokokaku = pi + Atn(dY / dX) 条件番号 7
Case Is = 0
Hokokaku = pi 条件番号 8
Case Is < 0
Hokokaku = pi + Atn(dY / dX) 条件番号 9
End Select
End Select
End Function
プログラム (13-1) の 単位円 (R=1) の 入力値 と 計算結果表

|
実
験
を
し
て
み
ま
す
|
プログラム(13-1) は Hokokaku() の 完璧なプログラムです。
もしも 9種類の条件をふるい分けせずに dX, dY から
方向角=tan-1(dY/dX) の方程式で 答えを出そうとしたら。
プログラムは下のようになります。
プログラム(13-3) 一応 条件を9種類判定して 分岐していますが
方向角を求める式がすべて Hokokaku = Atan(dY/Dx) で同じです。
これではせっかく、条件分岐をしても意味がありません。
プログラム(13-3) と全く同じ結果になるのが プログラム(13-4)のです。
このプログラムは まったく 条件分岐がありません。
最初のプログラム(13-3)は 一生懸命 条件分岐をして、同じ結果を出そうとしています。
後のプログラム(13-4)は何にも考えずに、ただ結果を計算しただけです。
この二つは同じ結果になります。
|
プ
ロ
グ
ラ
ム
13-3
プ
ロ
グ
ラ
ム
13-4
|
Function Hokokaku(dX, dY) As Double
Select Case dX
Case Is > 0
Select Case dY
Case Is > 0
Hokokaku = Atn(dY / dX) 条件番号 1
Case Is = 0
Hokokaku = Atn(dY / dX) 条件番号 2
Case Is < 0
Hokokaku = Atn(dY / dX) 条件番号 3
End Select
Case Is = 0
Select Case dY
Case Is > 0
Hokokaku = Atn(dY / dX) 条件番号 4
Case Is = 0
Hokokaku = Atn(dY / dX) 条件番号 5
Case Is < 0
Hokokaku = Atn(dY / dX) 条件番号 6
End Select
Case Is < 0
Select Case dY
Case Is > 0
Hokokaku = Atn(dY / dX) 条件番号 7
Case Is = 0
Hokokaku = Atn(dY / dX) 条件番号 8
Case Is < 0
Hokokaku = Atn(dY / dX) 条件番号 9
End Select
End Select
End Function
Function Hokokaku(dX, dY) As Double
Hokokaku = Atn(dY / dX
End Function
|
実
験
作
っ
た
プ
ロ
グ
ラ
ム
を
働
か
せ
る
表13-5
|
プログラム(13-3)かプログラム(13-4)のプログラムをエクセルで実際に
作って試してみてください。 まずは、 プログラム(13-4)が簡単で実験しやすいでしょう。
作り方は 9回目、10回目 を参考にして下さい。
Function Hokokaku(dX, dY) が できましたら。
エクセルのシートで 任意のセルに.
”=Hokokaku ( 0.785398 , 0.785398 )” ”Enter” で
同じセルに 方向角が表示されます。(単位はラジアンです。)
次々と (表13-5)の 9つの条件の dX, dY の値を入れて
どのような結果になるか 試してみてください。
同じようにプログラム(13-3)で 方向角を求めても同じ結果になります。
注意! プログラム(13-3) の 漢字 条件番号1 〜条件番号9 は参考のために
入れてありますので。 これらの文字を 書き込まないで下さい。 エラーになります。
下の (表13-5) に結果をまとめました。

(表13-5) からわかることは、 方向角の計算結果が
0.785398、 0.000 、 -0.785398、と #VALUE! の4種類があります。
条件番号1以外は 正しい答えではありません。
正しい計算値 (表13-2)の結果には、ほど遠いものです。
方向角計算 方程式は 正しいのですが。コンピューターではどうもうまく働いていません。
どうしても条件分岐によって答えを正しく導く必要が生じます。
そこで、 プログラム(13-1)のような 条件分岐が出来たわけです。
プログラムを作るとき 最初から プログラム(13-1)のような条件分岐を予想して
考えるわけではありません。 初めは方程式に従ってプログラム(13-4)のような
単純なプログラムを作ります。 そして、単位円のような単純なモデルで答えを予想して、
プログラムを働かせてみて.、答えをテストします。
結果は (表13-5) になりますのであらかじめ用意した結果 (表13-2)
にならないことが
すぐにわかります。 次に原因を調べます、慣れてくるとおおよその見当がつきますが。
普段は、一つずつ条件を考えて 丹念に解決していきます。
こうして出来たのが プログラム(13-1)です。
コンピュータは万能の機械と思われがちですが、実際は融通の利かない石頭です。
何から何まで、人間が命令を細かく教えないと 全く使い物になりません。
しかし、いったん正しい命令を教えると 疲れを知らない忍耐力 と きっちりきちべえが
正確な答えをはじき出してくれます。
「コンピューターに人間が使われる時代が来る。」と解ったようなことを言う人いますが、
そんなことは決してありません。
むしろ 「いい加減なプログラム」と 「いい加減な理論」によって。
人々が 振り回される可能性は大いにあります。
コンピューターのせいではありません。 人災です。
|
|
エクセルのファイル 「座標計算シート」 (有料) を用意しました。
このファイルで ToraX、 ToraY 関数のマクロが完全に表示されます。
● トラバー計算、逆トラバー計算を一つの画面で処理する標準フォーム
● 標準フォームページを即、使うための解説
● VBA による 座標関連関数 のリソース(プログラム)の公開
● Hokokaku(dX, dY)の完全な動作, と記述を含みます。
● リソースの解説のための計算例
● プログラム作成のための補足説明
が含まれています。
この講座は 順次回を重ねていくと 最終的には 「座標計算シート」が出来上がります。
前もって 「座標計算シート」を手元に置かれて 参考にしながら 実際に作動させて
確認していただくと よりいっそう理解しやすいです。
また、本講座と 「座標計算シート」があれば 本格的な、座標計算やVBAの教材としても
十分に活用できるものと考えております。
テキストファイル入手方法は下欄でお確かめ下さい。
|
|
|
|
”エクセル” ファイル 「座標計算シート」 申し込み方法
ファイル代金 ¥2,000円 を下記の銀行に振り込んで下さい。
恐れいりますが、 メールにて
★ ファイルの送り先のメールアドレス
★ あなたの名前 (お名前がわからないと振込みの確認ができません)
以上をお知らせください。
確認ができしだい メールにてファイルを送らせていただきます。
もし、1週間経ってもファイルが届かない場合、お叱りのメールを下さい。直ちに対処いたします。
連絡先メール mt7116@mandala.ne.jp
振込み先
阿波銀行山川支店(店番号406)
普通預金
口座番号 1034509
永井 俊 (ナガイ タカシ)
ファイル代金 ¥2,000円
|
|
|
|
back to room 711 top goto e-school top |
|
|