条件によって違うことを実行したい場合には、if文やswitch文といった条件文を用います。
if文は以下の形をしています。
if ( 条件式 ) { ブロック1 } else { ブロック2 };
ここで条件式は「条件判断をするための式」です(下記参照)。ブロック部分をインデント(字下げ)して、
if ( 条件式 ) {
ブロック1
} else {
ブロック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 |
var x = 9; // 判定する数字
if ( ( x % 2 == 1) && ( x % 3 == 0 ) ) {
trace("xは「奇数かつ3の倍数」です。");
} else {
trace("xは「奇数かつ3の倍数」ではありません。");
};
3つ以上の場合分けをする場合はif文を重ねて分岐を行います。 すなわち、if文のブロック中でif文を使用 します。このような使い方を「入れ子にする」といいます。
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 (式) {
case 式1:
ブロック1;
break;
case 式2:
ブロック2;
break;
:
default:
ブロックn;
break;
}
case部分は分岐したい数だけ記述することができます。
式を評価した結果が、式1から順に、評価した値と一致するかどうか調べられます。 一致した場合には、一致したブロックから下の命令がbreak文の あるところまで全て実行されます。break文が実行されると switch文の後ろまで実行が飛びます。
すべての式に一致しない場合には、defaultのブロックが実行されます。
var x=9;
switch (x % 3) {
case 0:
trace("3で割り切れます。");
break;
case 1:
trace("3で割った余りは1です。");
break;
default:
trace("3で割った余りは2です。");
break;
};
Programming Laboratory (Shio seminar)