前回の「C言語超入門(第5回)」に引き続き、繰り返しの処理について学んでいきましょう。
今回は、複数の実行文を繰り返す「ブロック文」について、ご説明いたします。
その前に、前回の繰り返し処理について復習しましょう。
早く次に進みたいという気持ちがあるかもしれませんね。
でも、今は基礎を身に付けるとき。少し遠回りに感じたとしても、しっかりと復習をすることが上達の早道ですよ。
さて前回は、for文を使って1から10までの和を求めるプログラムを作成した。
※プログラム1

main() {
int i, n=10, x=0;
for(i=1; i<=n; i++) x = x + i;
printf("答えは %d です。\n",x);
}

※プログラム1の実行結果

 答えは 55 です。

変数nの値を書き換えたりして、実際に自分自身でプログラミングをしてみましたか。
早くC言語をマスターしたいのなら、必ず実際にプログラミングをしてくださいね。

ルール3.for文は一つの処理文を繰り返す

「※プログラム1」のfor文をよく見てください。
「x=x+i」という一つだけの処理文を繰り返していますね。
では、二つ以上の処理文を繰り返し処理させるためには、どうしたらよいのでしょう。
まずは、二つの処理文を繰り返すプログラムを書いてみます。
変数xに1から10までの和、変数yに1から10までの差を求めるプログラムです。
変数xを求める方法は「※プログラム1」と同じです。
変数yは、「※プログラム1」に「y=y-i」を追加して求めます。
※プログラム2

main() {
int i, n=10, x=0, y=0;
for(i=1; i <= n; i++) x=x+i; y=y-i;
printf("変数x= %d : 変数y= %d\n", x, y);
}

※プログラム2の実行結果

変数x= 55 : 変数y= -11

変数xの値が55、変数yの値が-55になれば正解ですが、変数yの値が期待と異なった結果になってしまいましたね。
for文は、一つの処理文を繰り返すことができます。
逆に言えば、一つの処理文しか繰り返すことができないのです。
ですから「※プログラム2」の繰り返し対象は「x=x+i; 」だけです。
「y=y-i;」は繰り返しの対象外になり、一度しか処理されません。
これは困りましたね。

ルール4.複数の処理文を繰り返すときはブロック文を使う

そこで、for文で二つ以上の処理文を繰り返し処理させたいときは、ブロック文を使用します。
ブロック文の記述は簡単です。
繰り返したい処理文をプレイス(波括弧)でくくるだけです。
さっそく、ブロック文を使ったプログラムを見てみましょう。
※プログラム3

main() {
int i, n=10, x=0, y=0;
for(i=1; i <= n; i++) { x=x+i; y=y-i; }
printf("変数x= %d : 変数y= %d\n", x, y);
}

※プログラム3の実行結果

変数x= 55 : 変数y= -55

これで変数yの値が、期待とおりの結果になりましたね。
「x=x+i; 」と「y=y-i;」の二つの処理文が繰り返し実行されました。
ルール3で、「for文は一つの処理文を繰り返す」とお伝えしました。
つまりブロック文は、複数の処理文をまとめた一つの大きな処理文なのです。
実はすでにブロック文の概念を学んでいます。
「c言語超入門(第1回)」」を思い出してください。
「C言語超入門(第1回)」で、「すべての関数はブレイスでくくる」とお伝えしましたね。
関数も一つの大きなブロック文とも言えます。
ブロック文はとても都合のよい考え方のため、C言語ではいろいろなところで登場します。
しっかりと覚えてくださいね。

C言語超入門の第6回まとめ

さて、「C言語超入門(第5回)」から2話続けて繰り返し処理について学びました。
ポイントを整理しておきますね。

<繰り返し処理まとめ>
ルール1.for文を使って繰り返し処理ができる
ルール2.for文に「;」だけを書くと空ループ(時間稼ぎ)になる
ルール3.for文は一つの処理文を繰り返す
ルール4.複数の処理文を繰り返すときはブロック文を使う

いかがでしょう。
繰り返し処理は簡単に感じたでしょうか。
それとも、ちょっと難しく感じたでしょうか。
繰り返し処理はプログラミングをしていく上で、とても重要です。
今のうちに、しっかりと理解しておきましょう。
もし不安があれば、「C言語超入門(第5回)」「C言語超入門(第6回)」を読みなおしてくださいね。
ステップ・バイ・ステップ。焦らず一歩ずつ進んでいきましょう。