講義メモ 後半

p.119 for文を使ってインデックスを指定する

・foreachでは表現できない処理を行いたい場合や、繰返しの中で配列の要素値を変更したい場合などは、for文を用いると良い
・for文のカウンタ用の変数を添字として用いると、可読性が高くなる
・利用書式例: for(int i = 0; i < 要素数; i++) { 配列[i]の処理 }
・よって、foreachで表現できる処理はすべて上記の書式に置き換えることが可能
・また、繰返しの中で添字を用いたい場合も、for文で記述すると良い

p.119 chap3_7_2

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

public class chap3_7_2 : MonoBehaviour {
    void Start() {
        string[] dirs = { "東", "西", "南", "北" };
        for (int cnt = 0; cnt < 4; cnt++) { //要素数の分、変数cntを用いて繰返す
            Debug.Log(dirs[cnt] + "方向");
        }
    }
    void Update() {

    }
}

アレンジ演習:chap3_7_2

・添え字を付けて「0=東方向」「1=西方向」「2=南方向」「3=北方向」と表示しよう
・これはforeachでは難しいが、forでは簡単

作成例

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

public class chap3_7_2 : MonoBehaviour {
    void Start() {
        string[] dirs = { "東", "西", "南", "北" };
        for (int cnt = 0; cnt < 4; cnt++) { //要素数の分、変数cntを用いて繰返す
            Debug.Log(cnt + "=" + dirs[cnt] + "方向"); //【変更】
        }
    }
    void Update() {

    }
}

補足:配列の要素数

・配列の要素数は、配列名.Lengthで得られる。よって、for文で扱うときには
 for(int i = 0; i < 配列名.Length; i++) { 配列[i]の処理 }
 としておけば、配列の要素数が変わっても、書き換える必要がなくなるので便利
※ 配列の要素数は、必ず配列名.Lengthで得ることというルールにしている場合もある

アレンジ演習:chap3_7_2

・配列の要素数を配列名.Lengthで得るようにしよう
・すると、配列の末尾に要素"中央"を加えても、処理の変更は不要になることを確認しよう

作成例

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

public class chap3_7_2 : MonoBehaviour {
    void Start() {
        string[] dirs = { "東", "西", "南", "北", "中央" };
        for (int cnt = 0; cnt < dirs.Length; cnt++) { //要素数の分、変数cntを用いて繰返す
            Debug.Log(cnt + "=" + dirs[cnt] + "方向");
        }
    }
    void Update() {

    }
}

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

・数列の要素数を10にして、要素[2]以降の値のセットをfor文による繰返しで行うようにしよう
・ヒント: for(int i = 2; i < fib.Length; i++) { fib[i] = fib[i - 2] + fib[i - 1]; } 
・実行結果: 1,1,2,3,5,8,13,21,34,55
・合計は、そのままforeachで得ると良い

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

コメントを残す

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