グラフィックス機能付きプログラムの解説
グラフィックス機能付きプログラムの解説
— FreeBASIC(QuickBASIC互換)プログラム —
ポール・ヘリングス著の「パソコンで宇宙物理学」(川端 訳)の各章末に示された原著者作成のプログラムは,著者の了承を得てこのホームページからダウンロードできるようにしました。しかし残念ながらこれらのプログラムはグラフィックス機能を全く持っていません。また本書の例題を再現しようとするとそうしたプログラムの実行に際してデータの入力が要求されますが,いちいち紙面から数値を探し出すのが意外に面倒です。
そこで,原著者のプログラムにグラフィクス機能を組み込み,同時に例題の再現も行い易いように必要な入力データはDATAステートメントの形でプログラム中に内蔵させました。プログラムの実行時に1あるいは2という具合に一桁の数字をキーインするだけで各章の例題を再現でき,0(ゼロ)を入力するとデータの手入力により自分の好みのモデル計算が行えるようになっています。先ずは例題を走らせてモデル計算を習熟するとよいのではないでしょうか。
プログラムのコンパイルと実行に関して,下に幾つか注意点を記しておきます。
(1)プログラム名について
プログラム名は,Chapt9.Pbasのように,Chaptの後に章番号とPを付してあります。ただし第一章は複数のタイプの数値計算用プログラムを含んでいますので,Chapt1P-A.bas〜Chapt1P-D.basとしました。
第1章 | Chapt1P-A.bas | 初期値問題を解くオイラー法,中点法,予測子−修正子法,4次ルンゲ−クッタ法の比較 |
---|---|---|
Chapt1P-B.bas | 連立1階微分方程式の解法 | |
Chapt1P-C.bas | 関数のゼロ点 | |
Chapt1P-D.bas | シンプソン法を用いた数値積分 | |
第2章 | Chapt2P.bas | 彗星の尾 |
第3章 | Chapt3P.bas | 流星の等級曲線 |
第4章 | Chapt4P.bas | 制限3体問題 |
第5章 | Chapt5P.bas | 2体問題の等ポテンシャル曲線 |
第6章 | Chapt6P.bas | 星の力学的視差 |
第7章 | Chapt7P.bas | ポリトロープ |
第8章 | Chapt8P.bas | 星の内部構造モデル |
第9章 | Chapt9P.bas | 星の大気モデル |
第10章 | Chapt10P.bas | 白色矮星の内部構造モデル |
第11章 | Chapt11P.bas | 銀河系における星形成モデル |
第12章 | Chapt12P.bas | 銀河系内の星の軌道 |
第13章 | Chapt13P.bas | 宇宙モデル |
(2)プログラム言語について
(2-1)
プログラムは原著が利用したマイクロソフト社のQuickBASICと高い互換性を持たせて開発されたFreeBASICという言語で書いてあります。有難いことにこのコンパイラー(fbc.exe)は文字通りフリー(無償)です。ただしこのFreeBASICも急速に進化していて,実行の際に様々なオプションが選択できるようになってしまっています。QuickBASIC互換で実行するためには,コンパイル時に 「-lang qb」(「」は除く)を付加する必要があります。
(2-2)
FreeBASICは現在,0.18bというヴァージョンです。以前のヴァージョン0.17bからこちらに上がる際に,QuickBASICになかったコマンドを使用するにはその前にアンダーバーを2個並べて付けなければならなくなりました。本書のままのプログラムを実行するには何ら影響はありませんが,グラフィックスを行う上記のプログラムでは,次の2個の命令に影響が出ます:
(アンダーバーが2個必要) SCREENSET ==> __SCREENSET SLEEP ==> __SLEEP
(2-3)
プログラムの編纂,実行には別のグループが開発したFBIde.exe(現時点での最新版はVersion 0.4.6)を使用すると能率的です。その場合,
1)ツールバーにあるViewを開く。 2)Settingsを開く。3)FreeBASICを開き
4)Compiler pathにfbc.exeのパスを指定する。5)Compiler commandにある”<$fbc>“と ”<$file>“の間に -lang qbと入れる。
ただし,日本語は使用しない方が安全なようです。
(2-4)
QuickBASICと異なり,プログラム中で変数のタイプを何も指定しないと,全て整数変数と見なされてしまうので,要注意です。 最小限の改変でQuickBASICとの互換性を保持するには,訳者が施したように DEFDBL a-z(あるいはDEFSGL a-z)とプログラムの冒頭に指定し,整数変数の方に%を付すか,Dimで特別に指定するかすれば済みます。
(2-5)
FreeBASICで新たに加えられた命令も使用可能ですから,プログラミングの自由度は大幅に向上したと言っても過言ではないでしょう。
免責事項
ここに提供したプログラムは読者諸氏の便宜を図るためのものではありますが,訳者のプログラミング能力のつたなさもあって,決して最善のものではありません。見過ごしているバグもあるかと考えます。これらのプログラムから生じる読者の不利益・損害に対しては何ら責任を負いかねますので,各自のご判断でご利用ください。
平成20年5月31日(土)記す。
(以上)