平均を求める
今回のC#プログラミング学習は、平均を求める方法について学んでいきます。
プログラム例
まずは、VisualStudioを立ち上げて、C#プログラムを書く準備をしましょう。
よくわからないという場合は、こちらの記事「VisualStudioでC#プログラムを書く準備」を参照してください。
今回学習していくC#プログラムはこちらです。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Sample { internal class Program { static void Main(string[] args) { int nNumber1, nNumber2; double dAverage; nNumber1 = 5; nNumber2 = 2; dAverage = ( nNumber1 + nNumber2 ) / 2.0; Console.Write("{0}と{1}の平均は{2}です", nNumber1, nNumber2, dAverage); Console.ReadLine(); } } }
プログラムが書けたら、VisualStudioのビルドメニューの中の「ソリューションのビルド」を選択してビルドしてみましょう。
問題なくビルドができたら、F5キーを押してプログラムを動かしてみましょう。
二つの数値とその平均が表示されたら、Enterキーを押すとプログラムが終了します。
今回作成したプログラムをダウンロードするにはここをクリックします。
プログラム解説
今回は平均を求めるプログラムの解説です。
一応念のために書いておきますが平均を求めるには、平均を求めたい数値をすべて足してから、平均を求めたい数値の個数で割ります。
例えば、七個の数値の平均を求めるには、「七つの数値の合計を七で割る」という感じです。
理屈は簡単ですが、それをC#プログラムで実現するには、以下の手順で処理していきます。
変数の宣言
まずは、平均を求めたい数値を格納する変数と、その平均の数値を格納する変数を準備します。
サンプルプログラムでは以下の部分です。
int nNumber1, nNumber2; double dAverage;
一行目で、平均を求めたい数値を格納する変数を宣言しています。
今回は二つの数値の平均を求めるので変数も二つで、数値の種類も整数が扱えればよいので「int」型です。
二行目は、平均値を格納するための変数を宣言しています。
平均値という性質上、少数を扱うことが多くなるので、変数の型は「double」型にしています。
平均を求める
変数の準備ができたら、それぞれに値を代入して、その平均を求めていきます。
サンプルプログラムでは以下の部分です。
nNumber1 = 5; nNumber2 = 2; dAverage = ( nNumber1 + nNumber2 ) / 2.0;
一行目と二行目で、平均を求めたい数値の変数に値を代入し、三行目でその平均を求めています。
今回ポイントとなるのが、この三行目です。
平均を出すわけですから、まず、平均を求めたい数値が入った変数をすべてカッコ内で足し合わせています。
今回は二つの数値の平均を求めたいので、単純に「2」で割ればよさそうなんですが、前述のプログラムでは「2.0」で割っています。
これはどういうことなのでしょうか?
プログラミング上達の近道として、「疑問に思ったコードで試してみる」という方法があります。
結果はすぐ出るわけですから、「2.0」ではなく「2」で割ってみてください。
するとどうなりましたか?
平均値が変わりましたよね。
最初は小数点以下まで求められていた平均値が、プログラムを書き換えた後は、小数点以下が切り捨てられています。
これは「double」型の性質みたいなものです。
我々が小数点以下の計算が面倒だと思うように、コンピュータ側も小数点以下の計算は面倒なんです。
そして面倒なものというのは、なるべくやりたくありませんよね。
なので、プログラマー側から「ちゃんと小数点以下の計算もしてね」と言われないと、小数点以下まで計算はしないんです。
この「ちゃんと小数点以下の計算もしてね」部分に当たるのが、「2.0」なんです。
もう少しだけ説明すると、同じ数値でも「2」と書けば整数グループに属しますが、「2.0」と書けば少数グループに属しますよね。
人間世界でもこのように分けられているわけですから、当然コンピュータの世界でも分けられています。
具体的には、「2」というのは「int」型で、「2.0」だと「double」型になるんです。
そして当然カッコ内の合計値も「int」型になりますから、「2」で割ってしまうと、イコールの右側がすべて「int」になり、「それじゃあ、答えもint型でいいよね(めんどくさいし…)」みたいな感じになるわけです。
結果の表示
最後はすべての変数の中身を表示します。
サンプルプログラムでは以下の部分です。
Console.Write("{0}と{1}の平均は{2}です", nNumber1, nNumber2, dAverage); Console.ReadLine();
以上です。
まとめ
C#プログラミングにある程度慣れてくると、今回のようなコーディングテクニックは忘れがちになってしまうので、しっかり学習しておきましょう。