第2講 変数を理解しよう

第7話 実数型変数

整数型変数が3つの場合のソース例
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
          int a,b,c; //まとめて変数を宣言。整数型や実数型などではまとめて宣言できる。

          //変数に整数を代入
          a=int::Parse(textBox1->Text);
          b=int::Parse(textBox2->Text);
          c=int::Parse(textBox3->Text);

          //a+bを計算し表示
          textBox4->Text=(a+b).ToString();

          //a−bを計算し表示
          textBox5->Text=(a-b).ToString();

          //a×bを計算し表示
          textBox6->Text=(a*b).ToString();

          //a÷bを計算し表示
          textBox7->Text=(a/b).ToString();

          //a+b+cを計算し表示
          textBox8->Text=(a+b+c).ToString();

          //(a+b)×cを計算し表示
          textBox9->Text=((a+b)*c).ToString();

          //(a+b)×cを計算し表示
          textBox10->Text=((a+b)*c).ToString();

          //a÷b×cを計算し表示
          textBox11->Text=(a/b*c).ToString();
       }
  };
}


割り算の問題は、
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
          int a,b,c; //整数型変数を宣言。
          double w;//実数型変数を宣言。

          //変数に整数を代入
          a=int::Parse(textBox1->Text);
          b=int::Parse(textBox2->Text);
          c=int::Parse(textBox3->Text);
          double w;
          //a+bを計算
          w=a+b;
          //a+bを表示
          textBox4->Text=w.ToString();

          //a−bを計算
          w=a-b;
          //a−bを表示
          textBox5->Text=w.ToString();

          //a×bを計算
          w=a*b;
          //a×bを表示
          textBox6->Text=w.ToString();

          //a÷bを計算
          w=a/b;
          //a÷bを表示
          textBox7->Text=w.ToString();

          //a+b+cを計算
          w=a+b+c;
          //a+b+cを表示
          textBox8->Text=w.ToString();

          //(a+b)×cを計算
          w=a*b+c;
          //(a+b)×cを表示
          textBox9->Text=w.ToString();

          //(a+b)×cを計算
          w=(a+b)*c;
          //(a+b)×cを表示
          textBox10->Text=w.ToString();

          //a÷b×cを計算
          w=a/b*c;
          //a÷b×cを表示
          textBox11->Text=w.ToString();
       }
  };
}
だと、残念ながら、
er
で全く改善されません。何故でしょうか。
w=a/b; で確かに左辺は実数型ですが、問題は右辺にあります。
aもbも整数型変数ですから、a/bは整数型同士の計算ということになり、
実はこの段階で1.5は丸められて1になってしまうのです。
ですから正しくは、コードは
#pragma endregion
  private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
          
double a,b,c,w; //実数型変数を宣言。
          
          //変数に整数を代入
          a=int::Parse(textBox1->Text);
          b=int::Parse(textBox2->Text);
          c=int::Parse(textBox3->Text);
          double w;
          //a+bを計算
          w=a+b;
          //a+bを表示
          textBox4->Text=w.ToString();

          //a−bを計算
          w=a-b;
          //a−bを表示
          textBox5->Text=w.ToString();

          //a×bを計算
          w=a*b;
          //a×bを表示
          textBox6->Text=w.ToString();

          //a÷bを計算
          w=a/b;
          //a÷bを表示
          textBox7->Text=w.ToString();

          //a+b+cを計算
          w=a+b+c;
          //a+b+cを表示
          textBox8->Text=w.ToString();

          //(a+b)×cを計算
          w=a*b+c;
          //(a+b)×cを表示
          textBox9->Text=w.ToString();

          //(a+b)×cを計算
          w=(a+b)*c;
          //(a+b)×cを表示
          textBox10->Text=w.ToString();

          //a÷b×cを計算
          w=a/b*c;
          //a÷b×cを表示
          textBox11->Text=w.ToString();
       }
  };
}
です。つまり、割り算が入ってくる場合は、すべて実数型変数にしなければならないのです。
実行結果
r

でしたら、変数は最初から実数型で宣言した方がよいのでしょうか。



そうではありません。
答えが明らかに整数になる場合(例えば、数独問題作成ソフトは整数しか出てこない)は、
整数型intで宣言しておいた方がよいのです。
理由は、実数型doubleはメモリーが整数型の場合の2倍以上のメモリーを使用するので、
魔方陣作成ソフトや数独問題作成ソフトのような計算量が膨大なソフトでは、
整数型intにしておいた方が、遙かに速い計算速度で計算できることになります。

以上で、第2講は終了として第3講のfor文に入りますが、皆さんは各自で工夫されていろいろな計算ができるように、
簡易計算ソフトを改良されてください。
第3講のfor文すなわち繰り返し処理(ループ処理)を学ぶとプログラムの応用力は、
爆発的に展開されることになります。
第3講のfor文と第4講のif文さえあれば、どんな高度なプログラムでも組むことができることが証明されています。
あのチェスの世界チャンピオンを破ったディープブルーのプログラムでも結局は、
for文とif文の組み合わせなのです。


第6話へ 第3講第1話へ

025


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

数学研究室に戻る