next up previous
: 分割コンパイル : Fortran 文法 : Fortran 文法

do while 文

do ...end do 構文で、ある一定回数繰り返すのではなく、ある条件が満たされ る時のみ、繰り返したい時がある。そういう場合に便利なのが do while 文であ る。

do while (論理式)
	実行文
end do
論理式が真であるあいだ、do block を繰り返す。 (注:これは、Fortran 90 の文法である。F77 では標準ではない)

例: newton.f を次のようにする。

c Newton-Raphson method
      implicit real*8 (a-h,o-z)
c
      epsilon = 1.0 e-10
      read(*,*) xnew
      xold = xnew + 0.1
      do while (abs(xnew-xold) > epsilon)
         xold=xnew
         xnew=xold-f(xold)/df(xold)
         write(*,1000) "result=",xnew
      end do
      write(*,1000) "result=",xnew
 1000 format(a,f20.16)
      end

これはニュートン法のメインルーチンであり、xnew と xold の差の絶対値が、 epsilon より小さくなるまで実行を繰り返す。



Kiyohide Nomura 平成15年6月25日