【プログラミング基礎】条件分岐で思い通りに制御する

2021年8月23日

プログラミングをこれから学習しようという方、なかなか覚えられない方は必見です。
プログラミングには「順次(処理)」「条件分岐」「繰り返し」という基本的な動きが存在します。
基本的な動きというだけあって、どのプログラミング言語を扱ったとしても必ず登場します。

この記事ではプログラミングの基本の中でも「条件分岐」についてを解説していこうと思います。
この記事を読むことで、プログラムの「条件分岐」がどのようなことをいうのかわかります。

「条件分岐」を使いこなせると、データの状態によって処理を分岐させたり、本来入力されていないといけないデータが入力されていない場合にエラーとするなど、複雑で堅牢なシステムを作るようになれますので、ぜひマスターしてください。

条件分岐とは

「条件分岐」は条件を満たす場合に処理をさせたい時に使います。「もし○○の場合、▲▲の処理を実行する」という書き方が基本型です。

「条件分岐」を使うことで、ある条件を元に実行する処理を分けることができます。
例えば、「信号が『青』なら進め、信号が『青以外』なら止まれ」という動きを条件分岐で表すとこのようになります。

if (信号が青) {
  進む
} else {
  止まる
}

「&&」や「||」を使って、色々な条件を組み合わせて記載することができますが、組み合わせる条件が増えるほど複雑になり、不具合が発生するリスクが高まるので注意が必要です。
複数条件が指定されている場合は記載されている順に評価されます。

「&&」と使うと先ほどの条件分岐に「歩行者がいない」という条件を追加できます。

if (信号が青 && 歩行者がいない) {
  進む
} else {
  止まる
}

このプログラムだと、信号が青で歩行者がいなければ進むとちょっと賢い動きをするようになります。
逆に以下の場合はelseの処理が実行されるので止まります。

elseの処理が実行される条件

  • 信号が赤か黄色で歩行者がいる
  • 信号が青でも歩行者がいる
  • 信号が赤か黄色で歩行者がいない

if文を使った条件分岐

条件分岐はif文、上述したif〜else文を含め5種類ほど書き方があります。

それぞれの意味を理解しておくと、思った通りにプログラムを制御でき、より簡単にプログラムを書くことができるようになります。

if

if(条件式){処理}と書いて、[条件式]がtrueなら[処理]を処理します。[条件式]の部分には必ずtrueかfalseの値をとるような式が記述されます。

if文の構文

if (条件式) {
  // 条件式がtrueの場合に実行する処理
}

信号の例を用いると「信号が青でない場合、止まる」と記述すると信号が青の場合だけ進むように制御することができます。

if (信号が青でない) {
  止まる
}

ifelse

if(条件式){処理A} else {処理B}と書いて、[条件式]がtrueなら[処理A]を処理し、[条件式]がfalseなら[処理B]を処理します。
条件によって、実行したい処理を分けたい時に有効な手段です。

if〜else文の構文

if (条件式) {
  // 条件式がtrueの場合に実行する処理
} else {
  // 条件式がfalseの場合に実行される処理
}

信号の例で書いた記述はこちらの方法です。

if (信号が青) {
  進む
} else {
  止まる
}

if~else if

上述のif〜else文よりも分岐の数が多い(分岐条件を3つ以上)場合に使用します。必要な分だけ分岐を追加でき、記述した順に条件を判定します。

if〜else if文の構文

if (条件式1) {
  // 条件式1がtrueの場合に実行する処理
} else if (条件式2) {
  // 条件式2がtrueの場合に実行される処理
・・・
} else {
  // 全ての条件式がfalseの場合に実行される処理
}

信号の例を用いると、下記のように書くことができます。

if (信号が青) {
  進む
} else if (信号が黄色) {
  止まる
} else if (信号が赤) {
  止まる
}

条件式を複数指定する

ifの[条件式]は「&&」や「||」の論理演算子を使うことで複数の条件を判定できます。

if ([条件式1] && [条件式2]) {
    // 処理
}

「&&」はAND条件を表していて、左辺と右辺の両方がtrueの場合に実行されます。

なので例に挙げた信号の例は「信号が青」かつ「歩行者がいない」という2つの条件がtrueなら進むように制御しています。

if (信号が青 && 歩行者がいない) {
  進む
} else {
  止まる
}

もう少し実用的な例として、strという変数がnullでない、かつ空でない場合trueを返却し、そうでない場合はfalseを返却するという処理ができます。
これはstrの変数に何か有効な値が入っているかどうかのチェックをする場合によく使うロジックです(開発現場ではnullチェックと表現されたりします)。

if (str != null && str != ‘’) {
   return true;
}
return false;

「||」はOR条件を表していて、左辺と右辺のどちらかがtrueの場合に実行されます。

例えば、strという変数がnullまたは空の場合、trueを返却し、そうでない場合はfalseを返却するという処理ができます。
これはisEmpty()というメソッドを作る際によく利用されるロジックです。

if (str == null || str == ‘’) {
   return true;
}
return false;

演算子についての説明は「変数や演算子を使った処理」で解説しています。

switch文を使った条件分岐

if〜else if〜else if・・・と「else if」が続いてしまう場合、switch文を使うとシンプルに記述できます。

switch文はswitch()の括弧内の値を評価し、caseの値が一致した場合case節の処理を実行し、一致するcaseが無い時はdefault節が実行されます。
case節はcase〜break;まで処理されます。

switch文の構文

switch(条件式) {
  case 値1:
    // 式 === 値1だった時の処理
    break;
  case 値2:
    // 式 === 値2だった時の処理
    break;
  ・・・
  default:
    // 式が全て値に合致しなかった時の処理
}

if~else if文の例をswitch文で表現すると次のように書くことができます。

switch(信号の色) {
  case 青:
    進む
    break;
  case 黄色:
    止まる
    break;
  case 赤:
    止まる
   break;
}

まとめ

if文やswitch文を使ってある条件を満たす場合に処理することを「条件分岐」と言います。
「条件分岐」を使うことで、実行したい処理を制御することができるようになります。

条件分岐はif (条件式) {処理}が基本の形でいくつかの書き方があり、条件式も論理演算子を使うことで複数の条件を書くことができます。

条件を満たす場合に処理させる以外にも、予期しないエラーを発生させないためのチェック処理を行う使い方もあります。

if (x != ‘’) {
  // 処理を終了する
}

堅牢なシステムを作るには、事前チェック処理が欠かせません。その肝になるのがif文による条件分岐なので、しっかりと理解して自在に使えるようになっておくと良いでしょう。

以上が条件分岐の解説でした。