第2話 プログラム解説(1)
ここでは前話のプログラムについて解説しましょう。
おそらく、初心者の皆さんが一番閉口した部分は、
For i = 1 To 4
For j = 1 To 4
For k = 1 To 4
For l = 1 To 4
koujimah(4 * (i - 1) + k, 4 * (j - 1) + l) = 16 * (kisomah(i,
j) - 1) + kisomah(k, l)
Next
Next
Next
Next
の部分ではないでしょうか。
4次元ループのなっていて、わかりにくかったのではないでしょうか。
順に説明していきましょう。
i,j,k,lの役割は実は次のようになっています。
j | 1 | 2 | 3 | 4 | ||||||||||||||
i | l | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | 1 | 2 | 3 | 4 | |
k | ||||||||||||||||||
1 | 1 | 1 | 2 | 3 | 4 | |||||||||||||
2 | 5 | 6 | 7 | 8 | ||||||||||||||
3 | 9 | 10 | 11 | 12 | ||||||||||||||
4 | 13 | 14 | 15 | 16 | ||||||||||||||
2 | 1 | |||||||||||||||||
2 | ||||||||||||||||||
3 | ||||||||||||||||||
4 | ||||||||||||||||||
3 | 1 | 1 | 2 | 3 | 4 | |||||||||||||
2 | 5 | 6 | 7 | 8 | ||||||||||||||
3 | 9 | 10 | 11 | 12 | ||||||||||||||
4 | 13 | 14 | 15 | 16 | ||||||||||||||
4 | 1 | |||||||||||||||||
2 | ||||||||||||||||||
3 | ||||||||||||||||||
4 |
iは赤、jは深い青、kは茶色、lはピンクに対応しています。
つまり(i,j、k,l)=(4,2,3,1)なら水色のセルを表します。
i,j,k,lの最初の動きを見ると次のようになっています。
ループ順 | i | j | k | l |
1 | 1 | 1 | 1 | 1 |
2 | 1 | 1 | 1 | 2 |
3 | 1 | 1 | 1 | 3 |
4 | 1 | 1 | 1 | 4 |
5 | 1 | 1 | 2 | 1 |
6 | 1 | 1 | 2 | 2 |
7 | 1 | 1 | 2 | 3 |
8 | 1 | 1 | 2 | 4 |
9 | 1 | 1 | 3 | 1 |
10 | 1 | 1 | 3 | 2 |
11 | 1 | 1 | 3 | 3 |
12 | 1 | 1 | 3 | 4 |
13 | 1 | 1 | 4 | 1 |
14 | 1 | 1 | 4 | 2 |
15 | 1 | 1 | 4 | 3 |
16 | 1 | 1 | 4 | 4 |
ここでは上のオレンジ色のところが、
オレンジの番号順に数字が埋められていきます。
次に途中の動きを見ると
ループ順 | i | j | k | l |
97 | 2 | 3 | 1 | 1 |
98 | 2 | 3 | 1 | 2 |
99 | 2 | 3 | 1 | 3 |
100 | 2 | 3 | 1 | 4 |
101 | 2 | 3 | 2 | 1 |
102 | 2 | 3 | 2 | 2 |
103 | 2 | 3 | 2 | 3 |
104 | 2 | 3 | 2 | 4 |
105 | 2 | 3 | 3 | 1 |
106 | 2 | 3 | 3 | 2 |
107 | 2 | 3 | 3 | 3 |
108 | 2 | 3 | 3 | 4 |
109 | 2 | 3 | 4 | 1 |
110 | 2 | 3 | 4 | 2 |
111 | 2 | 3 | 4 | 3 |
112 | 2 | 3 | 4 | 4 |
ここでは薄紫色の数字の順に埋められます。
解説の続きは、第3話で行います。
第1講第1話へ 第3話へ
VB講義応用編トップへ
VB講義トップへ