第6講 配列
第2話 配列の宣言と使い方
配列の宣言の仕方は、
Dim a(10000) As Integer
です。これで10001個の変数が用意できます。
どのような変数が用意できたかと申しますと、
a(0),a(1),a(2),・・・,a(9999)
の1万個です。
Dim a(10000) As Integer
のとき1万個の変数ではなく10001この変数が用意できることに注意して下さい。
0から始まっていますので、10000が10001個目になるのです
配列のことを添え字付き変数ともいいます。
添え字とは()内の数字です。
配列は、一瞬にして多くの変数を用意できるだけでなく、
添え字が、For文の制御変数で制御できるという大変大変大きなメリットを持っています。
例によって具体例を示しましょう。
Module Module1
Sub Main() '私は社長だ。
Dim a(9) As Integer '配列aの宣言
Dim i As Integer
For i = 0 To 9
a(i) = i + 1
Next
For i = 0 To 9
Console.Write("{0:d} ", a(i))
Next
Console.WriteLine()
End Sub
End Module
実行画面
1 2 3 4 5 6 7 8 9 10
このコードを
Module Module1
Sub Main() '私は社長だ。
f()
End Sub
Sub f()
Dim a0,a1,a2,a3,a4,a5,a6,a7,a8,a9 As Integer '変数aの宣言
Dim i As Integer
For i = 0 To 9
ai = i + 1
Next
For i = 0 To 9
Console.Write("{0:d} ", ai )
Next
Console.WriteLine()
End Sub
End Module
等とするとエラーします。
同じ添え字でもa0とa(0)では天と地ほど違うのです。
配列の添え字は、制御変数で制御できる!
これが大きなメリットなのです。
さて、なるべく仕事は部下にやらせて、
main()は指令役に徹するが原則ですから、
この講のこれ以降のコードは
Module Module1
Sub Main() '私は社長だ。
f()
End Sub
Sub f()
Dim a(10) As Integer '配列aの宣言
Dim i As Integer
For i = 0 To 10
a(i) = i + 1
Next
For i = 0 To 10
Console.Write("{0:d} ", a(i))
Next
Console.WriteLine()
End Sub
End Module
という形にします。
変数そのものや配列そのものを渡すことが出来ませんので、
現時点では、上のように書き換えることは余り意味がありませんが、
なんでも社長自ら仕事をやってしまうという悪癖を付けないための
次善の策です。
C言語ではポインタというものがあり、
これを使うと配列や変数を実質上渡すということができます。
VBにはポインタはありませんが、C言語と似たような手法で配列を実質的に渡す方法があります。
それを実行すれば書き換えにははっきりと意義が生まれます、
ということを断っておきましょう。
実質が繰り返されている理由は、
箱そのものを渡せるわけではないからです。
箱そのものを渡せないのに仕事を依頼した人に自分専用の箱を使ってもらうという−−−
魔法にような方法をC言語やVBは持っているのです。
では問題です。
関数f()に2次元のデータ作成と表示をやらせて、
70 53 57 28 30 77 1 76 81 70
を実現して下さい。
もちろん配列を利用することが条件です。
発生させるデータは100未満のランダムな整数です。