一年課題1 - 変数の使い方

今回は変数の使い方について説明します。


変数とは
変数とは、プログラム上で値を一時的に保存するための箱を指す。

プログラムが処理を行う場合、必要な情報を毎回ハードディスクなどから読み出し、一時的に保存するデータをハードディスクへ書き込むのは非常に効率が悪いため、間にメモリと呼ばれる一時記憶装置にデータを入れておくことで、処理を高速化することができる。
そのメモリへのアクセスをプログラム上で簡単にしたものが「変数」である。
変数には、様々なデータを保存することができる。

  • 整数(int等)
  • 浮動小数(float等)
  • 文字列(string等)

変数には基本的に好きな名前をつけて良いが、次に当てはまる変数の名前は宣言できない。

  • 数字から始まる名前
  • _(アンダーバー)以外の記号を含む名前

数字から始まる名前では、あくまで先頭に数字が来てはいけないだけであり、2文字目以降に関しては数字を使っても構わない。
これらは主に次のように宣言され、変数として利用できるようになる。
使用言語:processing

コード1

int a;
float b;
string c;

また、上で宣言された場合、次のように値を代入(一時保存)することができる。
コード1続き

コード2

a = 5;
b = 4.12;
c = "ABCDE abcde あいうえお";

コード2では、"="を使って変数に値を代入した。
プログラミングでは、"="は条件分岐の一つである「等しい」という意味ではなく、「右辺を左辺へ代入する」という意味を指す。
もし、変数を宣言した場合は、どこかで必ずデータを代入するべきである。
理由として、多くのプログラミング言語では、宣言しただけで代入されていない変数には、何らかの値が入っている場合が多いためである。
そのため、変数は宣言と同時に値を代入することが一部を除いて推奨される。
その場合は、コード2の各変数の前にコード1で示したように変数の型名を加えるだけである。


変数の大きさ
一時記憶装置の中は有限である。そのため変数には、種類によって入れられる種類や量が決まっている。
コード1で示したように、intは整数、floatは浮動小数、stringは文字列を代入でき、特にintにおいては、2,147,483,648から-2,147,483,648までの整数しか入らず、もしどちらかから値が飛び出た場合、その逆へ戻ってくる。

コード3

int a = 2147483648; // int型のaという変数にint型の最大値を代入
int b = a + 1; // 最大値に1足した数をint型で宣言したbという変数に代入

コード3の結果は、-2147483648となる。


グローバル(大域)変数とローカル(局所)変数
また、変数にはおおまかに2種類に分けられる。

  1. グローバル変数
  2. ローカル変数

グローバル変数(別名:大域変数)とは、プログラムコード内のどこでも読み出し、書き換えが可能な変数のことである。

コード4

int a = 1000; // 1000という値をint型のaという変数に代入
for(int i = 0; i <= 5; i++){ // for文と呼ばれる関数で、詳細は後日
int b = a + 5; // aと5を足した値をint型のbという変数に代入
}

この時、for文の中は完全にその周りのコードから独立した変数を持っており(この場合は変数b)、aはそのfor文の外で宣言しているため、for文の中からデータを呼び出すことができる。


ローカル変数(別名:局所変数)とは、プログラムコード内のある一定の部分からでないと読み出し、書き換えが不可能な変数のことである。

コード4で示したとおり、変数aはグローバル変数である。では、for文内にある変数bはどうだろうか。
このbは、for文というある流れの中で宣言されている。そのため、そのfor文の外からは読み出すことも、書き込むこともできなくなっている。


これによる利点として、複数の処理で使用する、または最終的に必要となるデータを一時保存するための変数としてグローバル変数が、またある小さな処理の中で一時的にデータを保存するための変数としてローカル変数が、という形で、変数の住み分けができるようになる。
住み分けを行うと、ローカル変数においては、他の小さな処理の中でも同じ名前の変数を宣言した時、新しくデータを代入することができるため、変数につける名前を増やさなくてすむようになる。