アレンジ演習: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