条件分岐(case)

複数の選択肢から一つ、あるいは、ある範囲を選択する場合に便利な構文が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


sample06

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


→ 次の記事へ(繰り返し(do))
← 前の記事へ(条件分岐(if))
目次(Fortran90)

スポンサーリンク

コメントをどうぞ

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