コンテンツにスキップ

制御構文

条件分岐や繰り返しなどの、制御構文について説明します。

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より小さい間は、この処理を繰り返し実行する
    ++x;
}

int y = 0;
// 条件式が常にtrueなので、breakで明示的に抜けるまで中の処理を繰り返す
while (true) {
    if (y >= 100) {
        // 強制的にループを抜ける
        break;
    }
    ++y;
}

for - 初期化と反復子込みの繰り返し

for (初期化処理; 条件式; 反復子) { } と書くことで、

  1. 初期化処理を行い、
  2. 条件式を評価した結果が true の場合は {} 内の処理を実行し、
  3. 反復子を処理したあと、
  4. 再度条件式を確認し、true であれば 2. に戻り処理を繰り返す

という処理を実現できます。

()の後に {} で処理を書き分けることで、条件分岐を実現できます。

int i;
for (i = 0; i < 100; ++i) {
    // 100回この処理を繰り返す
    hsSystemOutput("%d\n" % 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;
}