場合によっては、ループブロックの文を実行させたくない場合がある。このとき、
continue文を使う。通常は
if文を伴って、次のように書く。
書式 |
---|
while(継続条件式){
文1;
if(制御式) continue;
文2;
文3;
}
|
これは、「継続条件が正しい限り、文1と文2、文3を実行する。ただし、制御式が正しけ
れば文2と文3はスキップする。」となる。当然、制御式が誤り(偽)であれば、これら文は実行されず、ブロックの外側に出る。図
5にこの構文
のフローチャートを示す。ここでは、
while文に、
continueを用いているが、
forや
do while文にも使える。いずれの構文でも、
contine文に出会うと、
それ以降のループブロックが実行されない。
以下のようなプログラムが、この構文の使用例である。
while(sum<=10000){
sum=sum+n;
n++;
if(sum <= 9000)contine;
printf("sum=%d\n",n);
}
この構文の実行直前まで、
sum=0かつ
n=1ならば、
sum |
|
を計算する。ただし、この繰り返し文を抜けたときには、
sumの値は10000を越えている。
構文の内容は、次の通りである。
- もし、sumが10000以下ならば、
- 「sum+nを計算し、その結果をsumに代入」を実行する。
- 「nの値を+1増加」を実行する。
- もし、sumが9000以下ならば、ループブロックの最後にスキップする。
- 「sum=値」と表示する。
- 一つ前の、アイテム「もし、sumが10000以下ならば」に戻る。
図 5:
contineを使って、ループブロックをスキップする構文
|
場合によっては、継続条件式が正しくても、構文から抜け出たい場合がある。このとき、
break文を使う。通常は
if文を伴って、次のように書く。
書式 |
---|
while(継続条件式){
文1;
if(制御式) break;
文2;
文3;
}
|
これは、「継続条件が正しい限り、文1と文2、文3を実行する。ただし、制御式が正しけ
れば、この構文から抜ける」となる。当然、制御式が誤り(偽)であれば、これら文は実行
されず、ブロックの外側に出る。図
6にこの構文のフローチャートを示す。
ここでも、
while文に、
break文を用いているが、
forや
do while文
にも使える。いずれの構文でも、
break文に出会うと、構文から抜け出る。。
以下のようなプログラムが、この構文の使用例である。
while(1){
sum=sum+n;
n++;
if(sum >= 10000)break;
printf("sum=%d\n",n);
}
この構文の実行直前まで、
sum=0かつ
n=1ならば、
sum |
|
を計算する。ただし、
breakにより、
sumの値が10000以上になると、この構文から完
全に抜け出す。。
構文の内容は、次の通りである。
- 継続条件式はいつも1(真)なので、以下を実行する。
- 「sum+nを計算し、その結果をsumに代入」を実行する。
- 「nの値を+1増加」を実行する。
- もし、sumが10000以上ならば、構文から抜ける。
- 「sum=値」と表示する。
- 一つ前の、アイテム「継続条件式はいつも1(真)なので、」に戻る。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成16年9月10日