next up previous contents
Next: 5. 日本語とプログラム Up: 3. 制御構造1 判断 Previous: 3. 真でない場合の判断

4. 更に複雑な判断

前のセクションで習ったものよりも更に複雑な判断をすることも出来る。


        if ( 条件1 ){
                文1
        }else if ( 条件2 ){
                文2
        }else if ( 条件3 ){
                文3
        }else if ( 条件4 ){
                .
                .
                .
        }else{
                文n
        }

これは、条件1が真の場合は、文1が実行され、条件1が偽で条件2が真の場合、 文2が実行され、更にそれらが偽である場合は条件3が判断され、という具合に 最初の条件から順番に判断がされていき、それら全部が偽である場合には、 文 n が実行される。注意すべきは、条件1で真ならば、文1のみが実行され、 以下の条件 x は、すべて無視されると言う点である。これは、どの部分でも 同じで、条件3が真ならば文3が実行され、その後の条件は全て無視して、 if 文の実行から抜ける。(最後の行の } の後の文の実行に移る。)

また、最後の else{...} はなくても良く、その場合、条件 1 〜 n に当てはまらなければ、何も実行されず } 以降の文の実行に移る。


例 5
        if ( x > 0 ){
                z = 1;
        }else if ( x == 0 ){
                z = 0;
        }else{
                z = -1;
        }

この例の場合、x が正の場合、z に1を代入し、x が 0に等しい場合、z に0を代入し、以上のどれでもない場合 ( 即ち、 負の場合 ) 、z にー1を代入することになる。


例 6
1:        if ( x > 7 ){
2:                y = 7;
3:        }else if ( x > 6 ){
4:                y = 6;
5:        }else if ( x > 5 ){
6:                y = 5;
7:        }else if ( x > 8 ){
8:                y = 8;
9:        }

この例では、1行目で x が7より大きい場合は全て y に7を 代入し、もし、x が7以下である場合で、x が6より大きいならば y に6を代入しているが、注意すべきは、例えば x = 8 の場合、 最初の1行目で既に真になっているので、以降の if 文の判断はされないという ことである。従って、3行目は実際には、$ 7 \ge x > 6 $ という条件になって しまう点に注意しよう。更に、そのために、7行目で行なっている判断は常に 偽になってしまうので、8行目の文はどんな場合でも絶対に実行されることはない。 また、この例では、else 文がないので、x が5以下の場合は、y には何も代入されない。



Noriyo Kanayama 平成14年11月26日