Macintosh (OS 10.15 Catalina)でC言語をプログラミングする方法を解説していきます。
この記事の対象者
前回はユーザーに値を入力させる処理と、初歩的なループ処理(for文)について解説しました。今回はループ処理の応用編として、ループを一部飛ばしたり、無限ループを使う方法など、特殊なループの使い方について解説していきます。
前回の記事はこちら↓
continue
ループ処理をスキップしたい時に使える命令文です。continue が書かれた以降のループ内の処理はスキップされ、次のループの回にいきます。
書き方はすごく簡単で、このように書きます。
continue;
大体は if文とセットで使われることが多いです。前回のソースコードを流用して書いてみると、例えばこんな感じです。
{
if (i % 2 == 0) continue;
printf("i の値は、%d です。\r\n", i);
}
シリーズで読んでいただいてる方は、多分これを見て驚いたと思います。そうなんです、if文は1行で書くこともできるんです。ただ、if文内の命令文が2つ以上になると "{}" で括らないといけないので注意してください(笑)。
さて話を戻すと、上のコードでは、if文で「 i が2で割り切れる場合に continue」となっています。なので、i が偶数の場合には printf の処理を行わずに次の回へ遷移します。
百聞は一見に如かずということで、実行結果です。
continue より前に書いた処理は、上から順番に普通に実行されてしまうので、そこは注意しつつ色々と試してみてください。
break
ループ処理を途中で抜ける(強制終了させる)命令文です。continue とは異なり、break が実行された時には for文の外に出て、それ以降の処理を行う挙動になります。
書き方は以下の通りです。
break;
これも continue と同じで if文とセットで使われることが多いです。例えばこのような感じ。
{
if (i == 3) break;
printf("i の値は、%d です。\r\n", i);
}
この場合、i が3の時に for文を抜けます。なので、この for文としては i が5までインクリメントされつつ実行するループですが、break が用意されているので、i が3になった時に printf は実行されずに処理を終了します。
このコードの実行結果が以下の通りです。
無限ループ
for文で無限ループを意図的に、それも簡単に作ることができます。今までインクリメントしていた変数( i )をループ処理の中でリセットする、というやり方もまあ無限ループにはなるのですが、それよりももっと単純です。
その簡単な無限ループは、こう書きます。
for (; ;){処理}
for文のループ条件を書く箇所が、泣いている絵文字みたいになっていますが、絵文字ではなく、これが無限ループの条件文となります。
無限ループを組む時の注意事項として、ループ処理の終了条件(break)は絶対に用意するようにしてください。でないと、最悪の場合PCが熱暴走して壊れてしまいます。
参考までに無限ループのソースコードを貼っておきます。どう動くか想像してから、実際に動かして検証してみてください。もちろん自由に編集して色々試してみることもおすすめします!
for (; ;)
{
scanf("%d", &a);
printf("0を入力するまで無限ループ.\r\n");
if (a == 0) break;
}
プログラミング学習で重要なのは、コードを書きながらどう動くか考え(仮説)、実際に動かして答え合わせをする(検証)というプロセスです。
mac の方も mac じゃない方も、C言語の実行環境があれば動かせるコードなので、是非試してみてください!
続きはこちら↓