(行番号等を書き込むために) 行頭の6カラムを空欄にする「固定形式」ではなく、 好きなところから書き始めていい「自由形式」で書いた場合は、
自由形式で複数の行にまたいで書く場合は、前の行の行末と次の行の行頭に&を付ける。
implicit none が使える。 バグ防止のためには、implicit noneにしてから、個々の変数をいちいち realやintegerで宣言することを推奨(そうすれば、宣言してない変数を使った時点で コンパイルエラーが出てくれる)。 めんどくさがりやの後藤が使うimplicit rea*8(a-h, o-z)は教育的ではない。
http://www.str.ce.akita-u.ac.jp/~gotou/programoj/keikan/keta.f
n組の夫婦数をまず入力し、それぞれの夫婦が男児が生まれるまで 子供を生み続けて、男児が生まれた時点で子供を作るのをやめたら、 男女比はどうなるか(この程度の文化を持つ国はいっぱいあるだろうけど)。
implicit real*8 (a-h,o-z) call srand(time()) print*,'夫婦組数を入力' read*,n nonna=0 notoko=0 do i=1,n ionna=0 do a=rand() if(a<0.5) then nonna=nonna+1 ionna=ionna+1 else print*,i,ionna+1 notoko=notoko+1 exit end if end do end do print*,'女の人数',nonna print*,'男の人数',notoko end
つまり、赤ちゃんの&link(男女比がある程度 違う国,http://d.hatena.ne.jp/uneyama/20050615#p6)では、何がなされているのかということを 想像すると、なかなか怖い。
http://rakasaka.fc2web.com/fortran/fortran.html#trim
i=100 write(a,*) i open(7,file=a) write(7,*) 'kakikukeko' close(7) end
g77 -Wall -o hoge hoge.f でコンパイル
32bitパソコンまたは64bitパソコンで以下を計算してみて、 どこまでの整数が扱えるかを確認。
32bitでも64bitでも2**31未満しか扱えない。
今は昔ながらのBASICはほとんど使われていないが、 高校の数学の教科書では、 未だに昔ながらのBASIC(しかも行番号あり)が使われ続け、 大学入試問題などでも出題されている。 昔のBASICのように覚えることが少なくてすぐに使える教育向け言語ということなら、 Fortran90とかでもいいような気がするのだが...
そうなってくると、高校の数学の問題の検証環境として、 昔ながらのBASICが走る環境がほしい。 Windowsに関しては、フリーソフトが結構あるようだ。 Linuxに関してもフリーソフトは色々あるようだが、 ものによっては、ライブラリの依存関係とかの問題で インストールが簡単でないかもしれない。 ひとまず、 &link(Chipmunk Basic for Linux,http://www.nicholson.com/rhn/basic/#5)は、 インタープリタ本体だけで動作する(たぶん)ので手軽である。 行番号は書いても書かなくてもよくて(たぶん)、 ./basic hoge.bas みたいに実行できる。 対話型の実行もできる。
g77では、メインプログラムでa(100,100)などと大きめの配列を切っておいて、 サブルーチン内では、引数として受け渡されたnを使って、 a(n,n)などと小さめの配列を切り直しても問題なかったが、 gfortranでは、サブルーチン内でもメインプログラムと同じ大きさの 配列を切らないとうまく引き渡せなくなってしまった。 ただし、サブルーチン内からサブルーチンを呼び出す場合は、 特に問題は起きないので、 整合配列を使いたい場合は、一端サブルーチン内に入ってからサブルーチンを 呼び出すようにすればよいのかもしれない。
空行(改行のみ)のデータを読み込もうとして、 character変数を使って、 read*,mozi で空行を読もうとしたら、実際には、空行は飛ばされるので、 数値の入った空行の次のデータ文が読まれていた。