こんにちは、naのです。 今回は私もやりました“電卓のアルゴリズム”。
まずは「+、-、=、数字だけの電卓のアルゴリズム」。
つまりただの足し算と引き算です。なにが難しいのでしょうか・・・と思いますよね、 私もそうでした。
実際自分の思い通りに動かそうとするとこれがうまくいかない。 私がつまずいてしまった原因は自分を中心に考えていたことです。
確かに数字や演算子を入力するのは電卓を使う人です。 しかし実際計算するのは電卓。 自分ではこれで計算するでしょ・・と思ってもコンピュータはわかってくれなかったのです。 こうやって動いてほしいならどんな命令を与えるべきかをしっかり考えなければいけませんでした。
それから私は
・数字が入力されたら→配列arrayD[i]に格納
・演算子が入力されたら→配列arrayH[k]に格納
・数字が入力された時点で演算をする
としました。
これで+-電卓のアルゴリズムはできました。 ですが、電卓はそれだけではありません。
つづいて「×、÷を含んだ電卓のアルゴリズム」です。
例えば「3+4×2=」の式では「4×2」を先に演算するように四則演算では+-より×÷を優先して計算します。
複雑になりそうですね。しかし高度な数学の計算をするのではありません。
上記のとおり「4×2」を先に演算させるためには「3」と「+」はどうするのか。 ならば一旦保存する場所を作るなり演算のタイミングを変えたりすればいいのではと考えました。
そして
・数字と演算子をarrayD[i]とarrayH[k]に分けるに加え演算は式が入力し終えたら行うとする。
・例で言う「3」のようにあとで演算させる数字を変数sumに保存 と設定し、あとは演算子によって演算の場合わけを指示。
電卓のアルゴリズムができました。
いよいよこのアルゴリズムが正しいのか実際プログラムをして検証します。
今回はJavaScript(以下js)及びJQueryを使いました。 Jsについて知識が全くなかったので調べては書いてを繰り返し、かつ今回は自分で作ったアルゴリズムが正しいと証明するためアルゴリズムどおりに電卓が実行するようコードを書きました。
今回電卓を作るのにすごく考えました。これからもっと大きな開発をする時は今回の比じゃないでしょう。 でもエンジニアにとってこの考えることがほんとに大事です。 いい物を作るにはどうしたらいいか、有り余る情報の中から正しいのはどれか、そしていつか自分が開発したものを使ってくれる人のことを考えられるエンジニア…になれるでしょうか。