プログラミングはもちろん足し算だけでなく、引き算や掛け算や割り算と「四則演算」が可能。
前回は足し算についてだったが、今回は引き算についてみていく。
足し算については以下の記事参照。
Javaプログラミング初心者の記録vol.5 数字の足し算int
Javaプログラミングの四則演算と余り
以下の値をEclipseに入力してみた。
上の図では四則演算と余りの計算のプログラムすべてを記述したもの。
上2つの「intx=5」「int y=10」は数字を定義したもので、その次の「int A= x+y;」は足し算の計算をしている(前回の記事参照)。
今回はその次の行にある「int B=x-y;」の引き算について注目する。
ちなみに上のプログラムを実行して出てきた結果が下の図。
「A」が足し算、「B」が引き算、「C」が掛け算、「D1とD2」が割り算、「E1とE2」が余りの計算結果。
今回はBの引き算について。
Javaプログラミングの引き算
図では予め「int x=5;」と「int y=10;」と設定している(ここの数字は自由に変更可能)。
上の図で引き算に当たるのは「int B=x-y;」(なぜ足し算と同じ文字の「int A」ではなく「int B」を使うかは後で)。
「int B=x-y;」は「x=5」から「y=10」を引くということ。
5-10=-5とマイナスになる。
よってBには「-5」という数字が入ることになる。
intは「-2147483648」から「2147483647」の範囲の整数を表す時に使える型。
「int」を使うことで、「x」と「y」は整数を示しているよという宣言をしている(プログラミングは何を表すにしても宣言しないといけない)。
桁が足りなければ「long」を使えば「-9223372036854775808」から「9223372036854775807」の範囲の整数を表すことができる。
基本的には「int」でOK。
int B=x-yのBは引き算になっており、その結果が「-5」。
この「-5」が整数Bに内部で代入され、入力されている文字はBだが「-5」として処理される。
でもこのままではシステム画面に表示されない。
システム画面に表示させるために必要なのが「System.out.println();」。
この()の中に書いた文字列が画面に表示される。
今回でいうと「System.out.println(”B=”+B);」がそれにあたる。
「””(ダブルクオーテーション)」で囲んだ部分はそのまま文字として画面に表示される。
「B」は上でも言ったように「-5」として処理される。
「””」ダブルクオーテーション自体は画面に表示されない。
「”B=”」と「B」の間の「+」は「”B=”」と「B」を繋ぐ役割があり、画面に表示はされない。
そのため画面に表示されるのは「B=-5」ということ。
計算結果の画像をもう一度確認してみよう。
「x」と「y」の数値を変えるだけで引き算計算ができる。
数字を変えて計算してみた
以下は引き算の計算だけを行っている画像。
「x=3;」、「y=5;」にして計算してみた。
この結果、画面には「B=-2」と表示された。
次の画像は「x=10;」、「y=7;」に数字を変更して実行してみた例。
この結果、画面には「B=3」と表示されている。
しっかりと計算結果も合っている。
小数点を含んだ数字の計算
ただし、小数点を含む数字は変数の型「int」を使えない(intは整数のみを表すため)。
小数点を使いたい場合は「double」を使用。
計算の結果、「B=2.500000000000001」という結果が出た。
疑問:なんで「2.5」というきっちりとした数字じゃないんだろう?
また原因わかったら記述して、とりあえず2.5に限りなく近い計算結果になるということで今は納得することに…。
計算式を入力する時の注意点
プログラミングをする上で注意しなければならないのが、プログラムの入力順番。
プログラムの特徴として、入力された順番にデータが処理されていく。
上の図では「int A=x+y」、「int B=x-y」、「int C=x*y」などと結果を表す文字を変えていた。
なぜ変える必要があるのか、という理由がここで最初に述べたこと。
文字を変えずに全て「A」で表したものが以下の図。
足し算まではうまくいっているが、引き算からは行番号の横に赤いマーク(エラー表示)が出ているのがわかる。
順番に追っていく。
まず「int x=5」と「int y=10」が宣言されている。
その次に「int A=x+y」が来ている。
このとき既にxには「5」、yには「10」、Aには「x+y」の結果が代入されている。
それぞれ置き換えると「15=5+10」。
つまり「A」という入れ物にはには「15」が入っているということ。
ここの計算は問題ない。
問題は次の行から。
「int A=x-y」とある。
本来ならば「x」の「5」から「y」の「10」を引いた「-5」が出てほしいところ。
けれどもこの計算式「int A=x-y」の前に「int A=x+y」があるのが問題。
ここで既にint Aには「15」という結果が入っている。
この「15」という結果は次の行にも引き継がれていく(計算してそこで終わりにはならない)。
そのため、「x(5)-y(10)」(5-10)が「15」(本来は-5)という間違った数値になっていることになる。
そのためコンピュータが混乱を起こしてエラーが出たと考える。
合ってるかしら?
〔注意〕ただ、後々扱うが、自分が持っている数字(例えばAに15が入っているとする)に任意の数字を足してそれを新たにAの数字として設定することができる方法がある。
int A =15;
A = A+5; →こんな式。
※この場合はint Aの結果を次の行の式に使うから「int A = A+5;」としないこと。
この場合、Aの答えは20として次の行に引き継がれるよー。
詳しくは代入演算子のところの「=」の部分(ここをクリック)に書いた。
だから「int A=x-y」ではなく引き算の結果を表すものとして変数「B」を新しく使用し、「int B=x-y」と文字を変えてみた。
他の計算式についても同様の理由で文字を変えている。
まとめ
同じ数字を利用して違う結果(足し算の結果や引き算の結果など)を表示させたいときは変数の文字をAやBと変えなくちゃいけないということが理解できた。
筆者は最初なんで変えないといけないのか理解できなかったくらい(全部Aでいいじゃんと思ってた)のプログラミングレベルです。
超初心者。
これで引き算は大体大丈夫(のはず)。
お次は掛け算についてー。
コメント