fortran で演算をするとき,計算が行われる順序は以下の通りとなります.
以下のプログラムを実行し,結果を検討してみよう.
implicit none write(*,*) 4 + 2 * 3 write(*,*) 12/3*2 write(*,*) 2**3**2 write(*,*) (2**3)**2 end
プログラム中で条件分岐を行いたいときはIF文を用いる. 基本の形を以下にしめす.
if(b) 実行文
bには論理式または算術関係式がはいります(算術関係式は下に説明. 論理式は後日説明します. ).この形式だとbが真の場合にのみ実行文が行われ,それ以外だと何もせず次に制御が移ることになります.
if(b) then 実行文 endif
基本的に上とおなじ. 実行文が二行以上になる時.
if(b) then 実行文 1 else 実行文 2 endif
上の形式では,もしbが真であれば実行文1が行われ,偽であれば実行文2が行 われます.実行文2にもあてはまらない場合をさらに場合分けしたいときはさらにブロックを重ねることができます.
if(b) then 実行文 1 else if(c) then 実行文 2 else 実行文3 endif
この場合は, もしbが真であれば実行文1が行なわれます. 偽の場合はさらにcによって条件がわかれ, 真の場合は2が, 偽の場合は3が実行されます. このif-elseブロックはいくらでも重ねることができます.
たとえば,以下のプログラムはキーボードから入力した値が10.以上ならその値を画面に表示させるプログラムである.
implicit none real*8 a read(5,*) a if(a.ge.1.D1) then write(6,*) a endif end
このプログラムを作成して実行してみよ.
以下のプログラムは,キーボードから整数を二つ(n(1)とn(2))改行して入力し,n(1)がn(2)で割り切れる場合はn(1)を画面に表示させるプログラムである.
implicit none integer n(2),i do i=1,2 read(5,*) n(i) enddo if(mod(n(1),n(2))==0) write(6,*) n(1) end
このプログラムは何をするだろうか? 上から三行目のread文は,スペースを挟んで横に並んだデータを読み込む時の形式である.
implicit none integer n(2),i read(5,*) (n(i),i=1,2) if(n(1).gt.n(2)) then write(6,*) n(1) else write(6,*) n(2) endif end