アルゴリズムを考える
高校の情報Ⅰの教科書を見ていたら、掛け算をおこなうアルゴリズムとプログラムがあったので、初めてアルゴリズムを学ぶ高校生向けに、私なりに、順を追って九九の表を作るアルゴリズムを考えてpythonで記述してみました。
こんな感じで、九九の表をコンソールに表示するというのを目標にします。
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
1.1×1の答えを表示する
左オペランドを変数i、右オペランドを変数j、答えを変数ansとし、i × j = ans の形で考えて、まずは1×1=1のところだけつくってみます。
iに1を代入。jに1を代入。i×jの答えをansに代入して求めます。
フローチャートにするとこんな感じですかね
pythonのコードだとこうなるでしょう。
i = 1
j = 1
ans = i * j
print(ans)
実行結果は「1」だけが表示されます。
2.1の段を考える
次に1の段だけを考えます。
1×1から1×9まで作るので、右オペランドとなる j を1から9まで繰り返します。フローチャートの「変数jに1を代入」のところが「変数jを1~9まで繰り返す」になります。今回は、計算して答えを表示するところまで9回繰り返す必要があるので、「ansを表示」までを9回繰り返します。
変数iに1を代入。変数jには、まずは1を代入して計算し(最初は1×1の計算)、答えを表示する処理までおこなったのち、変数jに数値を1ずつ加算して、同様の処理を繰り返す。これを変数jが9になるまで繰り返してね(最後は1×9の計算)。という流れです。
フローチャート
コード
i = 1
for j in range(1,10) :
ans = i * j
print(ans,end=" ")
出力結果
1 2 3 4 5 6 7 8 9
となります。
コードの2行目がjを1~9まで繰り返す処理になります。range(1,10)の部分で繰り返す回数を指定しています。少しわかりにくいかもしれませんが、jが1から始まり、10になったら繰り返し終了。すなわち、9まで繰り返すという使い方です。
1回目の繰り返しは1×1、2回目は1×2、3回目は1×3・・・1×9まで繰り返すというプログラムができました。
4行目の print(ans)をprint(ans,end=” “) と書き換えています。end=” “は、簡単に言うと、表示結果を横並びにするための記述です。
3.9の段まで考える
ここまで作った処理を9回繰り返すことで1の段から9の段まで表示します。
左オペランドとなるiを1~9まで繰り返します。
iの1回の繰り返しの中でjが9回繰り返す。それが終わったらiに1を加算してjを再び9回繰り返す。iが9になるまでこの処理を繰り返すという流れです。
フローチャート
コード
for i in range(1,10) :
for j in range(1,10) :
ans = i * j
print(ans,end=" ")
print()
出力結果
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
九九の表ができました。
コードの最終行 print() はフローチャートには書いていませんが、改行するための記述だと思ってください。先ほどprint(ans,end=” “)という記述で表示結果を横並びにしたので、九九の答え1 2 3 4 5・・・72 81が全て横並びになってしまい、見づらくなります。
なので、段ごとの計算が終わるたびに(iを一回繰り返すたびに) print()で改行しています。
終わりに
今回は九九の表を作るアルゴリズムを考えてみました。
1×1から始まり、1の段を作り、1~9の段まで作るという順序で考えていきました。
九九のアルゴリズムは非常にシンプルですが、もっと複雑なアルゴリズムでも順を追って考えていくことで理解しやすくなるのではないでしょうか?目的を明確にし、その手順をしっかり整理することが大切です。参考にしてみてください。
pythonの文法、環境構築方法については触れていませんが、興味のある方はぜひ勉強してみてください。実際に書いてみることで、繰り返し処理の考え方が身につくと思います。