p.044 変数とは
・英語のvariable value(変わり得る値)の和訳で「変わった数」ではない ・記憶域(メモリ)を必要分確保して名前をつけたもの ・よって、データを格納する器のイメージを持つ ・C#などでは、事前に変数を宣言しておく必要があり、宣言によって確保される ※ Python、JavaScriptなどでは宣言不要で初回利用時に確保される ・宣言の書式: データ型 変数名; ・データ型を指定することで「確保すべき大きさ」と「格納するデータの特性」を明示する ・データ型にはstring(p.044:文字列型)、double(p.046:倍精度浮動小数点数(実数)型)、int(p.057:整数型)などがある ・宣言の書式例: string text; //文字列型の変数textの宣言(textが変数名) ・変数に与えるデータを値といい、値を格納することを代入という ・宣言と同時に最初の値(初期値)を代入することを初期化という ・初期化の書式: データ型 変数名 = 値や式; ・なお、この書式の「=」は代入に用いる2項=演算子であり「等しい」という意味はない(元は「←」記号) ※ちなみに「等しい」は「==」(2項==演算子)で示す ・初期化の書式例: string text = "ハロー!"; //文字列型の変数textの初期化
p.045 変数を作成してその値を代入する
・タイトルに誤りがあり「変数を初期化してその値を利用する」が正しい ・初期化した変数はそれ以降で利用できる ・例えば、Debug.Log(初期化済の変数名) とすると、変数に格納されている値が表示される ・格納された値は何度でも利用できるのがポイント
アレンジ演習:p.045 Chap1_8_1.cs
・「Debug.Log(text);」をもう1行記述して、同じ値が2度表示されることを確認しよう
作成例
using UnityEngine;
public class Chap1_8_1 : MonoBehaviour {
void Start() {
string text = "ハロー!"; //文字列型の変数textの初期化
Debug.Log(text); //変数textに格納されている値を表示⇒ハロー!
Debug.Log(text); //変数textに格納されている値を表示⇒ハロー!
}
}
p.045 変数を使うメリットは?
・初期化には値に加えて式も指定できる ・例: double p = 3.14 * 10 * 10; //半径10の円の面積で初期化 ・式には初期化済の変数を利用できる ・例: double pi = 3.14; Debug.Log(pi * 10 * 10); //半径10の円の面積を表示 ・よって、初期化にも初期化済の変数を用いる式を指定できる ・doubleは倍精度浮動小数点数の「倍」が由来で、64ビット分の誤差が小さい実数を扱える ・よって、double型の変数の初期化では実数値を指定できるが、整数値も指定可能で、自動的に実数に変換されてから格納される ※このことを暗黙の型変換という ・例: double kakaku = 100; //100.0に自動変換されて初期化 ・初期化においては基本的にその型の値を用い、暗黙の型変換もできない場合、文法エラーになる ・エラーの例: double kakaku = "ハロー!"; //文字列によるdouble型変数の初期化は不可
アレンジ演習:p.046 Chap1_6_2.cs
・エラーの例「double text = "ハロー!";」を追記してどういうエラーになるか確認しよう ・確認後「//」を前置してコメントにすること(コメントアウトという)
作成例
using UnityEngine;
public class Chap1_8_2 : MonoBehaviour {
void Start() {
double kakaku = 100; //100.0に自動変換されて初期化
double urine = kakaku * 1.08; //100.0×1.08→108.0で初期化
Debug.Log(urine); //変数urineに格納されている値を表示⇒108と表示
//double text = "ハロー!"; //文字列によるdouble型変数の初期化は不可
}
}
p.045 変数を使うメリットは?:続き
・内部で用いる値が将来変更される可能性があったり、その値を複数回用いる場合、リテラルではなく、変数に格納して用いると良い ・例えば、消費税計算を毎回「* 1.1」とする代わりに「* tax」としておき、冒頭で変数taxを税率で初期化すれば、 保守性が高い(変更・改良しやすい)プログラムになる ・例: double tax = 1.1; //税率が変わったらここだけ変更でOK double book = 1000, magazine = 800; //それぞれの価格を初期化 Debug.Log(book * tax); //税率が変わっても変更不要 Debug.Log(magazine * tax); //税率が変わっても変更不要
参考:VSによるインデントの一括修正機能
・Ctrlを押しながらA、K、Dの順に押すと指定してあるルールによって、ソースのインデントが一括修正される ・なお、先行する全角空白がある場合、削除してくれる ・他者にソースを見せる前に行うと良い
アレンジ演習:p.047 Chap1_8_3.cs
・上記の例を追記して確認しよう
作成例
using UnityEngine;
public class Chap1_8_3 : MonoBehaviour {
void Start() {
double kakaku = 150; //150.0に自動変換されて初期化
double urine = kakaku * 1.08; //150.0×1.08→162.0で初期化
Debug.Log(urine); //変数urineに格納されている値を表示⇒162と表示
double tax = 1.1; //税率が変わったらここだけ変更でOK
double book = 1000, magazine = 800; //それぞれの価格を初期化
Debug.Log(book * tax); //税率が変わっても変更不要
Debug.Log(magazine * tax); //税率が変わっても変更不要
}
}
参考:文字列型変数と実数
・文字列型変数を実数値で初期化するとエラーになる ・例:string text = 3.14; //エラーになる ・なお、実数値をダブルクォーテーションで囲んで文字列にすればエラーにならない ・例:string text = "3.14"; //エラーにならない ・ただし、この変数は実数演算の式には使えない ・例:double s = 100 * text; //エラーになる
p.048 変数の命名ルールを覚えよう
・C#における変数の命名ルール ① 英大文字、英小文字、数字、「_」、2バイト文字が利用可能 ※ つまり他言語では使える記号(「-」「$」「@」など)はC#では利用不可 ② ただし、先頭には数字は利用不可(よって数字のみも不可) ③ 予約語と完全に同じ名は利用不可 例:using、public、class、void、double、string など
p.048 変数の命名ルールを覚えよう:補足
・文法エラーにははならないが、変数名の命名で推奨されるルールがある ※実務ではルールが決められることが多い ① 予約語と同じつづりで大文字を混ぜた名前は避ける 例:Using、Public、Class など ② 2バイト文字は避ける(誤読しやすい) ③ 1文字の大文字は避ける(誤読しやすい) ④ 先頭に「_」は避ける(「_」を推奨しない場合もある) ⑤ 長過ぎたり誤解を招く変数名は避ける
提出:アレンジ演習:p.047 Chap1_8_3.cs