第8講 配列の学習
第1話 配列とは?


皆さんの場合は、配列を実質ご存じですね。
2次元配列に相当するものをすでにいろいろな場面で駆使してきました。
そうです。
Cellsです。Cells(5, 2)なら対象セルセルB5でした。
2次元というのは、5と2というように
添え字が2つついているからです。
添え字が1つ(例えば、a(2))である変数を1次元配列、
添え字が3つ(e(3, 2, 4)など)である変数を3次元配列などといいます。
数独や魔方陣では変数がたくさん必要になります。
例えば、26次魔方陣を作らせるとなると、
26×26=676個もの変数が必要となります。
同様に100次魔方陣なら、10000個もの変数が必要になってきます。
理由は、100次魔方陣には10000個のセル(ます)があるからです。
プログラムによっては、10万個以上の変数が必要なものもあります。
もし、配列がなければプログラミングは実質不可能になります。
変数名を考えるだけで気が遠くなる作業が必要になるからです。
ですが、配列があるため10万個の変数を用意するのは、
Dim a(100000) As Integer
の呪文で済んでしまします。
この1行の記述で10万+1個の整数型の変数が用意できるのです。
+1個が付いている理由はa(0)のように添え字0も認めているからです。

でも、ひょっとしたら皆さんは別に配列を利用しなくてもCellsがあるのだから、
特に必要ないのではと?と思いになりませんか。

ところが、数独自動生成ソフトや高次魔方陣作成プログラムを作る際には、
配列は絶対に必要なのです。
100次魔方陣で10000個の変数を扱うわけですが、
Cellsを利用するつまりエクセルのセルを利用したのでは、
処理速度がプログラムによっては1/10000ぐらいになってしまうのです。
実は後ほど実際にプログラムを組んで頂ければ分かりますが、
エクセルのセルを利用するとプログラムがかなり重くなってしまいます。
ですから、エクセルのセルは最後の結果だけを表示させるときにのみ使用して、
結果にいたる処理は、すべて配列などで行わせるべきなのです。
しかも、変数のメモリーに処理速度は反比例しますから、
1から9の数字しか扱わない数独においては、
Dim a(8) As Byte
バイト型の変数にすべきなのです。
数独問題自動生成においては、
膨大な計算量を必要とします。
1つの良問を生産させるには、
計算回数は兆から京のレベルに達します。
ですから、メモリー最小の1次元配列や2次元配列
すなわち、Byte型の2次元配列などを用意すべきなのです。
2次元配列は
Dim a(8, 8) As Byte
3次元配列は
Dim a(8, 8, 8) As Byte
などと宣言します。

数独自動生成アプリの開発においては、
基本は9つの変数を用意するわけですが、
Dim a(8) As Byte
で良い訳は、皆さんお分かりですよね。
添え字は0から始まるからです。


第7講第8話へ 第2話へ


トップ

初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門

数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ