电竞比分网-中国电竞赛事及体育赛事平台

分享

第五章 VB 中的數(shù)組

 nxhujiee 2010-09-08

第五章     VB中的數(shù)組

5.1    數(shù)組的概念

1.引例

  求100個學(xué)生的平均成績及超過平均成績的人數(shù)。

  如果用一般變量來表示成績,需要用100個變量,如:mark1、mary2、……mark100。若用數(shù)組,可以只用一個來表示mark1

To 100
)。

2.基本概念

  數(shù)組:是同類型變量的一個有序的集合。

         如:A1 To 100),表示一個包含100個數(shù)組元素的名為A的數(shù)組。

  數(shù)組元素 即數(shù)組中的變量。用下標表示數(shù)組中的各個元素。

           表示方法:數(shù)組名P1,P2,……)

                其中P1P2表示元素在數(shù)組中的排列位置,稱為“下標”。

           如:A32)代表二維數(shù)組A中第3行第2列上的那個元素。

  數(shù)組維數(shù) 由數(shù)組元素中下標的個數(shù)決定,一個下標表示一維數(shù)組,二個下標表示二維數(shù)組。

           VB中有一維數(shù)組、二維數(shù)組、……最多60維數(shù)組。

  下標: 下標表示順序號,每個數(shù)組有一個唯一的順序號,下標不能超過數(shù)組聲明時的上、下界范圍。下標可以是整型的常數(shù)、變量、表達式,甚至又是一個數(shù)組元素。

     下標的取值范圍是:下界 To 上界 ,缺省下界時,系統(tǒng)默認取0。

3.數(shù)組聲明

    數(shù)組必須先聲明后使用。聲明數(shù)組就是讓系統(tǒng)在內(nèi)存中分配一個連續(xù)的區(qū)域,用來存儲數(shù)組元素。

    聲明內(nèi)容數(shù)組名、類型、維數(shù)、數(shù)組大小

         一般情況下,數(shù)組中各元素類型必須相同,但若數(shù)組為Variant時,可包含不同類型的數(shù)據(jù)。

    靜態(tài)數(shù)組:聲明時確定了大小的數(shù)組。

    動態(tài)數(shù)組: 聲明時沒有給定數(shù)組大?。ㄊ÷粤死ㄌ栔械南聵耍褂脮r需要用ReDim語句重新指出其大小。

    使用動態(tài)數(shù)組的優(yōu)點是根據(jù)用戶需要,有效地利用存儲空間,它是在程序執(zhí)行到ReDim語句時才分配存儲單元,而靜態(tài)數(shù)組是在程序編譯時分配存儲單元。

5.2    靜態(tài)數(shù)組及聲明

1.   一維數(shù)組

   靜態(tài)一維數(shù)組的聲明形式:

        Dim  數(shù)組名下標 [As  類型]

說明:1)下標必須為常數(shù),不可以為表達式或變量;
    2)下標下界最小為-32768,最大上界為32767;省略下界,其默認值為為0,一維數(shù)組的大小為:上界-下界+1
    3 如果省略類型,則為變體型

:?。?/span>1 Dim  A10 As Integer
      聲明了A是數(shù)組名、整型、一維數(shù)組、有11個元素,下標的范圍是010
   2 Dim  B-3 To 5 As String*3
      聲明了B是數(shù)組名、字符串型、一維數(shù)組、有9個元素,下標的范圍是-35,每個元素最多存放3個字符。

2.多維數(shù)組

   靜態(tài)多維數(shù)組的聲明形式:
  
Dim  數(shù)組名下標1[下標2] [As  類型]

  說明:?。?/span>1)下標個數(shù)決定數(shù)組的維數(shù),最多60維。
      2)每一維的大小=上界-下界+1;數(shù)組的大小=每一維大小的乘積。

  Dim  C-1 To 5, 4 As  Long
    聲明了C是數(shù)組名、長整型、二維數(shù)組、第一維下標范圍為-15,第二維下標的范圍是04占據(jù)7x 5個長整型變量的空間。

3.注意事項

  (1)在有些語言中,下界一般從1開始,為了便于使用,在VB的窗體層或標準模塊層用Option Base n 語句可重新設(shè)定數(shù)組的下界,如Option Base 1。
  (2) 在數(shù)組聲明中的下標關(guān)系到每一維的大小,是數(shù)組說明符,而在程序其他地方出現(xiàn)的下標為數(shù)組元素,兩者寫法相同,但意義不同。
  (3) 在數(shù)組聲明時的下標只能是常數(shù),而在其他地方出現(xiàn)的數(shù)組元素的下標可以是變量。

5.3    動態(tài)數(shù)組及聲明

1.  動態(tài)數(shù)組的建立與聲明

  建立動態(tài)數(shù)組的方法是:利用Dim、Private、Public語句聲明括號內(nèi)為空的數(shù)組,然后在過程中用ReDim語句指明該數(shù)組的大小。語法是:
  ReDim  數(shù)組名下標1[,下標2] [As  類型]
 
其中下標可以是常量,也可以是有了確定值的變量,類型可以省略,若不省略,必須與Dim中的聲明語句保持一致。

  例: Dim D() As Single
Sub Form_Load
()
……
ReDim D
4,6
     ……
End Sub

2.注意事項

  1)在動態(tài)數(shù)組ReDim語句中的下標可以是常量,也可以是有了確定值的變量;
2)在過程中可以多次使用ReDim來改變數(shù)組的大小,也可改變數(shù)組的維數(shù)。
3)每次使用ReDim語句都會使原來數(shù)組中的值丟失,可以在ReDim語句后加Preserve參數(shù)來保留數(shù)組中的數(shù)據(jù),但使用Preserve只能改變最后一維的大小,前面幾維大小不能改變。

3.動態(tài)數(shù)組使用示例

5.4    數(shù)組的基本操作

1.   給數(shù)組元素賦初值

  (1) 利用循環(huán)結(jié)構(gòu)

    例:Dim  iA(1 To 10) As Integer
       For i=1 To 10
A(i)=0
Next i

  (2) 利用Array函數(shù)

    例:Dim  a As Variant, b As Variant, i%
       
a = Array (1,2,3,4,5)
b = Array ("abc","def","67")
For i=0 To Ubound (a)
Picture1.print a(i);"";
Next i
For i=0 To Ubound (b)
Picture1.print b(i);"";
Next i

2.數(shù)組的輸入

 (1) 通過InputBox函數(shù)輸入適合輸入少量數(shù)據(jù)。

   例:Dim  sB(3,4) As singer
       For i=0 To 3
       For j=0 To 4
        SB(i,j) =InputBox("輸入" & i & j & "的值")
        Next j
Next i

 (2) 通過文本框控件輸入

    對大批量的數(shù)據(jù)輸入,采用文本框和函數(shù)split()\join()進行處理,效率更高。

3.數(shù)組的賦值

    VB6.0中可以直接將一個數(shù)組的值賦值給另一個數(shù)組:
Dim a(3) as integer, b() as integer
A(0)=2: A(1)=5: A(2)=-2: A(3)=2
   
b=a
  在早期的VB中,這需要用循環(huán)語句才可以實現(xiàn):
ReDim b(UBound(a))
For I=0 to UBound(a)
b(I)=a(I)
Next i

   注意:(1)賦值號兩邊的數(shù)據(jù)類型必須一致;
     2)如果賦值號左邊的是一個動態(tài)數(shù)組,則賦值時系統(tǒng)自動將動態(tài)數(shù)組ReDim成右邊相同大小的數(shù)組;
     3)如果賦值號左邊的是一個大小固定的數(shù)組,則數(shù)組賦值出錯。

4.數(shù)組的輸出

  For……Next循環(huán)語句輸出。

5.求數(shù)組中最大元素和所在下標及各元素之和

  求數(shù)組中最大元素及下標,一般假設(shè)第一個元素及下標為最大,然后將該數(shù)與數(shù)組中的其他元素逐一比較,若有比其大的就替換,同時替換下標。

6.交換數(shù)組中各元素

  交換的要求是將數(shù)組第一個元素與最后一個交換,第二個與倒數(shù)第二個交換,依次類推。

5.5    控件數(shù)組

1.控件數(shù)組的概念

  控件數(shù)組是由一組相同類型的控件組成的,它們共用一個控件名,具有相同的數(shù)組。控件數(shù)組適用于若干個控件執(zhí)行的操作相似的場合,控件組共享同樣的事件過程。控件數(shù)組通過索引號(屬性中的Index)來標識各控件,第一個下標是0 。如:Text1(0)Text1(1)、Text1(2)、Text1(3)……

2.控件數(shù)組的建立

(1)在設(shè)計時建立
   步驟:1)在窗體上畫出某控件,并進行屬性設(shè)置。
2
)選中該控件進行“復(fù)制”和“粘貼”操作,系統(tǒng)提示“是否建立控件數(shù)組”,選擇是即可。多次粘貼就可以創(chuàng)建多個控件元素。
3
)進行事件過程的編程。

(2)運行時添加控件數(shù)組

  方法:1)在窗體上畫出某控件,設(shè)置該控件的Index值為0,表示該控件為數(shù)組。
2)在編程時通過Load方法添加其余若干個元素,也可以通過Unload刪除某個添加的元素。
3)每個添加的控件數(shù)組通過Left Top屬性,確定其在窗體上的位置,并將Visible設(shè)置為True。

  使用示例:建立一個類似國際象棋的棋盤,要求黑白交替,運行時單擊某個棋格,會改變顏色并顯示其序號。

5.6    自定義數(shù)據(jù)類型

1. 自定義數(shù)據(jù)類型的定義

   是指由若干標準數(shù)據(jù)類型組成的一種復(fù)合類型,也稱為記錄類型。

1)定義方式:

  Type 自定義類型名
     元素名[(下標)]  As 類型名
      ……
     元素名[(下標)]  As 類型名
 
End Type

   元素名:表示自定義類型中的一個成員
下標(可選):表示是數(shù)組,
類型名:為標準類型

  例:定義一個學(xué)生信息的自定義類型:
   
Type studtype
No   As  Integer        
' 定義學(xué)號
     
Name  As  String*10    ' 定義姓名
   
  Sex  As  String*2       ' 定義性別
   
  Mark(1 TO 4) As Single   ' 定義4門課程的成績
     
Total As Single           ' 定義總分
   
End Type

2)注意事項

  1)自定義類型一般在標準模塊(.bas)中定義,默認是Public
2)自定義類型中的元素可以是字符串,但應(yīng)是定長字符串
3)  不可把自定義類型名與該類型的變量名混淆
4) 注意自定義類型變量與數(shù)組的差別:它們都由若干元素組成,前者的元素代表不同性質(zhì)、不同類型的數(shù)據(jù),以元素名表示不同的元素;后者存放的是同種性質(zhì)、同種類型的數(shù)據(jù),以下標表示不同元素。

2. 自定義型變量的聲明和使用

   使用形式: Dim 變量名  As  自定義類型名
例如: Dim  student As studtypemystud  As studtype
 自定義類型中元素的表示方法是:變量名 . 元素名  如:student.name  student.mark(4)
為了簡單起見,可以用With …… End With 語句進行簡化。 例:
    With  student
.no=99001
.name=""
.sex=""
.total=0
for I=1 to 4
     .mark(I)=int(rnd*101)     '隨機產(chǎn)生0 - 100之間的分數(shù)
.total=.total+.may(I)
next I
End With
Mystud=student      ' 同種自定義類型變量可以直接賦值

3.自定義類型數(shù)組的使用

   自定義類型數(shù)組就是數(shù)組中的每個元素都是自定義類型。
例如:自定義一個由學(xué)生姓名、成績組成的學(xué)生記錄類型,用來存放100個學(xué)生的記錄。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多