官术网_书友最值得收藏!

第4章 同類(lèi)型批量數(shù)據(jù)管理的技巧—數(shù)組

本章視頻教學(xué)錄像:1小時(shí)2分鐘

在實(shí)際應(yīng)用過(guò)程中,將一批相互有聯(lián)系、有一定順序、同一類(lèi)型和具有相同性質(zhì)的數(shù)據(jù)采用集合進(jìn)行定義和存儲(chǔ),這樣的集合就是數(shù)組。數(shù)組在同類(lèi)型批量數(shù)據(jù)管理中有著很廣泛的應(yīng)用。本章將帶領(lǐng)讀者從數(shù)組的基礎(chǔ)開(kāi)始循序漸進(jìn)地學(xué)習(xí)。本章介紹數(shù)組的基本概念、基本操作和數(shù)組相關(guān)函數(shù)及語(yǔ)句,主要包括定長(zhǎng)和動(dòng)態(tài)數(shù)組和數(shù)組元素的輸入、輸出、插入、查找、刪除等。

本章要點(diǎn)(已掌握的在方框中打鉤)

□ 了解數(shù)組的基本概念和分類(lèi)

□ 了解數(shù)組的引用和初始化

□ 掌握數(shù)組元素的插入、刪除和查找

□ 熟悉數(shù)組元素的應(yīng)用及排序

□ 了解數(shù)組相關(guān)的函數(shù)

□ 了解數(shù)組相關(guān)的語(yǔ)句

4.1 數(shù)組的概念

本節(jié)視頻教學(xué)錄像:10分鐘

數(shù)組的英文名是“Array”。Array在英文中是“陣列”的意思。所謂“陣列”,就是一組集中的、排列有序的集合。數(shù)組并不是一種數(shù)據(jù)類(lèi)型,而是一組相同類(lèi)型的變量的集合,可用于存儲(chǔ)和處理成組的有序數(shù)據(jù),數(shù)組必須先聲明后使用。每一個(gè)數(shù)組給定一個(gè)名稱(chēng),叫作數(shù)組名;數(shù)組中的每一個(gè)數(shù)或變量被稱(chēng)為數(shù)組元素;一個(gè)數(shù)組中各個(gè)數(shù)組元素之間的區(qū)別用數(shù)組的下標(biāo)來(lái)表示,放在數(shù)組名后面的括號(hào)內(nèi),因此,數(shù)組元素又被稱(chēng)為下標(biāo)變量。

總體上數(shù)組可分為兩類(lèi): 定長(zhǎng)(靜態(tài))數(shù)組和動(dòng)態(tài)(可變長(zhǎng))數(shù)組。

提示

數(shù)組和簡(jiǎn)單變量相比有以下幾個(gè)特點(diǎn)。⑴ 數(shù)組的命名規(guī)則和簡(jiǎn)單變量的命名規(guī)則相同。⑵ 數(shù)組的數(shù)據(jù)類(lèi)型和數(shù)組中所存儲(chǔ)的數(shù)組元素的類(lèi)型必須相同。⑶ 由于受到計(jì)算機(jī)硬件和軟件條件的限制,數(shù)組中的元素個(gè)數(shù)必須是有限的。

4.1.1 定長(zhǎng)數(shù)組及聲明

定長(zhǎng)數(shù)組是一組具有相同類(lèi)型的變量的有序集合,集合中的變量稱(chēng)為數(shù)組元素。數(shù)組元素共用一個(gè)名字,通過(guò)下標(biāo)來(lái)唯一標(biāo)識(shí)自己。

在使用某個(gè)數(shù)組前,需要先聲明該數(shù)組。對(duì)數(shù)組進(jìn)行聲明,應(yīng)該包括數(shù)組名、維數(shù)、大小、類(lèi)型以及作用域等。

數(shù)組聲明語(yǔ)句的具體語(yǔ)法是:

      Dim|Private|Public|Static數(shù)組名([下界1 To]上界1,<[下界2 To]上界2,……>) [As數(shù)據(jù)類(lèi)型]

對(duì)數(shù)組聲明語(yǔ)句的說(shuō)明如下。

Dim:聲明普通局部數(shù)組。

Private:聲明模塊級(jí)數(shù)組。

Public:聲明可在工程任何模塊中使用的數(shù)組。

Static:聲明靜態(tài)數(shù)組。

As:用來(lái)說(shuō)明數(shù)組元素的類(lèi)型。聲明時(shí)若沒(méi)有指定數(shù)組的數(shù)據(jù)類(lèi)型,則默認(rèn)是變體型。

例如:

      Dim Private A(6 To 12)As lnteger      '數(shù)組A為私有整型一維數(shù)組,共7個(gè)元素,下標(biāo)從6到12。
      Dim Public N(-3 to 6,9)      '聲明數(shù)組N為公用二維數(shù)組,共有10*10=100個(gè)元素。

注意

在聲明數(shù)組時(shí),也可以使用類(lèi)型說(shuō)明符代替“[As數(shù)據(jù)類(lèi)型]”,例如:

            Dim a$(10)      '字符串類(lèi)型數(shù)組
            Dim b%(5,5)     '整型數(shù)組

4.1.2 動(dòng)態(tài)數(shù)組及聲明

有時(shí)我們并不能在編寫(xiě)程序的時(shí)候就確定數(shù)組中到底會(huì)存儲(chǔ)多少元素,對(duì)于這種情況,一般的解決方法是對(duì)所有的數(shù)組都按照它可能的數(shù)組元素的最大值創(chuàng)建數(shù)組,但是這樣會(huì)浪費(fèi)很多存儲(chǔ)空間。動(dòng)態(tài)數(shù)組就是為了解決這個(gè)問(wèn)題而產(chǎn)生的。動(dòng)態(tài)數(shù)組中的數(shù)組元素個(gè)數(shù)不定,并且可以根據(jù)需要?jiǎng)討B(tài)改變數(shù)組元素的個(gè)數(shù)。

可以按照下面的步驟創(chuàng)建一個(gè)動(dòng)態(tài)數(shù)組。

⑴ 首先像前面定長(zhǎng)數(shù)組的聲明一樣,先聲明一個(gè)數(shù)組,但是不說(shuō)明維數(shù)和界限。

      Dim|Private|Public|Static數(shù)組名() [As數(shù)據(jù)類(lèi)型]

⑵ 然后在實(shí)際使用的時(shí)候用ReDim語(yǔ)句定制數(shù)組的維數(shù)和上下界,為數(shù)組分配實(shí)際的內(nèi)存空間。

      ReDim [Preserve] 數(shù)組名(<維數(shù)說(shuō)明>) [As類(lèi)型]

使用ReDim語(yǔ)句時(shí),需要遵循下面一些規(guī)則。

⑴ ReDim語(yǔ)句中的維界定義中的上下界可以是常量,也可以是有了確定值的變量。

⑵ ReDim語(yǔ)句只能出現(xiàn)在過(guò)程體內(nèi),為數(shù)組臨時(shí)分配存儲(chǔ)空間,當(dāng)所在過(guò)程結(jié)束時(shí),分配的存儲(chǔ)空間就會(huì)釋放。

⑶ 使用Redim語(yǔ)句時(shí),如果不使用Preserve選項(xiàng),原來(lái)數(shù)組中的值會(huì)丟失,即數(shù)組中的內(nèi)容全部被重新初始化,當(dāng)前存儲(chǔ)在數(shù)組中的值會(huì)全部丟失。Visual Basic會(huì)重新將數(shù)組元素的值置為Empty(對(duì)Variant數(shù)組)、0(對(duì)Numeric數(shù)組)、零長(zhǎng)度字符串(對(duì)String數(shù)組)或者Nothing(對(duì)于對(duì)象的數(shù)組)。如果希望改變數(shù)組大小又不丟失數(shù)組中的數(shù)據(jù),使用具有Preserve關(guān)鍵字的ReDim語(yǔ)句就可以做到這點(diǎn)。

使用ReDim語(yǔ)句時(shí),如果使用Preserve選項(xiàng),則在對(duì)數(shù)組重新說(shuō)明時(shí),將會(huì)保留數(shù)組中原來(lái)的數(shù)據(jù),但是不能改變維數(shù),并且只能改變最后一維的大小,前面維的大小不能改變。

提示

⑴ 在動(dòng)態(tài)數(shù)組ReDim語(yǔ)句中的下標(biāo)可以是常量,也可以是確定值的變量。

⑵ 在過(guò)程中可以多次使用ReDim來(lái)改變數(shù)組的大小,也可改變數(shù)組的維數(shù)。

⑶ 每次使用ReDim語(yǔ)句都會(huì)使原來(lái)數(shù)組中的值丟失,可以在ReDim語(yǔ)句后加Preserve參數(shù)來(lái)保留數(shù)組中的數(shù)據(jù),但只能改變最后一維的大小,前面幾維大小不變。

4.2 數(shù)組基本操作

本節(jié)視頻教學(xué)錄像:34分鐘

在數(shù)組的學(xué)習(xí)中,數(shù)組的應(yīng)用是非常重要的一項(xiàng)內(nèi)容,而這就需要我們了解數(shù)組的一些基本功能,熟練掌握一些數(shù)組的基本操作和實(shí)現(xiàn)。本小節(jié)就讓我們來(lái)一起學(xué)習(xí)一些數(shù)組的基本操作。

4.2.1 數(shù)組的引用

數(shù)組元素的引用—數(shù)組名(下標(biāo))。

例如:求數(shù)組中的最大元素及所在下標(biāo)。

      Dim Max As lnteger, iMax As lnteger
      Dim ia(1 to 10) as integer
      Max=iA(1):iMax=1
      For i=2 To 10
        lf iA(i)>Max Then
        Max=iA(i)
        iMax=i
      End lf
      Next l

4.2.2 數(shù)組的初始化

當(dāng)數(shù)組被聲明后,根據(jù)數(shù)組被聲明的數(shù)據(jù)類(lèi)型,數(shù)組中的元素將被賦予不同的默認(rèn)值。

提示

⑴ 初始值與相應(yīng)數(shù)組元素一對(duì)應(yīng),初始值相互之間用逗號(hào)隔開(kāi)。

⑵ 初始化前對(duì)數(shù)組元素的定義不能是具體的數(shù)據(jù)類(lèi)型,只能是Variant或默認(rèn)類(lèi)型。

⑶ 對(duì)于該數(shù)組可以不定義而直接由Array函數(shù)來(lái)確定。

⑷ 此種方法只能初始化一維數(shù)組。

4.2.3 數(shù)組元素的輸入、輸出

1. 數(shù)組元素的輸入

對(duì)于數(shù)組元素較少的數(shù)組,可通過(guò)單個(gè)賦值語(yǔ)句進(jìn)行輸入操作;對(duì)于數(shù)組元素較多的數(shù)組,一般通過(guò)For語(yǔ)句、InputBox函數(shù)和文本框輸入。

⑴ 通過(guò)InputBox函數(shù)輸入適合輸入少量數(shù)據(jù)

例如:

      01 Dim SB(3,4)As singer
      02   For i=0 To 3
      03   For j=0 To 4
      04    SB(i,j)=lnputBox("輸入"&i&j&"的值")
      05   Next j
      06 Next i

⑵ 通過(guò)For語(yǔ)句輸入

例如:

      01 Option Base 1           '默認(rèn)下標(biāo)下界為1
      02 DlM b(2,3)as single
      03 For i=1 to 2
      04   For i=1 to 3
      05     b(i,j)=inputbox("輸入b(" & i &","& j &")的值")
      06   Next
      07 Next

⑶ 通過(guò)文本框控件輸入

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

2. 數(shù)組的輸出

數(shù)組的輸出同樣是以數(shù)組元素為操作對(duì)象,可通過(guò)Print方法來(lái)實(shí)現(xiàn),也可用For…Next循環(huán)語(yǔ)句輸出。

⑴ 通過(guò)For…Next循環(huán)語(yǔ)句實(shí)現(xiàn)輸出

例如:

      01 For i=1 To 10
      02   Print A(i),             '在一行上顯示
      03   Next l
      04 For i=1 To 100
      05   Print B(i),
      06   lf i Mod 10=0 Then Print         '每10個(gè)一行顯示
      07 Next i

⑵ 通過(guò)print方法實(shí)現(xiàn)輸出

例如:輸出方陣中下三角元素。

      01 Dim sc(5,5)As lnteger,i As lnteger,j As lnteger
      02   For i=1 To 5
      03      For j=1 To 5
      04        sc(i,j)=i*j;      '數(shù)組賦初值
      05      Next
      06   Next
      07   For i=1 To 5
      08      For j=1 To i       '內(nèi)循環(huán)控制每行輸出的元素個(gè)數(shù)
      09        Print sc(i,j);     '以緊湊格式輸出數(shù)組元素
      10      Next
      11      Print
      12   Next

4.2.4 數(shù)組元素的插入、刪除和查找

數(shù)組元素的插入、刪除操作一般是在已排序好的數(shù)組中插入或刪除一個(gè)元素,使得插入或刪除以后的數(shù)組還是有序的;這涉及到查找問(wèn)題,在數(shù)組中先找到插入的位置或刪除的元素,然后進(jìn)行相應(yīng)的操作。

1.數(shù)組中元素的插入

例如:設(shè)有一按升序排列的有n個(gè)元素的數(shù)組a(數(shù)組元素為整型),現(xiàn)將一個(gè)數(shù)“11”插入后,仍保持其有序。

解題思路:

⑴ 查找插入位置k(1≤k ≤n-1)。

⑵ 從n-1到k逐一往后移動(dòng)一個(gè)位置,將第k個(gè)元素的位置騰出。

⑶ 將數(shù)據(jù)插入。

      01 Dim a(),i,k As lnteger
      02 Print"插入前:";
      03 Redim a(1 To 9)  '給數(shù)組元素賦值
      04 a=Array(2,4,6,8,10,12,14,16)
      05 For i=1 To 8
      06  Print a(i);
      07 Next
      08 For k=1 To 9    '查找插入的位置
      09  lf 10=a(k)Then Exit For
      10 Next
      11 For i=9 To k setp-1      '從k+1元素開(kāi)始往前移動(dòng)
      12  a(i+1)=a(i)
      13 Next
      14 a(k)=11
      15 Print"插入后:";
      16 For i=1 To 9
      17  Print a(i);
      18 Next

2. 數(shù)組中元素的刪除

解題思路:

⑴ 查找欲刪除的元素所在的位置k。

⑵ 從k+1到n個(gè)位置逐個(gè)往前移動(dòng)。⑶ 將數(shù)組個(gè)數(shù)減1。

例如:刪除數(shù)組一個(gè)元素。設(shè)數(shù)組的元素為(2,4,6,8,10,11, 12,14,16),刪除其中的元素“11”。

      01 Dim a(),i,k As lnteger
      02 Print"插入前:";
      03 Redim a(1 To 9)  '給數(shù)組元素賦值
      04 a=Array(2,4,6,8,10,11,12,14,16)
      05 For i=1 To 9
      06  Print a(i);
      07 Next
      08 For k=1 To 9    '查找插入的位置
      09  lf 11=a(k)Then Exit For
      10 Next
      11 For i=k+1 To 9 '從k+1元素開(kāi)始往前移動(dòng)
      12  a(i-1)=a(i)
      13 Next
      14 Redim Preserve a(1 To 8)  '利用數(shù)組重新聲明減少一個(gè)元素,但保持?jǐn)?shù)組原來(lái)的值
      15 Print:Print       '顯示插入后的數(shù)組元素
      16 Print"插入后:";
      17 For i=1 To 8
      18  Print a(i);
      19 Next

4.2.5 數(shù)組元素的應(yīng)用及排序

排序就是將一組數(shù)按遞增或遞減的次序重新排列。常用的方法有選擇法、冒泡法、插入法。

1. 選擇法排序

算法描述:

設(shè)有n個(gè)數(shù)的數(shù)組a(1),a(2),…,a(n),要求按遞增的次序排列。

首先設(shè)變量k用于存放當(dāng)前最小數(shù)的下標(biāo),然后按下列步驟進(jìn)行。

⑴ 從n個(gè)數(shù)中選出最小元素的下標(biāo),然后將最小數(shù)與第一個(gè)數(shù)交換位置,即a(k)與a(1)互換。先將a(k)與a(2)進(jìn)行比較,k的初值為1,若a(2)<a(k),則將變量k指向2(k總是為較小元素的下標(biāo)值);再將a(k) 與a(3)…a(n-1)、a(n)比較,并依次做出同樣的處理,最終k為n個(gè)數(shù)中最小元素的下標(biāo),a(k)為最小的元素,此時(shí)將a(k)與a(1)互換。

⑵ 從除第一個(gè)數(shù)外,其余n-1個(gè)數(shù)按步驟⑴的方法選出次小的數(shù),使a(k)與a(2)交換位置。先將k置為2,將a(k)與a(3)、a(4)、…、a(n-1)、a(n)比較,每當(dāng)a(i)<a(k)時(shí),置k為i,最后,k為第一輪余下的n-1個(gè)數(shù)中的最小數(shù),將a(k)與a(2)互換。

⑶ 繼續(xù)進(jìn)行第三輪,第四輪…直到第n-1輪,余下的a(n)就是n個(gè)數(shù)中的最大值。

至此,n個(gè)數(shù)已從小到大順序存放到數(shù)組a中。

2. 冒泡法排序

冒泡法在每一輪排序時(shí)將相鄰的數(shù)比較,當(dāng)次序不對(duì)就交換位置,冒泡法若有n個(gè)元素,則需要比較n-1輪,比較方向可以從右向左,也可以從左向右,而且每一輪都是從頭比較到尾。

例如:將數(shù)組中的6個(gè)數(shù),用冒泡排序法排序。

      01 Dim a(6)As lnteger
      02 Dim k,n,i,j,t As lnteger
      03 Randomize
      04 n=6
      05 For i=1 To n
      06 a(i)=lnt(Rnd*9)+1    '給數(shù)組6個(gè)元素賦值,0~9中的隨機(jī)整數(shù)
      07 Label3.Caption=Label3.Caption+Str(a(i))
      08 Next
      09 '冒泡排序法
      10 For i=1 To n-1
      11   For j=n To i+1 Step-1
      12     lf a(j-1)>a(j)Then  '相鄰元素比較
      13      t=a(j)
      14      a(j)=a(j-1)
      15      a(j-1)=t
      16     End lf
      17   Next
      18  Label4.Caption=Label4.Caption+Str(a(i)) '將排序結(jié)果顯示在Label上
      19 Next
      20 Label4.Caption=Label4.Caption+Str(a(i))

4.3 數(shù)組相關(guān)函數(shù)及語(yǔ)句

本節(jié)視頻教學(xué)錄像:14分鐘

數(shù)組相關(guān)函數(shù)及語(yǔ)句是數(shù)組的比較常用的實(shí)現(xiàn)方式,本小節(jié)讓我們來(lái)認(rèn)識(shí)和學(xué)習(xí)一些在數(shù)組中比較常用的數(shù)組相關(guān)函數(shù)及語(yǔ)句。

4.3.1 Array函數(shù)

Array函數(shù)格式:數(shù)組變量名=Array(數(shù)組元素值表)。

功能:把一組數(shù)據(jù)賦給數(shù)組中的每個(gè)元素。

說(shuō)明:

⑴ 數(shù)組元素值表是一個(gè)用逗號(hào)分隔的值表,這些值構(gòu)成數(shù)組的各元素值。

⑵ Array函數(shù)僅適用于一維數(shù)組,只能給Variant類(lèi)型的變量賦值,賦值后的數(shù)組大小由參數(shù)的個(gè)數(shù)決定。

⑶ 使用array函數(shù)創(chuàng)建的數(shù)組,其下界受Option base語(yǔ)句指定的下界的限制。

⑷ 若不提供參數(shù),則創(chuàng)建一個(gè)長(zhǎng)度為0的數(shù)組。

提示

數(shù)組變量名是預(yù)先定義的數(shù)組名。在數(shù)組變量名后沒(méi)有括號(hào)。采用變量定義形式,作為數(shù)組使用,類(lèi)型為variant。

例如:要將1、2、3、4、5、6、7、8、9、10這些值賦給數(shù)組A,可以使用下面的方法。

      Dim A
      A = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

4.3.2 UBound函數(shù)和LBound函數(shù)

函數(shù)格式:

      LBound(數(shù)組名[,N])
      UBound(數(shù)組名['N])

功能:

LBound函數(shù)返回“數(shù)組名”指定的數(shù)組的第N維的下界。

UBound函數(shù)返回“數(shù)組名”指定的數(shù)組的第N維的上界。

說(shuō)明:N為1表示第一維,N為2表示第二維,等等。如果省略N,則默認(rèn)為1。

例如:要打印一維數(shù)組A的各個(gè)值,可以通過(guò)下面的代碼實(shí)現(xiàn)。

      For l = LBound(A) To UBound(A)
          Print A(l);
      Next l

例如:要打印二維數(shù)組B的各個(gè)值,可以通過(guò)下面的代碼實(shí)現(xiàn)。

      01 For l=LBound(B,1)To UBound(B,1)
      02   For J=LBound(B,2)To UBound(B,2)
      03     Print B(l,J);
      04   Next J
      05   Print
      06 Next l

4.3.3 Split函數(shù)

Split函數(shù)格式:Split(字符串表達(dá)式[,分隔符])

功能:以某個(gè)指定符號(hào)作為分隔符,將“字符串表達(dá)式”指定的字符串分離為若干個(gè)子字符串,以這些子字符串為元素構(gòu)成一個(gè)下標(biāo)從零開(kāi)始的一維數(shù)組。

說(shuō)明:“字符串表達(dá)式”用于指定要被分隔的字符串,“分隔符”是可選的,如果忽略,則使用空格作為分隔符。例如:

      Dim A
      A = Split("how are you", " ")

執(zhí)行以上賦值之后:

      A(0)="how",A(1)="are",A(2)="you"。

也可以用Split函數(shù)給一個(gè)動(dòng)態(tài)數(shù)組賦值。例如:

      Dim A() As String
      A = Split("how are you", " ")

4.3.4 Option Base語(yǔ)句

在模塊級(jí)別中使用,用來(lái)聲明數(shù)組下標(biāo)的缺省下界。

語(yǔ)法:Option Base {0 | 1}

說(shuō)明:由于下界的缺省設(shè)置是0,因此無(wú)需使用Option Base語(yǔ)句。如果使用該語(yǔ)句,則必須寫(xiě)在模塊的所有過(guò)程之前。一個(gè)模塊中只能出現(xiàn)一次Option Base,且必須位于帶維數(shù)的數(shù)組聲明之前。

注意 :Dim、Private、Public、ReDim以及Static語(yǔ)句中的To子句提供了一種更靈活的方式來(lái)控制數(shù)組的下標(biāo)。不過(guò),如果沒(méi)有使用To子句顯式地指定下界,則可以使用Option Base將缺省下界設(shè)為1。使用Array函數(shù)或ParamArray關(guān)鍵字創(chuàng)建的數(shù)組的下界為0,Option Base對(duì)Array或ParamArray不起作用。Option Base語(yǔ)句只影響位于包含該語(yǔ)句的模塊中的數(shù)組下界。例如:

      01 Option base 1  '將缺省的數(shù)組下標(biāo)設(shè)為1
      02 Dim LowerDim MyArray(20)
      03 TwoDArray(3,4) '聲明數(shù)組變量
      04 Dim ZeroArray(0 To 5) '取代缺省的下標(biāo)
      05 LBound   '使用函數(shù)來(lái)測(cè)試數(shù)組的下界
      06 Lower=LBound(MyArray) '返回1
      07 Lower=LBound(TwoDArray,2) '返回1
      08 Lower=LBound(ZeroArray)

【范例4-1】 編寫(xiě)代碼以實(shí)現(xiàn)運(yùn)行程序后單擊窗體,在窗體上垂直輸出1、2、3、4、5。

⑴ 啟動(dòng)Visual Basic 6.0,在彈出的【新建工程】對(duì)話框中選擇【標(biāo)準(zhǔn)EXE】圖標(biāo),然后單擊【打開(kāi)】按鈕。

⑵ 在【Form1】窗體上單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【查看代碼】菜單項(xiàng),進(jìn)入代碼窗口。

⑶ 在代碼窗口中選擇【Form】窗體的【Click】事件。

技巧

用鼠標(biāo)雙擊窗體或者選擇【視圖】菜單下的【代碼窗口】命令,也可以進(jìn)入代碼窗口。

⑷ 輸入以下代碼。

      01 Private Sub Form_Click()
      02  Dim l As lnteger '定義一個(gè)整型變量
      03  Dim a%(5)     '定義一個(gè)整型數(shù)組,并為數(shù)組設(shè)置元素個(gè)數(shù)
      04   For l=1 To 5  '從1至5開(kāi)始循環(huán)運(yùn)算
      05    a(l)=l       '為數(shù)組賦值
      06    Print a(l)     '輸出數(shù)組中的元素值
      07   Next l '循環(huán)不結(jié)束,繼續(xù)下一次循環(huán)
      08 End Sub

【運(yùn)行結(jié)果】

保存程序,單擊【啟動(dòng)】按鈕,運(yùn)行程序。用鼠標(biāo)單擊窗體,將會(huì)在窗體中垂直顯示1、2、3、4、5等數(shù)字。

【拓展訓(xùn)練】

既然能輸出“1、2、3、4、5”這幾個(gè)數(shù)字,那么要想輸出100~110這一系列數(shù)字也就不是一件很難的事了。

只需要對(duì)步驟⑷中的代碼進(jìn)行相關(guān)的修改就可以了(拓展代碼2-1.txt)。

      01 Private Sub Form_Click()
      02  Dim l As lnteger '定義整型變量
      03  Dim a%(100 To 110)     '定義整型數(shù)組,并為其設(shè)置坐標(biāo)上限和下限
      04  For l=100 To 110      '利用循環(huán)語(yǔ)句開(kāi)始循環(huán)
      05   a(l)=l       '為數(shù)組賦值
      06   Print a(l)      '輸入數(shù)組元素
      07  Next l  '循環(huán)條件為真,進(jìn)行下一次循環(huán)
      08 End Sub

提示

在修改程序時(shí),主要是對(duì)數(shù)組所定義的上界和下界進(jìn)行了修改。如果對(duì)程序限界定義的過(guò)大,則會(huì)造成系統(tǒng)資源的浪費(fèi);如果對(duì)程序上界和下界定義過(guò)少,則會(huì)出現(xiàn)下標(biāo)越界的嚴(yán)重錯(cuò)誤。

運(yùn)行后,單擊窗體就會(huì)看到所需的結(jié)果。

4.4 高手點(diǎn)撥

本節(jié)視頻教學(xué)錄像:4分鐘

在平時(shí)使用數(shù)組進(jìn)行賦值時(shí),以下一些常見(jiàn)的問(wèn)題需要注意。

1. 只能將數(shù)據(jù)類(lèi)型定義為可變類(lèi)型

賦值的數(shù)據(jù)雖然可以有多種類(lèi)型,但定義時(shí)必須將數(shù)據(jù)定義成可變型。若定義成其他類(lèi)型,比如定義為整型:

      Dim a() As Integer
      A()=Array(1,3,5,10)

則系統(tǒng)會(huì)報(bào)告類(lèi)型錯(cuò)誤。就是說(shuō)在利用Dim等進(jìn)行定義時(shí),除了Variant類(lèi)型外,Integer等其他類(lèi)型都不適合這種形式。

2. 數(shù)組定義時(shí)不要指定上、下界

比如要對(duì)10個(gè)數(shù)據(jù)進(jìn)行賦值,不能將數(shù)組定義成:

      Dim s(10) As Variant

這樣當(dāng)利用Array函數(shù)賦值時(shí)系統(tǒng)將會(huì)報(bào)錯(cuò)。也就是說(shuō)數(shù)組s()應(yīng)定義成動(dòng)態(tài)數(shù)組,不指定上下界,其上下界在用Array函數(shù)賦值時(shí)自動(dòng)指定。

3. 有關(guān)數(shù)組的隱性聲明

當(dāng)使用數(shù)組的隱性聲明形式時(shí),即不對(duì)數(shù)組進(jìn)行提前聲明而直接使用Array函數(shù)賦值時(shí),要注意此時(shí)數(shù)組名要省略其后面的括號(hào),數(shù)組s()應(yīng)寫(xiě)成s,即有:

      s=Array(...)

而如果寫(xiě)成s()=Array(...),系統(tǒng)將會(huì)報(bào)錯(cuò)。只要注意了以上幾點(diǎn),對(duì)數(shù)組的大量數(shù)據(jù)初始化問(wèn)題就能得到順利的解決。

4.5 實(shí)戰(zhàn)練習(xí)

查找下標(biāo)為0,上標(biāo)為9的數(shù)組中值為“5”的元素索引值,若沒(méi)有,則返回“找不到”。

主站蜘蛛池模板: 浦江县| 福州市| 博野县| 安顺市| 都江堰市| 合江县| 文成县| 鹤峰县| 乌兰察布市| 临猗县| 莱州市| 恩施市| 萝北县| 横山县| 台东县| 青海省| 维西| 东港市| 定襄县| 黑龙江省| 白城市| 乌鲁木齐市| 南江县| 巩留县| 启东市| 积石山| 武宣县| 光泽县| 深圳市| 来凤县| 晋宁县| 卢氏县| 曲麻莱县| 镇巴县| 汕头市| 云梦县| 阳东县| 曲阳县| 德庆县| 五常市| 南投市|