プログラミング講座
- 2. while文
「ある条件を満たす時に繰り返す」
整数nを0で初期化する
int n = 0;
以下の条件を満たす時繰り返す:「nが10以下である」
while (n <= 10)
{
コンソールに()内の内容を表示する:(n)
Debug.Log(n);
nを1増やす
n += 1;
}
n=0で初期化
n<=10か? → Yes → nの値( 0 )を表示,nに1足して1にする
n<=10か? → Yes → nの値( 1 )を表示,nに1足して2にする
n<=10か? → Yes → nの値( 2 )を表示,nに1足して3にする
n<=10か? → Yes → nの値( 3 )を表示,nに1足して4にする
n<=10か? → Yes → nの値( 4 )を表示,nに1足して5にする
n<=10か? → Yes → nの値( 5 )を表示,nに1足して6にする
n<=10か? → Yes → nの値( 6 )を表示,nに1足して7にする
n<=10か? → Yes → nの値( 7 )を表示,nに1足して8にする
n<=10か? → Yes → nの値( 8 )を表示,nに1足して9にする
n<=10か? → Yes → nの値( 9 )を表示,nに1足して10にする
n<=10か? → Yes → nの値(10)を表示,nに1足して11にする
n<=10か? → nは11なので,No! → 繰り返しを終了
while (繰り返し条件)
{
処理内容
}
2
- 3. while文 と for文 の 変換
for文 = while文をまとめて書く方法!
整数nを0で初期化する
int n = 0;
以下の条件を満たす時繰り返す:「nが10以下である」
while (n <= 10)
{
コンソールに()内の内容を表示する:(n)
Debug.Log(n);
nを1増やす
n += 1;
}
整数nを0で初期化 nが10以下の時繰り返す 処理の最後は毎回nを1増やす
for(int n = 0; n <= 10; n += 1)
{
Debug.Log(n);
}
for文に
書き換え
for(値の初期化; 繰り返し条件; 処理の後に毎回行うこと)
{
処理内容
}
3
- 4. for文 の 処理の順番
for(①int n = 0; ②n <= 10; ④n += 1)
{
③Debug.Log(n);
}
①(初期化) → ②(条件確認) →満たす→ ③(処理) → ④(値の更新) → ② →満たす→ ③ → ④ → ……
└→満たさない→(終) └→満たさない→(終)
元々のwhile文を思い出そう
(終)
4
- 5. List
List = 同じ型の値を並べたもの
整数のリストの変数 values を宣言 空の int型のリスト で初期化
List<int> values = new List<int>();
整数のリストの変数 values を宣言 {2, -3, 7, 12} で初期化
List<int> values = new List<int> {2, -3, 7, 12};
実数のリストの変数 values を宣言 {2.4, -3.3, 7.2, 12.9} で初期化
List<float> values = new List<float> {2.4f, -3.3f, 7.2f, 12.9f};
List<要素の型> 変数名 = new List<要素の型> {1つ目の要素,2つ目の要素,…};
5
- 6. List の インデックス
変数名[番号] とすれば,「リストの○番目」が見れる(番号のことをインデックスと呼ぶ).
Q. これはどうなる?
A. こうなる
整数のリストの変数 values を宣言 {2, -3, 7, 12} で初期化
List<int> values = new List<int> {2, -3, 7, 12};
コンソールに()内の内容を表示する:(valuesの1番目)
Debug.Log(values[1]);
Console
-3!
実は,最初の要素は「0番目」
つまり,values[1]は-3 で,values[0]が2
変数名[番号]
6
- 7. List と for文
整数のリストの変数 values を宣言 {2, -3, 7, 12} で初期化
List<int> values = new List<int> {2, -3, 7, 12};
コンソールに()内の内容を表示する:(valuesの0番目)
Debug.Log(values[0]);
コンソールに()内の内容を表示する:(valuesの1番目)
Debug.Log(values[1]);
コンソールに()内の内容を表示する:(valuesの2番目)
Debug.Log(values[2]);
コンソールに()内の内容を表示する:(valuesの3番目)
Debug.Log(values[3]);
整数のリストの変数 values を宣言 {2, -3, 7, 12} で初期化
List<int> values = new List<int> {2, -3, 7, 12};
整数iを0で初期化 nが3以下の時繰り返す 処理の最後は毎回iを1増やす
for(int i = 0; i <= 3; i += 1)
{
コンソールに()内の内容を表示する:(valuesのi番目)
Debug.Log(values[i]);
}
同
じ
意
味
Console
2
-3
7
12
!
!
!
!
7
- 8. List の 要素数
整数のリストの変数 values を宣言 {2, -4, 7, 12} で初期化
List<int> values = new List<int> {2, -3, 7, 12};
コンソールに()内の内容を表示する:(valuesの要素数)
Debug.Log(values.Count);
Console
4!
変数名.Count とすれば,リストの要素数がわかる.
整数のリストの変数 values を宣言 {2, -4, 7, 12} で初期化
List<int> values = new List<int> {2, -3, 7, 12};
整数iを0で初期化 nがvaluesの要素数=4未満の時繰り返す 処理の最後は毎回iを1増やす
for(int i = 0; i < values.Count; i += 1)
{
コンソールに()内の内容を表示する:(valuesのi番目)
Debug.Log(values[i]);
}
つまりさっきのfor文はこう書ける Console
2
-3
7
12
!
!
!
!
変数名.Count
8
- 9. List と foreach文
整数のリストの変数 values を宣言 {2, -4, 7, 12} で初期化
List<int> values = new List<int> {2, -4, 7, 12};
valuesの各要素を変数valueとして,{}の内側で利用
foreach(int value in values)
{
コンソールに()内の内容を表示する:(value)
Debug.Log(value);
}
Console
2
-4
7
12
!
!
!
!
整数のリストの変数 values を宣言 {2, -4, 7, 12} で初期化
List<int> values = new List<int> {2, -4, 7, 12};
整数iを0で初期化 nがvaluesの要素数=4未満の時繰り返す 処理の最後は毎回iを1増やす
for(int i = 0; i < values.Count; i += 1)
{
コンソールに()内の内容を表示する:(valuesのi番目)
Debug.Log(values[i]);
}
foreach(リストの各要素の型 各要素を表す変数名 in リストの変数名) {処理内容}
foreach文:リストの各要素に対して処理を行ってくれる(楽)
9
- 10. while文・for文 の色々
10
Q. この違いは何?
for(int n = 0; n <= 5; n += 1)
{
Debug.Log(n);
}
for(int n = 0; n < 6; n += 1)
{
Debug.Log(n);
}
A. 処理は変わりませんが,分かりやすさが変わってきます
左:0から5までの整数を表示するんやな(最後の値に注目)
右:6回{}の中の処理を行うんやな(回数に注目)
- 11. while文・for文 の色々
11
int n = 0;
while (n <= 5)
{
Debug.Log(n);
}
Unityの死
Ctrl+Shift+Escの同時押し
タスクマネージャーから
右クリックで強制終了しよう
例① 無限ループ1 (nを更新し忘れる)
for(int n = 0; n <= 5;)
{
Debug.Log(n);
}
- 12. while文・for文 の色々
12
int n = 0;
while (true)
{
Debug.Log(n);
n += 1;
}
Unityの死
Ctrl+Shift+Escの同時押し
タスクマネージャーから
右クリックで強制終了しよう
例② 無限ループ2 (わざと条件をtrueにする)
for(int n = 0; true; n += 1)
{
Debug.Log(n);
}
- 13. while文・for文 の色々
13
int n = 3;
while (n <= 5)
{
Debug.Log(n);
n += 1;
}
例④ 初期化の式を変える
for(int n = 3; n <= 5; n += 1)
{
Debug.Log(n);
}
Console
3
4
5
!
!
!
- 14. while文・for文 の色々
14
int n = 0;
while (n <= -2)
{
Debug.Log(n);
n += 1;
}
例⑤ 条件の式を変える
for(int n = 0; n <= -2; n += 1)
{
Debug.Log(n);
}
Console
最初から条件が満たされなければ
何も実行されません
- 15. while文・for文 の色々
15
int n = 0;
while (n <= 5)
{
Debug.Log(n);
n += 2;
}
例⑥ 値の更新の式を変える
for(int n = 0; n <= 5; n += 2)
{
Debug.Log(n);
}
Console
0
2
4
!
!
!
4の後はnは6になりますが,
n<=5が満たされないので
6は表示されません
- 16. while文・for文 の色々
16
int n = 5;
while (n >= 0)
{
Debug.Log(n);
n -= 1;
}
例⑦ 逆向きに変化させる
for(int n = 5; n >= 0; n -= 1)
{
Debug.Log(n);
}
Console
5
4
3
2
1
0
!
!
!
!
!
!
- 17. while文・for文 の色々
17
int n = 0;
while (true)
{
Debug.Log(n);
if (n == 5) {break;}
n += 1;
}
例⑧ break (処理を無理やり抜ける)
for(int n = 0; true; n += 1)
{
Debug.Log(n);
if (n == 5) {break;}
}
Console
0
1
2
3
4
5
!
!
!
!
!
!
この書き方はあまりしない
この書き方(while(true))
は結構よく見る