計算の基本

5.1 計算の基本

 この章では、プログラミングにおける「計算」について説明していきます。まず始めに、最も基本的な四則演算についてみていきましょう。四則演算とは足し算、引き算、掛け算、割り算の総称です。「加減乗除」とも言います。どれも算数で習った簡単なものばかりです。

5.1.1 算術演算子と四則演算

 加減乗除(+-×÷)の四則演算は算数で勉強しましたが、プログラミングの世界で四則演算に使われる記号の一部は算数とは異なり、また、これまであまり使わなかったような記号も使います。
 プログラムの演算に使用する記号のことを算術演算子と呼びますが、プログラミングで使用するもっとも基本的な算術演算子を下の表 5.1.1に示しています。

演算子

用例

説明

+

a + b

加算、文字列の連結(結合)

a – b

減算

*

a * b

乗算

/

a / b

除算

%

a % b

剰余(aをbで除算した余り

表 5.1.1 : 算術演算子

 乗算(掛け算)と除算(割り算)は算数の世界では「×」「÷」で表現しますが、プログラミングでは「*」と「/」を使用します。また、余りを求める場合は「%」演算子を使います。

5.1.2 算術演算子の優先順位

 算術演算子を使った四則演算にも計算の優先順位があります。優先順位の考え方は、算数の場合と同じです。

演算子を使った計算時の優先順位のルール

 ・演算子には優先順位があります。括弧の中から先に計算し、次に割り算と掛け算、その次に足し算と引き算の順に行うルールは、プログラムの世界でも変わりません。

図5.1.1 計算の優先順位

・同じ優先順位のものは左にある演算子から右にある演算子の順に計算が行われます。

5.1.3 算術演算子を使用した四則演算を行うプログラム

 算術演算子を用いて、値が代入された変数同士の四則演算を行ってみましょう。

① ソース・フォルダー      :myproj_super_intro/src
② パッケージ          :jp.co.f1.superintro.ch05
③ 名前             :ArithmeticOperator
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる

➢ ArithmeticOperator.java

 package jp.co.f1.superintro.ch05;
 
 public class ArithmeticOperator {
 
 	public static void main(String[] args) {
 		// 計算用の値を管理する変数を宣言し、値を代入
 		int a = 9;
 		int b = 4;
 
  		// 回答を管理する変数
  		int answer;
  
  		System.out.print("a = ");
  		System.out.println(a);
  		System.out.print("b = ");
  		System.out.println(b);
  
  		// 足し算
  		answer = a + b;
  		System.out.print("a + b : ");
  		System.out.println(answer);
  
  		// 引き算
  		answer = a - b;
  		System.out.print("a - b : ");
  		System.out.println(answer);
  
  		//掛け算
  		answer = a * b;
  		System.out.print("a * b : ");
  		System.out.println(answer);
  
  		//割り算
  		answer = a / b;
  		System.out.print("a / b : ");
  		System.out.println(answer);
  
  		//余りを求める
  		answer = a % b;
  		System.out.print("a % b : ");
  		System.out.println(answer);
  	}
  }
        

実行結果

解説

 7~8行目は、int型の変数aとint型の変数bを宣言し、それぞれの変数に値を代入しています。

   7: int a = 9;
   8: int b = 4;

 11行目では計算結果を管理する変数answerを宣言していますが、ここではまだ初期化(代入)は行っていません。

    11: int answer;

 13~16行目では、変数aと変数bの値を画面に表示させ、代入されている値を確認しています。

   13: System.out.print("a = ");
   14: System.out.println(a);
   15: System.out.print("b = ");
   16: System.out.println(b);

 19行目は、変数answerに変数a と変数 bの加算結果を代入しています。変数aの値は9、変数bの値は4なので、a + bは9 + 4を行っていることと同じです。21行目で変数answerの値を表示します。変数answerには、9 + 4の結果である13が代入されています。引き算と掛け算も同様に、算術演算子にあった処理が行われます。

   19: answer = a + b;
   20: System.out.print("a + b : ");
   21: System.out.println(answer);

図5.1.2 変数の加算

 Javaプログラミングにおける割り算は特殊です。9を4で割った答えは2.25になるはずですが、Javaでは「2」になります。これは、int型同士の計算結果はint型になるため、余りの小数点以下は切り捨てられるからです。

   34: answer = a / b;
   35: System.out.print("a / b : ");
   36: System.out.println(answer);

 余りを求める場合、%演算子を利用して行います。Javaでは、%は除算ではなく余りを求めるための演算子であることをしっかりと覚えておきましょう。9を4で割ると、その余りは1になります。

   39: answer = a % b;
   40: System.out.print("a % b : ");
   41: System.out.println(answer);

5.1.4 算術演算子の優先順位を確認するプログラム

 算術演算子を使った四則演算を行い、算術演算子の優先順位を確認してみましょう。四則演算の優先順位は、算数の場合と同じです。

① ソース・フォルダー      :myproj_super_intro/src
② パッケージ          :jp.co.f1.superintro.ch05
③ 名前             :PriorityCheck
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる

➢ PriorityCheck.java

 package jp.co.f1.superintro.ch05;
 
 public class PriorityCheck {
 
 	public static void main(String[] args) {
 
 		//計算用の値を管理する変数を宣言し、値を代入
 		int a = 9;
 		int b = 1;
  		int c = 3;
  
  		//回答を管理する変数を宣言
  		int answer;
  
  		System.out.print("a = ");
  		System.out.println(a);
  
  		System.out.print("b = ");
  		System.out.println(b);
  
  		System.out.print("c = ");
  		System.out.println(c);
  
  		answer = a + b * c;
  		System.out.print("a + b * c = ");
  		System.out.println(answer);
  
  		answer = (a + b) * c;
  		System.out.print("(a + b) * c = ");
  		System.out.println(answer);
  
  	}
  
  }
        

実行結果

解説

 8~10行目で、計算に使用するint型の変数を宣言すると同時に値を代入しています。このように変数の宣言と同時に値を代入することを変数の初期化といいます。

   8: int a = 9;
   9: int b = 1;
   10: int c = 3;

 13行目で答えを入れるための変数answerを宣言しています。

   13: int answer;

 24行目で加算と乗算を行い、その結果を代入しています。演算子の優先順位ルールにより、加算より乗算が先にされるので、変数answerの値は「12」になります。

   24: answer = a + b * c;
   25: System.out.print("a + b * c = ");
   26: System.out.println(answer);

図5.1.3 演算子の優先順位ルールにより、加算より乗算を先に計算する

 28行目では、先ほどの24行目の計算式の加算部分に括弧を付けることにより、乗算より括弧内の加算が先に行われ、変数answerへ代入される値は「30」になります。

   28: answer = (a + b) * c;
   29: System.out.print("(a + b) * c = ");
   30: System.out.println(answer);

図5.1.4 演算子の優先順位ルールにより、乗算より括弧内の演算を先に計算する

NEXT>> 5.2 インクリメントとデクリメント