Tutorial 5. Control Structures

Compound Statement

{
    int x;
    x=0;
}


compound statementは{}で囲まれたstatementのブロックです。compound statementは以下のcontrol structuresで、複数の処理をグループにまとめる事にも用いられます。

Conditional Structure: if and else

if(a)
    a=0;


if statementは、if (expression) statementの形式となります。expressionがtrueの場合、statementが処理され、falseの場合はstatementは無視されます。

if(a){
    a=0;
}


statementにはcompound statementも含まれるので、上の例は合法です。

if(a)
    a=0;
else
    a=1;

if-else statementは、if (expression) statement1 else statement2の形式となります。expressionがtrueの場合、statement1が処理され、falseの場合はstatement2が処理されます。

if(a){}
else if(a==1)
    a=0;
else
    a=1;

statementにはif statement、if-else statementも含まれるので、上の例は合法です。

Iteration Structure: while

while(a)
    --a;


while statementは、while (expression) statementの形式となります。expressionがtrueの場合、statementが処理された後、再びexpressionを評価します。つまり、expressionがfalseとなるまでstatementが処理され続けます。

while(a!=0){
    --a;
    using::write(a);
}


上の例では、次のような順番で処理が行われます。
1. a!=0を求め、trueの場合は2へ。falseの場合はloopを抜ける。
2. --aを求める。つまり、aは-1される。3へ。
3. using::write(a)、aの値をスクリーンへ表示する。1へ戻る。

Jump Statements: break, continue


iteration structure内のstatementでは、jump statementの使用が有効となります。それ以外のstatementでjump statementが呼び出された場合、正常な動作が行われる保証はありません。

while(a){
    a=1;
    break;
}


break statementはloopから強制的に抜けだします。上例の場合、loop内の最初でa=1となり、aは必ず正となりますが、breakによってloopは強制的に終了され、プログラムがinfinite loopに陥ることはありません。

while(a){
    if(a>0){
        --a;
        continue;
    }
    using::write(a);
}


continue statementはその時点でloop内の処理を終了し、expressionを再評価します。上例の場合、a>0の場合は--aを行いwhile(a)の評価へと戻ります。そのため、using::write(a)へ到達することはありません。


Next: Tutorial 06. Functions
Prev: Tutorial 04. Operators