・p.110「繰り返し文を2つ組み合わせる」から
提出フォロー:ミニ演習 mini109c.cs:breakとcontinueの併用
・string型のパブリック変数flgを定義して"y"で初期化しておく ・1から10まで下記を繰返す ① 3の倍数ならば ・flgが"y"であれば、スキップ(continue)する ・flgが"y"以外であれば、繰り返しを脱出(break)する ② カウンタの値を表示 ・表示した値の合計を表示
作成例
using UnityEngine;
public class mini109c : MonoBehaviour{
public string flg = "y"; //処理選択フラグ
void Start() {
int sum = 0; //合計
for(int i = 1; i <= 10; i++) { //1から10まで繰返す
if (i % 3 == 0) { //3の倍数?
if (flg == "y") { //フラグがyなら
continue; //スキップして次へ
} else {
break; //繰り返しを脱出
}
}
Debug.Log("i = " + i);
sum += i; //合計に足しこむ
}
Debug.Log("合計 = " + sum);
}
}
p.110 繰り返し文を2つ組み合わせる(2重ループ)
・繰り返し文の中に同じまたは異なる種類の繰り返し文をいくつでも記述できる
・これを2重ループ(多重ループ)という
・同種の繰り返しとして利用場面が多いのがforの2重ループ
・例:1~3年の1~4組について生徒数を表示
・例:チェスの縦8マス×横8マスに駒を配置する
・forの2重ループの場合:
①外側の繰り返し用のカウンタ変数(主にiを使うことが多い)と、内側の繰り返し用のカウンタ変数(主にjを使うことが多い)は
異なる変数にする
②内側の繰り返しでは外側の繰り返し用のカウンタ変数を利用できる
③外側の1回目で内側の全回を行い、外側の2回目に進むイメージになる
例:
for (int i = 1; i <= 3; i++) { //1~3年について繰返す①⑭
for (int j = 1; j <= 4; j++) { //その1~4組について繰返す②⑤⑧⑪⑮…
Debug.Log(i + "年" + j + "組");③⑥⑨⑫
}④⑦⑩⑬
}⑬
実行すると 1年1組、1年2組、1年3組、1年4組、2年1組、2年2組、…
アレンジ演習:p.110 chap3_5_1.cs
・外側の繰り返しの上限の10をパブリック変数xa(初期値10)で渡すようにしよう ・内側の繰り返しの上限の10をパブリック変数ya(初期値10)で渡すようにしよう
作成例
using UnityEngine;
public class chap3_5_1 : MonoBehaviour {@
public int xa = 10; //パブリック変数
public int ya = 10; //パブリック変数
void Start() {
for (int x = 1; x < xa; x++) { //1の段から9の段まで繰返す
for (int y = 1; y < ya; y++) { //各段の×1から×9まで繰返す
Debug.Log(x * y);
}
}
}
}
アレンジ演習:p.113 chap3_5_2.cs
・何の段まで繰返すかをパブリック変数xa(初期値9)で渡すようにしよう ・各段の繰り返しを段の数以下までに制限しよう ・つまり、1×1、2×1、2×2、3×1、3×2、3×3、4×1、4×2、…、9×9 とすること
作成例①
using UnityEngine;
public class chap3_5_2 : MonoBehaviour {
public int xa = 9; //パブリック変数
void Start() {
for (int x = 1; x <= xa; x++) { //1の段から9の段まで繰返す
for (int y = 1; y <= 9; y++) { //各段の×1から×9まで繰返す
if(y <= x) { //各段の繰り返しを段の数以下までに
Debug.Log(x + "×" + y + "=" + x * y);
}
}
}
}
}
作成例②
using UnityEngine;
public class chap3_5_2 : MonoBehaviour {
public int xa = 9; //パブリック変数
void Start() {
for (int x = 1; x <= xa; x++) { //1の段から9の段まで繰返す
for (int y = 1; y <= x; y++) { //各段の×1から×段数まで繰返す
Debug.Log(x + "×" + y + "=" + x * y);
}
}
}
}
アレンジ演習:p.113 chap3_5_2.cs つづき
・1段分の九九はカンマつなぎにして1度で出力しよう ・実行結果 「1,」 「2,4,」 「3,6,9,」 … ・ヒント ①内側の繰り返しの直前で連結用の文字列型変数sを""で初期化しておく ②内側の繰り返しの中ではDebug.Logする代わりに、sに「x * y」と「,」を連結する ③内側の繰り返しの直後でsをDebug.Logする ※この後、①に戻るので、sは""で初期化される
作成例
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 = ""; //連結用の文字列変数を空で初期化
for (int y = 1; y <= x; y++) { //各段の×1から×段数まで繰返す
s = s + x * y + ","; //積とカンマを連結
}
Debug.Log(s); //連結結果を出力
}
}
}
補足:多重繰り返しとbreak
・breakは繰り返しからの脱出になるが、2重繰り返しの内側でbreakした場合、外側の繰り返しは続行されるので注意
例:
for (int i = 1; i <= 3; i++) { //1~3年について繰返す①⑪
for (int j = 1; j <= 4; j++) { //その1~4組について繰返す②⑤⑧⑫⑮
if (i == 1 && j == 3) { //1年の3組以降は表示しない③⑥⑨⑬⑯
break; //⑩
}
Debug.Log(i + "年" + j + "組");④⑦⑭⑰…
}
}
実行すると 1年1組、1年2組、2年1組、2年2組、2年3組、2年4組、3年1組、…となる
アレンジ演習: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,」 「9,18,27,36,45,」
作成例
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 = ""; //連結用の文字列変数を空で初期化
for (int y = 1; y <= x; y++) { //各段の×1から×段数まで繰返す
if (x * y >= 50) { //積が50以上なら
break; //この段の繰り返しを抜ける(次の段へ)
}
s = s + x * y + ","; //積とカンマを連結
}
Debug.Log(s); //連結結果を出力
}
}
}