你的位置:创意公社- ideaer >> 创意软件 >> 程序乐园 >> 详细内容 在线投稿

VB编程基础教程9–数组

热度731票  浏览53次 【共0条评论】【我要评论 时间:2010年5月22日 13:04
创意公社- ideaer.Nt*oF+b_J#x

如果有过用其它语言编程的经历,那么想必会熟悉数组的概念。由于有了数组,可以用相同名字引用一系列变量,并用数字(索引)来识别它们。在许多场合,使用数组可以缩短和简化程序,因为可以利用索引值设计一个循环,高效处理多种情况。数组有上界和下界,数组的元素在上下界内是连续的。因为 visual basic对每一个索引值都分配空间,所以不要不切实际声明一个太大的数组。
c T'gGz:t0注意 这一部分讨论的数组是程序中声明的变量数组。它们不同于控件数组,控件数组是在设计时通过设置控件的 index 属性规定的。变量数组总是连续的;与控件数组不同的是,不能从一个数组的中部加载或卸载数组元素。创意公社- ideaerp(]9s V'~#?$s[t
一个数组中的所有元素具有相同的数据类型。当然,当数据类型为 variant 时,各个元素能够包含不同种类的数据(对象、 字符串 、数值等等)。 可以声明任何基本数据类型的数组,包括用户自定义类型(请参阅 “再论编程”中的“创建自己的数据类型”)和对象变量(请参阅“用对象编程”)。创意公社- ideaerE Um:cG)^ q
在 visual basic 中有两种类型的数组:固定大小的数组— 它总是保持同样的大小,以及在运行时大小可以改变的动态数组。在本章后面的“动态数组”中将要详细讨论动态数组。
0T8|aw*[H:L3H Ht0声明固定大小的数组创意公社- ideaer Rs8qN k odX)dLN
有三种方法声明固定大小的数组,用哪一种方法取决于数组应有的有效范围:
7B4s7X8f1L-I0建立公用数组,在模块的声明段用 public 语句声明数组。
rw9]/e:u`8D:A0创意公社- ideaer)dxc$^{L`bct@5P
建立模块级数组,在模块的声明段用 private 语句声明数组。
M$Jmgs I ~0
*|EF#e(m"o,E0建立局部数组,在过程中用 private 语句声明数组。 创意公社- ideaer a2@d.[#r_L-E h
设定上下界
tPY uG$t^f9Mg0声明数组时,在数组名之后跟一个用括号括起来的上界。上界不得超过 long 数据类型的范围(-2,147,483,648 到 2,147,483,647)。例如,下列数组声明可出现在模块的声明段:
#b jS.jN0dim counters (14) as integer         ‘15 个元素。
T$G8?}4F0dim sums (20) as double            ’21 个元素。
~ oibi0为建立公用数组,直接用 public 取代 dim。
n(@3W\v X0public counters (14) as integer创意公社- ideaerKVN?QJL
public sums (20) as double创意公社- ideaer%T:bl2S:z3R ~*r
在过程之中同样的声明使用 dim:
n%[ZY.v)e3L3u0dim counters (14) as integer创意公社- ideaer\zuC&d
dim sums (20) as double创意公社- ideaer5Q"G)t3q"L YVbp7p8_A
第一个声明建立了一个有 15 个元素的数组,其索引号从 0 到 14 。第二个声明建立了一个有 21 个元素的数组,其索引号从 0 到 20 。缺省的下界为 0。
z0t7^MPp'c%n0为了规定下界,用关键字 to 显式提供下界(为 long 数据类型):
$Z:kFUe(N0dim counters (1 to 15) as integer创意公社- ideaer KA D7?3e
dim sums (100 to 120) as string创意公社- ideaer/y)|W8{.C O
在前述声明中,counters 的索引值范围从 1 到 15,而 sums 的索引值范围从 100 到 200。创意公社- ideaerGpIRr#Gj
包含其它数组的数组创意公社- ideaer P%as%? ~0O9M
有可能建立 variant 数据类型数组,并与不同数据类型的数组共居一处。以下代码建立两个数组,一个包含整数,而另一个包含 字符串。然后声明第三个 variant 数组,并将整数和字符串数组放置其中:
3E0?!z${1_+d,w0private sub command1_click ()
4F5} P^[ ~i0   dim intx as integer   ‘声明计数器变量。创意公社- ideaer4z^I;Xe VD
   ’声明并放置整数数组。
0_?P)P!|b7^7{"AH0   dim countersa (5) as integer创意公社- ideaerM8u-dU)JcY/k#l7Z
      for intx = 0 to 4
p sI_ K0         countersa (intx) = 5
t}"_-Z0s5vk0      next intx
8O$J8wgNi l0   ‘声明并放置字符串数组。创意公社- ideaer jQ,q|!Q,@
      dim countersb (5) as string
]3c }0d3DHso#D0         for intx = 0 to 4
QGs6Y n9Q0            countersb (intx) = “hello”
2Y&~vGa\m%a0         next intx创意公社- ideaer!Zk#kX]g
   dim arrx (2) as variant         ’声明拥有两个成员的新数组。
'D ?#iV5M z-I^,h0      arrx (1) = countersa ()      ‘将其它数组移居到数组。创意公社- ideaerf(jEoYpY^
      arrx (2) = countersb ()创意公社- ideaer\+a:cfR
      msgbox arrx (1) (2)         ’显示每一个数组的成员。
t&S-{!v5Y:r)~t0      msgbox arrx (2) (3)创意公社- ideaer6CXg:A&VC a
end sub创意公社- ideaerNuz1XHw gE
多维数组创意公社- ideaervb j nC ]L_!rv
有时需要追踪记录数组中的相关信息。例如,为了追踪记录计算机屏幕上的每一个像素,需要引用它的 x、y 坐标。这时应该用多维数组存储值。创意公社- ideaer#O H1A9Xzo"B]4p
可用 visual basic 声明多维数组。例如,下面的语句声明了一个过程内的 10 × 10 的二维数组。创意公社- ideaer"U;@d)a$gQ@y
static matrixa (9, 9) as double创意公社- ideaer8F"ML8V'i@W&u.xC
可用显式下界来声明两个维数或两个维数中的任何一个:创意公社- ideaeri(LG;G5L*e
static matrixa (1 to 10, 1 to 10) as double创意公社- ideaerV9Iq'`xU0]
可以将所有这些推广到二维以上的数组。例如:
*Z"cb3Y%{]{~0dim multid (3, 1 to 10, 1 to 15)创意公社- ideaerjIzl"}
这个声明建立了三维数组,大小为 4 × 10 × 15。元素总数为三个维数的乘积,为 600。创意公社- ideaerp.[c(]$f
注意 在增加数组的维数时,数组所占的存储空间会大幅度增加,所以要慎用多维数组。使用 variant 数组时更要格外小心,因为他们需要更大的存储空间。 创意公社- ideaer0cXk7Za'~9n
用循环操作数组创意公社- ideaerQTv"|Nr-B
可以用 for 循环嵌套有效的处理多维数组。例如,在 matrixa 中基于每个元素在数组中的位置为其赋值:
#_:?4BMXf0dim i as integer, j as integer
%U8kO`I_0static matrixa(1 to 10, 1 to 10) as double创意公社- ideaer$Q [_D6i \6K:Rq0O
for i = 1 to 10创意公社- ideaer lZV%FX U9K%Q
   for j = 1 to 10创意公社- ideaer%H_$Q/Sxb.W
      matrixa (i, j) = i * 10 + j创意公社- ideaer%[_ut+BC
   next j创意公社- ideaer4wS2IUKRqUB
next i
~%B,^7rQ0详细信息 关于循环的详细信息,请参阅本章后面的“循环结构”部分。创意公社- ideaer$@6]L)r4dIHP

顶:34 踩:36
对本文中的事件或人物打分:
当前平均分:-0.28 (233次打分)
对本篇资讯内容的质量打分:
当前平均分:0.27 (227次打分)
【已经有201人表态】
20票
感动
31票
路过
25票
高兴
32票
难过
18票
搞笑
30票
愤怒
17票
无聊
28票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】