Milkのメモ帳

日々の思いつきを忘れないようにのメモ用です。

Milkのメモ帳

【第7回】変数と代入について覚えよう!【C#】


f:id:maxminkun:20161013163531j:plain

こんばんは。Milkです。

さて、どれだけ需要があるかちょっと分からないですけど、一応ほそぼそと、このシリーズを続けております(笑)

前回は、以下のような内容でした。

www.milkmemo.com

皆さん、順調に前回のプログラムが動作可能な状態になっているかな?(おー!なってるぞー!)

よし。じゃあ、プログラムの解説に行ってみよー!(寂しいので、一人芝居してる。)

あ・・・別段、焦らないでいいですからね?

自分のペースでコツコツと行きましょー!



変数と代入について

プログラムを書く上で、よく使用されるモノに「変数」と「代入」と言うものがあります。

それでは、少し前回のプログラムを見てみましょう。

Form1.cs

表示されない場合はこちらをどうぞ
第7回プログラミング講座 · GitHub


うーむ。ちょっと初めての方はめまいがするかもしれませんね。

だいぶプログラムが長くなってきました。

プログラムを読む方向を覚えよう

プログラムには、読む方向があります。

え?読む方向?

そうなんです。プログラムを読み解くには、これを覚えるとだいぶ楽になるのですよ?

先ず第一の原則として、「プログラムは上から順番に実行される。」という決まりがあるのは、もう既にお伝えしたと思います。

もう一つの決まりとして、「右から左へ代入される。」と言うものがあります。

代入

代入?

なんだそりゃ。代入とは数学用語ですよね。

例えば、「Xに3を代入する」と言ったりします。要は、Xに3という値を入れるという意味です。

この様に、値を入れる行為を代入と言います。

実は、上に載せたプログラムの中で、同様の動きをしている箇所があります。

表示されない場合はこちらをどうぞ
第7回プログラミング講座ー2 · GitHub


Form1.csの11〜19行目を抜き出して来ました。注目して欲しいのはこの部分です。

int suji_mae = 0;

これの意味するところは、「suji_maeに0を代入する。」と言う意味です。

少し、分かり辛いですかね。単純に「Xに0を代入する。」と言ったらどうでしょう。「X」が「suji_mae」という名前に変わっているだけです。

つまり、代入というのは、「=」の右辺の値を左辺のものに入れるということなんです。

ここで注意して欲しいのは、「=」と書かれているのは、プログラムでは代入の意味です。決して「イコール(同じもの)」と言う意味ではありませんので、覚えておいて下さい。

そして、「int」という文字が頭に付いています。

「int suji_mae」ですね。

この「int」にも意味があります。

変数

まず、値が代入される対象のものを「変数」と呼びます。

変数とは、値を入れておく場所だと思っていて下さい。

そして、この変数には種類があるのです。

代表的なものには以下のようなものがあります。

型の説明 使用可能範囲
int 整数 -2,147,483,648 ~ 2,147,483,647
long 整数 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
double 浮動小数点(小数点以下の数値も使用可能):有効桁数は15 ~ 16 桁 ±1.5 × 10−324 ~ ±1.7 × 10308
bool 正誤の状態を表す true又はfalse
string 文字列 長さの制限はなし

値型 (C# リファレンス) | Microsoft Docs

このように、「int」や「double」と頭に書いて、変数に名前を付けると、その変数を使用することが出来ます。

それが「int suji_mae」の意味です。つまり、int型の変数で、名前が「suji_mae」となっているということなんです。

では、なんでこんなに変数の型には種類があるのか?

それは、メモリの大きさに関係します。例えば、「int」と「long」はどちらも整数を扱う変数です。

しかし、扱える範囲が違います。範囲が違うということは、パソコンの中のメモリの使用量が異なるということです。

例えば、いくら大きい値が扱えるからと言って、「long」ばっかり使っていると、メモリは「long」用の場所を確保しますので、「int」より沢山のメモリを消費します。ですから、必要な量だけ扱えるように種類が豊富にあるのです。このことは、スタックとヒープと言う話につながっていきますから、また別の機会に詳しく解説しましょう。

変数と代入を組み合わせる

では、変数と代入について、プログラムの例を書いてみます。

//変数を宣言します。そして、0を代入し値を初期化します。
int suji_mae = 0;
int suji_ushiro = 0;
int keisan_kekka = 0;

//変数に対し、値を代入します。
suji_mae = 3;
suji_ushiro = 2;

//①足した結果を、「keisan_kekka」に代入します。
keisan_kekka = suji_mae + suji_ushiro;

//値を代入
suji_mae = 6;

//②足した結果を、「keisan_kekka」に代入します。
keisan_kekka = suji_mae + suji_ushiro;

さて、何となく見えてきましたか?

先ず、上から順番に処理は行われますよね?

「suji_mae」と「suji_ushiro」と「keisan_kekka」という変数を使いますよとプログラムを書きます。

そして、それと同時に0を代入して、それぞれの変数の中身に0という値を保持させます。
(このように、変数を最初に意図した値に設定することを初期化と言います。これは、是非ともプログラミングの嗜みとして覚えておいて下さい。初期化をせずに変数を利用すると、中身に何が入っているか分からない状態ですから、変数を利用するときに困ってしまいます。)

次にやっていることは、「suji_mae」に3を入れています。つまり、0を保持させていたのですが、3という値で上書きして、これを覚えさせます。これが代入です。

同様にして、「suji_ushiro」も2という値を代入します。

では、①と書いた部分を見てみましょう。今度は、「keisan_kekka」に代入しようとしています。何を?

それは、「suji_mae」に入れている値と「suji_ushiro」に入れている値を足した合計値です。このように変数同士を四則演算の形で結んで代入することも出来ます。この時の、「keisan_kekka」の中には、どのような値が入っているか分かりますか?

答えは、5です。

次に、「suji_mae」の変数に対し、6を代入しています。「suji_ushiro」には何も手を加えていないので、値の変更はありません。

そして、②では、また同じように足し算をしていますね。今回は、「suji_mae」の値が6に書き換えられていますから、「keisan_kekka」に入る合計値は以前と異なります。

答えは、8です。そして最終的に、「keisan_kekka」には8が入った状態でプログラムは終了することになります。


まとめ

今回は、変数と代入について解説を行いました。

これはプログラムの重要な基礎の部分になります。

もう一度、Form1.csを貼り付けてみますね。

今度は、「=」に注目して眺めてみて下さい。

Form1.cs

表示されない場合はこちらをどうぞ
第7回プログラミング講座 · GitHub


どうですか? ほとんどの行に「=」が書いてありませんか?

そうです。つまりの所、プログラムのほとんどの行は、「右辺で計算を行い、その結果を左辺に代入する!」という形で書かれます。

今回は、そのことが理解できれば満点です!!

だんだんと、プログラムをどのように書いたら良いのか、そしてどう読んだら良いのかが見えてきましたね。

そして、いよいよ以下の部分が大事な意味を持ってきます。

www.milkmemo.com

プログラムは、意味を持ってグルーピング出来ることを以前解説しましたね。

これと組み合わせることで、更に詳しくプログラムを読み解くことが出来るようになります。

今後は、それを目指していきましょう。


何かご質問がある場合は、気軽にtwitterあるいはコメントにご連絡下さい。一応、どの回の分でも大丈夫です。

それでは、今回はここまで!!

楽しいプログラミングライフを!

adios!!

www.milkmemo.com