制御構文
条件分岐や繰り返しなどの、制御構文について説明します。
if - 条件分岐
if (条件式)
の後に {} で処理を書き分けることで、条件分岐を実現できます。
int x = 100;
int y = 200;
if (x == y) {
// x == y の評価結果が true だった場合の処理
} else {
// x == y の評価結果が false だった場合の処理
}
while - 繰り返し
while (条件式) { }
と書くことで、条件式が false になるまで、{} の中を繰り返し実行する処理が書けます。
ループを強制的に抜けるには break を利用します。
int x = 0;
while (x < 100) {
// x が 100より小さい間は、この処理を繰り返し実行する
hsSystemWriteLine("x=%d" % x);
++x;
}
int y = 0;
// 条件式が常にtrueなので、breakで明示的に抜けるまで中の処理を繰り返す
while (true) {
if (y >= 100) {
// 強制的にループを抜ける
break;
}
++y;
}
for - 初期化と反復子込みの繰り返し
for (初期化処理; 条件式; 反復子) { }
と書くことで、
- 初期化処理を行い、
- 条件式を評価した結果が true の場合は {} 内の処理を実行し、
- 反復子を処理したあと、
- 再度条件式を確認し、true であれば 2. に戻り処理を繰り返す
という処理を実現できます。
// ループ開始前に、初期化処理によって i が 0 で初期化される。
// ループ処理の開始前に、条件式の i < 100 が毎回判定され、trueの間はループを繰り返す。
// ループの末尾で、反復子である ++i が毎回実行される。
for (int i = 0; i < 100; ++i) {
// i が 100 より小さい間、この処理を繰り返す。
hsSystemWriteLine("i=%d" % i);
}
ループからの脱出 (break, continue)
break または continue を利用することで、while や for によるループ処理の流れを制御することができます。
break
break によって、ループ処理の途中で処理を中断させることができます。
int i = 0;
// 条件式が常にtrueなので、breakで明示的に抜けるまで中の処理を繰り返す。
while (true) {
if (i >= 100) {
// breakで強制的にループを終了させる。
break;
}
++i;
}
continue
continue によって、ループ処理の途中で処理をスキップし、次のループ処理に移ることができます。
// 変数 i の値を100回表示するループ処理。
for (int i = 0; i < 100; ++i) {
if (i == 5) {
// ただし i = 5 の場合にだけ、continueで処理を切り上げるため、何も表示されない。
continue;
}
hsSystemWriteLine("i=%d" % i);
}
switch - 多数の分岐条件を簡潔に記述
switch (条件判定に利用する値) {
case 判定に利用する値:
// 処理A
break;
case 判定に利用する値:
// 処理B
break;
// ...
}
と書くことで、1つの値に対して、複数の条件判定式と、それが真である場合に実行する処理を簡潔に書くことができます。
case の末尾に default 節を置くことで、それより上にある全ての case に一致しない場合の処理を書くことができます。
int id = 100;
string message;
switch (id) {
case -1:
message = "dummy account";
break;
case 0:
message = "root user";
break;
default:
message = "restricted user";
break;
}