- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 授業/C言語基礎/for文 へ行く。
- 1 (2015-09-28 (月) 13:12:40)
- 2 (2015-09-28 (月) 13:18:29)
- 3 (2015-10-12 (月) 10:27:31)
- 4 (2015-10-18 (日) 16:49:51)
- 5 (2015-10-19 (月) 11:44:11)
- 6 (2015-10-19 (月) 22:51:37)
- 7 (2015-10-20 (火) 19:40:56)
- 8 (2015-10-20 (火) 22:41:30)
- 9 (2015-10-21 (水) 11:12:02)
- 10 (2015-10-23 (金) 09:22:53)
- 11 (2015-10-23 (金) 10:51:26)
- 12 (2015-10-29 (木) 10:51:25)
- 13 (2015-10-29 (木) 10:51:25)
- 14 (2016-10-20 (木) 16:28:33)
- 15 (2016-10-22 (土) 22:04:53)
- 16 (2016-10-23 (日) 06:15:19)
- 17 (2016-10-23 (日) 06:15:19)
- 18 (2016-12-25 (日) 11:51:36)
繰り返し処理のフローチャート †
同じ処理を繰り返し行う †
コンピューターは、同じ処理を繰り返し行うことが得意です。
次のようなプログラムを考えてみましょう。
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 += b | aとbの和をaに代入する(加算代入) |
−= | a −= b | aとbの差をaに代入する(減算代入) | |
*= | a *= b | aとbの積をaに代入する(乗算代入) | |
/= | a /= b | aをbで割ったときの商をaに代入する(除算代入) |
剰余算の複合代入演算子はありません。