アレアレ

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

実践編

プログラム作成時に処理を関数にまとめる便利さがわかる具体例

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

プログラム作成時に処理を関数にまとめる便利さがわかる具体例

前回の、初心者がプログラムを作る時にまず意識してほしい基本の記事では、「プログラムを作る時は、データの部分と処理の部分に分けて考えると良いよ」という話をご紹介しました。

今回は、その「処理」の部分を作るときに便利な「関数」の便利さについてご紹介します。

生徒5人のテスト結果の平均点を求めるプログラムを例に考える

以前、変数をまとめて定義する「配列」の便利さが理解できる具体例の記事では、生徒5人のテスト結果の平均点を求めるプログラムをご紹介しています。

例えば、次のようなテスト結果があったとします。

生徒1の得点: 74点
生徒2の得点: 55点
生徒3の得点: 88点
生徒4の得点: 97点
生徒5の得点: 43点

その平均点を求めるJavaScriptのプログラムが次の通りでした。

このプログラムを実行すると、その実行結果として「71.4点」という平均点が求まります。

「うちのクラスの結果も計算してほしい」というリクエスト

さて、あなたがある学習塾の先生だったとして、クラスAにおいて、上の生徒5人が受け持ちの生徒だったとしましょう。

そして、上のプログラムを作り、平均点を簡単に求められるようになったあなたの元に、「便利になった」という話を聞きつけた隣のクラスBの先生が来てこう言います。

「簡単にテストの平均点を出せるようになったのなら、うちのクラスのテスト結果も計算してもらえないでしょうか。」

そのリクエストを快く承諾したあなたは、以前作った、平均点を求めるプログラムを修正することになりました。というのも、現在のままでは、自分のクラスの生徒5人の結果しか計算できないからです。

コピペして同じ処理を2回書くことにした悪い例

では、クラスBの5人の生徒の平均点が次の結果だったとしましょう。

クラスBの生徒1の得点: 36点
クラスBの生徒2の得点: 82点
クラスBの生徒3の得点: 66点
クラスBの生徒4の得点: 90点
クラスBの生徒5の得点: 85点

元々のプログラムを、このクラスBの平均点を計算するように改修するにあたり、一番簡単に思いつくのは、元々の処理をコピペして、2回書くようにする方法です。

具体的には、次のようにクラスBの平均点を求めるように修正します。

このように修正したプログラムを実行すると、クラスAとクラスBそれぞれの平均点が求まります。なので、とりあえずの目的は、果たせたことになります。

関数を使って処理をまとめた良いプログラムの仕方の例

ただこのようなプログラムの仕方は、あまり良い方法とは言えません。というのも、「平均点を計算する」という全く同じ計算処理を2回書いているからです。

例えば、今後さらに、クラスC、クラスD…クラスHなど8クラス分の平均点を計算することになったとします。すると、その都度、そのクラス数分、同じコピペを繰り返すことになりますよね。これはどう考えても効率の悪い、プログラムの作り方となります。

そこで、利用すると便利なのが、「関数」を使って、特定の処理を定義することです。今回でいうと、「配列で定義されたテスト結果の点数データを元に、平均点を計算する」という処理を1つの関数にまとめると、何度も同じ処理を書かずに済みます。

具体的には、次のプログラムが、関数を利用して、平均点を計算する処理を1つにまとめたものです。

このソースコードを見ただけで、スッキリまとまったのがわかりますよね。このプログラムでは、最初に「average」という名前で、数値の配列データから平均を計算する関数を定義しています。

そのため、クラスAやクラスBの平均点を計算するところでは、その関数を利用するだけで、平均点が計算できるようになっています。このように関数に処理をまとめると、クラスC…と今後対象が増えた時も、「平均点を計算する」部分は、手を加えずに済むことがわかりますよね。

結果として、メンテナンスのしやすい拡張性のあるプログラムとなるわけです。

Return Top