2008年1月28日月曜日

fortran90:cycle文

fortran90でループから抜けるときにはexitかcycle文を使う。exitはループを抜け、ループの先の文に実行が移る。cycle文はループの先頭に実行が移る。exitはCでのbreakに、cycleはCでのcontinueに相当する。

fortran90におけるexit,cycle文の便利なところは、多重ループにおいて、どのループを制御するか、ループにつけたdo構造名で指示できることである。条件分岐と組み合わせることで、馬鹿でかい正方二次行列に値を代入せにゃならんが、要素が存在する条件が決まっていて実際はそんなに要素数ないんだよねっていう物理屋の数値計算にありがちな状況で非常に使える気がする。こんな感じで使う。

!test for cycle
program main
integer :: i,j,B(4,4)
B=0
do i=1,4
inner: do j=1,4
if (mod(j,2)==0) then; cycle inner
else
B(i,j)=1
end if
end do inner
end do
end program main

innerていうのがdo構造名である。基本、何でも良い。上の例は4×4の行列Bの偶数列が0に奇数列が1になるようにしたもの。

0 コメント: