一年課題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種類に分けられる。
- グローバル変数
- ローカル変数
グローバル変数(別名:大域変数)とは、プログラムコード内のどこでも読み出し、書き換えが可能な変数のことである。
コード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文の外からは読み出すことも、書き込むこともできなくなっている。
これによる利点として、複数の処理で使用する、または最終的に必要となるデータを一時保存するための変数としてグローバル変数が、またある小さな処理の中で一時的にデータを保存するための変数としてローカル変数が、という形で、変数の住み分けができるようになる。
住み分けを行うと、ローカル変数においては、他の小さな処理の中でも同じ名前の変数を宣言した時、新しくデータを代入することができるため、変数につける名前を増やさなくてすむようになる。