3つ以上の条件分岐
コンテンツ
複数のIfステートメントを並べてみよう
これまでIf ステートメントを用いた条件分岐を考えてきましたが,Ifステートメント複数並べて使用すると,多くの場合分けを考慮できる処理を実行できます.例えば,テストの点数に応じて3つのクラスに分ける場合,以下のような処理を If ステートメントを用いて考えてみましょう.
もし100点以下であれば
Aクラスに配属する
もし70点未満であれば
Cクラスに配属する
このまま If ステートメントを用いてプログラムを作成すると,以下のようになります.
If score <= 100 Then
Label1.Text = "Aクラス"
End If
If score < 70 Then
Label1.Text = "Bクラス"
End If
If score < 30 Then
Label1.Text = "Cクラス"
End If
最初に「100点以下」という条件を持ってくると,70点未満の点数の場合に出力が上書きされます.
一方,以下のような処理の場合はどんな結果になるでしょうか?
If score < 30 Then
Label1.Text = "Cクラス"
End If
If score < 70 Then
Label1.Text = "Bクラス"
End If
If score <= 100 Then
Label1.Text = "Aクラス"
End If
実は,この場合,何を入力しても"Aクラス"と表示されます.なぜそうなるのか考えてみましょう.
IFステートメントの入れ子構造
上記の例では,If ステートメントを並列に使用しましたが,実は,If ステートメントのブロックの中にIf ステートメントを書いていくことも出来ます.このような処理の構造を入れ子構造といいます.If
ステートメントを入れ子構造で記述すると,以下のように処理を書くことができます.
もし30点未満であれば
Cクラスに配属する
そうでなければ
もし70点未満であれば
Bクラスに配属する
そうでなければ
Aクラスに配属する
このまま If ステートメントを用いてプログラムを作成すると,以下のようになります.
If score < 30 Then
Label1.Text = "Cクラス"
Else
If score < 70 Then
Label1.Text = "Bクラス"
Else
Label1.Text = "Aクラス"
End If
End If