Fortran 文法入門



* プログラムとは何だろうか ?

プログラムは, 仕事の作業手順書だ。

* 具体的にはどうすればいいのか


* プログラム作成一般に共通的なお約束

読みやすいプログラムを書くために ......

* Fortran に固有なお約束

+ Fortran は行指向の言語である。

+ プログラム単位

+ 使える文字

英数字と少数の記号だけが使える。英文字で大文字と小文字の区別はない。

+ 空白は無視される

うっかり
do i = 1. 10
と書くと, 変数 doi に数値 1.10 を代入する意味になる。

* Fortran プログラムの構成要素

* 入出力

* 変数

変数の型 注意点 暗黙の型宣言には従わない, 全ての変数は明示的に型宣言する。

* 配列

配列とは同じ型の変数をひとまとめにしてインデックスで参照できるようにした ひとまとまりのデータのこと。 変数名の後に丸カッコでくくった数値を書き, 値を参照する。 配列を利用するときには, あらかじめ配列の大きさ (要素数) を 宣言しておかなければいけない。
integer a(5), b
dimension b(20)

a(1) = 40
write(*, *) a(3)

* 計算式

Fortran で数値計算のためのプログラムを 作成するという事は, 「どういう順番で何をどう計算するか」ということを記述することにつきる。

* 制御構造

* 条件分枝

+ IF ... THEN ... (ELSE IF ...) (ELSE ...) END IF 構文

if (x .gt. 10) then
   AAA
else
   BBB
end if

+ 論理 IF 文

if (x .eq. 2) a = 1
if (y .lt. 4) goto 100

+ 算術 if 文

Fortran 90 までは互換性のために存在するが, プログラムの論理構造が わかりにくいため, 利用は奨められない。 Fortran 95 では廃止された。
if (x) 10, 20, 30

* 繰り返し (DO loop)

繰り返しの回数がわかっている/決まっている場合。
x = 0
do i = 1, 10
  x = x + i
end do

* 繰り返し (WHILE loop)

ある条件が満たされている間だけ繰り返す。
x = 0
i = 1
do while (i .le. 10)
  x = x + i
  i = i + 1
end do

* 関数

program main
a = add(b, c)
x = add(y, z)
stop
end

function add(p, q)
add = p + q
return
end

* サブルーチン

program main
call addsub(a, b, c)
call addsub(x, y, z)
stop
end

subroutine addsub(p, q, r)
p = q + r
return
end

* Format 文

Format 文とは, 入出力の書式を制御する文。 データ (数値または文字列) が与えられたときに, それがいったい どんな種類のデータなのか, それをどう表記するのかを指示する。
    write(*, 100) i, a, b1, b2
100 format(1x, i3, f8.6, 2e12.6)
[繰り返し数][形式を表わす文字][桁数]
入出力書式の編集子 (一部)
--------------------
 X   空文字送り
 A   文字列
 I   整数
 F   実数
 E   指数表記の実数
--------------------

rmiya@stu.hirosaki-u.ac.jp