講義メモ

・p.54「入力結果をちょっと加工して表示する」から

提出フォロー:アレンジ演習: p.46 chap1_8_2 続き2

・税率を100分率で入力できるようにしよう
・例えば、8と入力したら価格を1.08倍した結果になること
・ヒント: 売値=価格×(100+税率)÷100

作成例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chap1_8_2 : MonoBehaviour {
    public double kakaku = 100, rate; //パブリックな実数型変数の初期化と宣言
    void Start() {
        double urine = kakaku * (100 + rate) / 100; //実数型変数の計算式による初期化
        Debug.Log(urine); //実数型変数の値を出力
    }
    void Update() {
    }
}

補足:計算順序と誤差

・基本的に誤差が出やすい除算は最後に行うと良い
・先に誤差が出た状態で乗算を行うと誤差が増えてしまう
・また、整数演算では先に除算を行うと計算結果が大きく損なわれることがある(後述)

p.54 入力結果をちょっと加工して表示する

・C#では演算子に複数の作用を持たせることができる。
・これをオーバーロード(多重定義)という
・どの作用が行われるかは演算の対象の型によって決まる
・2項+演算子の場合:
 ① 双方が加算可能(数値)なら加算
 ② どちらかまたは両方が文字列なら連結
 ③ ①でも②でもなければエラー(ただし、プログラムで追加定義が可能)
・複数の2項+演算子を使った式の場合、途中段階でどの型になるかで動作が変わるので注意

p.54 Chap1_10_2

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chap1_10_2 : MonoBehaviour {
    public string text; //パブリック変数の宣言
    void Start() {
        Debug.Log( "入力は" + text ); //文字列変数の値を連結して出力
    }
    void Update() {
        
    }
}

アレンジ演習:Chap1_10_2 ①

・2項+演算子のどちらかが文字列なら連結であることを確認しよう
① 文字列+実数 例:"円周率は" + 3.14 を表示
② 実数+文字列 例: double pi = 3.14; pi + "が円周率" を表示

作成例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chap1_10_2 : MonoBehaviour {
    public string text; //パブリック変数の宣言
    void Start() {
        Debug.Log( "入力は" + text ); //文字列変数の値を連結して出力
        Debug.Log( "円周率は" + 3.14 ); //文字列+実数で連結して出力
        double pi = 3.14; //実数型変数を初期化
        Debug.Log( pi + "が円周率" ); //実数変数+文字列で連結して出力
    }
    void Update() {
        
    }
}

アレンジ演習:Chap1_10_2 ②

・複数の2項+演算子を使った式の場合、途中段階でどの型になるかで動作が変わることを確認しよう
① 実数+実数+文字列は、実数の和と文字列の連結 例:1.1 + 2.04 + "は円周率" を表示
② 実数+文字列+実数は、実数と文字列の連結に実数を連結 例: 1.5 + "個の重さは" + 2.5 を表示
③ よって、文字列+実数+実数は、文字列と実数の連結に実数を連結してしまう。カッコを用いて優先順位を調整することで)
 double x = 1.5, y = 2.2; 
 について「和は3.7」と表示する処理を追加しよう。

作成例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chap1_10_2 : MonoBehaviour {
    public string text; //パブリック変数の宣言
    void Start() {
        Debug.Log( "入力は" + text ); //文字列変数の値を連結して出力
        Debug.Log( "円周率は" + 3.14 ); //文字列+実数で連結して出力
        double pi = 3.14; //実数型変数を初期化
        Debug.Log( pi + "が円周率" ); //実数変数+文字列で連結して出力
        Debug.Log( 1.1 + 2.04 + "は円周率" ); //実数の和と文字列の連結
        Debug.Log( 1.5 + "個の重さは" + 2.5 ); //実数と文字列の連結に実数を連結
        double x = 1.5, y = 2.2; //実数型変数を初期化
        Debug.Log( "和は" + (x + y) ); //加算後の実数を文字列に連結
    }
    void Update() {
        
    }
}

アレンジ演習:p.46/47 Chap1_8_2/3をベースに

・「●円で税率●%なので●円」と表示しよう

作成例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chap1_8_2 : MonoBehaviour {
    public double kakaku = 100, rate; //パブリックな実数型変数の初期化と宣言
    void Start() {
        double urine = kakaku * (100 + rate) / 100; //実数型変数の計算式による初期化
        Debug.Log(kakaku + "円で税率" + rate + "%なので" + urine + "円"); //【変更】連結出力
    }
    void Update() {
    }
}

作成例:別解

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Chap1_8_2 : MonoBehaviour {
    public double kakaku = 100, rate; //パブリックな実数型変数の初期化と宣言
    void Start() {
        double urine = kakaku * (100 + rate) / 100; //実数型変数の計算式による初期化
        string why = kakaku + "円で税率" + rate + "%なので"; //【追加】理由の文字列
        Debug.Log(why + urine + "円"); //【変更】連結出力
    }
    void Update() {
    }
}

参考: Unity UIについて

・通常のアプリケーションにおいて、実行中に利用者(プレイヤー)が値を与えるには、そのためのユーザインタフェース(UI)が必要
・特にグラフィック系のアプリでは、キーボードを利用して入力するのは不適切な場合が多いし、入力のチェックの問題もある
・よって、専用のユーザインタフェースツールを用いて、アプリの作りに合わせたUI作り込むのが一般的
・Unityの場合、Unityが用意しているUnity UIを用いることができる
 https://docs.unity3d.com/ja/2022.3/Manual/UIInteractionComponents.html

コメントを残す

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