縄とびを何回とんだか、何人の人がお店に入っていったか、紙の枚数が何枚か、回数や人数など1ずつ増やして数えることはよくあります。数えている途中に、別のことをすると数が分からなくなってしまいます。どうしてでしょうか。どこまで数えたか分からなくなるからですね。つまり、数えるには記憶が必要なのです。
4番のプログラム例をみてみましょう。このプログラムは、Arduinoボード上のLEDを10回点滅させます。
pinMode(13, OUTPUT); for(i=0; i<10; i=i+1) { digitalWrite(13, HIGH); delay(1000); digitalWrite(13, LOW); delay(1000); }for文のところに注目してください。変数はないでしょうか。「i」がありますね。 これで回数を数えています。iArduinoTerminalを使うと実行中に変数 i の値が0, 1, 2, 3, ..., 10と変わっていくのを観察できます。
回数を数えるために使う変数のことをカウンタ変数といいます。さきのプログラムだとiがカウンタ変数です。for文の行に注目してみましょう。
for(i=0; i<10; i=i+1) {一つ目の
i=0は、繰り返しの前に i に 0 を代入するという意味です。 二つ目の
i<10は、{と}で囲まれた部分を実行する条件です。i<10のとき、つまりiが10未満の時に実行します。 三つ目の
i=i+1は {と}で囲まれた部分を実行した後にする計算です。いまのiの値に1を足してからiに代入しているので、iが1増えます。
次のプログラムを実行してみましょう。
ターミナルに
0 1 2 3 4 5 6 7 8 9が表示されます。まずiの値が1ずつ増えていることがわかります。 iArduinoTerminalで変数の値を見るとプログラムの終了時にiの値は10になっていて、i<10を満たさないのでiが10のときには{と}の間が実行されていないことも分かります。
つぎのプログラムでは0, 10, 20, ..., 90と数えて10回繰り返します。
for(i=0; i<100; i=i+10) { print(i); }つぎのプログラムでは10, 9, 8, 7, ..., 1 と数えて10回繰り返します。
for(i=10; i>0; i=i-1) { print(i); }つぎのプログラムでは2, 4, 6, 8, 10, ..., 20と数えて10回繰り返します。
for(i=2; i<=20; i=i+2) { print(i); }