初めての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基礎講座 連載