4.2 break & continue

break文

switch文のところでbreakというのが何回も登場しました。
switch文での意味は「switch文から抜け出す」という意味でしたね。
breakはswitch文以外にもfor文やwhile文のループの中でも使うことが出来ます。
この時もbreakは「for文やwhile文のループから抜け出す」という意味を持っています。

break文を使って抜けられるのはループひとつだけです。ですから、二重、三重のループを抜けるには、その度にbreak文を使うようになります。

continue文

continueはfor文やwhile文などのループ処理をスキップさせるに用います。
breakとは違い、continueはスキップした後は、ループの先頭に戻ります

#include	<stdio.h>

int main(void)
{
  int i = 1, n, sum;
 
  sum = 0;
  while (i <= 5) {
    printf("正の整数を入力 : ");
    scanf("%d", &n);
    if (n < 0)
      continue;
    sum = sum + n;
    i++;
  }
  printf("sum = %d\n", sum);
  
  return 0;
}

 

無限ループ

while(1)とすると、基本的に処理は無限に繰り返されます。これは、条件式が偽の場合は、0、真の場合はそれ以外の値をとることを利用した方法で、無限に繰り返されます。 ただ、こういった無限ループでも、break(ブレイク)があると、ループから出ることができます。

電卓のプログラムで無限ループで、繰り返し計算を行います。

#include <stdio.h>
main()
{
    double  a, b, ans;
    char    op;

    printf( "加減乗除(+,-,*,/)ができます。指定例:2+5、終了時はq\n" );
    while( 1 ) {
        printf( "ready : " );
        if( scanf( "%lf %c %lf", &a, &op, &b ) != 3 ) break;
        switch( op ) {
        case '+': ans = a + b; break;
        case '-': ans = a - b; break;
        case '*': ans = a * b; break;
        case '/': if( b == 0.0 ) {
                     printf( "Error!(ゼロでの割算はできません)\n" );
                     continue;
                  }
                  ans = a / b; break;
        default:  printf( "Error!(演算記号の指定が誤りです)\n" );
                  continue;
        }
        printf( "--> %g\n", ans );
    }
    printf( ".... Power OFF\n" );
}

 

多重ループ

九九の計算結果を表示するプログラム

#include <stdio.h>

int main(void)
{
  int i, j;
  
  for (i = 1; i <= 9; i++) {
    for (j = 1; j <= 9; j++) {
      printf(" %2d", i * j);
    }
    printf("\n");
  }
  return 0;
}

forループの2重ループを使っています。
最初のループでiが1の時はその下のforループで、
jが1から9まで増加させながら、その1の値と掛け合わせた結果を表示しています。
つまり九九の計算結果となるわけです。
二つ目のforループが終わると、printfで改行コードを出力してるので、
ちょうど9個結果を横に表示した後に次のループに入ることになり、
綺麗に九九の表が表示されるというわけです。

計算結果の間にスペースがあるのは一つ目のprintfで%2dの前にスペースが入っているからです。

ミニテスト

http://lmspress.net/courses/c-programming-i/

演習(p101)

  1.  演習4-24 (A, B クラス)
    — List(4-18)、List(4-19)p99 を参考してください。
  2. 演習4-25 (C, D クラス)