From:リスキルテクノロジー 高坂一城
新宿本校にて
プログラムでは、
ある条件に応じて処理を分けたい、
という場面があります。
年齢が20歳以上ならお酒を販売する、
20歳未満ならお酒を販売しないといったものです。
こういったときのために、
プログラミング言語には、
「条件によって処理を分ける」という
機能が用意されています。
この機能が『分岐処理』です。
目次
分岐処理の種類
一般的なプログラミング言語の場合、
『if文』という書き方と、
『switch文』という書き方があります。
if文とswitch文の違い
なぜ、分岐処理には
2つの書き方があるのでしょうか?
実は、どちらの書き方でも、
同じ分岐処理を記述することができます。
(前回のループ処理もそうでしたね)
違いは、書式の違いによる
ソースコードの読みさすさと実行速度です。
また、分岐処理には、
「二分岐」と呼ばれる、
2つの処理のどちらかを実行するものと、
「多分岐」と呼ばれる、
3つ以上の処理のどれか一つを実行するもの
があります。
二分岐
if文の書式(二分岐)
if文による二分岐の分岐処理は、
以下のような書式になります:
条件式が正しい(true)ときの処理
} else {
条件式が正しくない(false)ときの処理
}
if文は、
条件式を評価した結果が、
trueかfalseかによって
処理を分岐します。
switch文の書式(二分岐)
switch文による二分岐の分岐処理は、
以下のような書式になります:
case n:
条件式がnのときの処理
break;
default:
条件式がn以外のときの処理
break;
}
※nは整数
switch文は、条件式を評価した結果が、
特定の整数かどうかによって
処理を分岐します。
二分岐の場合の違い
上記の2つの書式から、
二分岐の場合はif文のほうが
ステップ数が少なく見やすくなります。
また二分岐の場合の実行速度は、
if文もswitch文も
どちらもほとんど変わりません。
多分岐
if文の書式(多分岐)
if文による多分岐の分岐処理は、
以下のような書式になります:
条件式1が正しい(true)ときの処理
} else if (条件式2) {
条件式2が正しい(true)ときの処理
} else if (条件式3) {
条件式3が正しい(true)ときの処理
・・・
} else {
上記以外のときの処理
}
switch文の書式(多分岐)
switch文による多分岐の分岐処理は、
以下のような書式になります:
case i:
条件式がiのときの処理
break;
case j:
条件式がjのときの処理
break;
case k:
条件式がkのときの処理
break;
・・・
default:
上記以外のときの処理
break;
}
※i、j、kは異なる整数
多分岐の場合の違い
上記の2つの書式を見てもわかる通り
多分岐の場合もswitch文のほうが
ステップ数は多いですが
ソースコードは読みやすくなります。
また多分岐の場合の実行速度は、
switch文のほうがif文よりも速いと
されています。
if文は条件式を上から順番に
評価していくのに対し、
switch文は
条件式の評価は1度だけで、
あとは同じ数字を見つけるだけ
という違いによるものです。
(内部的には、「テーブルジャンプ」や
「二分探索」という技術が使われている)
if文とswitch文の使い分け
ソースコードの読みさすさと
実行速度から、
・二分岐の場合は、『if文』が適している
・多分岐の場合は、『switch文』が適している
ということが言えます。
しかし、どのプログラミング言語でも
分岐処理を勉強するときには
「if文」がはじめに登場します。
そのためか、
switch文を敬遠する方を
多く見かけます。
最近のプログラミング言語では、
switch文の条件式の評価結果に、
整数以外の値が使える言語も存在します。
例えばJava言語では、
バージョン7以降において、
条件式の評価結果に「文字列」が
扱えるようになりました。
このように利便性も増しています。
ぜひ、多分岐処理の時には
switch文にも挑戦してみてください。
------------------------------------------------
PS.Javaを基礎からしっかり学びたいなら、
社会人のためのJavaスクールで!!
------------------------------------------------
コメント