【電卓アプリを作るvol.1】状態遷移
電卓ロジックを考える
電卓を作るにあたって、
電卓をどのように操作していたかを思い出してみます。
まず数値を入力して、演算子キーを押し、
2つめの数値を入力して、最後に[=]キーを叩くという流れではないでしょうか。
演算子を押した直後に数値を入力すると、表示はいったんリセットされ、
また一桁目から入力していくようになります。
これは、最初は"左辺を入力している状態"になり、演算子を押した後は、
"右辺を入力する状態"になるといった具合に、
ユーザーの操作によって、内部的な"状態"が遷移していく、ということです。
状態の種類
基本的な電卓において、状態の種類を考えると、以下の4つでカバーできます。
各状態を、A・B・C・D、とします。
A | 左辺入力中 (HELLO !) |
B | 演算子入力中(演算子が押され、右辺の入力前) |
C | 右辺入力中 (右辺の入力が開始された) |
D | 計算結果 (イコールが押された) |
右は状態の特徴を説明していますが、この限りではありません。
主なキーの種類
数字キー (小数点を含む)
演算子キー
イコールキー
クリアーキー(オールクリアーも兼ねる)
%キー
・・・他にも、[+/-]チェンジキーや、メモリーキーなどありますが、
状態によって特に挙動が異なるのがこれらのキーであること、
あまり多いと記述が大変になってくるので、上記の5種類に絞っています。
電卓においては、特別な機種を除いて、キーの操作によってのみ、状態の変化が起きます。
キーの操作と、状態の関係を表すと、以下のようになります
見づらくて申し訳ありません
今回の電卓では、%キーと、定数計算をカバーしています。
「%の処理」とありますが、%キーの処理は、
入力された演算子が[+][-]の場合と、[×][÷]の場合で違ってくるためです。
たかが電卓と、侮ることはできません。
でも、状態遷移をしっかり意識することで、
信頼性の高いアプリになっていきます。
次回は、この表を元に、状態によって処理を分ける仕組みを作っていきます!