授業/C言語基礎/for文 のバックアップ(No.3)


繰り返し処理のフローチャート

同じ処理を繰り返し行う

コンピューターは、同じ処理を繰り返し行うことが得意です。

次のようなプログラムを考えてみましょう。

 Hello World!と10回画面に表示する

これをそのままプログラムにすると、次のようになります。

  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");
  printf("Hello World!\n");

全く同じ命令が10回繰り返されています。 (コメント部分はコンパイル時に無視されます。)

for文は、このような同じ処理を繰り返し行うことができます。

for文は、次の形をしています。

  int i;
  for (i = 1; i <= 繰り返し回数; i++) {
    処理
  }

ここで、++インクリメント演算子です。 後で詳しく説明します。

for文を使って上のプログラムを書くと、次のようになります(プログラム1)。

  int i;
  for (i = 1; i <= 10; i++) {
    printf("Hello World!\n");
  }

これを実行すると、次のようになります。

luna% a.out
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!

演習1

プログラム1を作成し、実行結果を確認せよ。

カウント変数

for文で使われている変数 i は、繰り返し回数をカウントするのに使われています。 繰り返し回数をカウントしているので、カウント変数と呼ばれます。 カウント変数の名前は、i でなくても構いません。

上のプログラムに、変数 i の値を出力する命令を追加します(プログラム2)。

  int i;
  for (i = 1; i <= 10; i++) {
    printf("%d\n", i);
    printf("Hello World!\n");
  }

これを実行すると、次のようになります。

luna% a.out
1
Hello World!
2
Hello World!
3
Hello World!
4
Hello World!
5
Hello World!
6
Hello World!
7
Hello World!
8
Hello World!
9
Hello World!
10
Hello World!

演習2

プログラム1をプログラム2に変更し、実行結果を確認せよ。

プログラムの強制停止

繰り返し回数が多いと、すべての処理を終えるのに長い時間がかかります。

たとえば、繰り返し回数を100万回にしてみます(プログラム3)。

  int i;
  for (i = 1; i <= 繰り返し回数; i++) {
    処理
  }

同じ処理が繰り返されているので、すべての処理が終わる前にHelloのスペルを間違えていることに気がつくでしょう。

このようなとき、コントロール・キーを押しながらCキーを押すと、プログラムの実行を強制的に停止させることができます。 コントロール・キーを押しながらCキーを押す操作を、Ctrl+Cと書くことがあります。

演習3

プログラム2をプログラム3に変更し、実行して途中で強制停止せよ。

インクリメント演算子とデクリメント演算子

for文の中で使われている ++ という演算子は、インクリメント演算子といい、カウント変数 i の値を1増やす演算子です。

インクリメント演算子と同じ仲間に、変数の値を1減らすデクリメント演算子があります。

優先順位演算子使用例意味
2++i++iの値を1増やす
++i
−−i−−iの値を1減らす
−−i

for文

  for (初期化; 繰り返し条件; 更新処理) {
    処理
  }

複合代入演算子

繰り返し処理の中では、ある変数の値を更新するという処理はよく行われます。

たとえば、変数iの値を1増やすという処理です。

  int i;
  for (i = 10; i >= 0; i--) {
    printf("%d\n", i);
    sleep(1);
  }

そこで、算術演算と代入を同時に行うための演算子が用意されていて、これを複合代入演算子といいます。

上の処理の場合、複合代入演算子である加算代入演算子 += を使って、次のように書くことができます。

  int i;
  for (i = 1; i = 10; i++) {
    printf("%d\n", i);
    printf("Hallo World!\n");
  }

算術演算の複合代入演算子には、次のようなものがあります。

優先順位演算子使用例意味
15+=a += baとbの和をaに代入する(加算代入)
−=a −= baとbの差をaに代入する(減算代入)
*=a *= baとbの積をaに代入する(乗算代入)
/=a /= baをbで割ったときの商をaに代入する(除算代入)

剰余算の複合代入演算子はありません。

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS