繰り返し(do)

同じような処理を何度も繰り返したい場合はdo文を使います。

この記事ではdo文について説明します。

記事の最後にサンプルプログラムを掲載しています。

スポンサーリンク

do文の記述ルール

do文の基本形は以下のとおりです。変数が初期値から最終値まで処理1が繰り返し実行されます。使用できる変数の型は、整数型(integer)です。刻み幅は省略可能です。

do 変数 = 初期値, 最終値, [刻み幅]
__処理1
end do


以下のように、 do文の中にdo文を入れることもできます。

do 変数1 = 初期値, 最終値, [刻み幅]
__do 変数2 = 初期値, 最終値, [刻み幅]
____処理1
__end do
end do


以下のように、 exit を使うことで、条件1が満たされた場合に、doループを抜けることができます。

do 変数 = 初期値, 最終値, [刻み幅]
__if (条件1) exit
__処理1
end do


以下のように、 cycle を使うことで、条件1が満たされた場合に、cycle以下に書かれた処理をスキップすることができます。以下の例では、処理1は常に実行され、処理2は条件1が満たされた場合はスキップされます。

do 変数 = 初期値, 最終値, [刻み幅]
__処理1
__if (条件1) cycle
__処理2
end do


以下のように記述した場合、条件1が満たされるまで、無限に繰り返しが実行されます。条件1が適切でない場合、プログラムが止まらなくなってしまうので、注意して下さいね。プログラムが止まらない場合は、Ctrl + C で強制終了できます。

do
__if (条件1) exit
__処理1
end do

do文のちょっとしたtips

tipsを以下に列挙します。読みやすいプログラムや、速いプログラムを書くときに役に立つと思うので、頭の片隅に置いておいて下さいね。

・アルゴリズムを工夫して、do文の中の演算を減らしましょう。特に、掛け算、割り算、if文を減らすとgoodです。

・Fortran77の時代はgoto文でループを抜ける等の処理を行っていましたが、プログラムの可読性を上げるために、 exitcycle を使いましょう。

・可読性を落とさない範囲で、多重ループを減らしましょう。最適化や並列化によって高い計算速度が得られる場合があります。

サンプルプログラム

サンプルプログラムを下記します。4-5行目は変数の型宣言、7-8行目は変数に初期値を代入、10-14行目は基本的なdo文のデストで、1~10までの和を計算しています。また、16-21行目は exit のテスト、23-29行目は cycle のテストです。

以下のFortranプログラムをコピペし、****.f90の名前で保存して下さい(****の部分は適当でいいです)。コピペが面倒な場合は、こちらからダウンロードして下さい(右クリックメニューから保存)。→ sample07.f90

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
program sample07
  implicit none
!--------------------------------------------------------------------
  integer :: i, m, n
  real(8) :: x
!--------------------------------------------------------------------
  m = 10
  n = 5
 
  x = 0.0d0
  do i = 1, m
    x = x + dble(i)
  end do
  write(*,'(a,f5.1)') 'x = ', x
 
  x = 0.0d0
  do i = 1, m
    if (i > n) exit
    x = x + dble(i)
  end do
  write(*,'(a,f5.1)') 'x = ', x
 
  x = 0.0d0
  do i = 1, m
    x = x + dble(i)
    if (i > n) cycle
    x = x + dble(i)
  end do
  write(*,'(a,f5.1)') 'x = ', x
 
!--------------------------------------------------------------------
end program sample07

使い方は、前記事と同様に、****.f90を以下の****.batにドラッグ&ドロップするだけです。
64bit用 → comp_exe_64.bat
32bit用 → comp_exe_32.bat


sample07


こんな画面が出たでしょうか?出ていれば正常終了です。7-8行目の値を変えて、色々試してみて下さい。


→ 次の記事へ(配列(1)-基本操作)
← 前の記事へ(条件分岐(case))
目次(Fortran90)

スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です