世界最大級のオンライン学習サービス「Udemy(ユーデミー)」とは?

【Flutter/Dart】条件分岐とは?if文・switch文・三項演算子

今回はDart言語における「条件分岐」の概念と使い方について解説していきます。

プログラミング初心者でも理解しやすい内容になっているのでぜひ最後までご覧ください。

目次

プログラミング言語における「条件分岐」とは?

まずはプログラミング言語における条件分岐とは何かについて解説していきます。

条件分岐とはズバリ「条件によって処理を変えるプログラム」のことです。

「もし〇〇ならば△△の処理を実行し、〇〇でないならば××の処理を実行する」のように条件に対してプログラムを制御できます。

条件分岐は「if文」と「switch文」に大別される

条件分岐のプログラムはif文とswitch文に大きく区別されます。

if文とswitch文では文の構造に違いがあるのはもちろんですが、次のように用途が少し異なります。

  • if文では条件式の結果によって処理を変える
  • switch文では変数の値によって処理を変える

どちらも条件によって処理を変えるのは同様ですが、if文では条件式が真または偽によって処理を変えるのに対し、switch文では変数の値によって処理を変えます。

条件分岐の種類・使い分け

条件分岐の種類特徴
if文条件式の結果によって処理を変える
switch文変数の値によって処理を変える
三項演算子事象が2つの場合のみ使用できる

Dart言語の条件分岐には先ほど触れたif文とswitch文に加え、if文を簡略化できる三項演算子があります。

またif文ではより複雑な条件分岐ができるif..else文とelse if文があります。

if文

if文の基本形では条件式の結果が真(true)の場合の処理を書きます。

またif文では条件式の結果が偽(false)の場合は処理は実行されません。

//書き方
if (条件式) {
  条件式が真の場合の処理..
}

if文の使用例

次のif文では条件式の結果が真となるので処理が実行されますが、もしage = 9であれば条件式が偽となるので処理は実行されません。

//使用例
void main() {
  int age = 20;

  if (age >= 18) {
    print('成人です');
  }
}

///出力結果
//成人です

if..else文

if..else文では条件式の結果が真と偽の場合でそれぞれ処理を指定できます。

偽の場合の処理はelse{}内に書きます。

//書き方
if (条件式) {
  条件式が真の場合の処理..
}else{
  条件式が偽の場合の処理..
}

if..else文の使用例

次のif..else文では条件式の結果が偽となるのでelseで書いた処理が実行されます。

//使用例
void main() {
  int age = 9;

  if (age >= 18) {
    print('成人です');
  } else {
    print('未成年です');
  }
}

///出力結果
//未成人です

else if文

else if文では2つ以上の条件を指定して条件分岐を行いたい場合に使用できます。

if文の上から順に条件式を確認していき条件式が真の場合の処理を実行します。

//書き方
if (条件式1) {
  条件式1が真の場合の処理..
}else if (条件式2) {
  条件式2が真の場合の処理..
}else if (条件式3) {
  条件式3が真の場合の処理..
}else{
  どの条件にも合わない場合の処理..
}

else if文の使用例

次のelse if文では条件式dice == 1, dice == 2, …の順番で条件を確認していき、条件式が真であるdice == 4で指定した処理を実行します。

//使用例
void main() {
  int dice = 4;

  if (dice == 1) {
    print('サイコロの目:1');
  } else if (dice == 2) {
    print('サイコロの目:2');
  } else if (dice == 3) {
    print('サイコロの目:3');
  } else if (dice == 4) {
    print('サイコロの目:4');
  } else if (dice == 5) {
    print('サイコロの目:5');
  } else if (dice == 6) {
    print('サイコロの目:6');
  } else {
    print('サイコロの目:存在しません');
  }
}

///出力結果
//サイコロの目:4

switch文

switch文では変数の値(式の結果)によって異なる処理を指定できます。

else..if文でもswitch文同様の条件分岐を作ることが可能ですが、switch文を使用することで次のように視覚的に分かりやすいコードを書くことができます。

switch (式) {
  case 値1:
    式 == 値1 の場合の処理..
    break;
  case 値2:
    式 == 値2 の場合の処理..
    break;
  case 値3:
    式 == 値3 の場合の処理..
    break;
  default:
    どのcaseにも当てはまらない場合の処理..
    break;
}

switch文の使用例

次のswitch文では対象となる式がdiceでその値が4であることから、case 4の場合の処理が十個されます。

//使用例
void main() {
  int dice = 4;

  switch (dice) {
    case 1:
      print('サイコロの目:1');
      break;
    case 2:
      print('サイコロの目:2');
      break;
    case 3:
      print('サイコロの目:3');
      break;
    case 4:
      print('サイコロの目:4');
      break;
    case 5:
      print('サイコロの目:5');
      break;
    case 6:
      print('サイコロの目:6');
      break;
    default:
      print('サイコロの目:存在しません');
      break;
  }
}

///出力結果
//サイコロの目:4

三項演算子

三項演算子ではif..else文(条件式が真と偽の場合)の処理を1文でまとめられます。

//書き方
条件式 ? 真の場合の処理 : 偽の場合の処理;

三項演算子の使用例

次の三項演算子では条件式が真なのでprint('成人です’)の処理が実行されます。

//使用例
void main() {
  int age = 20;

  (age >= 18) ? print('成人です') : print('未成年です');
}

///出力結果
//成人です

まとめ

今回はDart言語における「条件分岐」の基本的な使い方について解説しました。

参考サイト

目次