プログラミングと九々と義務教育
みなさんも小学生の頃九々を覚えるのに苦労しませんでしたか?
我々は小学生の頃九々で苦労しただろう、多分みんなのはずだ。
そこでプログラミング教育が始まるという時事ネタに乗っかってプログラミング×九々を書いていこう。
以下ソース
-------
#include <stdio.h>
int main(){
int i,j; //ループインデックス
for(i = 1; i <= 9;i++){
for(j = 1; j <= 9; j++){
printf("%d ", i * j);
}
printf("\n");
}
return 0;
}
-------
今回コメントを導入している。別にこの短さなら必要はないのだけれど慣例の説明も兼ねてコメントを書く。
まずループインデックスとは何か?
超平たく言えばループ回数の記録に使われることが多い。
まずfor文の説明をしようと思う。
i = 1
これでループインデックスに1を代入している、つまり外側のループは1から始まるということだ。
プログラミングにおいてはループインデックスはたいてい0から始めるのだけれどこれは九々を表示するプログラムなので1から始めている。
そしてi <= 9の部分はiが9以下ならば実行するという意味だ。
気をつけよう! もしここをi < 9にするとiが9のときは実行されないので注意しよう。
最後のi++はループを回すごとにiを1増やしながら処理するという意味だ。
内側のjを使ったループについてもほぼ同じだ。
printf("%d ", i * j);
ここで外側のループインデックスiと内側のループインデックスjヲ掛けて出力している。
前回までにprintf関数はやったのでそちらを参照していただきたい。
つまり外側のループ1階に付き内側のループは9回まわる。
コンパイル後実行すると以下が表示される
-------
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
--------
きちんと九々が表示された、問題はないはずだ。
コンピュータにとっての九々をすべてループすることはたやすいことだが気をつけることもある。
もしこの内側に更に9回回るループを書くと9×9×9回実行される。
まだそれほど大きな負荷にはならないがループの中にループを書くと指数的に処理量が増えることに注意が必要だ。
安易に多重ループを書くと宇宙の終わりまで(それ以上に)かかるループができてしまうことに注意しよう。
以上コンピュータ九々でした。