第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の役割は実は次のようになっています。

1 2 3 4
i 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
1 1                        
2  5  6  7                                    
3  9 10 11 12                                                
4 13 14 15 16                                    
2 1                                                
2                                                
3                                                
4                                                
3 1              1                        
2              5                        
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
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
97 2 3 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講義トップへ