
どうもピーマンです。
初めてのc言語や、if文とは?という記事に続き今回は、繰り返しの処理をすることができるループという機能を説明していきます。
C言語のループについて
それでは、まず、ループとはどの様なものなのかを説明します。
ループとは?
ループとはその名の通り繰り返しのこのです。例えば、「こんにちは!」と100回表示するプログラムを作るとしましょう。しかし、printf関数で「こんにちは!」と100回書くのは苦行以外の何者でもないですよね?笑
そこで登場するのがc言語の機能の1つであるループです。c言語のループは、大きく分けて2つの方法で表すことができます。それでは1つずつ見ていきましょう!
for文
1つ目に説明するのがこのfor文です。それでははじめに、上記にある「こんにちはを100回表示するc言語のプログラムを説明していきます。以下のソースコードをコンパイルし実行して見ましょう。
実行結果は、「こんにちは!」×100 というようになったはずです。for文、とても便利ですね!
ここで、新しく出てきたfor文の使い方を見ていきましょう。基本的には以下の様な書き方をします。
for(変数を0に初期化 ; 繰り返す条件 ; 繰り返すごとの処理) { 繰り返す処理; }
for文は3つの要素から繰り返し処理を行います。
3つの要素は ; で区切られています。例(初変数の初期値;変数 < 上限;変数++)
このソースコードの場合は、i という変数を宣言し、i に0を代入しておきます。次に、変数 i の上限を100にしました。そして、1度繰り返しするごとに i に1をプラスしていきます。
ちなみに、i++ というのは、i に1を足すという意味です。i++の代わりに i=i+1と記述してもOKです!
これらをfor文の文法にしてがって記述すると、以下の様なものになります。この場合は、i=0〜i=99までの計100回繰り返し処理を行います。
for(i=0 ; i<100 ; i++)
それでは、例として、べつのソースコードを見ていきましょう。次のfor文を使用したc言語のソースコードは、10から100まで、変数の値を10ずつ増やし表示するプログラムです。コンパイルして実行しましょう。
実行結果は以下のようになります。
変数の値は10です 変数の値は20です 変数の値は30です (略) 変数の値は100です
while文
次にwhile文をいうものを説明していきます。このwhile文は、回数で繰り返しを判断するfor文とは異なり、if文の様に条件で繰り返しをする機能です。
とりあえず、上記の「こんにちは!」を100回表示するc言語のソースコードを、for文ではなく、while文で書き直して見ましたので、コンパイルして実行して見ましょう。
実行結果は、for文と同じ様に「こんにちは!」×100 になりました。ここで、while文がどの様に動作していたのかを説明していきます。
while (条件) { 条件が真の場合に実行される。 }
見ての通りwhile文では( )の中がif文と同じ様に真である場合に繰り返し処理が実行されます。
上記のソースコードの場合は、条件を i < 100 と設定したので、{ }内で繰り返し i に1が足され続けて99になるまで繰り返し「こんにちは!」と表示させることができました。
例として、while文を使い別のc言語のコードを見て見ましょう。以下のソースコードをコンパイルし、実行してください。
実行してみるとわかると思いますが、これはテストの点数が80点を超えるまで、勉強する様に命令してくる嫌なプログラムです(笑)
break文をfor文やwhile文と組み合わせる
これは豆知識というか、知っておくと便利な知識のような感じなのですが、実は、switch文の説明をした時に出てきたbreak;という文をfor文やwhile文と組み合わせることができます。
例として、for文を使いうるう年かどうか判定するプログラムを説明します。また、このc言語のプログラムは、うるう年が入力されるまでループし続けるので注意してください。
※うるう年は西暦が4で割り切れる年
まず、説明するのがfor文の中身です。for文には面白い使い方があり、以下の様にすると、無限にループし続けます。
for(;;)
そして、この無限ループの状態から抜け出すことができるのがbreak文という訳です。
多重ループ
次に説明するのが、多重ループです。これは、使えるとプログラミングをしている感がとても増して、テンションが上がります(笑)
ループの中で、ループ
なんか、かっこよくありませんか?
多重ループを使ってみよう!
多重ループを使ったもので、1番有名なのが、おそらく掛け算九九を表示するc言語のプロブラムです。
ということで、実際にfor文の中にfor文があるソースコードをコンパイルし、実行してみましょう!。ちなみに、%5dというのは、5文字文のスペースを使用して表示するという意味です。
実行結果は、以下の様になります。
1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81
この様な多重ループは、今後たくさん使っていくので、ぜひ使い方を覚えておきましょう!
for文などループを使用するときの注意
次にfor文やwhile文を使用する時の注意です。
無限ループ
for文を紹介した時に、for(;;)という使い方を紹介しました。しかし、この時に注意があります。それはbreak文を書き忘れることです。
プログラムのミスにより無限にループするときは、パソコンに負荷がかかり、動作が重くなったり、発熱の原因にもなります。
もし無限ループが起きてしまった時には、すぐにプログラムを停止させるか、パソコンの電源を落としましょう!
まとめ
プログラミングにおいて、ループはとても重要なものです。まだ完全に理解ができない人もいると思いますが、諦めずに、もう一度読み返してみたり、別のサイトなどで理解を深めてみましょう!。