三、數(shù)組
1、數(shù)組的引出
數(shù)組的基本功能是存儲一系列類型一致的變量,并且可以用相同名字引用這些變量,引用時用數(shù)字(索引)來識別它們(如控件數(shù)組Label1(Index))。當使用多個類型和功能一致的數(shù)據(jù)時,使用數(shù)組可以縮短和簡化程序。
數(shù)組——用一個名字來代表的按一定順序排列的一組具有相同屬性、類型的數(shù)據(jù)或變量。
數(shù)組元素——數(shù)組中的每個數(shù)據(jù)或變量稱為數(shù)組元素。
數(shù)組名的命名規(guī)則——和變量名的規(guī)則相同。
例如用戶要記錄一個班級的同學的名字,可以為每一個同學定義一個變量用來記錄他們的名字,例如studentl、student2……。但是這樣做顯然是一種非常笨的方法,因為這些變量的類型都是相同的,并且功能相似,都是用來記錄學生名字的。因此,采用數(shù)組的方法就會簡單得多,利用數(shù)組只需要定義一個數(shù)組變量student(下標),然后利用數(shù)組的索引就可以識別數(shù)組中的每一個元素。如下圖所示,顯示了用一維數(shù)組存儲學生姓名的方法。
張三 李四 王五 徐六 ……
student(l) student(2) student(3) student(4) ……
注意:
用一個統(tǒng)一的數(shù)組名和下標來地確定數(shù)組中的元素,更改其中一個元素并不會影響其它元素。
數(shù)組可以聲明為任何基本數(shù)據(jù)類型的數(shù)組,包括用戶自定義類型,數(shù)組中的元素可以屬于同一個數(shù)據(jù)類型。也可以是不同數(shù)據(jù)類型,當數(shù)據(jù)類型為Variant時,各個元素能夠包含不同種類的數(shù)據(jù)(對象、字符串、數(shù)值等等)。
2、數(shù)組分類
按照長度分——可以分成兩種類型的數(shù)組:一種是固定大小的數(shù)組,這種數(shù)組總是保持同樣的大小稱靜態(tài)數(shù)組(定長數(shù)組),另一種是在運行時大小可以改變的稱動態(tài)數(shù)組。
按照級數(shù)分——可以分為一維數(shù)組和多維數(shù)組。
前面介紹的數(shù)組主要是一維數(shù)組,這種數(shù)組適用于存放一系列沒有樹型關系的一維數(shù)據(jù),如姓名、單據(jù)等數(shù)據(jù)。但如果數(shù)據(jù)中有層次關系,例如要記錄一個學校所有班級的學生記錄,當然也可以用一維數(shù)組來實現(xiàn),但是這樣就失去了學生所在班級的信息,如果兩個班級中有重名的學生,就更加無法區(qū)分。這時,利用多維數(shù)組就可以很方便地解決這一問題。
我們可以將這樣的數(shù)據(jù)存儲在一個二維數(shù)組中,二維數(shù)組有兩個索引,第一個表示行(數(shù)組中的班級順序),第二個表示列(班級中的成員)。如下表,顯示了用二維數(shù)組存儲班級成員的方法。
班級1 班級2 班級3 …
張三 趙偉 孔明 …0
李四 齊秦 劉備 …1
王五 王菲 孫權 …2
朱六 于明 關羽 …3
…0 …1 …2 …
例如王菲是第三行、第二列,可表示是為Student(2,1)。
注意:
缺省條件下,數(shù)組的第一個元素的下標為0。
在增加數(shù)組的維數(shù)時,數(shù)組所占的存儲空間會大幅度增加,所以要慎用多維數(shù)組。使用Variant數(shù)組時要更加小心因為他們需要更大的存儲空間。
3、數(shù)組的定義與聲明
在使用數(shù)組之前,一般要聲明數(shù)組,當然也可以采用隱式聲明的方法。聲明數(shù)組的方法與聲明各種類型的變量一樣,可以用Dim,Private,Public或Static來聲明,只不過聲明數(shù)組時需要設置數(shù)組的上下界,也就是數(shù)組下標索引的起始值和中止值。
(1)靜態(tài)數(shù)組:
其聲明的語法如下:
Dim│Private│Public│Static 數(shù)組名([下標下界 To]下標上界) [As 數(shù)據(jù)類型]
說明:
數(shù)組名后是圓擴弧“( )”擴起來,不能采用其它符號。
如果不指明數(shù)組的下標下界,系統(tǒng)默認為是0,數(shù)組的下標上界,使用長整型(Long)數(shù)據(jù),在VB中規(guī)定上界不得超過2,147,483,647。
下標的下界不能大于下標的上界;
可以用變量名或常數(shù)名(以及實數(shù))作為下標邊界,當下標的邊界是常數(shù)名時,數(shù)組的大小固定(靜態(tài)數(shù)組),當下標的邊界是變量名時,數(shù)組的大小可作動態(tài)定義(動態(tài)數(shù)組)。
例(見教材P43):
★ Dim A(10) As Integer '表示數(shù)組名為A,缺省下標界為0,上界為10的有11個整型元素的數(shù)組,即:從A(0),A(1)到A(10);
★ Dim B(1 To 20) As Integer'表示數(shù)組名為B,下標下界為1,下標上界為20的,有20個整型的元素;
★ Dim BirthDay (1 To 10) As Date '表示BirthDay是一個索引從1到10的Date型數(shù)組。
★ Dim DayArray (50)'表示變量是一個有51個索引元素的Variant數(shù)組;
★ Public Class (10) As String '聲明一個長度為11的全局整型數(shù)組Class;
★ Dim Matrix(3,4) As Integer '表示變量是一個二維整型數(shù)組;
★ Dim MyMatrix(1 To 5,4 To 9, 3 To5) As Double '表示變量是一個顯示指定了上下界的三維double數(shù)組;
為數(shù)組賦初值可以采用循環(huán)語句。如:
Dim I As Integer
For I=0 To 11
C(I)=I 'C(0)、C(1)、……C(11)
Next I
例題:下面的練習使用一個名為Temperatures的一維公用數(shù)組來記錄一周七天的日氣溫
1、數(shù)組的引出
數(shù)組的基本功能是存儲一系列類型一致的變量,并且可以用相同名字引用這些變量,引用時用數(shù)字(索引)來識別它們(如控件數(shù)組Label1(Index))。當使用多個類型和功能一致的數(shù)據(jù)時,使用數(shù)組可以縮短和簡化程序。
數(shù)組——用一個名字來代表的按一定順序排列的一組具有相同屬性、類型的數(shù)據(jù)或變量。
數(shù)組元素——數(shù)組中的每個數(shù)據(jù)或變量稱為數(shù)組元素。
數(shù)組名的命名規(guī)則——和變量名的規(guī)則相同。
例如用戶要記錄一個班級的同學的名字,可以為每一個同學定義一個變量用來記錄他們的名字,例如studentl、student2……。但是這樣做顯然是一種非常笨的方法,因為這些變量的類型都是相同的,并且功能相似,都是用來記錄學生名字的。因此,采用數(shù)組的方法就會簡單得多,利用數(shù)組只需要定義一個數(shù)組變量student(下標),然后利用數(shù)組的索引就可以識別數(shù)組中的每一個元素。如下圖所示,顯示了用一維數(shù)組存儲學生姓名的方法。
張三 李四 王五 徐六 ……
student(l) student(2) student(3) student(4) ……
注意:
用一個統(tǒng)一的數(shù)組名和下標來地確定數(shù)組中的元素,更改其中一個元素并不會影響其它元素。
數(shù)組可以聲明為任何基本數(shù)據(jù)類型的數(shù)組,包括用戶自定義類型,數(shù)組中的元素可以屬于同一個數(shù)據(jù)類型。也可以是不同數(shù)據(jù)類型,當數(shù)據(jù)類型為Variant時,各個元素能夠包含不同種類的數(shù)據(jù)(對象、字符串、數(shù)值等等)。
2、數(shù)組分類
按照長度分——可以分成兩種類型的數(shù)組:一種是固定大小的數(shù)組,這種數(shù)組總是保持同樣的大小稱靜態(tài)數(shù)組(定長數(shù)組),另一種是在運行時大小可以改變的稱動態(tài)數(shù)組。
按照級數(shù)分——可以分為一維數(shù)組和多維數(shù)組。
前面介紹的數(shù)組主要是一維數(shù)組,這種數(shù)組適用于存放一系列沒有樹型關系的一維數(shù)據(jù),如姓名、單據(jù)等數(shù)據(jù)。但如果數(shù)據(jù)中有層次關系,例如要記錄一個學校所有班級的學生記錄,當然也可以用一維數(shù)組來實現(xiàn),但是這樣就失去了學生所在班級的信息,如果兩個班級中有重名的學生,就更加無法區(qū)分。這時,利用多維數(shù)組就可以很方便地解決這一問題。
我們可以將這樣的數(shù)據(jù)存儲在一個二維數(shù)組中,二維數(shù)組有兩個索引,第一個表示行(數(shù)組中的班級順序),第二個表示列(班級中的成員)。如下表,顯示了用二維數(shù)組存儲班級成員的方法。
班級1 班級2 班級3 …
張三 趙偉 孔明 …0
李四 齊秦 劉備 …1
王五 王菲 孫權 …2
朱六 于明 關羽 …3
…0 …1 …2 …
例如王菲是第三行、第二列,可表示是為Student(2,1)。
注意:
缺省條件下,數(shù)組的第一個元素的下標為0。
在增加數(shù)組的維數(shù)時,數(shù)組所占的存儲空間會大幅度增加,所以要慎用多維數(shù)組。使用Variant數(shù)組時要更加小心因為他們需要更大的存儲空間。
3、數(shù)組的定義與聲明
在使用數(shù)組之前,一般要聲明數(shù)組,當然也可以采用隱式聲明的方法。聲明數(shù)組的方法與聲明各種類型的變量一樣,可以用Dim,Private,Public或Static來聲明,只不過聲明數(shù)組時需要設置數(shù)組的上下界,也就是數(shù)組下標索引的起始值和中止值。
(1)靜態(tài)數(shù)組:
其聲明的語法如下:
Dim│Private│Public│Static 數(shù)組名([下標下界 To]下標上界) [As 數(shù)據(jù)類型]
說明:
數(shù)組名后是圓擴弧“( )”擴起來,不能采用其它符號。
如果不指明數(shù)組的下標下界,系統(tǒng)默認為是0,數(shù)組的下標上界,使用長整型(Long)數(shù)據(jù),在VB中規(guī)定上界不得超過2,147,483,647。
下標的下界不能大于下標的上界;
可以用變量名或常數(shù)名(以及實數(shù))作為下標邊界,當下標的邊界是常數(shù)名時,數(shù)組的大小固定(靜態(tài)數(shù)組),當下標的邊界是變量名時,數(shù)組的大小可作動態(tài)定義(動態(tài)數(shù)組)。
例(見教材P43):
★ Dim A(10) As Integer '表示數(shù)組名為A,缺省下標界為0,上界為10的有11個整型元素的數(shù)組,即:從A(0),A(1)到A(10);
★ Dim B(1 To 20) As Integer'表示數(shù)組名為B,下標下界為1,下標上界為20的,有20個整型的元素;
★ Dim BirthDay (1 To 10) As Date '表示BirthDay是一個索引從1到10的Date型數(shù)組。
★ Dim DayArray (50)'表示變量是一個有51個索引元素的Variant數(shù)組;
★ Public Class (10) As String '聲明一個長度為11的全局整型數(shù)組Class;
★ Dim Matrix(3,4) As Integer '表示變量是一個二維整型數(shù)組;
★ Dim MyMatrix(1 To 5,4 To 9, 3 To5) As Double '表示變量是一個顯示指定了上下界的三維double數(shù)組;
為數(shù)組賦初值可以采用循環(huán)語句。如:
Dim I As Integer
For I=0 To 11
C(I)=I 'C(0)、C(1)、……C(11)
Next I
例題:下面的練習使用一個名為Temperatures的一維公用數(shù)組來記錄一周七天的日氣溫