初めてのObjective-Cアプリ開発(iPhone編)⑨計算機を作る その2(簡単な計算結果を表示させる)
1、2桁以上の数字をラベルに表示する。
前回の続きを進めていきたいと思います。前回は、
数字ボタンを押す→その数字がラベル部分に表示される
というところまで作成しました。
ただしこのままだと0〜9までの1桁の数字しか表示されません。
2桁以上の数字を表示できるように修正していきましょう。
簡単な例として、「12」という数字を表示する方法を考えてみます。
ボタンの「1」を押すとラベルに「1」が表示され、
次に「2」を押すと「12」と表示されるようにしたいのですね。
つまり、始めに「1」を押すと変数sumに「1」が代入され、次に
「2」を押すと変数sumに「12」が代入されればいいのです。
「12」は(10×1)+2と表すこともできます。つまり、元のsumの値(この場合1)を10倍
して、その10倍した数値に押した数字(この場合2)を足して新たにsumに代入する
という処理にしてあげれば良いのですね。
ではコードを以下のように書き換えてみましょう。
- (IBAction)one:(id)sender { sum = sum * 10 + 1; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }
最初に画面が読み込まれたときにsumには「0」が代入されているので、sum = 0×10 + 1
となりsumには1が代入されます。つまり1桁の数もこの式で表すことができるのです。
他の0〜9までボタンの処理も2行目の部分を同じように変更しましょう。
これで2桁以上の数字をラベルに表示することができたと思います。
※変数sumはint型で宣言していますので、桁数が大きくなると訳の分からない数値になってしまいますが、
この対処は今は置いておきます。後々直していこうと思います。
2、簡単な足し算の処理を記述する
文字の表示までは作成出来ましたので、次は演算式の処理について書いていきます。
一番分かりやすい足し算の処理から考えていきましょう。まずは単純な
数字Aを押す→「+」ボタンを押す→数字Bを押す→「=」ボタンを押す→足し算結果を表示
の一連の流れを作成していきます。
まず、演算しボタンを接続します。
今後のことも考えて、その他の演算記号とACボタンもあらかじめ接続だけしておきましょう。
メソッド名はこのようにしました。
「=」ボタンを押すことによって2つの数字を足すという処理をするので、最初に押された数字Aを
何かの変数に入れて保管しておかなければなりません。その変数をnumという名前で
作成します。インスタンス変数として扱うので、sumと同じ場所で宣言します。
そしてこの数値は初期状態では何も入っていないので0を代入しておきます。
では「+」が押された時の処理を記述していきましょう。
以下のコードをViewController.m内の – (IBAction)plus:(id)sender{ }内に記述してください。
- (IBAction)plus:(id)sender { num = sum; sum = 0; }
2行目で今ラベルに表示している数値Aをnumという変数に代入しています。
3行目でsumの値を0に戻しています。2番目に押す数値Bをラベルに表示するためです。
次に「=」ボタンが押された時の処理を記述していきます。
以下のコードをViewController.m内の – (IBAction)equal:(id)sender{ }内に記述してください。
- (IBAction)equal:(id)sender { sum = num + sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }
2行目のnumに数値Aが格納されていて、sumに数値Bが格納されているので
その和を新たにsumに代入しています。
その結果をラベルに表示しています。
これで簡単な足し算の式は作成する事ができました。
3、簡単な引き算の処理を記述する
次に簡単な引き算の式を作成していきます。
足し算の時と同じように、
数字Aを押す→「-」ボタンを押す→数字Bを押す→「=」ボタンを押す→引き算結果を表示
という単純な処理を記述していきましょう。
コードはほぼ足し算と同じになりますので、以下のように記述してください。
– (IBAction)minus:(id)sender{ }の部分に
- (IBAction)minus:(id)sender { num = sum; sum = 0; }
の2行を付け加え、さらに- (IBAction)equal:(id)sender{ }の部分を
- (IBAction)equal:(id)sender { sum = num - sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }
に変更します。
これで引き算の処理をすることができます。
4、足し算と引き算を同時にするには?
しかしこのままだと一つの演算処理しか記述する事ができません。
今の記述のままだと「+」ボタンを押しても「-」ボタンを押しても、「=」ボタンでの処理が
引き算になってしまっています。
ではどうすれば「+」ボタンを押したら足し算の処理が、「-」ボタンを押したら引き算の処理が
できるようになるのでしょうか?
そのような時に条件分岐文というものを利用すれば解決することができます。
条件分岐文、つまり場合分けして処理を記述する、という形になります。
例えば「=」ボタンを押した時にその前に「+」が押されていた場合は2つの数で足し算を、
「-」ボタンが押されていた場合は2つの数で引き算を、といったように処理を分けて記述
することができるのです。
TechProjin 開発系基礎講座 連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
AIなどで注目急上昇!これから学ぶならPython!!
独学で学ぶ-pythonプログラミング 連載
汎用性◎ 定番プログラミング言語JAVA
Java基礎講座 連載