前回までの記事で、「条件分岐処理」として、
if文「もし~だったら・・・」
else「そうでなくて!」
switch「~の時はこう!」
「繰り返し処理」として、
while文「~の間は繰り返す」
for文「3つの式で繰り返し制御!」
についてお話してきました。
今回は、break文についてお話ししたいと思います。
このbreak文を使えるようになると、繰り返し処理の途中でも条件がそろえば、その繰り返し処理を中断して脱出できるようになります。
例えば、繰り返し処理の途中で、あるイベント(出来事)が発生したら、その繰り返し処理を中断したいといった場合にも使えますので、是非マスターしてくださいね。
では、具体的にお話していきます。
◆「break文」
まず押さえておくこととして、
break文には「抜ける!」とか「脱出する!」という意味がある
ということです。
では、何から「抜ける」のか?
それは、
1: break文を囲んでいる最も内側の、
for文, while文, do~while文の{ }から抜けて、その「繰り返し処理」を終了する
2: break文を囲んでいる最も内側の、
switch文の{ }から抜けて、そのswitch文の実行を終了する
になります。
つまり、
break文は、for文, while文, do~while文, switch文の{ }から脱出するためのもので、その{ }の中でbreak文に出会うとその後の処理を行わずに、break文を囲んでいるfor文, while文, do~while文, switch文の{ }から抜けて、その繰り返し処理やswitch処理を終了します。
例えば、
8時から17時まで通常会社で働くが、今日は10時になったら会社から脱出して外へ出かけるというようなプログラムを考えてみると、
int main( void )
{
int time;
for( time = 8; time <= 17; time++ )
{
if( time == 10 )
{
/* timeが10になったから会社脱出! */
printf("time:%d I will go out!¥n", time);
break;
}
printf("time:%d I work in my office¥n", time);
}
return( 0 );
}
実行結果:
time:8 I work in my office
time:9 I work in my office
time:10 I will go out!
のようにbreak文を用いて書くことができます。
更に、「break文を囲んでいる最も内側の・・・の{ }」とは、出会ったbreak文が属しているfor文, while文, do~while文, switch文の{ }という意味です。
例えば、以下のようなfor文の中にfor文があるプログラムがあったとします。
int main( void )
{
int time;
int minute;
for( time = 0; time < 1; time++ )
{
for( minute = 0; minute <= 60; minute ++ )
{
if( minute == 3 )
{
break;
}
printf("I can not concentrate...¥n");
printf("%d[min] past….¥n", minute);
}
printf("I can concentrate!!¥n");
printf("I work very hard!¥n", time);
}
return( 0 );
}
実行結果:
I can not concentrate...
1[min] past….
I can not concentrate...
2[min] past….
I can concentrate!!
I work very hard!
この場合、breakによって脱出するのは、赤色で示したfor文になります。最初のfor文を抜けるのではなくて、あくまでもbreakが属しているfor文を抜けるんだということに注意してくださいね。
そして、このことはfor文だけでなく、break文が使えるwhile文、do~while文、switch文についても同様です。
理解するためにも是非、今回のサンプルプログラムをいじって、色々と試してみてくださいね。