高校「情報I」の教科書にアルゴリズムの内容があります。出版社によって、多少内容の違いがありますが、学習ポイントは同じです。今回、その「アルゴリズム」について少しお話しします。
アルゴリズムは、問題を解決するための手順のことです。私たちの日常生活も、さまざまなアルゴリズムを使って生活に関わる問題を解決しています。例えば、交差点にある信号機は交通安全を守っています。電車の改札機は電車に乗る乗客を管理しています。自動販売機は飲み物を買いたい人に自動販売サービスを提供しています。他にも例が尽きません。私たちは生活しやすさを求め、多くのアルゴリズムを使っています。
では、高校ではどのようなアルゴリズムを学ぶのでしょうか?
今回、1つの例を紹介します。
小学校で習った九九をプログラムで作る例があります。例えば、九九の5の段を表示するプログラムを作ります。教科書に載っている例は、出版社によって使うプログラミング言語が違います。VBA、JavaScript、Pythonのどれかになります。言語が違っても基本の考え方は同じです。高校のプログラミング授業は、言語の習得が目標ではなく、生徒に「考える力」を身につけてもらうのが目標の1つになっています。
「大事なのが、プログラムの書き方よりプログラムの「考え方」です。」と、私は自分の塾生によく言います。プログラムの書き方も学ばなければなりませんが、問題の解き方がわからないと何もできません。プログラムの書き方が忘れたらいつでも調べられます。しかし、解き方は自分で考えないといけません。プログラミングの難しいところはこの「解き方」にあります。
では、上記の九九の5の段の表示プログラムを考えてみましょう。
今回は、JavaScriptを例として紹介します。
考え方はいろいろありますが、今回のように、はっきりとして結果がわかる場合、目標から逆に考えたほうが良いです。つまり、最終的に表示したいものをまず、書き出します。そこから必要な作業を見つけ出します。
今回はこうなります。
5 ✕ 1 = 5
5 ✕ 2 = 10
5 ✕ 3 = 15
5 ✕ 4 = 20
5 ✕ 5 = 25
5 ✕ 6 = 30
5 ✕ 7 = 35
5 ✕ 8 = 40
5 ✕ 9 = 45
書き出しましたら、よく観察しましょう。このように表示するには、何が必要かを探します。今回は、5✕()=()のような式が必要です。その似たような式が全部で9回表示しなければなりません。()の部分の数値は変化します。これらの情報から、表示するための準備作業を整理できます。
① 9回も似たような式を作りますので、繰り返しを使います。繰り返しの場合、回数をカウントするための変数があります。今回は1〜9にします。
② 式の最初の「5✕」は9回とも同じなので、この部分は手入力します。
③ 「✕」の後ろの数は1〜9になりますので、毎回変化しますので変数が必要です。この変数は、①で繰り返しを作る時に使った変数が使えます。
④ 「=」は9回同じなので、この部分は手入力で処理します。
⑤ 「=」の後ろの数は、5と③の数を掛け算した結果なので、計算式が必要です。
⑥ 1行表示が終わりましたら、改行します。
以上、最終目標から、洗い出した処理内容がわかりました。次は、①から⑥まで順番にプログラムを書くだけです。
document.write()の命令は画面に表示するための命令です。()の中に表示したい内容またはHTML命令を書きます。②から⑤までは表示内容です。⑥はHTMLの改行命令です。
結果は以下のようになります。
上記のプログラムはわかりやすくために、あえて①から⑥まで1行ずつプログラムを書きました。以下のように、もう少しスリムな書き方もあります。
結果は同じです。
いかがでしょうか?プログラム自体は、そんなに難しくないと思います。この課題は、生徒にプログラミングの「考え方」を学んでほしいです。考え方が分かれば、解決したい問題を分解し、解決方法を見つけることができます。これこそが、プログラミング講師が生徒に教えないといけないことです。