toshpit

Tosh Land

洗濯と掃除を効率的に!ズボラでも楽チンに!

【MacでC言語】初心者向け〜レッスン4〜

mac c言語

Macintosh (OS 10.15 Catalina)でC言語をプログラミングする方法を解説していきます。

 

この記事の対象者

  • Macユーザー
  • プログラミング初心者
  • C言語初心者

前回はユーザーに値を入力させる処理と、初歩的なループ処理(for文)について解説しました。今回はループ処理の応用編として、ループを一部飛ばしたり、無限ループを使う方法など、特殊なループの使い方について解説していきます。

前回の記事はこちら↓

 

continue

ループ処理をスキップしたい時に使える命令文です。continue が書かれた以降のループ内の処理はスキップされ、次のループの回にいきます。

書き方はすごく簡単で、このように書きます。

continue;

大体は if文とセットで使われることが多いです。前回のソースコードを流用して書いてみると、例えばこんな感じです。

for (int i = 1; i <= 5; i++)
{
if (i % 2 == 0) continue;

printf("i の値は、%d です。\r\n", i);
}

シリーズで読んでいただいてる方は、多分これを見て驚いたと思います。そうなんです、if文は1行で書くこともできるんです。ただ、if文内の命令文が2つ以上になると "{}" で括らないといけないので注意してください(笑)。

さて話を戻すと、上のコードでは、if文で「 i が2で割り切れる場合に continue」となっています。なので、i が偶数の場合には printf の処理を行わずに次の回へ遷移します。

百聞は一見に如かずということで、実行結果です。

c言語 continue

continue より前に書いた処理は、上から順番に普通に実行されてしまうので、そこは注意しつつ色々と試してみてください。

 

break

ループ処理を途中で抜ける(強制終了させる)命令文です。continue とは異なり、break が実行された時には for文の外に出て、それ以降の処理を行う挙動になります。

書き方は以下の通りです。

break;

これも continue と同じで if文とセットで使われることが多いです。例えばこのような感じ。

for (int i = 1; i<= 5; i++)
{
if (i == 3) break;

printf("i の値は、%d です。\r\n", i);
}

この場合、i が3の時に for文を抜けます。なので、この for文としては i が5までインクリメントされつつ実行するループですが、break が用意されているので、i が3になった時に printf は実行されずに処理を終了します。

このコードの実行結果が以下の通りです。

c言語 break
 

無限ループ

for文で無限ループを意図的に、それも簡単に作ることができます。今までインクリメントしていた変数( i )をループ処理の中でリセットする、というやり方もまあ無限ループにはなるのですが、それよりももっと単純です。

その簡単な無限ループは、こう書きます。

for (; ;){処理}

for文のループ条件を書く箇所が、泣いている絵文字みたいになっていますが、絵文字ではなく、これが無限ループの条件文となります。

 

無限ループを組む時の注意事項として、ループ処理の終了条件(break)は絶対に用意するようにしてください。でないと、最悪の場合PCが熱暴走して壊れてしまいます。

参考までに無限ループのソースコードを貼っておきます。どう動くか想像してから、実際に動かして検証してみてください。もちろん自由に編集して色々試してみることもおすすめします!

int a;
for (; ;)
{
scanf("%d", &a);
printf("0を入力するまで無限ループ.\r\n");
if (a == 0) break;
}

プログラミング学習で重要なのは、コードを書きながらどう動くか考え(仮説)、実際に動かして答え合わせをする(検証)というプロセスです。

mac の方も mac じゃない方も、C言語の実行環境があれば動かせるコードなので、是非試してみてください!

 

続きはこちら↓