・p.44「変数とは?」から
p.44 変数とは?
・変数:記憶域(メモリ)を確保して名前をつけたもの ・型:値や変数の属性で、変数の確保においてはデータ長と特性(整数、実数、文字、文字列など)を決める ・C#では変数の利用前に宣言が必要で、この時に型を指定する ・宣言の書式: データ型 変数名; // 例 string name; ・同じ型の変数であればコンマ繋ぎでまとめて宣言可 例:string name, subname; ・string:文字列型で、0文字以上の文字列を扱える。C#では2バイト文字もOK ・代入:変数に値を格納すること。上書きになる。2項=演算子で行うが元の記号は「←」 例: string name; name = "ヴェルドラ"; //文字列変数nameの宣言と値の代入 ・初期化:宣言と同時に値(初期値)を代入すること ・初期化の書式: データ型 変数名 = 値; // 例 string name = "ヴェルドラ"; ※ 特に不必要な場合を除き、なんらかの初期化が推奨されることが多い ・なお、複数の同じ型の変数を同時に初期化できる。あるいは一部を初期化できる 例: string name = "ヴェルドラ", subname;
p.45 変数を作成してその値を代入する
・値が代入されている変数を式や処理に渡すと、その値が用いられる 例: string name = "ヴェルドラ"; Debug.Log(name); //"ヴェルドラ"がLogに渡される ・なお、変数を代入の右辺に置くことで、右辺の変数の値を左辺の変数に代入できる
p.45 Chap1_8_1
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Chap1_8_1 : MonoBehaviour {
void Start() {
string text = "ハロー!"; //文字列型変数の初期化
Debug.Log( text ); //文字列型変数の値を出力
}
void Update() {
}
}
アレンジ演習:Chap1_8_1
・textと一緒に変数nameも適当な名前で初期化しよう ・textの値を表示した後で、nameの値をtextに代入しよう ・textの値を再度表示し、値が変わっていることを確認しよう
作成例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Chap1_8_1 : MonoBehaviour {
void Start() {
string text = "ハロー!", name = "シャア"; //文字列型変数の初期化
Debug.Log( text ); //文字列型変数の値を出力
text = name; //変数nameの値を変数textに代入(上書きされる)
Debug.Log( text ); //文字列型変数の値を出力
}
void Update() {
}
}
p.46 変数を使うメリットは?
・変数は式の中でも使えるので、値を使いまわしたり再利用する場合に必要(例:税率) ・double型:実数(小数点のある値)用のデータ型で、倍精度浮動小数点数の略が由来。非常に大きい範囲の値を 扱えるので、数値の扱いの標準になっている。 ※ コンピュータ内部では2進数なので、10進数の実数は誤差が付き物なので注意 ・double型には整数も代入/初期化でき、内部的に実数扱いになる 例: double kakaku = 100; //内部的に100.0で初期化 ・2項*演算子で実数どうしの掛け算が可能で結果も実数になる ・初期化の初期値は式でもOKで、初期化済の他の変数を使う式もOK 例: double urine = kakaku * 1.08; //価格の値×1.08の計算結果で初期化 この式の動作順は ①変数urineの宣言 ②変数kakakuの値を得る ③計算 ④計算結果の代入 ・なお、Debug.Logメソッドは実数型にも対応しており、小数点以下が0の場合「.0」を省略する
p.46 Chap1_8_2
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Chap1_8_2 : MonoBehaviour {
void Start() {
double kakaku = 100; //実数型変数の初期化
double urine = kakaku * 1.08; //実数型変数の計算式による初期化
Debug.Log( urine ); //実数型変数の値を出力(内部的には108.0)
}
void Update() {
}
}
p.46 変数を使うメリットは?(つづき)
・float型:実数(小数点のある値)用のデータ型で、単精度浮動小数点数の略が由来。double型より狭い範囲の値を 扱うが、データ量が半分で済む。ただし、誤差が大きい。 ※ Unityではfloat型の出番が多い ・変数に格納されている値を得ることを参照ともいう ※ 文字列型変数では、変数とは別に文字列が格納され、その位置情報が変数に格納される。この情報のことも参照 (リファレンス)という
アレンジ演習:Chap1_8_2⇒1_8_3
・定数1.08も変数taxに格納して用いるようにしよう
作成例
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Chap1_8_2 : MonoBehaviour {
void Start() {
double kakaku = 150, tax = 1.08; //実数型変数の初期化
double urine = kakaku * tax; //実数型変数の計算式による初期化
Debug.Log( urine ); //実数型変数の値を出力(内部的には162.0)
}
void Update() {
}
}
参考: 実数型の精度の違いについて
・double型の変数を精度を超える値で初期化すると、ある程度の桁数で打ち切られた結果になる 例: double pi = 3.141592653589793238462643; Debug.Log(pi); ⇒ 3.14159265358979 となる ・float型の変数で上記のことを行うとエラーになる。 ・これは実数リテラル(実数をそのままプログラムに記述したもの)の型が自動的にdoubleになるから ・これを防ぐには、実数リテラルの末尾にFまたはfをつけてfloat型扱いにすれば良い 例: float fi = 3.141592653589793238462643F; Debug.Log(fi); ⇒ 3.141593 となる ・float型の値や変数はdouble型変数に代入できるが、逆はエラーになる 例: double pi = 3.141592653589793238462643F; //OK 例: float fi = pi; //エラー ・整数を含む式の場合、double型があればdouble型に変換されてから計算される ・整数を含む式の場合、double型がなく、float型があればfloat型に変換されてから計算される 例: float fi = 3.14F * 10 * 10; //半径10の円の面積