端潔のページ

東京理科大学名誉教授 川端潔のページです

You are here: Home - 川端潔の著書 - パソコンで宇宙物理学サポートページ - グラフィックス機能付きプログラムの解説


グラフィックス機能付きプログラムの解説

グラフィックス機能付きプログラムの解説

— 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日(土)記す。

                                    (以上)