初めてのObjective-Cアプリ開発(iPhone編)⑪計算機を作る その4(計算処理を修正する)
3、「0」で割った時の処理を変更する
話が少し脱線しますが、10÷0の答えはいくつになるでしょうか?
答えは「解なし」です。そのようなことはしてはいけない、と決められているのですね。
詳しい理由等が気になる方は調べてみてください。
ではシミュレータで適当な数値を0で割ってみましょう。すると、エラーが発生して
シミュレータがストップするかと思います。
実際のiPhoneのアプリの場合、このような計算をさせると画面に
「エラー」と表示されるようになっているかと思います。
同じように作り変えてみましょう。
割り算の式を見てみると、numをsumで割るようになっているかと思います。つまり、
「sumが0だったとき」に、エラーと表示させるようになっているのですね。
〜だったとき、つまり、条件分岐文を使って記述します。今回もif文を用いて記述してみましょう。
ではまず、「=」ボタンの
else if (flg == 4) { num = num / sum; self.lb.text = [NSString stringWithFormat:@"%d",num]; }
の部分を以下のようにif文を使って変更します。
else if (flg == 4) { if (sum != 0){ num = num / sum; self.lb.text = [NSString stringWithFormat:@"%d",num]; }else{ self.lb.text = [NSString stringWithFormat:@"エラー"]; } }
このように、if文やelse if文の中にさらにif文を続けて記述することもできますので覚えておいてください。
これで割り算の処理のとき(flgが4のとき)で、sumの値が0でなければ通常の割り算を、
sumが0ならば割り算をしないで「エラー」という文字を表示する、という処理にすることができました。
四則演算ボタンも同じように条件分岐文を記述してください。
色々と変更を加えましたので、現状での演算子ボタンと「=」ボタンのソースを載せておきます。
まだまだ完成には遠いですが、参考にしてみてください。
- (IBAction)plus:(id)sender { if (flg == 1) { sum = num + sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 2) { sum = num - sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 3) { sum = num * sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 4) { if (sum != 0){ sum = num / sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else{ self.lb.text = [NSString stringWithFormat:@"エラー"]; } } num = sum; sum = 0; flg = 1; } - (IBAction)minus:(id)sender { if (flg == 1) { sum = num + sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 2) { sum = num - sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 3) { sum = num * sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 4) { if (sum != 0){ sum = num / sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else{ self.lb.text = [NSString stringWithFormat:@"エラー"]; } } num = sum; sum = 0; flg = 2; } - (IBAction)multiply:(id)sender { if (flg == 1) { sum = num + sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 2) { sum = num - sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 3) { sum = num * sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 4) { if (sum != 0){ sum = num / sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else{ self.lb.text = [NSString stringWithFormat:@"エラー"]; } } num = sum; sum = 0; flg = 3; } - (IBAction)divide:(id)sender { if (flg == 1) { sum = num + sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 2) { sum = num - sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 3) { sum = num * sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else if (flg == 4) { if (sum != 0){ sum = num / sum; self.lb.text = [NSString stringWithFormat:@"%d",sum]; }else{ self.lb.text = [NSString stringWithFormat:@"エラー"]; } } num = sum; sum = 0; flg = 4; } - (IBAction)equal:(id)sender { if (flg == 1) { num = num + sum; self.lb.text = [NSString stringWithFormat:@"%d",num]; }else if (flg == 2) { num = num - sum; self.lb.text = [NSString stringWithFormat:@"%d",num]; }else if (flg == 3) { num = num * sum; self.lb.text = [NSString stringWithFormat:@"%d",num]; }else if (flg == 4) { if (sum != 0){ num = num / sum; self.lb.text = [NSString stringWithFormat:@"%d",num]; }else{ self.lb.text = [NSString stringWithFormat:@"エラー"]; } } }
今回はこの辺りで終わりにしたいと思います。次回以降も修正を加えていきたいと思います。
TechProjin 開発系基礎講座 連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
AIなどで注目急上昇!これから学ぶならPython!!
独学で学ぶ-pythonプログラミング 連載
汎用性◎ 定番プログラミング言語JAVA
Java基礎講座 連載