按鍵精靈數(shù)組的語法及應(yīng)用
引例求100個(gè)學(xué)生的平均成績及超過平均成績的人數(shù)。如果用一般變量來表示成績,需要用100個(gè)變量,如:mark1、mary2、……mark100。若用數(shù)組,可以只用一個(gè)來表示mark(99)。 基本概
引例
求100個(gè)學(xué)生的平均成績及超過平均成績的人數(shù)。如果用一般變量來表示成績,需要用100個(gè)變量,如:mark1、mary2、……mark100。若用數(shù)組,可以只用一個(gè)來表示mark(99)。
基本概念
數(shù)組是同類型變量的一個(gè)有序的集合。如:A(99),表示一個(gè)包含100個(gè)數(shù)組元素的名為A的數(shù)組。
數(shù)組元素:即數(shù)組中的變量。用下標(biāo)表示數(shù)組中的各個(gè)元素。
表示方法:數(shù)組名(P1,P2,……)
其中P1、P2表示元素在數(shù)組中的排列位置,稱為“下標(biāo)”。
如:A(3,2)代表二維數(shù)組A中第3行第2列上的那個(gè)元素。
數(shù)組維數(shù):由數(shù)組元素中下標(biāo)的個(gè)數(shù)決定,一個(gè)下標(biāo)表示一維數(shù)組,二個(gè)下標(biāo)表示二維數(shù)組。
VB中有一維數(shù)組、二維數(shù)組、最多60維數(shù)組。
下標(biāo):下標(biāo)表示順序號(hào),每個(gè)數(shù)組有一個(gè)唯一的順序號(hào),下標(biāo)不能超過數(shù)組聲明時(shí)的上、下界范圍。下標(biāo)可以是整型的常數(shù)、變量、表達(dá)式,甚至又是一個(gè)數(shù)組元素。下標(biāo)的取值范圍是:缺省下界時(shí),系統(tǒng)默認(rèn)取0。
數(shù)組聲明
數(shù)組必須先聲明后使用。聲明數(shù)組就是讓系統(tǒng)在內(nèi)存中分配一個(gè)連續(xù)的區(qū)域,用來存儲(chǔ)數(shù)組元素。
聲明內(nèi)容:數(shù)組名、類型、維數(shù)、數(shù)組大小。
一般情況下,數(shù)組中各元素類型必須相同,但若數(shù)組為Variant時(shí),可包含不同類型的數(shù)據(jù)。
靜態(tài)數(shù)組:聲明時(shí)確定了大小的數(shù)組。
動(dòng)態(tài)數(shù)組:聲明時(shí)沒有給定數(shù)組大小,使用時(shí)需要用ReDim語句重新指出其大小。使用動(dòng)態(tài)數(shù)組的優(yōu)點(diǎn)是根據(jù)用戶需要,有效地利用存儲(chǔ)空間,它是在程序執(zhí)行到ReDim語句時(shí)才分配存儲(chǔ)單元,而靜態(tài)數(shù)組是在程序編譯時(shí)分配存儲(chǔ)單元。
靜態(tài)數(shù)組及聲明
一維數(shù)組
靜態(tài)一維數(shù)組的聲明形式:Dim 數(shù)組名(下標(biāo))
下標(biāo)必須為常數(shù),不可以為表達(dá)式或變量;
下標(biāo)下界最小為-32768,最大上界為32767;省略下界,其默認(rèn)值為為0,一維數(shù)組的大小為:上界-下界
如果省略類型,則為變體型例:(1)Dim A(10)聲明了A是數(shù)組名、一維數(shù)組、有11個(gè)元素,下標(biāo)的范圍是0~10.
多維數(shù)組
靜態(tài)多維數(shù)組的聲明形式:Dim 數(shù)組名(下標(biāo)1[,下標(biāo)2…])
下標(biāo)個(gè)數(shù)決定數(shù)組的維數(shù),最多60維。
每一維的大小上界-下界;數(shù)組的大小每一維大小的乘積。
例:Dim C(5, 4)聲明了C是數(shù)組名、長整型、二維數(shù)組、第一維下標(biāo)范圍為0~5,第二維下標(biāo)的范圍是0~4,占據(jù)6x5個(gè)長整型變量的空間。
注意事項(xiàng)
在有些語言中,下界一般從1開始,為了便于使用,在VB的窗體層或標(biāo)準(zhǔn)模塊層用Option Base n語句可重新設(shè)定數(shù)組的下界,如Option Base 1.
在數(shù)組聲明中的下標(biāo)關(guān)系到每一維的大小,是數(shù)組說明符,而在程序其他地方出現(xiàn)的下標(biāo)為數(shù)組元素,兩者寫法相同,但意義不同.
在數(shù)組聲明時(shí)的下標(biāo)只能是常數(shù),而在其他地方出現(xiàn)的數(shù)組元素的下標(biāo)可以是變量.
動(dòng)態(tài)數(shù)組及聲明
動(dòng)態(tài)數(shù)組的建立與聲明
建立動(dòng)態(tài)數(shù)組的方法是:利用Dim、Private、Public語句聲明括號(hào)內(nèi)為空的數(shù)組,然后在過程中用ReDim語句指明該數(shù)組的大小。語法是:ReDim 數(shù)組名(下標(biāo)1[,下標(biāo)2…])
其中下標(biāo)可以是常量,也可以是有了確定值的變量,類型可以省略,若不省略,必須與Dim中的聲明語句保持一致.
例:Dim D() Sub Form_Load() … ReDim D(4,6) … End Sub
注意事項(xiàng)
在動(dòng)態(tài)數(shù)組ReDim語句中的下標(biāo)可以是常量,也可以是有了確定值的變量;
在過程中可以多次使用ReDim來改變數(shù)組的大小,也可改變數(shù)組的維數(shù).
每次使用ReDim語句都會(huì)使原來數(shù)組中的值丟失,可以在ReDim語句后加Preserve參數(shù)來保留數(shù)組中的數(shù)據(jù),但使用Preserve只能改變最后一維的大小,前面幾維大小不能改變.
數(shù)組的基本操作
給數(shù)組元素賦初值
利用循環(huán)結(jié)構(gòu)
例:Dim i, A(10) For i0 To 10 A(i)0 Next
利用Array函數(shù)
例:Dim a , b , i a Array (1,2,3,4,5) b Array ("abc","def","67") For i0 To Ubound(a) msgbox a(i) Next For i0 To Ubound(b) msgbox b(i) Next
數(shù)組的輸入
通過InputBox函數(shù)輸入適合輸入少量數(shù)據(jù).
例:Dim sB(3,4) For i0 To 3 For j0 To 4 SB(i,j) InputBox("輸入" i j "的值") Next Next
通過文本框控件輸入 對(duì)大批量的數(shù)據(jù)輸入,采用文本框和函數(shù)split()join()進(jìn)行處理,效率更高.
數(shù)組的賦值
在VB6.0中可以直接將一個(gè)數(shù)組的值賦值給另一個(gè)數(shù)組:
Dim a(3), b() A(0)2: A(1)5: A(2)-2: A(3)2 ba
在早期的VB中,這需要用循環(huán)語句才可以實(shí)現(xiàn): ReDim b(UBound(a)) For I0 to UBound(a) b(I)a(I) Next 注意:賦值號(hào)兩邊的數(shù)據(jù)類型必須一致;如果賦值號(hào)左邊的是一個(gè)動(dòng)態(tài)數(shù)組,則賦值時(shí)系統(tǒng)自動(dòng)將動(dòng)態(tài)數(shù)組ReDim成右邊相同大小的數(shù)組;如果賦值號(hào)左邊的是一個(gè)大小固定的數(shù)組,則數(shù)組賦值出錯(cuò).
數(shù)組的輸出
用For…Next循環(huán)語句輸出.
求數(shù)組中最大元素和所在下標(biāo)及各元素之和
求數(shù)組中最大元素及下標(biāo),一般假設(shè)第一個(gè)元素及下標(biāo)為最大,然后將該數(shù)與數(shù)組中的其他元素逐一比較,若有比其大的就替換,同時(shí)替換下標(biāo).
交換數(shù)組中各元素
交換的要求是將數(shù)組第一個(gè)元素與最后一個(gè)交換,第二個(gè)與倒數(shù)第二個(gè)交換,依次類推.