【12時間目】whileよりも更に便利 ループのfor文
前回は、同じ処理を、条件が正しくなるまでずっと続ける「ループ」というものを学習しました。また、そのループを実現するために、「while」文がある、ということも学習しました。
同時に、「while」文と、もう一つ、「for」文がある、ということも書いてありました。では、for文とは一体何なのでしょうか。
「for」文とは?
「for」の読み方
まず、forの読み方ですが、これは「フォー」と呼びます。for文は「フォーぶん」となります。
昔(?)、レイザーラモンHGという芸人さんがいましたが、知っている方はこれに引っ掛けて覚えると良いかもしれません。気になる方は、 youtubeででも調べていただければ、 たくさん出てきます。
「for」の使い方
while文と同じところは、条件式②がtrueになるまで、ひたすら③の部分の処理を繰り返します。
そしてwhile文と異なるところは、forを始める前にかならず実行される初期化①と、毎回のループの最後に実行される処理④を書くことができる、というところです。
ただ、それだけです。なぜ、それで便利になるの?と思うかと思います。これは実際にコードを書いてみるとわかりやすいです。
前回のループをforで書き直そう
前回の時間のループは、「Hello」と画面に10回表示する、といったものでした。
#include <stdio.h>
int main(void){
int i = 1;
while(i <= 10){
printf("%d回目のHelloです\n", i);
i = i + 1;
}
}
さて、ここで前回のコラムをもう一度確認します。
つまり、0スタートで10回ループしたいので、iが「0、1、2、3、4、5、6、7、8、9」、つまり10より小さい時にループし、iが10になったら終わる、という風に書くと良さそうです。いったん、前回のwhile文をその方式に直してみます。
#include <stdio.h>
int main(void){
int i = 0; //最初にカウント用の変数iに0を入れて、
while(i < 10){ //iが10より小さい間ループを続ける
printf("%d回目のHelloです\n", i);
i = i + 1; //iの数を1増やして、頭に戻る
}
//iが10になったら終わる
}
さて、ではこれをfor文へ書き直すとこうなります。
#include <stdio.h>
int main(void){
for(int i = 0; i < 10; i = i + 1){
printf("%d回目のHelloです\n", i);
}
}
たったこれだけで、前回と同じように、「Hello」が画面に10個表示されます。1つづつ見ていきましょう。
まず、for文の1つ目の場所「初期化」に、int i = 0と書いてあります。ループを始める前に、iという変数を用意して、0を入れておいてねという意味です。
次、for文の2つめの場所「条件式」に、i < 10と書いてあります。これはwhile文と全く同じで、iが10より小さい間だけ、ループを続けてねという意味です。
for文の3つ目の場所「毎ループ最後の処理」に、i = i + 1と書いてあります。毎回の最後に、iにi+1の値を入れてねという意味です。
printf文は、前回のwhileと全く同じです。
いかがでしたか?while文で書くよりも、とても簡単に、きれいに書くことができました!
while文のコードにおいて、変数iは、while文の中はもちろん、ループが終わった後にも使うことができます。しかし、for文のコードにおいて、変数iは、ループの中でしか使えません。どうしてもループの外、ループが終わった後などに使いたい場合は、int i = 0の文は、whileのコードのように、forの前に書かなければなりません。
この時間のまとめ
for文は、「フォー」と読む。
「for(はじめにやること;ループを続けるかどうか;1回のループが終わるごとに)」という風に使う
for文は「決まった回数繰り返す」時に使い、こういう使い方をすることがほとんど。形として覚えておくと良い!
for(int i = 0; i < /*繰り返す回数*/; i = i + 1){
//何かしらの処理
}