SlideShare a Scribd company logo
1 of 17
Download to read offline
プログラミング講座③
補足資料
1
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
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
for文 の 処理の順番
for(①int n = 0; ②n <= 10; ④n += 1)
{
③Debug.Log(n);
}
①(初期化) → ②(条件確認) →満たす→ ③(処理) → ④(値の更新) → ② →満たす→ ③ → ④ → ……
└→満たさない→(終) └→満たさない→(終)
元々のwhile文を思い出そう
(終)
4
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
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
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
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
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
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回{}の中の処理を行うんやな(回数に注目)
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);
}
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);
}
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
!
!
!
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
最初から条件が満たされなければ
何も実行されません
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は表示されません
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
!
!
!
!
!
!
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))
は結構よく見る

More Related Content

What's hot

repマクロ
repマクロrepマクロ
repマクロAPG4b
 
プログラムの実行順序
プログラムの実行順序プログラムの実行順序
プログラムの実行順序APG4b
 
while文
while文while文
while文APG4b
 
配列とループ
配列とループ配列とループ
配列とループTENTO_slide
 
apg4b 4.05 ポインタ
apg4b 4.05 ポインタapg4b 4.05 ポインタ
apg4b 4.05 ポインタAPG4b
 
my_min関数の動作説明
my_min関数の動作説明my_min関数の動作説明
my_min関数の動作説明APG4b
 
Apg4b 2.05.再帰 sum関数の動作説明
Apg4b 2.05.再帰 sum関数の動作説明Apg4b 2.05.再帰 sum関数の動作説明
Apg4b 2.05.再帰 sum関数の動作説明APG4b
 
Goをカンストさせる話
Goをカンストさせる話Goをカンストさせる話
Goをカンストさせる話Moriyoshi Koizumi
 
Adding simpl GVN path into GHC
Adding simpl GVN path into GHCAdding simpl GVN path into GHC
Adding simpl GVN path into GHCKei Hibino
 
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Yuichi Sakuraba
 
おいしいLisp
おいしいLispおいしいLisp
おいしいLispKent Ohashi
 
F#とC#で見る関数志向プログラミング
F#とC#で見る関数志向プログラミングF#とC#で見る関数志向プログラミング
F#とC#で見る関数志向プログラミングsatoshimurakumo
 
for文
for文for文
for文APG4b
 
入力
入力入力
入力APG4b
 
エクストリームエンジニア4
エクストリームエンジニア4エクストリームエンジニア4
エクストリームエンジニア4T-arts
 
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)t-sin
 

What's hot (18)

repマクロ
repマクロrepマクロ
repマクロ
 
プログラムの実行順序
プログラムの実行順序プログラムの実行順序
プログラムの実行順序
 
while文
while文while文
while文
 
配列とループ
配列とループ配列とループ
配列とループ
 
apg4b 4.05 ポインタ
apg4b 4.05 ポインタapg4b 4.05 ポインタ
apg4b 4.05 ポインタ
 
my_min関数の動作説明
my_min関数の動作説明my_min関数の動作説明
my_min関数の動作説明
 
Apg4b 2.05.再帰 sum関数の動作説明
Apg4b 2.05.再帰 sum関数の動作説明Apg4b 2.05.再帰 sum関数の動作説明
Apg4b 2.05.再帰 sum関数の動作説明
 
Goをカンストさせる話
Goをカンストさせる話Goをカンストさせる話
Goをカンストさせる話
 
Functional Way
Functional WayFunctional Way
Functional Way
 
Adding simpl GVN path into GHC
Adding simpl GVN path into GHCAdding simpl GVN path into GHC
Adding simpl GVN path into GHC
 
Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。Fork/Join Framework。そしてLambdaへ。
Fork/Join Framework。そしてLambdaへ。
 
おいしいLisp
おいしいLispおいしいLisp
おいしいLisp
 
F#とC#で見る関数志向プログラミング
F#とC#で見る関数志向プログラミングF#とC#で見る関数志向プログラミング
F#とC#で見る関数志向プログラミング
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
 
for文
for文for文
for文
 
入力
入力入力
入力
 
エクストリームエンジニア4
エクストリームエンジニア4エクストリームエンジニア4
エクストリームエンジニア4
 
PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)PythonでLispを実装した (evalつき)
PythonでLispを実装した (evalつき)
 

プログラミング講座

  • 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)) は結構よく見る