VB-第6章-數(shù)組及自定義類型PPT優(yōu)秀課件_第1頁
VB-第6章-數(shù)組及自定義類型PPT優(yōu)秀課件_第2頁
VB-第6章-數(shù)組及自定義類型PPT優(yōu)秀課件_第3頁
VB-第6章-數(shù)組及自定義類型PPT優(yōu)秀課件_第4頁
VB-第6章-數(shù)組及自定義類型PPT優(yōu)秀課件_第5頁
已閱讀5頁,還剩86頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型1高級(jí)程序語言設(shè)計(jì)高級(jí)程序語言設(shè)計(jì)( Visual BasicVisual Basic )第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型主講教師主講教師 胡胡 濱濱西安郵電學(xué)院計(jì)算機(jī)系西安郵電學(xué)院計(jì)算機(jī)系hubin_hubin_2VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型2數(shù)組的概念數(shù)組的概念若我們要求一個(gè)班若我們要求一個(gè)班100個(gè)學(xué)生的平均成績,然個(gè)學(xué)生的平均成績,然 后統(tǒng)計(jì)高于平均分的人數(shù)。后統(tǒng)計(jì)高于平均分的人數(shù)。按以前簡單變量的使用和循環(huán)結(jié)構(gòu)相結(jié)合,求按以前簡單變量的使用和循環(huán)結(jié)構(gòu)相結(jié)合,

2、求平均成績程序段如下:平均成績程序段如下: aver = 0 :sum = 0aver = 0 :sum = 0 For i = 1 To 100 For i = 1 To 100 mark = InputBox( mark = InputBox(輸入輸入 + i + + i + 位學(xué)生的成績位學(xué)生的成績) ) sum = sum + mark sum = sum + mark Next i Next i aver = sum / 100aver = sum / 100 3VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型3若我們要求一個(gè)班若我們要求一個(gè)班100100個(gè)學(xué)生

3、的平均成績,個(gè)學(xué)生的平均成績,然然 后統(tǒng)計(jì)高于平均分的人數(shù)。后統(tǒng)計(jì)高于平均分的人數(shù)。 aver = 0 :sum = 0aver = 0 :sum = 0 For i = 1 To 100 For i = 1 To 100 mark = InputBox( mark = InputBox(輸入輸入 + i + + i + 位學(xué)生的成績位學(xué)生的成績) ) sum = sum + mark sum = sum + mark Next i Next i aver = sum / 100aver = sum / 100markmark是一個(gè)簡單變量,存放的是最后一個(gè)學(xué)生的成績。是一個(gè)簡單變量,存放的是

4、最后一個(gè)學(xué)生的成績。 已有知識(shí)解決方法:再重復(fù)輸入成績,帶來兩個(gè)問題:已有知識(shí)解決方法:再重復(fù)輸入成績,帶來兩個(gè)問題: (1 1)輸入數(shù)據(jù)的工作量成倍增加;)輸入數(shù)據(jù)的工作量成倍增加;(2 2)若本次輸入的成績與上次不同,則統(tǒng)計(jì)的結(jié)果不正確。)若本次輸入的成績與上次不同,則統(tǒng)計(jì)的結(jié)果不正確。 解決此問題的根本方法,引入解決此問題的根本方法,引入數(shù)組數(shù)組,始終保持輸入的數(shù)據(jù),始終保持輸入的數(shù)據(jù),一次輸入,多次使用。一次輸入,多次使用。4VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型4數(shù)組的概念數(shù)組的概念 數(shù)組用于表示一組性質(zhì)相同的有序的數(shù),這一組數(shù)用一個(gè)統(tǒng)數(shù)組用于表示一組

5、性質(zhì)相同的有序的數(shù),這一組數(shù)用一個(gè)統(tǒng)一的名稱來代替,稱為一的名稱來代替,稱為數(shù)組名數(shù)組名。數(shù)組名的命名規(guī)則與簡單變。數(shù)組名的命名規(guī)則與簡單變量的命名規(guī)則相同。量的命名規(guī)則相同。 數(shù)組中的每一個(gè)元素稱為數(shù)組中的每一個(gè)元素稱為數(shù)組元素?cái)?shù)組元素。為了在處理時(shí)能夠區(qū)。為了在處理時(shí)能夠區(qū)分?jǐn)?shù)組中的每一個(gè)元素,需要用一個(gè)索引號(hào)加以區(qū)別,該索分?jǐn)?shù)組中的每一個(gè)元素,需要用一個(gè)索引號(hào)加以區(qū)別,該索引號(hào)稱為引號(hào)稱為下標(biāo)下標(biāo)。數(shù)組中的每一個(gè)元素可以用數(shù)組名和下標(biāo)唯。數(shù)組中的每一個(gè)元素可以用數(shù)組名和下標(biāo)唯一地表示,寫成:一地表示,寫成:數(shù)組名數(shù)組名( (下標(biāo)下標(biāo)) )。 5VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及

6、自定義類型數(shù)組及自定義類型5數(shù)組的概念數(shù)組的概念數(shù)組并不是一種數(shù)據(jù)類型,而是數(shù)組并不是一種數(shù)據(jù)類型,而是一組相同類型數(shù)據(jù)一組相同類型數(shù)據(jù)的的集合。用一個(gè)統(tǒng)一的名字(集合。用一個(gè)統(tǒng)一的名字(數(shù)組名)數(shù)組名)代表邏輯上相代表邏輯上相關(guān)的一批數(shù)據(jù),每個(gè)元素用關(guān)的一批數(shù)據(jù),每個(gè)元素用下標(biāo)變量下標(biāo)變量來區(qū)分;下標(biāo)來區(qū)分;下標(biāo)變量代表元素在數(shù)組中的位置。變量代表元素在數(shù)組中的位置。其表示形式:其表示形式: A(1)A(1),A(10)A(10) X(1,1), X1(1,10), X(2,10) X(1,1), X1(1,10), X(2,10) Y(0,0,0), Y(1,2,5) Y(0,0,0),

7、Y(1,2,5)Dim mark(1 to 100) as integerDim mark(1 to 100) as integer6VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型6數(shù)組的概念數(shù)組的概念Visual Basic中的數(shù)組,按不同的方式可分為以下幾中的數(shù)組,按不同的方式可分為以下幾類:類:按數(shù)組的大?。ㄔ貍€(gè)數(shù))是否可以改變來分為:按數(shù)組的大?。ㄔ貍€(gè)數(shù))是否可以改變來分為:靜態(tài)(定長)數(shù)組、動(dòng)態(tài)(可變長)數(shù)組。靜態(tài)(定長)數(shù)組、動(dòng)態(tài)(可變長)數(shù)組。按元素的數(shù)據(jù)類型可分為:按元素的數(shù)據(jù)類型可分為:數(shù)值型數(shù)組、字符串?dāng)?shù)組、日期型數(shù)組、變體數(shù)組等。數(shù)值型數(shù)組、字

8、符串?dāng)?shù)組、日期型數(shù)組、變體數(shù)組等。按數(shù)組的維數(shù)可分為:按數(shù)組的維數(shù)可分為:一維數(shù)組、二維數(shù)組、多維數(shù)組。一維數(shù)組、二維數(shù)組、多維數(shù)組。對(duì)象數(shù)組:對(duì)象數(shù)組:菜單對(duì)象數(shù)組、控件數(shù)組。菜單對(duì)象數(shù)組、控件數(shù)組。7VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型7數(shù)組的概念數(shù)組的概念 數(shù)組元素在程序中的使用與簡單變量類似,在簡單變數(shù)組元素在程序中的使用與簡單變量類似,在簡單變量允許出現(xiàn)的多數(shù)地方也允許出現(xiàn)數(shù)組元素。數(shù)組量允許出現(xiàn)的多數(shù)地方也允許出現(xiàn)數(shù)組元素。數(shù)組元素也稱為下標(biāo)變量。元素也稱為下標(biāo)變量。在表示數(shù)組元素時(shí),應(yīng)注意以下幾點(diǎn):在表示數(shù)組元素時(shí),應(yīng)注意以下幾點(diǎn): 1)要用圓括

9、號(hào)把下標(biāo)括起來,不能用中括號(hào)或大括要用圓括號(hào)把下標(biāo)括起來,不能用中括號(hào)或大括號(hào)代替,也不能省略圓括號(hào)。號(hào)代替,也不能省略圓括號(hào)。 2)下標(biāo)可以是常量、變量或表達(dá)式,其值必須是整下標(biāo)可以是常量、變量或表達(dá)式,其值必須是整數(shù),否則將被自動(dòng)四舍五入為整數(shù)。數(shù),否則將被自動(dòng)四舍五入為整數(shù)。 3)下標(biāo)的最小取值稱為下界,下標(biāo)的最大取值稱為下標(biāo)的最小取值稱為下界,下標(biāo)的最大取值稱為上界。在不加任何說明的情況下,數(shù)組的下界默認(rèn)上界。在不加任何說明的情況下,數(shù)組的下界默認(rèn)值為值為0。8VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型8數(shù)組的概念數(shù)組的概念n例如,例如,10001000個(gè)學(xué)

10、生的數(shù)學(xué)成績,可以統(tǒng)一取個(gè)學(xué)生的數(shù)學(xué)成績,可以統(tǒng)一取名為名為MScoreMScore。用。用MScore(1)MScore(1)表示第一個(gè)同學(xué)的表示第一個(gè)同學(xué)的數(shù)學(xué)成績數(shù)學(xué)成績( (下標(biāo)為下標(biāo)為1)1),nMScore(345)MScore(345)表示表示a a第第345345個(gè)同學(xué)的數(shù)學(xué)成績個(gè)同學(xué)的數(shù)學(xué)成績( (下標(biāo)為下標(biāo)為345)345)。 9VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型9數(shù)組的概念數(shù)組的概念數(shù)組的維數(shù)數(shù)組的維數(shù) 一個(gè)數(shù)組的元素只有一個(gè)下標(biāo),則稱為一維數(shù)組。例如,一一個(gè)數(shù)組的元素只有一個(gè)下標(biāo),則稱為一維數(shù)組。例如,一班班4040名同學(xué)的英語成績可

11、以表示成名同學(xué)的英語成績可以表示成G(1)G(1)、G(2)G(2)、G(3)G(40)G(3)G(40)。 用兩個(gè)下標(biāo)來表示元素的數(shù)組稱為用兩個(gè)下標(biāo)來表示元素的數(shù)組稱為二維數(shù)組二維數(shù)組。對(duì)于可以表示。對(duì)于可以表示成表格形式的數(shù)據(jù),如矩陣、行列式等,用二維數(shù)組來成表格形式的數(shù)據(jù),如矩陣、行列式等,用二維數(shù)組來表示是比較方便的。若要表示一到六班表示是比較方便的。若要表示一到六班( (設(shè)各班有設(shè)各班有4040人人) )共共240240個(gè)個(gè)學(xué)生的英語成績,可以用二維數(shù)組表示學(xué)生的英語成績,可以用二維數(shù)組表示G(6,40)G(6,40),第一個(gè)下標(biāo),第一個(gè)下標(biāo)表示班級(jí)號(hào),第二個(gè)下標(biāo)表示學(xué)號(hào),則一班表示

12、班級(jí)號(hào),第二個(gè)下標(biāo)表示學(xué)號(hào),則一班3030號(hào)學(xué)生的成績號(hào)學(xué)生的成績可以表示成可以表示成G(1,30)G(1,30)。 根據(jù)需要,還可以使用三維數(shù)組、四維數(shù)組等,根據(jù)需要,還可以使用三維數(shù)組、四維數(shù)組等,VBVB最多允許最多允許有有6060維。維。10VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型10數(shù)組的定義數(shù)組的定義數(shù)組在使用之前必須先聲明,聲明數(shù)組的目的是為數(shù)組分配存數(shù)組在使用之前必須先聲明,聲明數(shù)組的目的是為數(shù)組分配存儲(chǔ)空間,數(shù)組名即為這個(gè)存儲(chǔ)空間的名稱,而數(shù)組元素即為存儲(chǔ)空間,數(shù)組名即為這個(gè)存儲(chǔ)空間的名稱,而數(shù)組元素即為存儲(chǔ)空間的每一個(gè)單元。每個(gè)單元的大小與數(shù)組

13、的類型有關(guān)。儲(chǔ)空間的每一個(gè)單元。每個(gè)單元的大小與數(shù)組的類型有關(guān)。例如,定義某數(shù)組例如,定義某數(shù)組X X為整型數(shù)組,共有為整型數(shù)組,共有1010個(gè)元素,則每個(gè)元素占個(gè)元素,則每個(gè)元素占2 2個(gè)字節(jié),整個(gè)數(shù)組占個(gè)字節(jié),整個(gè)數(shù)組占2020個(gè)字節(jié)的存儲(chǔ)空間。個(gè)字節(jié)的存儲(chǔ)空間。 按數(shù)組占用存儲(chǔ)空間的方式不同,按數(shù)組占用存儲(chǔ)空間的方式不同,VBVB有兩種數(shù)組:有兩種數(shù)組:固定大小的固定大小的數(shù)組和動(dòng)態(tài)數(shù)組。數(shù)組和動(dòng)態(tài)數(shù)組。兩種數(shù)組的定義方法不同,使用方法也略有兩種數(shù)組的定義方法不同,使用方法也略有不同。固定大小的數(shù)組是指數(shù)組元素的個(gè)數(shù)在程序的執(zhí)行期間不同。固定大小的數(shù)組是指數(shù)組元素的個(gè)數(shù)在程序的執(zhí)行期間不

14、能改變的數(shù)組。這種數(shù)組在編譯階段就已經(jīng)確定了存儲(chǔ)空不能改變的數(shù)組。這種數(shù)組在編譯階段就已經(jīng)確定了存儲(chǔ)空間,直到程序執(zhí)行完畢。間,直到程序執(zhí)行完畢。11VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型11數(shù)組的定義數(shù)組的定義靜態(tài)數(shù)組及聲明靜態(tài)數(shù)組及聲明形式:形式: Dim Dim 數(shù)組名數(shù)組名( (下標(biāo)下標(biāo)1,1,下標(biāo)下標(biāo)2) As 2) As 類型類型 聲明了數(shù)組的名、維數(shù)、大小、類型聲明了數(shù)組的名、維數(shù)、大小、類型 維數(shù):幾個(gè)下標(biāo)為幾維數(shù)組,最多維數(shù):幾個(gè)下標(biāo)為幾維數(shù)組,最多6060維。維。 下標(biāo):下標(biāo): 下界下界 To To 上界上界 省略下界為省略下界為0 ,0 ,

15、必須為常必須為常數(shù)。數(shù)。 每一維大?。荷辖缦陆缑恳痪S大小:上界下界+1 +1 數(shù)組大?。簲?shù)組大小: 每一維大小的乘積每一維大小的乘積 12VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型12數(shù)組的定義數(shù)組的定義例:例:Dim mark(1 to 100) As IntegerDim mark(1 to 100) As Integer13VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型13一維數(shù)組的聲明一維數(shù)組的聲明Dim Dim 數(shù)組名數(shù)組名(toto)As )As 或:或:Dim Dim 數(shù)組名數(shù)組名(toto)例:例:Dim a(1 to 10)

16、 As Integer Dim a(1 to 10) As Integer 聲明了聲明了a a數(shù)組有數(shù)組有1010個(gè)元素個(gè)元素與上面聲明等價(jià)形式:與上面聲明等價(jià)形式: Dim a%(1 to 10) Dim a%(1 to 10) 1是下標(biāo)的下界10是下標(biāo)的上界數(shù)組元數(shù)的數(shù)據(jù)類型14VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型14一維數(shù)組的聲明一維數(shù)組的聲明說明:說明:1 1數(shù)組名的命名規(guī)則與變量的命名相同。數(shù)組名的命名規(guī)則與變量的命名相同。2 2數(shù)組的元素個(gè)數(shù):上界數(shù)組的元素個(gè)數(shù):上界- -下界下界+1+1。3 3缺省缺省 為為0 0,若希望下標(biāo)從,若希望下標(biāo)從1

17、1開始,可在模塊的通用部分開始,可在模塊的通用部分使用使用Option BaseOption Base語句將設(shè)為語句將設(shè)為1 1。其使用格式是:。其使用格式是: Option Base 0|1 Option Base 0|1 后面的參數(shù)只能取后面的參數(shù)只能取0 0或或1 1例如:例如: Option Base 1 Option Base 1 將數(shù)組聲明中缺省將數(shù)組聲明中缺省 下標(biāo)設(shè)為下標(biāo)設(shè)為1 14 4 和和 不能使用變量,必須是常量,常量可以是直不能使用變量,必須是常量,常量可以是直接常量、符號(hào)常量,一般是整型常量。接常量、符號(hào)常量,一般是整型常量。15VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章

18、數(shù)組及自定義類型數(shù)組及自定義類型15一維數(shù)組的聲明一維數(shù)組的聲明5 5如果省略如果省略AsAs子句,則數(shù)組的類型為變體類型。子句,則數(shù)組的類型為變體類型。6 6數(shù)組中各元素在內(nèi)存占一片連續(xù)的存儲(chǔ)空間,一維數(shù)組中各元素在內(nèi)存占一片連續(xù)的存儲(chǔ)空間,一維數(shù)組在內(nèi)存中存放的順序是下標(biāo)大小的順序,如圖數(shù)組在內(nèi)存中存放的順序是下標(biāo)大小的順序,如圖5-15-1所示:所示:16VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型16二維數(shù)組的聲明二維數(shù)組的聲明聲明格式如下:聲明格式如下:Dim Dim 數(shù)組名數(shù)組名( to to , to to ) As ) As 其中的參數(shù)與一維數(shù)組完全相

19、同。其中的參數(shù)與一維數(shù)組完全相同。 例如:例如:Dim a(2,3) As SingleDim a(2,3) As Single 二維數(shù)組在內(nèi)存的存放順序是二維數(shù)組在內(nèi)存的存放順序是“先行后列先行后列”。例如數(shù)組。例如數(shù)組a a的的各元素在內(nèi)存中的存放順序是:各元素在內(nèi)存中的存放順序是:a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2)a(0,0)a(0,1)a(0,2)a(0,3)a(1,0)a(1,1)a(1,2) a(1,3)a(2,0)(2,1)a(2,2)a(2,3) a(1,3)a(2,0)(2,1)a(2,2)a(2,3) 17VBVB程序設(shè)計(jì)程

20、序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型17二維數(shù)組的聲明二維數(shù)組的聲明Dim lArray( 0 To 3Dim lArray( 0 To 3, 0 To 4) As Long 0 To 4) As Long 共有共有 4 45 5個(gè)元素個(gè)元素 等價(jià)于等價(jià)于: Dim lArray(3: Dim lArray(3, 4) As Long4) As Long 18VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型18二維數(shù)組的聲明二維數(shù)組的聲明注意:注意:(1)下界缺省為下界缺省為0,也可在重新定義數(shù)組的下界。,也可在重新定義數(shù)組的下界。例如:例如:Option

21、 Base 1(2)錯(cuò)誤的聲明,下標(biāo)是變量錯(cuò)誤的聲明,下標(biāo)是變量 n =Inputbox(輸入輸入n ):):Dim x(n) As Single (3)在數(shù)組聲明中的下標(biāo)說明了數(shù)組的整體,即每維的大??;在數(shù)組聲明中的下標(biāo)說明了數(shù)組的整體,即每維的大小; 而在程序其他地方出現(xiàn)的下標(biāo)表示數(shù)組中的一個(gè)元素。兩者而在程序其他地方出現(xiàn)的下標(biāo)表示數(shù)組中的一個(gè)元素。兩者寫法形式相同,但意義不同。寫法形式相同,但意義不同。 例如:例如:Dim x(10) As Integer 聲明了聲明了x數(shù)組有數(shù)組有11個(gè)元素個(gè)元素 x(10)=100 對(duì)對(duì)x(10)這個(gè)數(shù)組元素賦值這個(gè)數(shù)組元素賦值19VBVB程序設(shè)計(jì)程

22、序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型19多維數(shù)組的聲明多維數(shù)組的聲明定義多維數(shù)組的格式如下:定義多維數(shù)組的格式如下:Dim Dim 數(shù)組名數(shù)組名( to to , to to ,) As ) As 例如:例如: Dim a(5,5,5) As IntegerDim a(5,5,5) As Integer 聲明聲明a a是三維數(shù)組是三維數(shù)組 Dim b(2,6,10,5) As IntegerDim b(2,6,10,5) As Integer 聲明聲明b b是四維數(shù)組是四維數(shù)組 20VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型20動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組 動(dòng)態(tài)

23、數(shù)組動(dòng)態(tài)數(shù)組是指在程序執(zhí)行過程中數(shù)組元素的個(gè)數(shù)可以是指在程序執(zhí)行過程中數(shù)組元素的個(gè)數(shù)可以改變的數(shù)組。動(dòng)態(tài)數(shù)組也叫可變大小的數(shù)組。改變的數(shù)組。動(dòng)態(tài)數(shù)組也叫可變大小的數(shù)組。 n 使用動(dòng)態(tài)數(shù)組就可以在任何時(shí)候改變其大小,并使用動(dòng)態(tài)數(shù)組就可以在任何時(shí)候改變其大小,并且可以在不需要時(shí)清除動(dòng)態(tài)數(shù)組所占的存儲(chǔ)空間。且可以在不需要時(shí)清除動(dòng)態(tài)數(shù)組所占的存儲(chǔ)空間。因此,使用動(dòng)態(tài)數(shù)組更加靈活、方便,并有助于高因此,使用動(dòng)態(tài)數(shù)組更加靈活、方便,并有助于高效管理內(nèi)存。效管理內(nèi)存。21VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型21動(dòng)態(tài)數(shù)組的建立及使用動(dòng)態(tài)數(shù)組的建立及使用 建立動(dòng)態(tài)數(shù)組包括聲明和

24、大小說明兩步:建立動(dòng)態(tài)數(shù)組包括聲明和大小說明兩步: 1 1在使用在使用DimDim、PrivatePrivate或或PublicPublic語句聲明括號(hào)內(nèi)為語句聲明括號(hào)內(nèi)為空的數(shù)組。空的數(shù)組。格式:格式:Dim | Private|Public Dim | Private|Public 數(shù)組名()數(shù)組名()As As 數(shù)據(jù)類型數(shù)據(jù)類型 例:例:Dim a() As IntegerDim a() As Integer2 2在過程中用在過程中用ReDimReDim語句指明該數(shù)組的大小。語句指明該數(shù)組的大小。格式:格式:ReDim Preserve ReDim Preserve 數(shù)組名(下標(biāo)數(shù)組名(

25、下標(biāo)11,下標(biāo),下標(biāo)22)例:例:Redim A(10) Redim A(10) Redim Preserve A(20)Redim Preserve A(20) Preserve參數(shù):保留數(shù)組中原來的數(shù)據(jù)參數(shù):保留數(shù)組中原來的數(shù)據(jù) 22VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型22說明說明(1 1)ReDimReDim語句是一個(gè)可執(zhí)行語句,只能出現(xiàn)在過程中,并且語句是一個(gè)可執(zhí)行語句,只能出現(xiàn)在過程中,并且可以多次使用,改變數(shù)組的維數(shù)和大小。可以多次使用,改變數(shù)組的維數(shù)和大小。 (2 2)定長數(shù)組聲時(shí)中的下標(biāo)只能是常量,而動(dòng)態(tài)數(shù)組)定長數(shù)組聲時(shí)中的下標(biāo)只能是常量,而

26、動(dòng)態(tài)數(shù)組ReDim ReDim 語語句中的下標(biāo)是常量,也可以是有了確定值的變量。句中的下標(biāo)是常量,也可以是有了確定值的變量。 例:例: Private Sub Form_Click()Private Sub Form_Click() dim a() dim a() Dim N As IntegerDim N As Integer N=Val(InputBox(“ N=Val(InputBox(“輸入輸入N=N=?”) reDim a(N) As Integer reDim a(N) As Integer . . End sub End sub23VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定

27、義類型數(shù)組及自定義類型23說明說明(3 3)在過程中可以多次使用)在過程中可以多次使用ReDimReDim來改變數(shù)組的大小,也可改來改變數(shù)組的大小,也可改變數(shù)組的維數(shù)。變數(shù)組的維數(shù)。 例:例:ReDim x(10)ReDim x(10) ReDim x(20) ReDim x(20) x(20) = 30 x(20) = 30 Print x(20) Print x(20) ReDim x(20, 5) ReDim x(20, 5) x(20, 5) = 10 x(20, 5) = 10 Print x(20, 5) Print x(20, 5) (4 4)每次使用)每次使用ReDimReDi

28、m語句都會(huì)使原來數(shù)組中值丟失,可以在語句都會(huì)使原來數(shù)組中值丟失,可以在ReDimReDim后加后加Preserve Preserve 參數(shù)來保留數(shù)組中的數(shù)據(jù)。但此時(shí)只能參數(shù)來保留數(shù)組中的數(shù)據(jù)。但此時(shí)只能改變最后一維的大小。改變最后一維的大小。24VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型24若我們要求一個(gè)班若我們要求一個(gè)班100100個(gè)學(xué)生的平均成績,然后統(tǒng)計(jì)高于個(gè)學(xué)生的平均成績,然后統(tǒng)計(jì)高于平均分的人數(shù)。平均分的人數(shù)。aver = 0 aver = 0 sum = 0sum = 0 For i = 1 To 100 For i = 1 To 100 mark =

29、InputBox( mark = InputBox(輸入輸入 + i + + i + 位學(xué)生的成績位學(xué)生的成績)sum = sum + mark sum = sum + mark Next i Next i aver = sum / 100 aver = sum / 100 25VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型25若我們要求一個(gè)班若我們要求一個(gè)班100100個(gè)學(xué)生的平均成績,然后統(tǒng)計(jì)高于個(gè)學(xué)生的平均成績,然后統(tǒng)計(jì)高于平均分的人數(shù)。平均分的人數(shù)。Dim aver!, sum!, i%, n%Dim mark(1 To 100) As Integeraver

30、= 0sum = 0n = 0 For i = 1 To 100 mark(i) = Int(Rnd * 101)sum = sum + mark(i)Next iaver = sum / 100For i = 1 To 100 If mark(i) aver Then n = n + 1 End If Next iPrint n, averFor i = 1 To 100Print mark(i)Next i26VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型26數(shù)組的基本操作數(shù)組的基本操作 數(shù)組聲明后,方可使用??梢詫?duì)數(shù)組元素進(jìn)行各種操數(shù)組聲明后,方可使用。可以對(duì)數(shù)組

31、元素進(jìn)行各種操作:作: 對(duì)數(shù)組元素賦值對(duì)數(shù)組元素賦值 進(jìn)行各種表達(dá)式運(yùn)算、排序、統(tǒng)計(jì)、輸出進(jìn)行各種表達(dá)式運(yùn)算、排序、統(tǒng)計(jì)、輸出 使用數(shù)組可以縮短和簡化程序。使用數(shù)組可以縮短和簡化程序。27VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型27一維數(shù)組元素的引用一維數(shù)組元素的引用數(shù)組必須先定義后使用數(shù)組必須先定義后使用使用形式:使用形式: 數(shù)組名數(shù)組名(下標(biāo)下標(biāo)) 其中:下標(biāo)可以是整型變量、常量或表達(dá)式。其中:下標(biāo)可以是整型變量、常量或表達(dá)式。例如:例如: 設(shè)有下面的數(shù)組設(shè)有下面的數(shù)組A(10),B(10) As Integer 則下面的語句都是正確的。則下面的語句都是正確的

32、。 A(1)=A(2)+B(1)+5 取數(shù)組元素運(yùn)算取數(shù)組元素運(yùn)算 A(i)=B(i) 下標(biāo)使用變量下標(biāo)使用變量 B(i+1)=A(i+2) 下標(biāo)使用表達(dá)式下標(biāo)使用表達(dá)式28VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型28一維數(shù)組的基本操作一維數(shù)組的基本操作 1. 1. 可通過循環(huán)給數(shù)組元素的初值可通過循環(huán)給數(shù)組元素的初值 For i = 1 To 10For i = 1 To 10 A A數(shù)組的每個(gè)元素值為數(shù)組的每個(gè)元素值為1 1 A(i)=1 A(i)=1 Next i Next i 29VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型29一

33、維數(shù)組的基本操作一維數(shù)組的基本操作 Array函數(shù)函數(shù)nArray函數(shù)可方便地對(duì)數(shù)組整體賦值,但它只能給函數(shù)可方便地對(duì)數(shù)組整體賦值,但它只能給聲明聲明Variant的變量或僅由括號(hào)括起的的變量或僅由括號(hào)括起的動(dòng)態(tài)數(shù)組動(dòng)態(tài)數(shù)組賦賦值。賦值后的數(shù)組大小由賦值的個(gè)數(shù)決定。值。賦值后的數(shù)組大小由賦值的個(gè)數(shù)決定。n 例如,要將例如,要將1,2,3,4,5,6,7 這些值賦值給數(shù)組這些值賦值給數(shù)組a,可使用下面的方法賦值??墒褂孟旅娴姆椒ㄙx值。Dim a()A=array(1,2,3,4,5,6,7)Dim a A=array(1,2,3,4,5,6,7)30VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自

34、定義類型數(shù)組及自定義類型30一維數(shù)組的基本操作一維數(shù)組的基本操作 求數(shù)組的上界求數(shù)組的上界Ubound( )函數(shù)、函數(shù)、 下界下界 Lbound( )函數(shù)函數(shù)分別用來確定數(shù)組某一維的上界和下界值。分別用來確定數(shù)組某一維的上界和下界值。使用形式如下:使用形式如下: UBound(, ) LBound( , ) 其中:其中:必需的。數(shù)組變量的名稱,遵循標(biāo)準(zhǔn)變量必需的。數(shù)組變量的名稱,遵循標(biāo)準(zhǔn)變量命名約定命名約定。:可選的;一般是整型常量或變量。指定返回哪可選的;一般是整型常量或變量。指定返回哪一維的上界。一維的上界。1 表示第一維,表示第一維,2 表示第二維,如此表示第二維,如此等等。如果省略默認(rèn)

35、是等等。如果省略默認(rèn)是1。31VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型31一維數(shù)組的基本操作一維數(shù)組的基本操作 (2) Array(2) Array函數(shù)函數(shù) Dim ib() As Variant Dim ib() As Variant ib = Array(abc, def, 67) ib = Array(abc, def, 67) For i = 0 To UBound(ib) For i = 0 To UBound(ib) Picture1.Print ib(i); ; Picture1.Print ib(i); ; Next I Next I注意:注意:

36、利用利用ArrayArray對(duì)數(shù)組各元素賦值,聲明的數(shù)組是可調(diào)數(shù)對(duì)數(shù)組各元素賦值,聲明的數(shù)組是可調(diào)數(shù)組或連圓括號(hào)都可省,并且其類型只能是組或連圓括號(hào)都可省,并且其類型只能是VariantVariant。 數(shù)組的下界為零,上界由數(shù)組的下界為零,上界由ArrayArray函數(shù)括號(hào)內(nèi)的參數(shù)個(gè)函數(shù)括號(hào)內(nèi)的參數(shù)個(gè)數(shù)可決定,也可通過函數(shù)數(shù)可決定,也可通過函數(shù)UboundUbound獲得。獲得。32VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型32一維數(shù)組的基本操作一維數(shù)組的基本操作 2數(shù)組的賦值數(shù)組的賦值在在VB6.0中,提供了數(shù)組直接對(duì)數(shù)組的賦值。中,提供了數(shù)組直接對(duì)數(shù)組的賦值。

37、例如:例如: Dim a() As Variant, b() As Variant, i% a = Array(1, 2, 3, 4, 5) ReDim b(UBound(a) b = a注意:賦值號(hào)左邊的數(shù)組只能聲明為注意:賦值號(hào)左邊的數(shù)組只能聲明為Variant的可調(diào)數(shù)組的可調(diào)數(shù)組或簡單變量或簡單變量 33VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型33數(shù)組的輸出數(shù)組的輸出輸出如圖所示的下三角數(shù)據(jù)輸出如圖所示的下三角數(shù)據(jù)Dim sc(5,5) As Integer,i%,j%Dim sc(5,5) As Integer,i%,j%For i = 1 To 5For

38、 i = 1 To 5 For j = 1 To i For j = 1 To i sc(i, j) = i sc(i, j) = i * * 5 + j 5 + j Print sc(i, j); ; Print sc(i, j); ; Next j Next j Print Print 換行換行Next INext I34VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型34求數(shù)組中最大元素及所在下標(biāo)求數(shù)組中最大元素及所在下標(biāo)Dim Max As Integer,iMax As Integer Max=A(1):iMax=1 For i = 2 To 10 If A(i

39、)Max ThenMax=A(i)iMax=i End If Next I35VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型35將數(shù)組元素倒置將數(shù)組元素倒置36VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型36將數(shù)組元素倒置將數(shù)組元素倒置For i =1 To 102 t=A(i) A(i)=A(10-i+1) A(10-i+1)=tNext I37VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型37將數(shù)組元素倒置將數(shù)組元素倒置Option Base 1Option Base 1Private Sub Command1_Cl

40、ick()Private Sub Command1_Click()Dim i%, t%: Dim a(1 To 10) As IntegerDim i%, t%: Dim a(1 To 10) As IntegerFor i = 1 To 10For i = 1 To 10a(i) = i 1a(i) = i 1NextNextFor i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextFor i = 1 To 10 2For i = 1 To 10 2 t = a(i): a(i) = a(10 - i + 1): a(10 - i

41、 + 1) = t t = a(i): a(i) = a(10 - i + 1): a(10 - i + 1) = tNext iNext iPrintPrintFor i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextEnd SubEnd Sub38VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型38將數(shù)組元素倒置將數(shù)組元素倒置Option Base 1Option Base 1Private Sub Command1_Click()Private Sub Command1_Click()Dim i%, t%

42、:Dim a() As VariantDim i%, t%:Dim a() As Varianta = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)a = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)For i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextFor i = 1 To 10 2For i = 1 To 10 2 t = a(i): a(i) = a(10 - i + 1): a(10 - i + 1) = t t = a(i): a(i) = a(10 - i + 1

43、): a(10 - i + 1) = tNext iNext iPrintPrintFor i = 1 To 10For i = 1 To 10Print a(i);Print a(i);NextNextEnd SubEnd Sub39VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型39將數(shù)組元素倒置將數(shù)組元素倒置若將數(shù)組中前一半與后一半交換?若將數(shù)組中前一半與后一半交換?40VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型40數(shù)組排序(選擇法)數(shù)組排序(選擇法)算法思想:算法思想: 1 1)對(duì)有)對(duì)有n n個(gè)數(shù)的序列(存放在數(shù)組個(gè)數(shù)的序列(存放在數(shù)

44、組a(n)a(n)中),從中選出最中),從中選出最?。ㄉ颍┗蜃畲螅ń敌颍┑臄?shù),與第?。ㄉ颍┗蜃畲螅ń敌颍┑臄?shù),與第1 1個(gè)數(shù)交換位置;個(gè)數(shù)交換位置; 2 2)除第)除第1 1 個(gè)數(shù)外,其余個(gè)數(shù)外,其余n-1n-1個(gè)數(shù)中選最小或最大的數(shù),與個(gè)數(shù)中選最小或最大的數(shù),與第第2 2個(gè)數(shù)交換位置;個(gè)數(shù)交換位置; 3 3)依次類推,選擇了)依次類推,選擇了n-1n-1次后,這個(gè)數(shù)列已按升序排列。次后,這個(gè)數(shù)列已按升序排列。41VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型41數(shù)組排序(選擇法)數(shù)組排序(選擇法)算法思想:算法思想: 1 1)對(duì)有)對(duì)有n n個(gè)數(shù)的序列(存?zhèn)€數(shù)的序

45、列(存放在數(shù)組放在數(shù)組a(n)a(n)中),從中選中),從中選出最?。ㄉ颍┗蜃畲螅ń党鲎钚。ㄉ颍┗蜃畲螅ń敌颍┑臄?shù),與第序)的數(shù),與第1 1個(gè)數(shù)交換個(gè)數(shù)交換位置;位置; 2 2)除第)除第1 1 個(gè)數(shù)外,其余個(gè)數(shù)外,其余n-1n-1個(gè)數(shù)中選最小或最大的個(gè)數(shù)中選最小或最大的數(shù),與第數(shù),與第2 2個(gè)數(shù)交換位置;個(gè)數(shù)交換位置; 3 3)依次類推,選擇了)依次類推,選擇了n-1n-1次后,這個(gè)數(shù)列已按升序排次后,這個(gè)數(shù)列已按升序排列。列。原 始 數(shù) 據(jù) 8 6 9 3 2 7第1趟 交 換 后 2 6 9 3 8 7第2趟 交 換 后 2 3 9 6 8 7第3趟 交 換 后 2 3 6 9 8

46、7第4趟 交 換 后 2 3 6 7 8 9第5趟 無 交 換 2 3 6 7 8 9 圖1-3-27 交 換 過 程42VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型42數(shù)組排序(選擇法)數(shù)組排序(選擇法)For i = 1 To n - 1 iMin= i For j = i+1 To n If iA(j) iA(iMin) Then iMin = j Next j t= iA(i): iA(i) = iA(iMin) : iA(iMin) = t Next I 原 始 數(shù) 據(jù) 8 6 9 3 2 7第1趟 交 換 后 2 6 9 3 8 7第2趟 交 換 后 2

47、3 9 6 8 7第3趟 交 換 后 2 3 6 9 8 7第4趟 交 換 后 2 3 6 7 8 9第5趟 無 交 換 2 3 6 7 8 9 圖1-3-27 交 換 過 程43VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型43數(shù)組排序(選擇法)數(shù)組排序(選擇法)Picture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As IntegerPicture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As IntegerFor i = 1 To 6For i = 1 To 6 ia(i) = Int(Rnd ia(i)

48、= Int(Rnd * * 101) 101) Next NextFor i = 1 To 6For i = 1 To 6 Picture1.Print ia(i); Picture1.Print ia(i);NextNextPicture1.PrintPicture1.PrintFor i = 1 To 5For i = 1 To 5 imin = i imin = i For j = i + 1 To 6 For j = i + 1 To 6 If ia(j) ia(imin) Then imin = j If ia(j) ia(imin) Then imin = j Next j Nex

49、t j t = ia(i): ia(i) = ia(imin): ia(imin) = t t = ia(i): ia(i) = ia(imin): ia(imin) = tNext iNext i44VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型44排序(冒泡法)排序(冒泡法)算法思想:算法思想:( (將相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭將相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭) ) 1 1)有)有n n個(gè)數(shù)(存放在數(shù)組個(gè)數(shù)(存放在數(shù)組a(n)a(n)中),第一趟將每相鄰兩個(gè)中),第一趟將每相鄰兩個(gè)數(shù)比較,小的調(diào)到前頭,經(jīng)數(shù)比較,小的調(diào)到前頭,經(jīng)n-1n-1次兩兩相鄰比較后,最大的數(shù)

50、次兩兩相鄰比較后,最大的數(shù)已已“沉底沉底”,放在最后一個(gè)位置,小數(shù)上升,放在最后一個(gè)位置,小數(shù)上升“浮起浮起”; 2 2)第二趟對(duì)余下的)第二趟對(duì)余下的n-1n-1個(gè)數(shù)(最大的數(shù)已個(gè)數(shù)(最大的數(shù)已“沉底沉底”)按上)按上法比較,經(jīng)法比較,經(jīng)n-2n-2次兩兩相鄰比較后得次大的數(shù);次兩兩相鄰比較后得次大的數(shù); 3 3)依次類推,)依次類推,n n個(gè)數(shù)共進(jìn)行個(gè)數(shù)共進(jìn)行n-1n-1趟比較,在第趟比較,在第j j 趟中要進(jìn)趟中要進(jìn)行行n-jn-j次兩兩比較。次兩兩比較。45VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型45排序(冒泡法)排序(冒泡法)選擇法排序在每一輪排序時(shí)找最

51、小選擇法排序在每一輪排序時(shí)找最小( (遞增次序遞增次序) )數(shù)的下標(biāo),出了數(shù)的下標(biāo),出了內(nèi)循環(huán)內(nèi)循環(huán)( (一輪排序結(jié)束一輪排序結(jié)束) ),再交換最小數(shù)的位置;,再交換最小數(shù)的位置;而冒泡法排序在每一輪排序時(shí)只要將第一個(gè)與其他幾個(gè)比較,而冒泡法排序在每一輪排序時(shí)只要將第一個(gè)與其他幾個(gè)比較,只要次序不對(duì),就交換,出了內(nèi)循環(huán),最小數(shù)已冒出。只要次序不對(duì),就交換,出了內(nèi)循環(huán),最小數(shù)已冒出。46VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型46排序(冒泡法)排序(冒泡法)For i = 1 To 5 For j = 6 To i + 1 Step -1 If ia(j) ia(j

52、 - 1) Then temp = ia(j) ia(j) = ia(j - 1) ia(j - 1) = temp End If Next jNext i原始數(shù)據(jù) 8 6 9 3 2 7第1趟交換后 2 6 9 3 8 7第2趟交換后 2 3 9 6 8 7第3趟交換后 2 3 6 9 8 7第4趟交換后 2 3 6 7 8 9第5趟無交換 2 3 6 7 8 9 圖1-3-27 交換過程47VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型47數(shù)組排序(冒泡法)數(shù)組排序(冒泡法)Picture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As I

53、ntegerPicture1.Cls:Dim i%, imin%:Dim ia(1 To 6) As IntegerFor i = 1 To 6For i = 1 To 6 ia(i) = Int(Rnd ia(i) = Int(Rnd * * 101) 101) Next NextFor i = 1 To 6For i = 1 To 6 Picture1.Print ia(i); Picture1.Print ia(i);NextNextPicture1.PrintPicture1.PrintFor i = 1 To 5For i = 1 To 5 For j = 6 To i + 1 St

54、ep -1 For j = 6 To i + 1 Step -1 If ia(j) ia(j - 1) Then If ia(j) ia(j - 1) Then temp = ia(j) temp = ia(j) ia(j) = ia(j - 1) ia(j) = ia(j - 1) ia(j - 1) = temp ia(j - 1) = temp End If End If Next j Next jNext iNext i48VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型48數(shù)組元素的插入與刪除數(shù)組元素的插入與刪除(1) (1) 插入插入 在有序數(shù)組在有序數(shù)組a(

55、1 to n)(a(1 to n)(原有原有n n-1-1個(gè)元素個(gè)元素) )插入一個(gè)值插入一個(gè)值KeyKey元素,算元素,算法:法: 查找要插入的位置查找要插入的位置k k(1=1=k k=n n-1-1) 騰出位置,把最后一個(gè)元素開始到第騰出位置,把最后一個(gè)元素開始到第k k個(gè)元素往后移動(dòng)一個(gè)位個(gè)元素往后移動(dòng)一個(gè)位置第置第k k個(gè)元素的位置騰出,就可將數(shù)據(jù)個(gè)元素的位置騰出,就可將數(shù)據(jù)KeyKey插入插入49VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型49數(shù)組元素的插入與刪除數(shù)組元素的插入與刪除Picture1.Cls:Dim a%(1 To 10), i%, k%P

56、icture1.Cls:Dim a%(1 To 10), i%, k%For i = 1 To 9For i = 1 To 9 a(i) = (i - 1) a(i) = (i - 1) * * 3 + 1 3 + 1NextNextFor i = 1 To 10For i = 1 To 10 Picture1.Print a(i); Picture1.Print a(i);NextNextFor k = 1 To 9For k = 1 To 9 If 14 a(k) Then Exit For If 14 = A And c = A And c 0 Then Picture1.Print ;

57、 Chr$(j + 64); =; a(j);If a(j) 0 Then Picture1.Print ; Chr$(j + 64); =; a(j);NextNext78VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型78大量數(shù)據(jù)的輸入大量數(shù)據(jù)的輸入輸入一系列的數(shù)據(jù),并將它們分離后存放在數(shù)組中。對(duì)輸入的輸入一系列的數(shù)據(jù),并將它們分離后存放在數(shù)組中。對(duì)輸入的數(shù)據(jù)允許修改和自動(dòng)識(shí)別非數(shù)字?jǐn)?shù)據(jù)。數(shù)據(jù)允許修改和自動(dòng)識(shí)別非數(shù)字?jǐn)?shù)據(jù)。 分析:分析: (1 1)利用文本框輸入和編輯數(shù)據(jù),輸入時(shí)去除非法數(shù)字。)利用文本框輸入和編輯數(shù)據(jù),輸入時(shí)去除非法數(shù)字。 (2 2)輸入結(jié)束利用)輸

58、入結(jié)束利用RplaceRplace函數(shù)去除重復(fù)輸入的分隔符;函數(shù)去除重復(fù)輸入的分隔符; (3 3)對(duì)利用)對(duì)利用SplitSplit函數(shù)按分隔符分離,放到數(shù)組中;函數(shù)按分隔符分離,放到數(shù)組中; (4 4)還可利用)還可利用JoinJoin函數(shù)將數(shù)組中各元素合并成一個(gè)字符串。函數(shù)將數(shù)組中各元素合并成一個(gè)字符串。79VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型79控件數(shù)組控件數(shù)組 應(yīng)用程序中對(duì)于一些類型相同、功能相似的控件,可應(yīng)用程序中對(duì)于一些類型相同、功能相似的控件,可將其定義成一個(gè)控件數(shù)組來實(shí)現(xiàn)。將其定義成一個(gè)控件數(shù)組來實(shí)現(xiàn)。和數(shù)組變量一樣,控件數(shù)組中的每一個(gè)控件是該

59、控件和數(shù)組變量一樣,控件數(shù)組中的每一個(gè)控件是該控件數(shù)組的一個(gè)元素,表示為:數(shù)組的一個(gè)元素,表示為: ( () 同一控件數(shù)組名稱相同,各控件同一控件數(shù)組名稱相同,各控件( (數(shù)組元素?cái)?shù)組元素) )的索的索引引( (下標(biāo)下標(biāo)) )不同,該索引由控件的不同,該索引由控件的IndexIndex屬性決定??貙傩詻Q定。控件數(shù)組中可用的最大索引值為件數(shù)組中可用的最大索引值為3276732767。同一控件數(shù)組。同一控件數(shù)組中的不同控件可以有自己的屬性設(shè)置值。中的不同控件可以有自己的屬性設(shè)置值。 80VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型80控件數(shù)組控件數(shù)組 例:例: Priva

60、te Sub cmdName _Click(Index As Integer) If Index=3 then 處理第四個(gè)命令按鈕的操作處理第四個(gè)命令按鈕的操作 End If End Sub81VBVB程序設(shè)計(jì)程序設(shè)計(jì)第六章第六章 數(shù)組及自定義類型數(shù)組及自定義類型81控件數(shù)組的使用控件數(shù)組的使用同一個(gè)控件數(shù)組中的所有控件共享相同的事件過程。同一個(gè)控件數(shù)組中的所有控件共享相同的事件過程。控件數(shù)組的事件過程會(huì)返回一個(gè)參數(shù)控件數(shù)組的事件過程會(huì)返回一個(gè)參數(shù)IndexIndex,以表示當(dāng),以表示當(dāng)前是在控件數(shù)組的哪一個(gè)控件上發(fā)生了該事件。前是在控件數(shù)組的哪一個(gè)控件上發(fā)生了該事件。SubPrivate S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論