詳細(xì)介紹VB編程中的數(shù)組
數(shù)組是在程序設(shè)計(jì)中,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來的一種形式。這些按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組。
在C語言中, 數(shù)組屬于構(gòu)造數(shù)據(jù)類型。一個(gè)數(shù)組可以分解為多個(gè)數(shù)組元素,這些數(shù)組元素可以是基本數(shù)據(jù)類型或是構(gòu)造類型。因此按數(shù)組元素的類型不同,數(shù)組又可分為數(shù)值數(shù)組、字符數(shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組等各種類別。下面主要介紹VB中的數(shù)組。
1、數(shù)組的概念
(1) 引例
若我們要求一個(gè)班60個(gè)學(xué)生的平均成績,然后統(tǒng)計(jì)高于平均分的人數(shù)。按以前簡單變量的使用和循環(huán)結(jié)構(gòu)相結(jié)合,求平均成績程序段如下:
- Dim ave As Single, sum As Single, mark As Single
- Dim i As Integer
- ave = 0
- sum = 0
- For i = 1 To 6
- mark = InputBox("輸入第" & i & "個(gè)學(xué)生的成績")
- sum = sum + mark
- Next
- ave = sum / 6
- Print "平均分是:"; ave
但若要統(tǒng)計(jì)高于平均分的人數(shù),則無法實(shí)現(xiàn)。mark是一個(gè)簡單變量,存放的是最后一個(gè)學(xué)生的成績。已有知識(shí)解決方法:再重復(fù)輸入成績,帶來兩個(gè)問題:
(1)輸入數(shù)據(jù)的工作量成倍增加;
(2)若本次輸入的成績與上次不同,則統(tǒng)計(jì)的結(jié)果不正確。
解決此問題的根本方法,引入數(shù)組,始終保持輸入的數(shù)據(jù),一次輸入,多次使用。
(2)數(shù)組的概念
數(shù)組就是把有限個(gè)類型相同的變量用同一個(gè)名字命名,然后用編號(hào)區(qū)分它們的變量的集合。這個(gè)名字稱為數(shù)組名,編號(hào)稱為下標(biāo)。組成數(shù)組的各個(gè)變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時(shí)也稱為下標(biāo)變量。
在引例中,可以定義一個(gè)數(shù)組mark(1 to 60),記錄60個(gè)學(xué)生的成績,如果第一個(gè)學(xué)生的成績是90分,則mark(1)=90;如果第2個(gè)學(xué)生的成績?yōu)?0分,則mark(2)=80,第60個(gè)學(xué)生的成績?yōu)?6分,則mark(60)=96,依此類推。
2、數(shù)組的定義。
聲明數(shù)組的一般格式如下:
Dim 數(shù)組名([下界 to ] 上界 [,[下界 to ] 上界…])As 數(shù)據(jù)類型
對于VB的數(shù)組,表示數(shù)組元素時(shí)應(yīng)注意:
① 下標(biāo)要緊跟在數(shù)組名后,而且用圓括號(hào)括起來(不能用其他括號(hào));
② 數(shù)組名的命名與變量名的命名規(guī)則相同;
③ 下標(biāo)可以是常量、變量或表達(dá)式,但其值必須是整數(shù)(如果是小數(shù)將四舍五入為整數(shù));
④ 數(shù)組中可以存儲(chǔ)數(shù)據(jù)的個(gè)數(shù)是由下標(biāo)的下界和上界決定的,當(dāng)下界省略時(shí),默認(rèn)的下界值為0。
- Dim x(10 to 20) As Integer ‘下標(biāo)范圍是10~20,可保存11個(gè)數(shù)據(jù)
- Dim y(1 to 20) As Integer ‘下標(biāo)范圍是1~20,可保存20個(gè)數(shù)據(jù)
- Dim z(20) As String ‘下標(biāo)范圍是0~20,可保存21個(gè)數(shù)據(jù)
⑤ 通過指定數(shù)組名和下標(biāo)來使用數(shù)組中的元素,下標(biāo)可以是一個(gè)表達(dá)式。例如:
- x(10)=100
- x(11)=150
- z(1)=“Visual Basic”
- i=10
- y(i+5)=30
⑥ 在同一數(shù)組中,數(shù)組變量的類型必須是聲明時(shí)指定的數(shù)據(jù)類型。下面的情形是不允許的:x(10)= “Visual Basic”
但是,因?yàn)榘岩粋€(gè)數(shù)值賦給一個(gè)字符串類型的變量時(shí),系統(tǒng)會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,所以下面的語名是允許的:z(2)=100
⑦ 如果數(shù)組只有一個(gè)下標(biāo)則稱為一維數(shù)組,但有許多場合一個(gè)下標(biāo)是不夠的。例口,在電影院確定位置,要有行數(shù)和位數(shù)(如第3行8號(hào)),如果要用一個(gè)數(shù)組來記錄這種位置就得有兩個(gè)下標(biāo)。 如:
- Dim x(1 to 20,1 to 30) As Integer
有幾個(gè)下標(biāo)的數(shù)組就稱為幾維數(shù)組(VB最多允許60維)。
⑧ 數(shù)組應(yīng)該在使用前定義。定義數(shù)組用“Dim”語句。例如:
- Dim Cscore(1 to 40) As Single, K(20,30) As Long
這個(gè)Dim浯句定義了兩個(gè)數(shù)組。數(shù)組Cscore足Single類型的一維數(shù)組,有40個(gè)分量,下標(biāo)的下界是1,上界是40。而數(shù)組K(20,30)是Long型的二維數(shù)組,下標(biāo)省略了下界(對省略下界的情況VB自動(dòng)用0做下界),它的第一維的下標(biāo)范圍是0—20,第二維的下標(biāo)范圍是0—30,數(shù)組K有2l x 31=651個(gè)分量。
⑨ 對于預(yù)先不能確定數(shù)組元素個(gè)數(shù)情形,可以使用動(dòng)態(tài)數(shù)組。聲明一個(gè)動(dòng)態(tài)數(shù)組的方法是:在聲明數(shù)組時(shí)不指定下標(biāo)范圍,當(dāng)明確下標(biāo)范圍時(shí),用ReDim語句再次聲明該數(shù)組。例如:
- Dim x() As Integer ‘聲明數(shù)組時(shí)不指定下標(biāo)范圍
當(dāng)數(shù)組x的元素明確后(例如20個(gè)),則用ReDim語句聲明如下:
- ReDim x(20)
如果動(dòng)態(tài)數(shù)組的元素個(gè)數(shù)需要多次改變,可以多次應(yīng)用ReDim語句。為了保留數(shù)組中原有的數(shù)據(jù),必須在使用ReDim語句時(shí)使用Preserve關(guān)鍵字。例如要把數(shù)組x的元素個(gè)數(shù)改為30,并保留原來的20個(gè)元素中的數(shù)據(jù),聲明語句如下:
- ReDim Preserve x(30)
由于第一次用Dim語句聲明數(shù)組時(shí)已經(jīng)指定了數(shù)組的類型,因此不能在ReDim語句中再次用As關(guān)鍵字來指定數(shù)組的類型。
3、數(shù)組元素的輸入和輸出。
數(shù)組元素往往有很多,因此輸入和輸出有時(shí)需要用一些比較特殊的方法。
數(shù)組元素的輸入,可以使用賦值語句、文本框、InputBox函數(shù)等等。
數(shù)組元素輸出時(shí),一般可以考慮兩種方法:
①用PRINT方法直接輸出到窗體,但當(dāng)數(shù)據(jù)量大時(shí)難以實(shí)現(xiàn)數(shù)據(jù)的滾動(dòng);
②使用控件,如標(biāo)簽、文本框等,并且設(shè)置滾動(dòng)條。
4、數(shù)組的應(yīng)用
判斷程序運(yùn)行結(jié)果
- Private Sub Command1_Click()
- Dim i As Integer
- Dim a(1 To 10) As Integer
- For i = 1 To 10
- a(i) = 2 * i + 1
- Next i
- For i = 1 To 5
- Print a(2 * i - 1);
- Next i
- End Sub
希望通過本文的介紹,可以對初學(xué)者有幫助。
【編輯推薦】