因数分解はプログラミングに使われていた!

プログラミング
CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), quality = 100

カレーを作る手順を因数分解

curry2.jpg

ある記事で、カレーを作るたとえ話が書かれていました。

カレーの作り方

  • 材料を切る
  • 炒める
  • 煮込む
  • ルーを入れる
  • 煮込む

このうち、材料を切る作業を細かく書くと

  • ジャガイモを切る
  • 包丁とまな板を洗う
  • ニンジンを切る
  • 包丁とまな板を洗う
  • 玉ねぎを切る
  • 包丁とまな板を洗う
  • 肉を切る
  • 包丁とまな板を洗う

実際は、こんなことはしないでしょう。包丁とまな板を洗うのはまとめてやりますよね。

  • ジャガイモを切る
  • ニンジンを切る
  • 玉ねぎを切る
  • 肉を切る
  • 包丁とまな板を洗う

包丁とまな板を洗うのは、同じ作業なのでまとめて1回でやる。この考え方は「因数分解」の考え方だ、と書かれていました。

プログラミングでは因数分解の考え方を使う

think_151646.jpg

プログラムを作るとき、この因数分解の考え方をよく使います。
長い処理の中に、同じような操作を含んでいないかを見つけて1つにまとめてしまうのです。

1つにまとめることで、メリットがあります。%LAST_NAME%さん、何だかわかりますか?

  • プログラムが短くなる
  • 修正が必要になったとき、1か所を直すだけで済む

などですね。

1つにまとめることにはデメリットもある

trouble1.jpg

プログラムの同じ部分を1つにまとめることは、基本的にはよいことです。
同じような処理をループにして、5回繰り返すなどとします。

ただしループにすることにはデメリットもあります。何でしょう? わかりますか?

  • プログラムの処理がわかりにくくなる
  • エラーを解析するときにわかりにくくなる

何回目のループでエラーになったのか、一発ではわかりません。エラーしたときのループ回数を確認しないといけません。

まあ、これはたいした手間ではないですけれど。

で、今回言いたかったことは、

  • プログラミングでは、因数分解の考え方を使っている
  • プログラミングをやっておけば、数学の考え方に強くなる

という、言われてみれば当たり前のことでした。

コメント