第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講義トップへ