FORTRAN入門です。FORTRANも参照のこと。
以下は「情報基礎概論 第4版 喜久川政吉・殿塚勲 共著(学術図書出版社)」を参考に執筆しました。
コメントはCから始まる行、プログラムの終端はend、プログラムの終了はstop。
1~6桁目は空白にする。
変数の型宣言は実行文より前に書く。
型 | 説明 |
---|---|
integer | 整数型 |
real | 実数型 |
double precision | 倍精度実数型 |
complex | 複素数型 |
logical | 論理型 |
charactor | 文字型 |
演算子は+, -, *, /, **(べき乗)。
配列はinteger array(100)のようにする。x(0:255)で0から始まり255で終わる256個の値となる。二次元配列はb(5,10)など。
定数はパラメータ文parameter(n = 256)のように表す。定数を代入式の左辺に用いることはできない。
変数の初期値はdata n/1500/など。
文関数は、一行で簡単な関数を書くことのできる機能で、f(x,y) = (x + y)とすれば、f(a, b)のように使うことができる。
do文で繰り返すには、
do 繰り返しの終端を表す文番号 i = 初期値, 終値, 増分
とする。たとえば
sum = 0 addvalue = 0 do 100 i = 0, 50, 1 addvalue = addvalue + 1 sum = sum + addvalue 100 write(*, *) i, sum
とすればよい。
if文による分岐は、
if (条件式) then 処理 else if (条件式) then 処理 else 処理 end if
となる。
回数が決まっていない繰り返しは、if文とgoto文を組み合わせると実現できる。C言語でいうwhile文のようなものである。
100 if (条件式) then 処理 goto 100 end if
条件式には、比較演算子である
比較演算子 | 意味 |
---|---|
.gt. | > |
.ge. | ≧ |
.lt. | < |
.le. | ≦ |
.eq. | = |
.ne. | ≠ |
や、論理演算子である
論理演算子 | 意味 |
---|---|
.not. | 否定 |
.and. | 論理積 |
.or. | 論理和 |
が使用できる。
1~5カラムに書かれる数字列をラベルといい、
goto ラベル
でラベルに移動できる。また、移動先を単に表すために、何もしない命令であるcontinueにラベルをつけることがある。
100 continue
サブルーチンは以下のように記述する。
subroutine サブルーチン名(引数) 処理 end
サブルーチンは副プログラムであり、主プログラムと同様にendでプログラムの終わりを表す。サブルーチンを呼び出す(引用)には
call サブルーチン名(引数)
とする。サブルーチンの内部にreturn文が記述してあった場合、その場所で引用した場所に戻る。
サブルーチン副プログラムと同様に、関数副プログラムがある。関数副プログラムは
integer function 関数名(引数) 処理 end
となる。また、関数では値を返す必要があるが、これには関数名に代入してreturnを行う。
integer function add(x, y) add = x + y return end
呼び出す時は単にadd(10, 5)などとする。
サブルーチンは、プログラムの単位であるため、end文で終了する。これらは独立にコンパイルしてそれぞれのオブジェクトファイルを生成し、リンクすることができる。これをライブラリと呼ぶ。
入出力は、write()とread()で行う。たとえば、
write(*,*) 'Hoge'
あるいは、
read(*,*) x
ここで、*,*は標準出力(標準入力)かつデフォルトのフォーマットで、という意味になる。
IBMの伝統的に標準のCRTディスプレイは6なのでwrite(6,*)でも同じ意味になる。また、IBMの伝統的に標準のキーボードは5なのでread(5,*)でも同じ意味になる。
フォーマット指定を行うなら、
write(6, 999)x 999 format(9I5)
とする。ここで9I5がフォーマット指定である。フォーマット指定には、
フォーマット | 意味 |
---|---|
nIw | 整数 |
nFw.d | 実数 |
nEw.d | 指数表記 |
nX | 空白 |
の形式があり、nやwには数値を記述する。
数値 | 意味 |
---|---|
n | 個数 |
w | 桁 |
d | 小数点以下の桁 |
d(nEw.dの場合) | 仮数部の桁数 |
'~'は文字列。
/は改行で、/を複数個並べて記述でき、その個数だけ改行する。
また、open()とclose()を使うことで、ファイル処理ができる。たとえば、
open(10, file="hoge.txt")
とすれば、装置番号10にファイルhoge.txtが割り当てられる。解除するには、
close(10)
とする。これにより、
read(10,*) n
のような形でファイルを読み込むことができる。