アレアレ

お役立ち情報、お悩み解決情報を発信!

実践編

「プログラミングとはアルゴリズムを機械がわかるように翻訳することだ」と言うことがわかる具体例

このサイトの プログラミング教育 のコーナーでは、これからプログラミングを学び始める子供を持つ親御さんに向けて、プログラミングについてわかりやすく解説しています。全くプログラミング経験のない方は、基礎編の記事から、基礎編を読んだ方は実践編の記事をご覧ください。

「プログラミングとはアルゴリズムを機械がわかるように翻訳することだ」と言うことがわかる具体例

前回の記事では、二桁の掛け算を100問生成するプログラムをご紹介しました。

今回は、そのプログラムのソースコードを例に、「プログラミングとはアルゴリズムを機械がわかるように翻訳することだ」と言うことがわかる具体例をご紹介します。

二桁の掛け算を100問生成するプログラム

まず、前回の復習から始めます。前回の記事では、自分が小学校の先生になったとイメージして、小テスト用に二桁の掛け算の問題を100問生成するプログラムを作りました。

具体的には、次の通りのものです。ちなみに、下のプログラムの「実行」ボタンを押すと、このプログラムを実際に動かすことができます。

上には、このプログラムのソースコードがありますが、まずは気にしなくて良いです。重要なのは、//から始まる日本語で書かれたコメントの部分です。

二桁の掛け算を100問生成するアルゴリズム

その日本語で書かれたコメントのうち、コアとなる部分を抜き出すと次の通りです。

  • 100問作るため100回繰り返す
  • 左側の二桁の数値を生成する
  • 右側の二桁の数値を生成する
  • 生成した二桁の数値同士の掛け算を出力する

これが、二桁の掛け算を100問生成するためのアルゴリズムです。そして、それをコンピューターにわかるようにプログラミング言語で記述しているのが、「for(var i=1;i<=100;i++){…」のようなソースコードの部分です。

プログラミングとはアルゴリズムをプログラミング言語で翻訳すること

この対応関係を理解すると、「プログラミングというのは、日本語で考えたアルゴリズムを、プログラミング言語に翻訳し、どうやって機械に実行させるかなんだな」ということがわかるはずです。

例えば、上のアルゴリズムでは、次のような対応関係になります。

100問作るため100回繰り返す
for(var i=1;i<=100;i++)
左側の二桁の数値を生成する
var left = Math.floor( Math.random() * (max – min) ) + min;
右側の二桁の数値を生成する
var right = Math.floor( Math.random() * (max – min) ) + min;
生成した二桁の数値同士の掛け算を出力する
console.log(“(“+ i +”) ” + left + ” x ” + right + ” = ” + (left*right) );

と言うわけで、プログラミングにあたり、まずは、その問題を解決するためのアルゴリズム(この例では、異なる二桁の掛け算の問題を100問作る方法)を考えることが先決です。

そのアルゴリズムができたら、プログラミング言語を使って、そのアルゴリズムをコンピューターにどう実行させるかを翻訳することになります。そして、その作業こそが、プログラミングというわけです。

次に読む記事:プログラミングの基礎知識「変数」が理解できるたとえ話

Return Top