Windows上でgcc-gfortranを走らせる。

自由形式

(行番号等を書き込むために) 行頭の6カラムを空欄にする「固定形式」ではなく、 好きなところから書き始めていい「自由形式」で書いた場合は、

自由形式の継続行

自由形式で複数の行にまたいで書く場合は、前の行の行末と次の行の行頭に&を付ける。

暗黙の宣言の無効化

implicit none が使える。 バグ防止のためには、implicit noneにしてから、個々の変数をいちいち realやintegerで宣言することを推奨(そうすれば、宣言してない変数を使った時点で コンパイルエラーが出てくれる)。 めんどくさがりやの後藤が使うimplicit rea*8(a-h, o-z)は教育的ではない。

表計算ソフトのcsvデータなどの桁を揃えてTeX書式に出力する例

http://www.str.ce.akita-u.ac.jp/~gotou/programoj/keikan/keta.f

乱数の使用例

n組の夫婦数をまず入力し、それぞれの夫婦が男児が生まれるまで 子供を生み続けて、男児が生まれた時点で子供を作るのをやめたら、 男女比はどうなるか(この程度の文化を持つ国はいっぱいあるだろうけど)。

つまり、赤ちゃんの&link(男女比がある程度 違う国,http://d.hatena.ne.jp/uneyama/20050615#p6)では、何がなされているのかということを 想像すると、なかなか怖い。

do文のカウンタからファイル名を自動生成する

http://rakasaka.fc2web.com/fortran/fortran.html#trim

変数をファイル名にしたい

エラーメッセージを表示させる

g77 -Wall -o hoge hoge.f でコンパイル

グラフィックなど

32bit/64bit

32bitパソコンまたは64bitパソコンで以下を計算してみて、 どこまでの整数が扱えるかを確認。

32bitでも64bitでも2**31未満しか扱えない。

Linux上で使えるBASICなど

今は昔ながらのBASICはほとんど使われていないが、 高校の数学の教科書では、 未だに昔ながらのBASIC(しかも行番号あり)が使われ続け、 大学入試問題などでも出題されている。 昔のBASICのように覚えることが少なくてすぐに使える教育向け言語ということなら、 Fortran90とかでもいいような気がするのだが...

そうなってくると、高校の数学の問題の検証環境として、 昔ながらのBASICが走る環境がほしい。 Windowsに関しては、フリーソフトが結構あるようだ。 Linuxに関してもフリーソフトは色々あるようだが、 ものによっては、ライブラリの依存関係とかの問題で インストールが簡単でないかもしれない。 ひとまず、 &link(Chipmunk Basic for Linux,http://www.nicholson.com/rhn/basic/#5)は、 インタープリタ本体だけで動作する(たぶん)ので手軽である。 行番号は書いても書かなくてもよくて(たぶん)、 ./basic hoge.bas みたいに実行できる。 対話型の実行もできる。

g77で動作していたものがgfortranで動作しなくなる例

整合配列

g77では、メインプログラムでa(100,100)などと大きめの配列を切っておいて、 サブルーチン内では、引数として受け渡されたnを使って、 a(n,n)などと小さめの配列を切り直しても問題なかったが、 gfortranでは、サブルーチン内でもメインプログラムと同じ大きさの 配列を切らないとうまく引き渡せなくなってしまった。 ただし、サブルーチン内からサブルーチンを呼び出す場合は、 特に問題は起きないので、 整合配列を使いたい場合は、一端サブルーチン内に入ってからサブルーチンを 呼び出すようにすればよいのかもしれない。

バグの例

空行の読み込み

空行(改行のみ)のデータを読み込もうとして、 character変数を使って、 read*,mozi で空行を読もうとしたら、実際には、空行は飛ばされるので、 数値の入った空行の次のデータ文が読まれていた。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS