条件分岐

条件によって違うことを実行したい場合には、if文switch文といった条件文を用います。

if文

if文は以下の形をしています。

if ( 条件式 ) { ブロック1 } else { ブロック2 };

ここで条件式は「条件判断をするための式」です(下記参照)。ブロック部分をインデント(字下げ)して、

if ( 条件式 ) {
    ブロック1
} else {
    ブロック2
};

と書いたほうがわかりやすいです。

プログラムの流れとしては、条件式が

  • 正しい()ときにはブロック1
  • 正しくない()ときにはブロック2

が実行されます。

また、偽の場合に実行すべきものがない場合には、 「 else { ブロック2 } 」の部分を省略することができます。

条件式

条件式には、等式や不等式に代表されるtrue(真)またはfalse(偽)のブール値(真偽値)を持つ式を記述することができます。

比較演算子(<><=>===!=

数値や文字列の比較をします。Perlとは異なり、数値でも文字列でも同じ比較演算子を用います。文字列どうしの比較は文字コード順(ほぼ辞書順)になります。文字列と数値を比較した場合には、文字列を数値にキャスティングした結果で比較を行います。

比較演算子 読み
< より小さい x < 4
> より大きい x > 4
<= 以下 x <= 4
>= 以上 x >= 4
== 等しい x == 4
=== 厳密に等しい x === 4
!= 等しくない x != 4

「厳密に等しい」は、型を含めて等しい場合にのみ真になります。

論理演算子(&&||<=>===!=

複数の条件式の組み合わせで複雑な条件式を作ることができます。「かつ(and)」、「または(or)」などを論理演算子といいます。

論理演算子 読み
|| 論理和(または) 条件式1 || 条件式2
&& 論理積(かつ) 条件式1 && 条件式2
! 否定 ! 条件式

真理値表(||&&

条件式1 条件式2 || &&
true true true true
true false true false
false true true false
false false false false

真理値表(!

条件式 !
true false
false true

例 「奇数かつ3の倍数であるかどうか」を判定するプログラム

var x = 9;  // 判定する数字
       
if ( ( x % 2 == 1) && ( x % 3 == 0 ) ) {
    trace("xは「奇数かつ3の倍数」です。");
} else {
    trace("xは「奇数かつ3の倍数」ではありません。");
};

複雑な分岐

3つ以上の場合分けをする場合はif文を重ねて分岐を行います。 すなわち、if文のブロック中でif文を使用 します。このような使い方を「入れ子にする」といいます。

例 変数xの値を3で割った余りで分岐する場合

if ( x % 3 == 0 ) {
    trace("3で割り切れます。");
} else {
    if ( x % 3 == 1) {
        trace("3で割った余りは1です。");
    } else {
        trace("3で割った余りは2です。");
    }
};

このような場合、簡単に書く方法としてelse ifが用いられます。else ifを 用いたif文は以下の形をしています。入れ子の形にならないのでプログラムがわかりやすくなります。

if ( 条件式1 ) {
    ブロック1
} else if ( 条件式2) {
    ブロック2
} else {
    ブロック3
};

else部分をelse ifに変えていくことで、 さらに多くの場合分けでも対応することができます。

switch文

式の値により結果を複数に分岐させたい場合には、switch文を 使うと簡単に記述できます。switch文は以下の形をしています。

switch (式) {
    case 式1:
        ブロック1;
        break;
    case 式2:
        ブロック2;
        break;
         :
    default:
        ブロックn;
        break;
}

case部分は分岐したい数だけ記述することができます。

式を評価した結果が、式1から順に、評価した値と一致するかどうか調べられます。 一致した場合には、一致したブロックから下の命令がbreak文の あるところまで全て実行されます。break文が実行されると switch文の後ろまで実行が飛びます。

すべての式に一致しない場合には、defaultのブロックが実行されます。

例 変数xの値を3で割った余りで分岐する場合

var x=9;
switch (x % 3) {
    case 0:
        trace("3で割り切れます。");
        break;
    case 1:
        trace("3で割った余りは1です。");
        break;
    default:
        trace("3で割った余りは2です。");
        break;
};