講義メモ

・p.114「配列の書き方を覚えよう」

提出フォロー:アレンジ演習:chap3_5_2f

・乱数で1から9を5回得て、5本の横棒グラフを表示しよう
例:
7:■■■■■■■
2:■■
6:■■■■■■
5:■■■■■
4:■■■■
ヒント:1から9の乱数を得るには
  System.Random r = new System.Random(); //乱数クラスのオブジェクトを生成(1度でOK)
 :
  int n = r.Next(9) + 1; //1から9までのどれかになる

作成例

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

public class chap3_5_2f : MonoBehaviour {
    System.Random r = new System.Random(); //乱数クラスのオブジェクトを生成
    void Start() {
        for (int i = 0; i < 5; i++) { //5回繰返す
            int n = r.Next(9) + 1; //1から9までのどれかになる
            string s = n + ":"; //連結用の文字列を用意
            for (int j = 0; j < n; j++) { //n回繰り返す
                s += "■"; //文字列に■を連結
            } //内側のforブロック(繰返し内容)の終わり
            Debug.Log(s); //出来上がった文字列を表示
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

p.115 配列を作って利用する

・配列の添字は式や変数で与えることができる
・例:
 string[] name = {"リムル", "シュナ", "シオン"}; int i = 2; Debug.Log(name[i]);

アレンジ演習:p.115 chap3_6_1

・dirs[1]ではなく、int型パブリック変数pを用いて、dirs[p]を表示しよう
・パブリック変数pの値は0から3とする(負の数か4以上にして異常終了することも試そう)

作成例

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

public class chap3_6_1 : MonoBehaviour {
    public int p = 0;
    void Start() {
        string[] dirs = { "東", "西", "南", "北" };
        Debug.Log(dirs[p]); //配列dirsの要素[p]を表示
    }
    void Update() {

    }
}

参考:実行時エラーの対処

・実行時エラーは文法エラーではないので、Visual Studioのエディタでは発生がわからない
 ※ 実行時エラーが起こることが明らかな場合はエラーや警告が表示されることもある
・実行時エラーの発生場所はUnity側に表示されるメッセージで確認できる
・書式:
 [発生時刻]発生したエラーを示す例外クラス名:メッセージ
 実行クラス名.メソッド名(…)(at Assets/ソースファイル名:行番号)
・例:
 [12:50:02]IndexOutOfRangeException: Index was outside the bounds of the array.
 chap3_6_1.Start () (at Assets/chap3_6_1.cs:9)

p.116 配列の要素を置き換える

・配列の要素は単独の変数と同様に扱える
・よって、値を代入することで、格納されていた値を置き換えることが可能

p.116 string.Joinメソッド

・書式: string.Join(区切り文字列, 配列名)
・C#が提供するメソッドで、配列の全要素を連結した結果の文字列を返す
・この時、区切りに指定した文字列を要素間に挿入してくれる

p.116 chap3_6_2

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

public class chap3_6_2 : MonoBehaviour {
    void Start() {
        string[] dirs = { "東", "西", "南", "北" };
        dirs[0] = "真東"; //配列dirsの要素[0]に代入(書き換え)
        Debug.Log(string.Join(" ", dirs)); //配列dirsの全要素を連結表示(空白区切り)
    }
    void Update() {

    }
}

アレンジ演習:p.115 chap3_6_2

・int型パブリック変数pと、string型パブリック変数sを用いて、dirs[p]にsを代入しよう
 例: p ← 2、s ← 真南
・パブリック変数pの値は0から3とする

作成例

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

public class chap3_6_2 : MonoBehaviour {
    public int p = 0;
    public string s = "";
    void Start() {
        string[] dirs = { "東", "西", "南", "北" };
        dirs[p] = s; //配列dirsの要素[p]に文字列sを代入(書き換え)
        Debug.Log(string.Join(" ", dirs)); //配列dirsの全要素を連結表示(空白区切り)
    }
    void Update() {

    }
}

p.117 要素を入れずに配列を作成する

・p.114の書式は「配列の初期化」と呼ばれるもので、初期値の数により要素数が決まる
・この書式では要素数が大きい配列には不向きなので、要素数だけを指定して、
 初期値を与えずに空で生成する書式を用いる
・書式: 型[] 配列名 = new 型[要素数];
 ※ これは「配列の宣言」である「型[] 配列名;」と「配列の生成」である「配列名 = new 型[要素数];」を
 合わせたものなので、型を2回指定している。
・例: string[] name = new string[3]; //name[0]、name[1]、name[2]が生成される

p.117 new演算子

・newは「新しい」ではなく「生成せよ」のイメージで、メモリ上に領域を確保して利用できるようにする処理に汎用的に用いる
・配列の生成においても「指定した型×要素数分の領域」を確保することを示している。

p.117 chap3_6_3

・このままでは実行しても何も表示されないので、chap3_6_2の9行目を、末尾に入れると良い

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

public class chap3_6_3 : MonoBehaviour {
    void Start() {
        string[] dirs = new string[4]; //要素数4の空の配列を生成
        dirs[0] = "東"; //配列dirsの要素[0]に文字列を代入
        dirs[1] = "西"; //配列dirsの要素[0]に文字列を代入
        Debug.Log(string.Join(" ", dirs)); //配列dirsの全要素を連結表示(空白区切り)
    }
    void Update() {

    }
}

ミニ演習:フィボナッチ数列 mini117

・フィボナッチ数列とは要素[n]の値が要素[n - 2]と要素[n - 1]の和になっているもので、
 各種の統計処理やシミュレーションに利用される
・要素数5のフィボナッチ数列を作成しよう。要素[0]と要素[1]の値は1とする
・配列の型はintで良い
・できた数列をカンマ区切りで連結表示しよう
・実行結果:1,1,2,3,5

作成例

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

public class mini117 : MonoBehaviour {
    void Start() {
        int[] fib = new int[5]; //要素数5のフィボナッチ数列を生成
        fib[0] = fib[1] = 1; //配列fibの要素[0]と要素[1]に1を代入
        fib[2] = fib[0] + fib[1]; //前2要素の和を代入
        fib[3] = fib[1] + fib[2]; //前2要素の和を代入
        fib[4] = fib[2] + fib[3]; //前2要素の和を代入
        Debug.Log(string.Join(",", fib)); //配列fibの全要素を連結表示(カンマ区切り)
    }
    void Update() {

    }
}

p.118 foreach文

・配列などの複数のデータを持つ構造に用いる専用の繰返し文で「拡張for文」ともいう
・配列の場合の書式: foreach (型 作業変数名 in 配列名) { 繰返し内容 }
・作業変数名は自由で、その型としては通常は配列の型を指定する
 ※ 作業変数の型は配列の型で決めることができるので、自動指定を意味する「var」にもできる
・繰返し内容では、配列から1要素ずつが作業変数にコピーされて渡される
・よって、繰返し内容では、要素の代わりに作業変数を用いる。添字は用いない
・繰返し内容では作業変数への代入はできない(エラーになる)

p.118 chap3_7_1

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

public class chap3_7_1 : MonoBehaviour {
    void Start() {
        string[] dirs = { "東", "西", "南", "北" };
        foreach (string d in dirs) { //配列dirsの全要素について作業変数dを用いて繰返す
            Debug.Log(d + "方向");
        }
    }
    void Update() {

    }
}

ミニ演習:フィボナッチ数列 mini117 続き

・出来上がった数列の要素値の合計をforeachで得て表示しよう

作成例

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

public class mini117 : MonoBehaviour {
    void Start() {
        int[] fib = new int[5]; //要素数5のフィボナッチ数列を生成
        fib[0] = fib[1] = 1; //配列fibの要素[0]と要素[1]に1を代入
        fib[2] = fib[0] + fib[1]; //前2要素の和を代入
        fib[3] = fib[1] + fib[2]; //前2要素の和を代入
        fib[4] = fib[2] + fib[3]; //前2要素の和を代入
        Debug.Log(string.Join(",", fib)); //配列fibの全要素を連結表示(カンマ区切り)
        int sum = 0; //【以下追加】合計用
        foreach(var work in fib) { //数列の全要素について作業変数を用いて繰返す
            sum += work; //合計に足し込む
        }
        Debug.Log("計=" + sum); //合計を表示
    }
    void Update() {

    }
}

今週の話題

販売本数ランキング 今回トップは「スーパーマリオブラザーズ ワンダー(Switch)」GO!
『フォートナイト』でプログラミングやデジタル技術を習得―茨城県で「FORTNITE UEFN クリエイティブ講座」開催 GO!
第24回「GDC Awards」ノミネート作品発表!『バルダーズ・ゲート3』と『ゼルダの伝説 ティアキン』が最多7部門で選出 GO!
ユービーアイソフト、サブスクは「今後大きな成長が見込める」と自信―PC向けサブスクプランをリブランディング GO!
「理想を追い求めたゲームが存在する余地が無くなる」…『バルダーズ・ゲート3』開発者がゲームのサブスクリプションに否定的な見解示す GO!
吉田直樹氏が『FF17』に対する胸の内を語る―「同じおじさんがやっていくよりは、若い世代にチャレンジしてほしい」GO!
『プロセカ』クリエイターがLive2D制作フローや演出のノウハウを惜しみなく紹介―Colorful Palette講演レポート【alive 2023】GO!

『LOST ARK』サービス終了告知―満足できるサービスの提供が困難であると判断 GO!
『GTA5』マイケル役俳優が自身の声を無許可使用したAIチャットボットに猛反発 GO!

前回のコメント

・2重ループまで来たのでよりプログラムらしくなってきて工夫のし甲斐が出てきて楽しくなってきました。

 何よりです。

・前回から時間が空いたので忘れている部分が多かったなと感じました
 頑張って取り戻していきたいと思います

 応援します。

・次回もよろしくお願いします。
・次回もよろしくお願いします。

 こちらこそ宜しくお願い致します。

講義メモ 後半

アレンジ演習:chap3_5_2b

・2×3と3×2は同じなので、九九表の右上半分は省略しよう
【出力結果】
1 
2 4 
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81
ヒント:
・内側の繰返しの中で、xがy以上の時のみ連結すれば良い

作成例①:if文を用いる

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

public class chap3_5_2b : MonoBehaviour {
    void Start() {
        for (int x = 1; x < 10; x++) { //1の段から9の段まで繰り返す
            string s = ""; //連結用の文字列を用意
            for (int y = 1; y < 10; y++) { //×1から×9まで繰り返す
                if (x >= y) {
                    s = s + x * y + " "; //文字列に積と空白を連結
                }
            } //内側のforブロック(繰返し内容)の終わり
            Debug.Log(s); //出来上がった文字列を表示
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

作成例②:内側のforの継続条件を書き換える

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

public class chap3_5_2b : MonoBehaviour {
    void Start() {
        for (int x = 1; x < 10; x++) { //1の段から9の段まで繰り返す
            string s = ""; //連結用の文字列を用意
            for (int y = 1; y <= x; y++) { //1倍からx倍まで繰り返す
                s = s + x * y + " "; //文字列に積と空白を連結
            } //内側のforブロック(繰返し内容)の終わり
            Debug.Log(s); //出来上がった文字列を表示
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

補足:2重ループとbreakについて

・2重ループの内側の繰返しの中でbreakすると、内側の繰返しからの脱出になり、外側の繰返しは続行されるので注意

アレンジ演習:chap3_5_2c

・内側の繰返しで積が50以上になったら脱出し、次の段に進むようにしよう
【出力結果】
1 
2 4 
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 
9 18 27 36 45 

作成例

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

public class chap3_5_2c : MonoBehaviour {
    void Start() {
        for (int x = 1; x < 10; x++) { //1の段から9の段まで繰り返す
            string s = ""; //連結用の文字列を用意
            for (int y = 1; y <= x; y++) { //1倍からx倍まで繰り返す
                if (x * y >= 50) { //積が50以上なら
                    break; //内側の繰返しを抜ける
                }
                s = s + x * y + " "; //文字列に積と空白を連結
            } //内側のforブロック(繰返し内容)の終わり
            Debug.Log(s); //出来上がった文字列を表示
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

補足:2重ループとbreakについて(続き)

・2重ループの内側の繰返しの中でbreakすると、内側の繰返しからの脱出になり、外側の繰返しは続行されるので注意
・外側の繰返しも脱出したい場合は、外側用のbreakを記述する

アレンジ演習:chap3_5_2d

・内側の繰返しで積が50以上になったら脱出し、その段を出力して終わる(次の段に進まない)ようにしよう
【出力結果】
1 
2 4 
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 

作成例

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

public class chap3_5_2d : MonoBehaviour {
    void Start() {
        for (int x = 1; x < 10; x++) { //1の段から9の段まで繰り返す
            bool endf = false; //【追加】終了フラグをオフにしておく
            string s = ""; //連結用の文字列を用意
            for (int y = 1; y <= x; y++) { //1倍からx倍まで繰り返す
                if (x * y >= 50) { //積が50以上なら
                    endf = true; //【追加】終了フラグをオンにする
                    break; //内側の繰返しを抜ける
                }
                s = s + x * y + " "; //文字列に積と空白を連結
            } //内側のforブロック(繰返し内容)の終わり
            Debug.Log(s); //出来上がった文字列を表示
            if (endf) { //【以下追加】終了フラグがオン?
                break; //外側の繰返しも抜ける
            }
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

補足:2重ループによる図形処理

・棒グラフ風の表現を2重ループで行うことができる
例:
1:■
2:■■
3:■■■
4:■■■■
5:■■■■■

アレンジ演習:chap3_5_2e

・int型のパブリック変数aで開始値、bで終了値を得て、aからbまでカウントダウンする棒グラフを表示しよう
例:aが7でbが4なら
7:■■■■■■■
6:■■■■■■
5:■■■■■
4:■■■■
ヒント
① 外側でカウンタiをaからbまでデクリメントしながら②から⑤を繰返す
② 連結用の文字列sをiと":"を連結した文字列で初期化
③ 内側でカウンタjを0からi未満までインクリメントしながら④を繰返す
④ 文字列sに"■"を連結
⑤ 内側の繰返しの後で、文字列sを出力

作成例

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

public class chap3_5_2e : MonoBehaviour {
    public int a, b;
    void Start() {
        for (int i = a; i >= b; i--) { //カウンタiをaからbまでデクリメントしながら繰返す
            string s = i + ":"; //連結用の文字列を用意
            for (int j = 0; j < i; j++) { //i回繰り返す
                s += "■"; //文字列に■を連結
            } //内側のforブロック(繰返し内容)の終わり
            Debug.Log(s); //出来上がった文字列を表示
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

アレンジ演習:chap3_5_2f

・乱数で1から9を5回得て、5本の横棒グラフを表示しよう
例:
7:■■■■■■■
2:■■
6:■■■■■■
5:■■■■■
4:■■■■
ヒント:1から9の乱数を得るには
  System.Random r = new System.Random(); //乱数クラスのオブジェクトを生成(1度でOK)
 :
  int n = r.Next(9) + 1; //1から9までのどれかになる

提出:アレンジ演習:chap3_5_2f

講義メモ

p.109「繰返しからの脱出とスキップ」から

提出フォロー:ミニ演習:mini108cの改良

・条件演算子を用いてシンプルにしよう
・スタートの値は「(x % 2 == 1) ? x : x - 1」となる

using UnityEngine;
public class mini108c : MonoBehaviour {
    public int x; //パブリック変数
    void Start() {
        int s; //スタートの値
        if (x % 2 == 1) { //入力値が奇数?
            s = x; //その値からスタート
        } else { //偶数?
            s = x - 1; //その値-1の奇数からスタート
        }
        for (int i = s; i >= 1; i -= 2) { //x以下の全奇数について降順で繰返す
            Debug.Log("i = " + i);
        }
    }
    void Update() {
    }
}

作成例

using UnityEngine;
public class mini108c : MonoBehaviour {
    public int x; //パブリック変数
    void Start() {
        int s = (x % 2 == 1) ? x : x - 1; //開始値を決める(偶数なら-1した値にする)
        for (int i = s; i >= 1; i -= 2) { //x以下の全奇数について降順で繰返す
            Debug.Log("i = " + i);
        }
    }
    void Update() {
    }
}

p.109 繰返しからの脱出とスキップ

・while/do-while/forのブロックの中で継続条件とは無関係に繰返しを脱出したい場合は「break;」を実行すれば良い
・実際には、while/do-while/forのブロックの終わりの「}」の次の行にジャンプする
・よって、次の行がなければ終了する
・なお、break;の実行により「絶対に実行されない行」ができてしまうとエラーまたは警告が出る

ミニ演習:mini109

・int型のパブリック変数aで開始値、bで終了値を得て、aからbまでカウントダウンする
・ただし、カウントが1桁になったら表示せずに終了しよう
・よって、aが12でbが 8なら、12,11,10を表示
・よって、aが14でbが11なら、14,13,12,11を表示
・よって、aが9でbが1なら、なにも表示しない

作成例

using UnityEngine;
public class mini109 : MonoBehaviour {
    public int a, b; //パブリック変数
    void Start() {
        for (int i = a; i >= b; i--) { //aからbまでカウントダウン
            if (i < 10) { //1桁になったら
                break; //繰返しを抜ける
            }
            Debug.Log("i = " + i);
        }
    }
    void Update() {
    }
}

補足:

・この例はforの継続条件を工夫することで、ifとbreakを無しにすることも可能だが、プログラムが読みづらくなるので、ケースバイケースで。

using UnityEngine;
public class mini109 : MonoBehaviour {
    public int a, b; //パブリック変数
    void Start() {
        for (int i = a; i >= 10 && i >= b; i--) { //aからbまで(かつ10まで)カウントダウン
            Debug.Log("i = " + i);
        }
    }
    void Update() {
    }
}

p.109 繰返しからの脱出とスキップ(つづき)

・while/do-while/forのブロックの中で現在の繰返し内容の残りをスキップしたい場合は「continue;」を実行すれば良い
・「次いこう、次」のイメージで、繰返しは終了しない
・例:1から100までのうち、3の倍数以外を表示 ⇒ 3の倍数の時はcontinueする
※ 条件が単純な場合は、ifで代用できるので、複雑な場合に用いると良い

ミニ演習:mini109a

・int型のパブリック変数aで開始値、bで終了値を得て、aからbまでカウントダウンする
・ただし、3の倍数なら表示せずに次に進もう
・よって、aが12でbが 8なら、11,10,8を表示
・よって、aが14でbが11なら、14,13,11を表示
・よって、aが12でbが11なら、11のみを表示

作成例

using UnityEngine;
public class mini109a : MonoBehaviour {
    public int a, b; //パブリック変数
    void Start() {
        for (int i = a; i >= b; i--) { //aからbまでカウントダウン
            if (i % 3 == 0) { //3の倍数ならば
                continue; //スキップして次へ
            }
            Debug.Log("i = " + i);
        }
    }
    void Update() {
    }
}

補足:breakとcontinue

・どちらも、アルゴリズムを工夫することで、用いずに表現できることが多い
・しかし、用いることで、ネストを減らす効果もあるので、可読性で判断すると良い

p.110 2重ループ

・繰返し文の中に繰返し文を書くことで、2重ループが可能になる
・内側の繰返しを、外側の繰返し回数だけ繰返すので、動きに注意
・for文の2重ループはマップ処理などに便利。例:縦3回分横4回分繰返す
・for文の2重ループの場合、カウンタに用いる変数の使い分けが必要で、外側からi、jとすることが多い
・例:
 for (int i = 1; i <= 3; i++) { //縦3回分繰返す
  for (int j = 1; j <= 4; j++) { //横4回分繰返す
   繰返し内容
  }
 } 
 これは①①、①②、①③、①④、②①、②②、②③、②④、③①、③②、③③、③④の順になる

p.110 chap3_5_1

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

public class chap3_5_1 : MonoBehaviour {
    void Start() {
        for (int x = 1; x < 10; x++) { //xを1から9までの9回繰り返す
            for (int y = 1; y < 10; y++) { //yを1から9までの9回繰り返す
                Debug.Log(x * y);  //カウンタの積を表示
            } //内側のforブロック(繰返し内容)の終わり
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

p.113 chap3_5_2に関して

・forによる2重ループの場合、内側の繰返しでは、2つのカウンタの両方を利用できる

p.113 chap3_5_2

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

public class chap3_5_2 : MonoBehaviour {
    void Start() {
        for (int x = 1; x < 10; x++) { //xを1から9までの9回繰り返す
            for (int y = 1; y < 10; y++) { //yを1から9までの9回繰り返す
                Debug.Log(x + "×" + y + "=" + x * y); //式と積を表示
            } //内側のforブロック(繰返し内容)の終わり
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

アレンジ演習:chap3_5_2a

・式と積を表示する代わりに、その段の積を並べて1度に表示しよう
【出力結果】
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
:(略)
9 18 27 36 45 54 63 72 81
ヒント:
・内側の繰返しの前に、string型変数sを""(空)で初期化する
・内側の繰返しの中で、xとyの積と" "(空白)をsに連結する(※ここでは出力しない)
・内側の繰返しの後で、sを出力する

作成例

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

public class chap3_5_2a : MonoBehaviour {
    void Start() {
        for (int x = 1; x < 10; x++) { //1の段から9の段まで繰り返す
            string s = ""; //連結用の文字列を用意
            for (int y = 1; y < 10; y++) { //×1から×9まで繰り返す
                s = s + x * y + " "; //文字列に積と空白を連結
            } //内側のforブロック(繰返し内容)の終わり
            Debug.Log(s); //出来上がった文字列を表示
        } //外側のforブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

今週の話題

販売本数ランキング 今回トップは「桃太郎電鉄ワールド ~地球は希望でまわってる!~(Switch)」GO!
『アスタタ』不発のgumi、SBIが株を追加取得しても距離を取るのはなぜか?【ゲーム企業の決算を読む】GO!
「龍が如くスタジオ」のコアメンバーとなる人材を広く募集―セガ、中途採用オンラインカジュアル面談会を1月25日・26日・27日に開催 GO!
任天堂が時価総額10兆円を超える…DS・Wiiが絶好調だった2007年以来の高値、スイッチ新型に期待高まる GO!
カヤック、2023年世界市場アプリDL数で日本企業1位獲得を報告―新規ハイカジタイトル13本リリース GO!
新作ゲームのUIが複雑すぎる!?『スーサイド・スクワッド』皮切りにユーザー間でスマートなUIと煩雑なUIの議論勃発 GO!
Live2Dデザイナー向けに充実の研修を用意! f4samuraiが明かす採用ポイントと研修カリキュラム【alive 2023セッションレポート】GO!

SteamがAI利用タイトル容認に舵を切る―違法なコンテンツなど問題には適切なチェックで対処狙う GO!
Twitchがスタッフの約35%を解雇予定、昨年のレイオフを合わせると900人程の削減に―海外メディア報道 GO!

前回のコメント

・読むとわかっても自分で組むのが大変に感じるところもあったので家でもためしたりしてみたいです。
・頭が固くプログラミングが書けない場面があったのでもっと柔軟に使っていきたいです

 是非、いろいろと試してみてください。

・ペースはちょうどよかったです

 了解です。リアクション感謝します。

・次回もよろしくお願いします
・次回もよろしくお願いします

 こちらこそ。そして、本年もよろしくお願いいたします。

講義メモ 後半

p.108 逆順で繰返す(カウントダウン)

・forの①で開始値、②で終了値を用いた比較式、③でデクリメントを行うことで、逆順で繰返す(カウントダウン)が可能
・例(5から1まで): for(int i = 5; i >= 1; i--) {繰返し内容}
・デクリメントは省略構文として「● = ● - 1」を「●--」と表記できる
・デクリメントの仕組みはインクリメントと同じで、前置と後置があることも同じ

p.108 chap3_4_1

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

public class chap3_4_1 : MonoBehaviour {
    void Start() {
        for (int cnt = 5; cnt > 0; cnt--) { //1から5までの5回繰り返す
            Debug.Log(cnt + "回目のハロー");  //カウンタの値に加算後連結して表示
        } //forブロック(繰返し内容)の終わり
    }
    void Update() {

    }
}

p.108 10ずつ増やす

・インクリメント、デクリメントの代わりに複合代入演算子(+=、-=)を用いることで、nずつ増やす(減らす)ことができる
・例: for(int i = 0; i < 50; i += 10) {…} //0, 10, 20, 30, 40で5回繰返す

ミニ演習:mini108a

・上の例「for(int i = 0; i < 50; i += 10) {…} //0, 10, 20, 30, 40で5回繰返す」を試してみよう

作成例

using UnityEngine;
public class mini108a : MonoBehaviour {
    void Start() {
        for (int i = 0; i < 50; i += 10) { //0, 10, 20, 30, 40で5回繰返す
            Debug.Log("i = " + i);
        }
            }
    void Update() {
    }
}

ミニ演習:mini108b

・パブリック変数で整数xを受け取り、2からその値以下の全偶数を表示しよう
・例: xが9なら2,4,6,8。xが10なら2,4,6,8,10
・なお、xが2なら2のみになり、xが1なら何も表示しなくて良い

作成例

using UnityEngine;
public class mini108c : MonoBehaviour {
    public int x; //パブリック変数
    void Start() {
        int s; //スタートの値
        if (x % 2 == 1) { //入力値が奇数?
            s = x; //その値からスタート
        } else { //偶数?
            s = x - 1; //その値-1の奇数からスタート
        }
        for (int i = s; i >= 1; i -= 2) { //x以下の全奇数について降順で繰返す
            Debug.Log("i = " + i);
        }
    }
    void Update() {
    }
}

提出:ミニ演習:mini108cの改良

・条件演算子を用いてシンプルにしよう
・スタートの値は「(x % 2 == 1) ? x : x - 1」となる