数値解析法及び演習 第四回

IF文
  1. 計算の順序
  2. IF文による条件分岐
  3. 今日の宿題

[1] 計算の順序

fortran で演算をするとき,計算が行われる順序は以下の通りとなります.

以下のプログラムを実行し,結果を検討してみよう.

      implicit none      

      write(*,*) 4 + 2 * 3
      write(*,*) 12/3*2
      write(*,*) 2**3**2
      write(*,*) (2**3)**2

      end

[2] IF文による条件分岐

プログラム中で条件分岐を行いたいときはIF文を用いる. 基本の形を以下にしめす.

例1:

if(b) 実行文 

bには論理式または算術関係式がはいります(算術関係式は下に説明. 論理式は後日説明します. ).この形式だとbが真の場合にのみ実行文が行われ,それ以外だと何もせず次に制御が移ることになります.

例2:

if(b) then
実行文 
endif

基本的に上とおなじ. 実行文が二行以上になる時.

例3:

if(b) then

実行文 1

else

実行文 2

endif

上の形式では,もしbが真であれば実行文1が行われ,偽であれば実行文2が行 われます.実行文2にもあてはまらない場合をさらに場合分けしたいときはさらにブロックを重ねることができます.


例4:

if(b) then

実行文 1

else if(c) then

実行文 2

else

実行文3

endif

この場合は, もしbが真であれば実行文1が行なわれます. 偽の場合はさらにcによって条件がわかれ, 真の場合は2が, 偽の場合は3が実行されます. このif-elseブロックはいくらでも重ねることができます.

算術関係式の種類

たとえば,以下のプログラムはキーボードから入力した値が10.以上ならその値を画面に表示させるプログラムである.

サンプルプログラム1

      implicit none      
      real*8 a

      read(5,*) a
      if(a.ge.1.D1) then
      write(6,*) a
      endif

      end

このプログラムを作成して実行してみよ.


以下のプログラムは,キーボードから整数を入力し,偶数ならその整数を画面に表示させるプログラムである.


サンプルプログラム2

      implicit none      
      integer n

      read(5,*) n

      if(mod(n,2)==0) write(6,*) n
     
      end

このプログラムは何をするだろうか? 上から三行目のread文は,スペースを挟んで横に並んだデータを読み込む時の形式である.

サンプルプログラム3

      implicit none      
      integer n,a(2),i

      read(5,*) (a(i),i=1,2)

      if(a(1).gt.a(2)) then
         write(6,*) a(1)
      else
         write(6,*) a(2)
      endif
     
      end

[3] 今日の宿題

〆切は10/29. すべてのプログラムを添付ファイルで送付すること(結果はいらない).


日程表へ戻る <<