TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜18時限目〜 for文をネストする・・・

〜目次〜

 

 

for文をネストする

今まで色々な構文について紹介してきました。

これらの条件判断文、繰り返し文などの構文では、

複数の文を埋め込んでネストする(入れ子にする)

ことができます。

例としてfor文の中にfor文を使うという、

複雑な記述をすることができるのです。

実際にfor文をネストしたコードを入力してみます。

sample38.c

f:id:YuyaTerayama:20180906170141p:plain

ーsample38の実行画面ー

iは0:jは0

iは0:jは1

iは0:jは2

iは1:jは0

iは1:jは1

iは1:jは2

iは2:jは0

iは2:jは1

iは2:jは2

iは3:jは0

iは3:jは1

iは3:jは2

 

これは外側のループを一回処理するたびに、

内側のループは3回されています。

このコードでは、変数iをインクリメントするfor文の中に、

変数jをインクリメントするfor文を埋め込んで、入れ子にしています。

つまり、

iをインクリメントするループ文が1回行われるたびに、

jをインクリメントするループ文が(3回)繰り返されるのです。

このように文をネストすることで、

複雑な処理を記述することができるのです。

 

if文などと組み合わせる

上ではfor文の中にfor文を埋め込みましたが、

異なる種類の構文を組み合わせても構いません。

例でfor文とif文を組み合わせるようなこともできます。

sample39.c

f:id:YuyaTerayama:20180906171234p:plainーsample39の実行画面ー

*~*~*

~*~*~

*~*~*

~*~*~

*~*~*

このコードでは、

2つのfor文と1つのif 〜 else文を使っています。

*または~を出力するたびに、変数chに交互に0と1と代入します。

これをすることにより、

if文の条件によって処理を変更させることができるのです。

応用して色々なコードを入力してみてください。

 

break文の仕組みについて

今までで繰り返し文には一定の処理の流れがあるということが、

確認できました。

しかし、場合によっては、

処理の流れを強制的に変更したいと時があるかもしれません。

C言語には処理の流れを変更する文として、

break文やcontinue文が用意されています。

まずはじめにbreak文についてみていきます。

break文は、

処理の流れを強制的に終了し、そのブロックから抜ける

という処理を行う文です。

以下のコードはbreak文を使い、

キーボードから指定した回数で、

ループ処理を強制的に終了させるものです。

sample40.c

f:id:YuyaTerayama:20180907203740p:plainーsample40の実行画面ー

何番目でループを中止しますか?(1~10)

4

1番目の処理です。

2番目の処理です。

3番目の処理です。

4番目の処理です。

sample40では本来10回の繰り返しを行うfor文です。

しかし、ここではユーザーが入力した回数で

break文を実行し、

ループを強制的に終了させています。

5回目以降のループが実行されていないことが確認できます。

尚、繰り返し文をネストしている場合、

その内側の文でbreak文を使うと内側のブロックを抜け出して、

もう一つ外側のブロックに処理がうつることになっています。

 

switch文の中でbreak文使う

switch文の中ではbreak文が使われていました。

そこで使っているbreak文は上記のbreak文と同じものです。

switch文内でbreak文を応用すると、

以下のような処理をさせることができます。

sample41.c

f:id:YuyaTerayama:20180907204540p:plainーsample41の実行画面その1ー

成績を入力してください。(1~5)

1

もう少し頑張りましょう!

ーsample41の実行画面その2ー

成績を入力してください。(1~5)

2

もう少し頑張りましょう!

ーsample41の実行画面その3ー

成績を入力してください。(1~5)

5

たいへん優秀です!

sample41では、入力した整数の成績により、

色々なメッセージを出力するプログラムです。

コードの中のbreak文の挿入位置に注意をしてください。

case1とcase3の後にbreak文がないので、

それぞれcase2とcase4と同じ処理を実行するようになっています。

このようにbreak文の挿入位置により処理を、

コントロールすることができるのです。

 

continue文の仕組みについて

もう一つ、処理の流れを強制的に変更する文として、

continue文

というものがあります。

continue文は、

繰り返し文内の処理を飛ばし、ブロックの先頭位置に戻って次の処理を続ける

という処理を行います。

実際に以下のコードを入力してください。

sample42.c

f:id:YuyaTerayama:20180907205558p:plain

ーsample42の実行画面ー

何番目の処理を飛ばしますか?(1~10)

4

1番目の処理です。

2番目の処理です。

3番目の処理です。  (この後に注目)

5番目の処理です。

6番目の処理です。

7番目の処理です。

8番目の処理です。

9番目の処理です。

10番目の処理です。

sample42を実行して、処理を飛ばす回数目として4を入力しました。

そうすると、実行画面をみてわかる通り、

4番目の処理が飛ばされ5番目の処理が行われています。

continue文の処理が行われると、

ブロックの先頭に強制的に戻ります。

 

〜END〜