補足:多重繰り返しと外側のbreak
・2重繰り返しの内側でbreakした場合、外側の繰り返しは続行されるので、必要であれば外側でもbreakを行う ・しかし、内側のカウンタ変数は、外側の繰り返しでは利用できない ・よって、この場合、下記2通りの方法がある ① 積を変数に保持しておいて外側の繰り返しでもチェックする ② フラグとなる変数を外側の繰り返しでfalseにして用いる
アレンジ演習:p.113 chap3_5_2.cs つづき
・積が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,」※56になるので出力して終了
作成例
using UnityEngine;
public class chap3_5_2 : MonoBehaviour {
public int xa = 9; //パブリック変数
void Start() {
for (int x = 1; x <= xa; x++) { //1の段から9の段まで繰返す
string s = ""; //連結用の文字列変数を空で初期化
int mul = 0; //積
for (int y = 1; y <= x; y++) { //各段の×1から×段数まで繰返す
mul = x * y; //積を得る
if (mul >= 50) { //積が50以上なら
break; //この段の繰り返しを抜ける(次の段へ)
}
s = s + x * y + ","; //積とカンマを連結
}
Debug.Log(s); //連結結果を出力
if (mul >= 50) { //積が50以上になっていたら
break; //段の繰り返しを抜ける(終わる)
}
}
}
}
アレンジ演習:p.113 chap3_5_2.cs つづき
・積が50以上になったら、その時点までの内容を出力して終わるようにしよう ・上記の②「フラグとなる変数を外側の繰り返しでfalseにして用いる」で組んでみよう
作成例
using UnityEngine;
public class chap3_5_2 : MonoBehaviour {
public int xa = 9; //パブリック変数
void Start() {
bool flg = false; //フラグを未完にしておく
for (int x = 1; x <= xa; x++) { //1の段から9の段まで繰返す
string s = ""; //連結用の文字列変数を空で初期化
for (int y = 1; y <= x; y++) { //各段の×1から×段数まで繰返す
if (x * y >= 50) { //積が50以上なら
flg = true; //フラグを完了にする
break; //この段の繰り返しを抜ける(次の段へ)
}
s = s + x * y + ","; //積とカンマを連結
}
Debug.Log(s); //連結結果を出力
if (flg) { //フラグが完了?
break; //段の繰り返しを抜ける(終わる)
}
}
}
}
p.114 配列の書き方
・配列:同じ型の同じ意味の変数群をまとめて扱う仕組み(データ構造)
・まとめたものに名前(配列名)を付け、0から数えて何番目かを示す添字(インデクス)を付けて表す
・例: スラリン、ホイミン、リムルを、スライムという配列の[0]番[1]番[2]番とする
・配列に属するデータのことを要素という
・変数と同様に、配列は宣言が必要
・配列の宣言の書式: 型[] 配列名;
例: string[] slimes;
・変数とは異なり、初期化において、要素の値を列記できる
・配列の初期化の書式: 型[] 配列名 = {要素値, 要素値, …};
例: string[] slimes = {"スラリン","ホイミン","リムル"};
・これにより、slimes[0]には"スラリン"、slimes[1]には"ホイミン"、slimes[2]には"リムル"が格納される
・配列の各要素は配列名[添字]で変数と同様に利用できる
補足:配列の添字と要素数
・なお、3要素の配列の最後の要素は[2]であり、[3]をアクセスすると異常終了する ・また、添字には0以上の整数のみ可能で、負の数や実数を与えると異常終了する
補足:配列の宣言と生成
・テキストでは配列は全て初期化(要素の数だけの値を格納)して用いている ・実際の仕様では、配列の要素を要素数を指定して確保(生成)しておき、後で要素値を代入することも多い ・配列の宣言の書式: 型[] 配列名; ・配列の生成の書式: 配列名 = new 型[要素数]; //要素数の分の領域を確保(生成)する ・宣言と生成は同時に行ってよい: 型[] 配列名 = new 型[要素数]; 例: string[] slimes = new string[3]; //要素数3の文字列型配列slimesの生成
アレンジ演習:chap3_6_1
・配列の添字はint型の変数でも可能なことを確認しよう ・そして、これをパブリック変数にすることで、0から3まで変更して違う方角が表示されることを確認しよう
作成例
using UnityEngine;
public class chap3_6_1 : MonoBehaviour{
public int n = 0; //【追加】パブリック変数(添字用)
void Start() {
string[] dirs = {"東","西","南","北"};
Debug.Log(dirs[n]); //パブリック変数を添字として当てはまる要素を表示
}
}
配列の要素を書き換える
・配列の要素は変数と同じ扱いなので、代入の左辺に置くことで、値を代入して書き換えることが可能 ・書式例: 配列名[添字] = 式や値;
string.Join()メソッド
・string型の配列の全要素を連結した文字列を得たい場合に便利なメソッドとして提供されている
・利用書式: 文字列型変数 = string.Join(区切り文字, string型配列名);
・なお、直接表示したり、利用することも可能
・例: Debug.Log(string.Join(",", slimes)); //"スラリン,ホイミン,リムル"を出力
アレンジ演習:chap3_6_2
・書き換えたい要素の添字と、書き換える文字列をパブリック変数で与えるようにしよう ・ついでに、string.Joinの区切り文字もパブリック変数で与えるようにしよう
提出:アレンジ演習:chap3_6_2