初めてのObjective-Cアプリ開発(iPhone編)⑪計算機を作る その4(計算処理を修正する)

この記事は2014年11月5日に書かれたものです。内容が古い可能性がありますのでご注意ください。


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:@"エラー"];
        }
    }
}

今回はこの辺りで終わりにしたいと思います。次回以降も修正を加えていきたいと思います。

ページ:
1

2

  • このエントリーをはてなブックマークに追加

PAGE TOP