以前の投稿で、if文やswitch文はネストさせることができると説明しました。(条件分岐のネスト)
while文やfor文も同様にネストさせることができます。
ここでは繰り返し文のネストをおこなってみましょう。
動かしてみよう
では、サンプルコードを動かしてみましょう。
九九の早見表を表示させるサンプルコードです。
入力欄への記入は不要なので、実行ボタンをおしてみてください。
実行できましたか。
九九の結果が一覧表示されたと思います。
では、解説に進みましょう。
解説
今回についてはあまり解説はいらないかと思います。
for文の基本構文は下記でした。
for(初期化; 継続条件; カウンタ更新 ){ 処理; }
これが複数回、重ねて記述できるという話です。
for(初期化1; 継続条件1; カウンタ更新1 ) { for(初期化2; 継続条件2; カウンタ更新2 ) { 処理; } }
今回のサンプルコードの基本構造は下記となっていました。
for( int vertical = 1; vertical <= 9; vertical++ ) { printf("\n%dの段\t:", vertical); for( int horizontal = 1; horizontal <= 9; horizontal++) { printf("\t%d", (vertical * horizontal)); } }
最初のfor文は縦軸に関するループで、2番目のループは横軸に関するループです。
vertical と horizontal のそれぞれの変数は大まかに下記のような挙動をします。
vertical = 1
horizontal = 1〜9
vertical = 2
horizontal = 1〜9
・・・
vertical = 8
horizontal = 1〜9
vertical = 9
horizontal = 1〜9
最初のforループは1週しか実施されませんが、中のforループは9週も実施されます。
これにより 9x9=81 回の演算をおこなわせています。
for文は何回も重ねて書くことができますが、重ねすぎると頭がこんがらがってくるので、2〜3回程度が妥当なところかと思います。
なお、ここではfor文について述べましたが、while文についても同様です。(do〜whileも。)
while( 条件1 ) { while( 条件2 ) { 処理; } }
まとめ
まとめです。
- whileやforは重ねて書けます。
- 重ねすぎると何やってるかわからなくなるので、ほどよく使おう。
以上です。
ではまた。