第3講 変数を理解しよう(その2)
第6話 実数型変数の学習

第5話で引き算とかけ算を加えました。第6話では、割り算を加えましょう。
まず、第5話と同様にForm1にLabelを2つ加えて、
g01としましょう。
(因みに、g02g03の部分が空欄のLebelが入っていること示している。
これはa÷b=のところでクリックし、これを選択状態にしてTabキーを押すと出てきます。)
それぞれのFontのサイズとスタイルは、他のものと同様に12と太字としましょう
(でもこれも好みなのでこの通りにする必要は、必ずしもありません。)。
次に実行をダブルクリックして、プログラミングしてください。
×と同様に÷もVisual C++にはありせん。
a÷bに相当するのはa/bです。
さて、次のようにプログラムすることは正解でしょうか。

int a;
int b;
int w;
a=int::Parse(textBox1->Text);
b=int::Parse(textBox2->Text);
w=a+b;
label6->Text=w.ToString();
w=a-b;
label7->Text=w.ToString();
w=a*b;
label8->Text=w.ToString();
w=a/b;
label10->Text=w.ToString();

F5を押すと、問題なくビルドできソフトが起動します。
しかし、aに18、bに5を入力して実行ボタンを押すと、
g04なってしまいます。
足し算、引き算、かけ算は正しく計算できているのに、割り算は正しくありません。
理由はおわかりでしょうか。wは整数型の変数(整数値を入れる箱)でした。
ところが18/5の結果は、3.6です。
自動的に小数部分が切り捨てられ、整数値に変更されてしまったのです。
(数値の小数部分を切り捨て整数値に変更することを数値を整数値に丸めるといいます。)
wが整数型であることが問題であったので、wを実数型に変更したらうまくいくでしょうか。
実数型の宣言にはdoubleを使いますので、プログラムを次のように変更してみましょう。
int a;
int b;
double w;
a=int::Parse(textBox1->Text);
b=int::Parse(textBox2->Text);
w=a+b;
label6->Text=w.ToString();
w=a-b;
label7->Text=w.ToString();
w=a*b;
label8->Text=w.ToString();
w=a/b;
label10->Text=w.ToString();
ところが今回もビルドしてソフトを起動してaに18、bに5と入力して実行ボタンを押してみると、
g05まったく同じになってしまいます。
実は、w=a/bの右辺においてすでに数値は整数値に丸められていたのです。
理由は、aもbも整数型変数だからです。
整数型同士の計算結果は、
小数部分が出来た場合小数部分が切り捨てられ必ず整数になってしまうのです。
double a;
double b;
double w;

とすべて実数型変数にしなければならないのです。
(ならば、いつでもすべて実数型で宣言しておけば良さそうなものですが、
答えが整数値になることがわかっている場合は整数型で宣言しておいた方がよいのです。
intに比べてdoubleは、
使用するメモリー量が数倍も大きくて、計算時間に大きな影響を与えます。
もちろん上で作った単純計算ソフトなら、
数値がたとえ大きくなったとしても
コンピュータは0.0001秒もかからず計算してしまいますからどちらでも影響がありませんが、
将来、この講義において数独自動生成ソフトや魔方陣作成ソフトを作る予定になっていますが、
これらの計算量の膨大なソフトでは、int型やchar型にしておいた方が計算速度が遙かに速くなります。)
変更してF5でソフトを起動して、aに18、bに5として実行ボタンを押してみると、
g06と確かに、成功しました。

問題 
さらに、LabelとTextBoxを追加して、
変数を3つにして
a+b÷c、(a+b)×c、a×c+b÷c、a×b÷cなどを計算させてみましょう。
なお、Form1が小さすぎて上のLabelとTextBoxが載らない場合は、
g07
の赤のハンドルマークをドラッグして適当な大きさに変更して下さい。


第5話へ  第4講第1話へ

a
eclipse java 入門
初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部

vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすい vb 入門 vba 入門 基礎から応用まで 第1部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ