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 続き