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


  • 追加された行はこの色です。
  • 削除された行はこの色です。
*繰り返し処理のフローチャート [#h4a0b4a6]


*同じ処理を繰り返し行う [#p95b0769]

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

次のようなプログラムを考えてみましょう。
  Hello World!と10回画面に表示する

これをそのままプログラムにすると、次のようになります。
#geshi(c){{
  printf("Hello World!\n");    // 1
  printf("Hello World!\n");    // 2
  printf("Hello World!\n");    // 3
  printf("Hello World!\n");    // 4
  printf("Hello World!\n");    // 5
  printf("Hello World!\n");    // 6
  printf("Hello World!\n");    // 7
  printf("Hello World!\n");    // 8
  printf("Hello World!\n");    // 9
  printf("Hello World!\n");    // 10
}}
全く同じ命令が10回繰り返されています。
(コメント部分はコンパイル時に無視されます。)

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

for文は、次の形をしています。
#geshi(c){{
  int i;
  for(i = 1; i <= 繰り返し回数; i++) {
    処理
  }
}}
ここで、''++'' は''インクリメント演算子''です。
後で詳しく説明します。

for文を使って上のプログラムを書くと、次のようになります(プログラム1)。
#geshi(c){{
  int i
  for (i = 1; i <= 10; i++) {
    printf("Hello World!\n");
  }
}}

これを実行すると、次のようになります。
#geshi(sh){{
luna% a.out
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
}}

**演習1 [#rce0b366]
プログラム1を作成し、実行結果を確認せよ。


*カウント変数 [#ke44bbbd]

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

上のプログラムに、変数 i の値を出力する命令を追加します(プログラム2)。
#geshi(c){{
  int i;
  for (i = 1; i <= 10; i++) {
    printf("%d\n", i);
    printf("Hello World!\n");
  }
}}

これを実行すると、次のようになります。
#geshi(sh){{
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 [#tddc3255]
プログラム1をプログラム2に変更し、実行結果を確認せよ。


**プログラムの強制停止 [#afb3951c]

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

たとえば、繰り返し回数を100万回にしてみます(プログラム3)。
#geshi(c){{
  int i;
  for (i = 1; i <= 1000000; i++) {
    printf("%d\n", i);
    printf("Hallo World!\n");
  }
}}

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

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


**演習3 [#ha668b44]
プログラム2をプログラム3に変更し、実行して途中で強制停止せよ。



*インクリメント演算子とデクリメント演算子 [#b42c48af]
*増分・減分演算子 [#b42c48af]

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

インクリメント演算子と同じ仲間に、変数の値を1減らす''デクリメント演算子''があります。
増分演算子と同じ仲間に、変数の値を1減らす''減分演算子''(デクリメント演算子)があります。
|優先順位|演算子|使用例|意味|h
|2|++|i++|iの値を1増やす|
|~|~|++i|~|
|~|&minus;&minus;|i&minus;&minus;|iの値を1減らす|
|~|~|&minus;&minus;i|~|
演算子が変数の前についている場合(前置)と変数の後についている場合(後置)では意味が違いますが、後日詳しく勉強します。



*for文 [#m3ff44a2]

*for文 [#q48e0426]

#geshi(c){{
  for (初期化; 繰り返し条件; 更新処理) {
    処理
  }
}}
for文の波括弧 { } に含まれる命令文が0または1個のとき、この波括弧を省略することができます。


*複合代入演算子 [#te8a586c]

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

たとえば、変数iの値を1増やすという処理です。
#geshi(c){{
  i = i + 1;
}}

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

上の処理の場合、複合代入演算子である加算代入演算子 ''+='' を使って、次のように書くことができます。
#geshi(c){{
  i += 1;
}}

算術演算の複合代入演算子には、次のようなものがあります。
|優先順位|演算子|使用例|意味|h
|15|+=|a += b|aとbの和をaに代入する(加算代入)|
|~|&minus;=|a &minus;= b|aとbの差をaに代入する(減算代入)|
|~|*=|a *= b|aとbの積をaに代入する(乗算代入)|
|~|/=|a /= b|aをbで割ったときの商をaに代入する(除算代入)|
剰余算の複合代入演算子はありません。

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