[iOS] 数値計算 | プログラミング初心者向けObjective-C入門

2013/04/17

今回は数値の計算について説明します。

四則演算など

・基本数学と同じような記号を使う
・掛け算は x ではなく * の記号を、割り算は ÷ ではなく / の記号を使う
・剰余算とは、ある数を別の数で割ったときの余りを表す
・()をつけた場合は一番内側の括弧から計算する

+ 足し算
引き算
* 掛け算
/ 割り算
% 剰余算

例)

        NSInteger int1, int2, int3;
        CGFloat float3, float4;
        int1 = 23;
        int2 = -3;
        int3 = 4;
        float3 = 4.8;
        float4 = 5.6;
        
        //足し算
        NSInteger resultAdd = int1 + int2;
        NSLog(@"%ld  %ld = %ld", int1, int2, resultAdd);
        //出力: 23  -3 = 20
        
        //引き算
        NSInteger resultSub = int2 - int1;
        NSLog(@"%ld - %ld = %ld", int2, int1, resultSub);
        //出力: -3 - 23 = -26
        
        //掛け算
        NSLog(@"%ld x %f = %f", int1, float3, int1 * float3);
        //出力: 23 x 4.800000 = 110.400000
        
        //割り算
        NSLog(@"%f ÷ %f = %f", float3, float4, float3 / float4);
        //出力: 4.800000 ÷ 5.600000 = 0.857143
        
        //剰余算 NSLog中に%を表すときは %% と書く
        NSLog(@"%ld %% %ld = %ld", int1, int3, int1 % int3);
        //出力: 23 % 4 = 3

        //()つき
        NSLog(@"%ld", (int1 + int2) * int3);
        //出力: 80

この辺は使う記号以外数学とあまり変わらない感じですね。
あと気をつける点として出力結果をどの型に代入するかによって、答えが変わってきます。
NSIntegerは小数を入れられないため、小数点以下を切られてしまいます。

例)

        NSInteger num1 = 5;
        CGFloat num2 = 2.3;
        NSInteger result1 = num1 * num2;
        CGFloat result2 = num1 * num2;
        
        NSLog(@"result1 = %ld", result1); //result1 = 11

        NSLog(@"result2 = %f", result2); //result2 = 11.500000

インクリメント、デクリメント

数値を1足すことをインクリメント(increment)、数値を1減らすことをデクリメント(decrement)といいます。
ループなどでよく使うので、省略形が用意されています。

        NSInteger n = 3;
        n = n + 1; //ふつうの書き方
        n++; //省略形
        
        NSLog(@"%ld", n); // 5
        
        NSInteger m = 1;
        m = m - 1; //ふつうの書き方
        m--; //省略形
        
        NSLog(@"%ld", m); // -1

これは特に覚える必要もないのですが、++や–の記号は変数の前か後ろに書くことができます。その場合次の行(;のあと)は実行結果は同じです。ただ実行行では足すか引くしたあとに実行されるか、実行したあとに足すか引くかされるという順序が違います。
言葉だと難しいので、プログラムを見ていただくとわかります。

        NSInteger i = 3;
        NSLog(@"%ld", i++); // 3
        NSLog(@"%ld", i);   // 4
        i = 3;
        NSLog(@"%ld", ++i); // 4
        NSLog(@"%ld", i);   // 4

省略形

=の前に演算子を書くと、省略形になります。たまに出てきます。

        NSInteger n = 30;
        n += 3; // n = n + 3; と同じ
        n -= 4; // n = n - 4;
        n *= 2; // n = n * 2;
        n /= 3; // n = n / 3;
        n %= 3; // n = n % 3;

課題

1) 5 + 3の結果を出力してください
2) 5 – 3 x 4 の結果を出力してください
2) (3.5 – 4.2) x (2.0 ÷ 1.2) の結果を出力してください

ようやくプログラムっぽくなってきました。

回答は次回に。次回は条件分岐についてを予定してます。


自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る