講義メモ

・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の円の面積

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です