複数の選択肢から一つ、あるいは、ある範囲を選択する場合に便利な構文がcase文です。
if文よりも簡潔な表現が可能で、プログラムの可読性が上がるので、ぜひマスターして下さい。
記事の最後にサンプルプログラムを掲載しています。
case文の記述ルール
case文の基本形は以下のとおりです。変数=値1の場合に処理1が実行され、変数=値2の場合に処理2が実行されます。使用できる変数の型は、整数型(integer)、文字型(character)、 または論理型(logical)です。
select case (変数)
__case (値1)
____処理1
__case (値2)
____処理2
end select
以下のように範囲を指定することもできます。値1≦変数≦値2の場合に、処理1が実行されます。
select case (変数)
__case (値1:値2)
____処理1
end select
応用として、以下のような記述もできます。変数=値1、または値2≦変数≦値3の場合に、処理1が実行されます。
select case (変数)
__case (値1, 値2:値3)
____処理1
end select
以下のように case default を使った場合には、変数=値1のときに処理1が実行され、それ以外は処理2が実行されます。
select case (変数)
__case (値1)
____処理1
__case default
____処理2
end select
サンプルプログラム
サンプルプログラムを下記します。4-5行目は変数の型宣言、7-8行目は変数に初期値を代入、13-20行目は整数型変数と整数の比較、22-29行目は文字型変数と文字列の比較です。
以下のFortranプログラムをコピペし、****.f90の名前で保存して下さい(****の部分は適当でいいです)。コピペが面倒な場合は、こちらからダウンロードして下さい(右クリックメニューから保存)。→ sample06.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 sample06 implicit none !-------------------------------------------------------------------- integer :: i character(len=80) :: o !-------------------------------------------------------------------- i = 2 o = 'dog' write(*,'(a,i3)') 'i = ', i write(*,'(a,a10)') 'o = ', o select case (i) case (1) write(*,'(a)') 'i = 1' case (2:3) write(*,'(a)') 'i = 2-3' case default write(*,'(a)') 'i = other' end select select case (o) case ('dog') write(*,'(a)') 'o = dog' case ('cat') write(*,'(a)') 'o = cat' case default write(*,'(a)') 'o = other' end select !-------------------------------------------------------------------- end program sample06 |
使い方は、前記事と同様に、****.f90を以下の****.batにドラッグ&ドロップするだけです。
64bit用 → comp_exe_64.bat
32bit用 → comp_exe_32.bat
こんな画面が出たでしょうか?出ていれば正常終了です。7-8行目の値を変えて、色々試してみて下さい。
→ 次の記事へ(繰り返し(do))
← 前の記事へ(条件分岐(if))
目次(Fortran90)