版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章數(shù)組與自定義數(shù)據(jù)類型5.1數(shù)組
5.2自定義數(shù)據(jù)類型
5.3控件數(shù)組
教學(xué)小結(jié)
習(xí)題
5.1數(shù)組
5.1.1數(shù)組的基本概念
數(shù)組是VB提供的一種數(shù)據(jù)結(jié)構(gòu)。用統(tǒng)一的名稱來代表具有相同性質(zhì)的一組數(shù),該名稱為數(shù)組名。數(shù)組中的每一個元素稱為數(shù)組元素。為了區(qū)分?jǐn)?shù)組中的每一個元素,需要用一個編號加以區(qū)別,該編號稱為下標(biāo)。數(shù)組中的每一個元素都可以用數(shù)組名和下標(biāo)唯一標(biāo)識。每個數(shù)組元素和一個普通變量一樣能存放一個數(shù)據(jù)。歸納起來,數(shù)組具有以下特點:
(1)數(shù)組由若干個數(shù)組元素組成。
(2)數(shù)組元素在內(nèi)存中有次序地存放,下標(biāo)代表它在數(shù)組中的位置。
(3)同一個數(shù)組中數(shù)組元素的數(shù)據(jù)類型相同,在內(nèi)存中存儲是有規(guī)律的,占一段連續(xù)的存儲單元。
總而言之,數(shù)組由若干個類型相同的數(shù)組元素組成。在表示數(shù)組元素時,應(yīng)注意以下幾點:
(1)用圓括號把下標(biāo)括起來,不能使用中括號或大括號代替,圓括號也不能省略。
(2)下標(biāo)可以是常量、變量或表達(dá)式,其值為整數(shù),若常量、變量或表達(dá)式的值為小數(shù),將自動“四舍五入”。
(3)下標(biāo)的最小取值稱為下界,下標(biāo)的最大取值稱為上界。在不加任何說明的情況下,數(shù)組元素下標(biāo)的下界默認(rèn)為0。5.1.2數(shù)組的聲明
1.一維靜態(tài)數(shù)組
格式:
Dim數(shù)組名(下界To上界)[As<數(shù)據(jù)類型>]
作用:聲明數(shù)組具有“上界?-?下限?+?1”個數(shù)組元素,這些元素按照下標(biāo)由小到大的順序連續(xù)存儲在內(nèi)存中。其中:
(1)數(shù)組名命名要符合變量命名規(guī)則。
(2)“下界To上界”稱為維說明,用于確定數(shù)組元素下標(biāo)的取值范圍(下標(biāo)下界最小值為-32?768,上界最大值為32?767),下界默認(rèn)值為0。下界和上界只能取直接常量或直接常量表達(dá)式、符號常量或符號常量表達(dá)式,不能為變量或包含變量的表達(dá)式。
(3)?[As<數(shù)據(jù)類型>]指明數(shù)組元素的類型,默認(rèn)為變體數(shù)據(jù)類型。
2.二維靜態(tài)數(shù)組
格式:
Dim數(shù)組名(下界1To上界1,下界2To上界2)[As<數(shù)據(jù)類型>]
作用:聲明(上界1-下限1?+?1)*(上界2-下限2?+?1)個連續(xù)的存儲單元。
聲明了長整型的二維數(shù)組Larray,第一維下標(biāo)范圍為0~3,第二維下標(biāo)范圍為0~4,數(shù)組元素個數(shù)為4?×?5個,每個元素占4個字節(jié)的存儲空間,元素排列如表5-1所示。表5-1二維數(shù)組Larray各元素排列無論是一維數(shù)組還是二維數(shù)組,聲明靜態(tài)數(shù)組要注意如下問題:
(1)用“OptionBase1”可設(shè)定數(shù)組元素下標(biāo)下界值為1,以改變下界默認(rèn)值為0。該語句必須放在窗體或模塊的通用聲明段中,否則會出現(xiàn)“無效內(nèi)部過程”的錯誤。
(2)靜態(tài)數(shù)組在同一個過程中只能聲明一次,否則會出現(xiàn)“當(dāng)前范圍內(nèi)聲明重復(fù)”的提示信息。
(3)聲明數(shù)組和聲明變量一樣,數(shù)組也有作用范圍。
(4)聲明數(shù)組后,各數(shù)組元素的初值與聲明普通變量相同(見第2章2.3.2節(jié))。
例5-1數(shù)據(jù)文件中存放著10個學(xué)生一門課的考試成績,請將高于平均分的成績輸出。
3.動態(tài)數(shù)組聲明
動態(tài)數(shù)組是指在程序執(zhí)行過程中,數(shù)組元素的個數(shù)可以改變的數(shù)組。和靜態(tài)數(shù)組類似,動態(tài)數(shù)組也分為一維動態(tài)數(shù)組、二維動態(tài)數(shù)組和多維動態(tài)數(shù)組。
動態(tài)數(shù)組在用Dim語句聲明時不給出數(shù)組的大小,程序執(zhí)行到ReDim語句時才確定大小。創(chuàng)建動態(tài)數(shù)組通常分兩步:
第1步,在標(biāo)準(zhǔn)模塊、窗體的通用程序段或過程中,聲明一個省略維說明的數(shù)組,格式為:
Dim數(shù)組名()[As<數(shù)據(jù)類型>]
第2步,根據(jù)應(yīng)用需要,用ReDim重新確定數(shù)組元素的個數(shù),格式為:
ReDim[Preserve]數(shù)組名(維說明)[As<數(shù)據(jù)類型>]說明:
(1)維說明通常包含變量或表達(dá)式,但其中的變量或表達(dá)式應(yīng)有明確的值。
(2)如果省略關(guān)鍵字Preserve,重定義前數(shù)組元素的值全部丟失,VB系統(tǒng)重新對數(shù)組元素進(jìn)行初始化;如果使用了Preserve,重定義前數(shù)組元素的值不丟失,VB系統(tǒng)保留原數(shù)組元素的值。
例5-2輸入某門課n個同學(xué)的成績,將高于平均分的成績輸出。
分析:由于在編寫程序時并不能確定學(xué)生人數(shù),用于存儲學(xué)生成績的數(shù)組元素的多少應(yīng)根據(jù)學(xué)生人數(shù)的不同而異,所以這種情況用動態(tài)數(shù)組來處理較方便。
程序代碼如下:
Dimaver!,i%,n%,x!() '這里先聲明一個空數(shù)組
Open"c:\in.txt"ForInputAs#1
aver=0
n=0
4.?dāng)?shù)組元素的遍歷
一個數(shù)組就是一組同種類型數(shù)據(jù)的集合,循環(huán)訪問一個數(shù)組各元素的過程稱為數(shù)組元素的遍歷。在VB中,通常使用ForEach循環(huán)遍歷數(shù)組中的各個元素。格式為:
ForEach集合變量In數(shù)組名
循環(huán)體
Next集合變量
其中,集合變量必須是變體類型。利用ForEach循環(huán)結(jié)構(gòu)可以不必關(guān)心數(shù)組元素的個數(shù),也不會出現(xiàn)下標(biāo)越界的錯誤,在數(shù)組元素處理中會被經(jīng)常用到。5.1.3數(shù)組的賦值
1.靜態(tài)數(shù)組元素賦值
對于靜態(tài)數(shù)組,利用數(shù)組元素有序存儲和靜態(tài)數(shù)組元素個數(shù)在聲明時已經(jīng)確定的特點,采用循環(huán)結(jié)構(gòu),逐一為數(shù)組元素賦值。通常,采用循環(huán)次數(shù)固定的For…Next結(jié)構(gòu)為數(shù)組元素賦值,一維數(shù)組可通過單循環(huán)實現(xiàn),二維數(shù)組可通過雙層循環(huán)實現(xiàn)。
以下是給數(shù)組a的每一個元素均賦值為0的程序段:
Dima(1To10)AsSingle
Fori=1To10
a(i)=0
Nexti
2.動態(tài)數(shù)組賦值
與靜態(tài)數(shù)組不同的是,給動態(tài)數(shù)組賦值時,既可以將數(shù)組元素作為被賦值的對象,也可以將數(shù)組名作為被賦值對象。當(dāng)以數(shù)組元素為被賦值對象時,其賦值方法與靜態(tài)數(shù)組相同,在此不再贅述,僅陳述相同的理由:盡管動態(tài)數(shù)組在執(zhí)行聲明(Dim語句)時,數(shù)組大小沒有確定,但是當(dāng)執(zhí)行ReDim語句后,動態(tài)數(shù)組元素個數(shù)和下標(biāo)的上下限也就確定了,即數(shù)組元素下標(biāo)的下界可由“LBound(數(shù)組名)”函數(shù)得到(默認(rèn)為0),下標(biāo)上界可由“UBound(數(shù)組名)”函數(shù)得到,元素的個數(shù)可由表達(dá)式“UBound(數(shù)組名)?-?LBound(數(shù)組名)+?1”確定,因此,所有對靜態(tài)數(shù)組元素的賦值方法同樣適合動態(tài)數(shù)組。下面主要介紹VB系統(tǒng)將動態(tài)數(shù)組名作為被賦值對象的兩個常用函數(shù),即Array()函數(shù)和Split()函數(shù)等。
1)使用Array()函數(shù)為動態(tài)數(shù)組賦值
對于變體類型的一維動態(tài)數(shù)組,可采用Array()函數(shù)為數(shù)組各元素賦值。格式為:
數(shù)組名=Array(<數(shù)組元素值表>)
例5-3從鍵盤上輸入0~6之間的一個數(shù)字,顯示對應(yīng)的星期日~星期六的英文。
分析:星期日~星期六的英文可以放在一維動態(tài)數(shù)組中,通過Array函數(shù)直接賦值。
程序代碼如下:
2)使用Split()函數(shù)為動態(tài)數(shù)組賦值
Split()函數(shù)為數(shù)組元素賦值的基本方法是:將要賦值的數(shù)據(jù)組成字符串,且數(shù)據(jù)之間用固定的分隔符(如“,”)分隔;再通過Split()函數(shù)將其分離成逐個數(shù)據(jù)后,賦給數(shù)組各元素。
Split()函數(shù)格式為:
<數(shù)組名>=Split(<字符串表達(dá)式>[,分隔符])
其中,<字符串表達(dá)式>是一組為數(shù)組賦值的數(shù)據(jù),數(shù)據(jù)之間用固定的分隔符分隔,默認(rèn)為“”(一個空格字符)。
例5-4使用文本框錄入大量的數(shù)據(jù),將它們保存在一維數(shù)組中,并打印輸出(每行顯示10個數(shù)據(jù))。
本例用1個標(biāo)簽顯示提示信息,1個文本框用于輸入和編輯數(shù)據(jù),1個圖片框用于輸出數(shù)組元素的值,1個“輸出”按鈕。
“輸出”按鈕的“單擊事件”代碼算法:先將文本框中的數(shù)據(jù)保存到一維數(shù)組中,再在圖片框中顯示各數(shù)據(jù)元素的值。界面如圖5-1所示。
程序代碼如下:圖5-1例5-4運(yùn)行界面現(xiàn)對Split函數(shù)和Array函數(shù)在使用時應(yīng)注意的問題總結(jié)如下:
(1)?Split函數(shù)只能給字符型數(shù)組賦值,而Array函數(shù)只能給變體類型數(shù)組賦值。
(2)?Split和Array函數(shù)均只能為一維數(shù)組賦值,如果要為二維數(shù)組賦值,需要先將數(shù)據(jù)存儲在一維數(shù)組中,再通過程序的方法將一維數(shù)組的值賦給二維數(shù)組。
(3)用Array函數(shù)賦值時,數(shù)組元素的最小下標(biāo)受OptionBase語句影響。當(dāng)“OptionBase0”或默認(rèn)情況下,數(shù)組元素下標(biāo)最小值為0;當(dāng)“OptionBase1”時,數(shù)組元素下標(biāo)最小值為1;用Split函數(shù)為數(shù)組賦值時,數(shù)組元素的最小下標(biāo)與OptionBase語句無關(guān),不管OptionBase語句設(shè)置為0還是1,數(shù)組元素的最小下標(biāo)均從0開始。5.1.4數(shù)組的輸出
在上面的例子中已經(jīng)看到,數(shù)組輸出就是分別輸出數(shù)組中的各元素,采用循環(huán)或循環(huán)嵌套結(jié)構(gòu)將數(shù)組中的各元素逐一輸出。
通常利用For循環(huán)或For循環(huán)嵌套調(diào)用Print方法,以實現(xiàn)將數(shù)組元素值輸出到窗體或圖片框中。輸出時可采用Tab()函數(shù)控制輸出格式,使輸出的數(shù)據(jù)清晰。
以下程序的功能為將隨機(jī)函數(shù)產(chǎn)生的[0,99]范圍內(nèi)的隨機(jī)整數(shù),存入到一個二維數(shù)組中并輸出。在輸出數(shù)組時注意如下問題:
(1)采用循環(huán)控制結(jié)構(gòu)輸出數(shù)組中各元素的值時,輸出方法在循環(huán)結(jié)構(gòu)中的位置要合理,避免下標(biāo)越界現(xiàn)象。
(2)可以根據(jù)需要單個輸出數(shù)組元素的值,但下標(biāo)不能越界。如輸出上例二維數(shù)組a的前三個元素,可使用語句:
Printa(1,1);a(1,2);a(1,2)
(3)不能通過數(shù)組名來輸出數(shù)組中各元素的值。
(4)要注意用Tab()函數(shù)控制輸出格式。5.1.5數(shù)組應(yīng)用舉例
利用數(shù)組編程的一般步驟為:
(1)聲明數(shù)組。
(2)為數(shù)組元素賦值。
(3)運(yùn)算處理。
(4)結(jié)果輸出。
1.簡單統(tǒng)計
在計算機(jī)數(shù)據(jù)處理中,經(jīng)常要做類似于例5-1和例5-2的問題,下面再列舉幾例。
例5-5數(shù)據(jù)文件in.txt中保存著多名學(xué)生的一門課程的考試成績(假設(shè)為整數(shù)),統(tǒng)計各分?jǐn)?shù)段的學(xué)生人數(shù)。
分析:學(xué)生人數(shù)無法預(yù)先知道,因此應(yīng)采用動態(tài)數(shù)組存儲學(xué)生成績,先從數(shù)據(jù)文件中讀出數(shù)據(jù)放入文本框中,并用“,”分隔,以方便用Split函數(shù)處理?!敖y(tǒng)計”按鈕用于將文本框中的數(shù)據(jù)保存在一維數(shù)組中,并完成統(tǒng)計處理和結(jié)果輸出。程序運(yùn)行界面如圖5-2所示,其中,窗體上有1個文本框(Text1)、1個圖片框(Picture1)、3個命令按鈕(Command1~Command3)。圖5-2例5-5運(yùn)行結(jié)果
例5-6輸入一串字符,統(tǒng)計各字母出現(xiàn)的次數(shù)(不區(qū)分大小寫),并輸出統(tǒng)計結(jié)果,如圖5-3所示。圖5-3例5-6運(yùn)行結(jié)果分析:統(tǒng)計26個字母出現(xiàn)的次數(shù),可以聲明一個具有26個元素的一維數(shù)組。
算法如下:
(1)用取子串函數(shù)Mid(Text1,i,1)從Text1中取出每一個字符,并轉(zhuǎn)換成大寫字母。
(2)將A~Z之間的大寫字母用Asc()函數(shù)轉(zhuǎn)換成ASCII碼值,再根據(jù)ASCII碼值為相應(yīng)的數(shù)組元素計數(shù)。
例5-7用隨機(jī)函數(shù)產(chǎn)生10個兩位數(shù)的整數(shù)并放入數(shù)組a中,求最大值及其位置。
分析:求最大值及其位置的方法是先假設(shè)第一個元素是最大值,并將位置1保存在變量k中;從第二個元素開始,將a(k)與其他數(shù)組元素進(jìn)行一一比較,如果有大于a(k)的元素,則改變k的值;最后,a(k)中存放的必然是最大值,k就是最大值的位置。
程序代碼如下:
OptionBase1
PrivateSubCommand1_Click()
Dima%(10),i%,k%
Randomize
Fori=1To10
2.排序
排序是指將一組數(shù)按遞增或遞減的次序排列。常用的排序方法有選擇法、冒泡法、插入法等。這里只介紹選擇法。
例5-8用選擇排序法將15、8、4、13、6、10、17、1按照由小到大的順序遞增排列。
選擇排序法的算法步驟如下:
(1)先從n個數(shù)中找出最小數(shù)的下標(biāo),并將最小數(shù)與第一個數(shù)交換位置,這樣就可將n個數(shù)中的最小數(shù)放在數(shù)組中第一個數(shù)的位置上,找的方法同例5-7。
(2)依次對其余n-1個數(shù)再按步驟(1)選出次小的數(shù),與第二個數(shù)交換位置。重復(fù)步驟(1)共n-1次,最后得到數(shù)組中的元素就是按遞增順序排列的。
3.查找
查找是指在數(shù)組中找出與指定內(nèi)容相同的元素。查找常用的方法有順序查找和二分法查找。這里介紹順序查找。
例5-9給定一組數(shù)15、8、4、13、6、10、17、1,從鍵盤輸入一個數(shù),用順序查找法找出該數(shù)在數(shù)組中的位置。
分析:用變量p來標(biāo)記是否找到,用變量x存放欲查找的數(shù)。
順序查找的過程是:p的初值為False(假設(shè)未找到),使x與數(shù)組中的每一個元素進(jìn)行比較,如果相等,則改變變量p的值為True并退出循環(huán);如果找不到,則p的值仍為初值False。與數(shù)組中所有的元素比較完后,可根據(jù)變量p的值來判斷是否找到。
4.矩陣運(yùn)算
常見的矩陣運(yùn)算包括矩陣的加、減、乘、除、轉(zhuǎn)置等,程序設(shè)計中一般用二維數(shù)組來描述矩陣。對于二維數(shù)組的處理主要是對行列坐標(biāo)的控制。
例5-10有一個5行5列的二維數(shù)組,其元素值是隨機(jī)產(chǎn)生的,請將其轉(zhuǎn)置(行變列,列變行)后輸出,并求出兩條對角線的各元素之和。
分析:為了方便驗證,將元素值范圍設(shè)定在0~9之間。用兩個圖片框分別輸出轉(zhuǎn)置前和轉(zhuǎn)置后的數(shù)組,用一個標(biāo)簽輸出對角線元素之和。
程序運(yùn)行結(jié)果如圖5-4所示。圖5-4例5-10運(yùn)行結(jié)果
5.2自定義數(shù)據(jù)類型
5.2.1基本概念
在VB中,利用系統(tǒng)提供的標(biāo)準(zhǔn)數(shù)據(jù)類型聲明變量,可以存儲那些相互獨立、沒有內(nèi)在聯(lián)系的數(shù)據(jù),借助數(shù)組能存儲一組類型相同的數(shù)據(jù)。但在實際應(yīng)用中,對事物的描述往往需要兩個或兩個以上的數(shù)據(jù)項,例如,表5-2是學(xué)生成績表,每個學(xué)生的信息是學(xué)號、姓名、性別、出生日期、語文、數(shù)學(xué)、總分等7個基本數(shù)據(jù)項的集合,這7個基本數(shù)據(jù)項涉及字符型、數(shù)值型和日期型等三種基本數(shù)據(jù)類型。若采用數(shù)組存儲,則需要3個字符型數(shù)組分別存儲學(xué)號、姓名和性別,1個日期型數(shù)組存儲出生日期,3個整型數(shù)組分別存儲語文、數(shù)學(xué)和總分,這種方法盡管解決了數(shù)據(jù)的存儲問題,但處理起來將會非常麻煩。此類問題用VB提供的自定義數(shù)據(jù)類型則極為方便。表5-2學(xué)生成績登記表其中:<自定義數(shù)據(jù)類型名>是用戶欲定義的數(shù)據(jù)類型名,其命名規(guī)則與變量名命名規(guī)則相同;<字段n>是組成自定義數(shù)據(jù)類型的元素,其命名規(guī)則也與變量名命名規(guī)則相同;<類型名>可以是任何基本數(shù)據(jù)類型,包括已經(jīng)定義過的自定義數(shù)據(jù)類型。
例如,將表5-2的學(xué)生成績登記表結(jié)構(gòu)定義為自定義數(shù)據(jù)類型。程序代碼如下:定義自定義數(shù)據(jù)類型時應(yīng)注意,自定義數(shù)據(jù)類型一般放在標(biāo)準(zhǔn)模塊中,當(dāng)放在窗體的通用聲明段中時,在Type前必須加上關(guān)鍵詞Private。
完成自定義數(shù)據(jù)類型定義后,就可以用自定義數(shù)據(jù)類型來聲明變量,格式如下:
Dim變量名As自定義數(shù)據(jù)類型名
例如,聲明x為自定義數(shù)據(jù)類型studtype的變量,當(dāng)輸入完“As”后輸入數(shù)據(jù)類型名時,便可以在“成員列表”的下拉列表框中選擇“studtype”,如圖5-5所示。圖5-5使用自定義數(shù)據(jù)類型聲明變量當(dāng)變量x被聲明成studtype類型后,它就擁有studtype數(shù)據(jù)類型的各個字段。訪問各字段名的格式為:
變量名.字段名
為各字段賦值的格式為:
變量名.字段名=表達(dá)式5.2.2用戶自定義數(shù)據(jù)類型數(shù)組
用戶自定義數(shù)據(jù)類型數(shù)組中的每個元素的數(shù)據(jù)類型均為用戶自定義數(shù)據(jù)類型。聲明用戶自定義數(shù)據(jù)類型數(shù)組的步驟如下:
(1)使用Type語句定義自定義數(shù)據(jù)類型。
(2)使用數(shù)組聲明語句聲明自定義數(shù)據(jù)類型數(shù)組。
例如,存儲表5-2中的數(shù)據(jù),可用自定義數(shù)據(jù)類型數(shù)組。然后,聲明一個具有studtype類型的數(shù)組。例如,
Dimscore(1to40)Asstudtype'假設(shè)用來保存40個學(xué)生的信息
這樣,在程序中表示第i個學(xué)生的姓名,可以寫成:
score(i).xm
給score數(shù)組中的第一個元素賦值,可以由下列語句完成:
score(1).xh="01"
score(1).xm="張三"
score(1).xb="男"
score(1).csrq=#1980-04-08#
score(1).yw=87
score(1).sx=56
score(1).zf=score(1).yw+score(1).sx
例5-11
數(shù)據(jù)文件中存放著10名學(xué)生參加3門課程考試的成績(如圖5-6a所示),要求按平均成績由高到低排序,并輸出學(xué)生的姓名、所有3門課程的成績及其平均分。圖5-6a數(shù)據(jù)文件內(nèi)容圖5-6b程序運(yùn)行結(jié)果 5.3控件數(shù)組
5.3.1基本概念
控件數(shù)組由一組同類控件組成,它們共用一個控件名稱(為控件數(shù)組名),控件各數(shù)組元素有不同的索引號(類似于數(shù)組元素的下標(biāo)),該索引由控件Index屬性決定,最大索引值
為32?767。
控件數(shù)組中的各控件元素可以具有不同的屬性值,但具有相同的事件過程。例如,若CmdName是具有4個元素的命令按鈕控件數(shù)組,不管單擊哪個命令按鈕,都會調(diào)用同一個單擊事件過程。格式如下:
PrivateSubCmdName_Click(IndexAsInteger)
……
EndSub
通過過程參數(shù)Index的值確定用戶按的是哪個命令按鈕,很顯然,該過程體應(yīng)是多分支結(jié)構(gòu),常采用SelectCase結(jié)構(gòu)。程序代碼如下:5.3.2建立控件數(shù)組的方法
控件數(shù)組有兩種定義方法,一是在設(shè)計時建立,二是在運(yùn)行時添加控件數(shù)組元素。
1.設(shè)計時建立
在設(shè)計過程中建立控件數(shù)組的步驟如下:
(1)在窗體上添加第一個控件,設(shè)置好其名稱和其他屬性。
(2)選中該控件,進(jìn)行復(fù)制和粘貼操作,系統(tǒng)會出現(xiàn)如圖5-7所示的提示信息。圖5-7建立控件數(shù)組時的提示信息
2.在程序運(yùn)行時建立
在程序運(yùn)行時建立控件數(shù)組的步驟如下:
(1)先建立第一個控件數(shù)組元素:在窗體中添加第一個控件,設(shè)置其Index屬性為0。
(2)在程序中用Load方法添加其余的若干個元素,用Unload方法刪除某個元素。
(3)新添的控件數(shù)組元素通過Left和Top屬性值確定它在窗體上的具體位置。
(4)設(shè)置其Visible屬性為True,使其顯示出來。
例5-12
在窗體上建立一個由100個命令按鈕組成的10行10列控件數(shù)組,如圖5-8所示。圖5-8程序生成控件數(shù)組建立步驟如下:
(1)在窗體上添加一個圖片框Picture1,其大小在窗體的Load事件中設(shè)置。
(2)在窗體上添加一個命令按鈕Command1,并將其Index屬性改為0,這樣就創(chuàng)建了控件數(shù)組的第一個元素,控件數(shù)組的其他元素的創(chuàng)建通過調(diào)用Load方法實現(xiàn)。
程序代碼如下:5.3.3應(yīng)用舉例
例5-13
輸入兩個數(shù),根據(jù)不同的運(yùn)算符計算相應(yīng)的運(yùn)算結(jié)果。
在窗體上添加3個標(biāo)簽(Label1,Label2,Label3)、2個文本框(Text1,Text2)和1個命令按鈕(Command1),將Command1復(fù)制3份成為控件數(shù)組元素,布局如圖5-9a所示。4個命令按鈕分別可以進(jìn)行加、減、乘、除運(yùn)算。圖5-9a例5-13界面設(shè)計圖5-9b例5-13運(yùn)行界面
教學(xué)小結(jié)
數(shù)組和自定義數(shù)據(jù)類型是VB提供的一種復(fù)合數(shù)據(jù)結(jié)構(gòu)。數(shù)組中各元素的類型必須相同,而自定義數(shù)據(jù)類型中各數(shù)據(jù)域的類型可以不同,在應(yīng)用上具有靈活、形式多樣的特點,成為解決大量數(shù)據(jù)、復(fù)雜問題的理想工具。需強(qiáng)調(diào)的是,本章也是VB程序設(shè)計中的難點和重點,學(xué)生容易產(chǎn)生“厭學(xué)”情緒,在教學(xué)過程中應(yīng)當(dāng)注意以下幾點:
(1)對比數(shù)組元素與簡單變量的異同,充分理解數(shù)組的概念及作用。
(2)掌握數(shù)組的定義、輸入和輸出方法是應(yīng)用數(shù)組編程的基礎(chǔ);掌握使用數(shù)組編程的基本步驟,理解常用算法及其實現(xiàn)方法是應(yīng)用數(shù)組編程的關(guān)鍵;巧妙的下標(biāo)變換是應(yīng)用數(shù)組編程的難點。
(3)自定義數(shù)據(jù)類型是用戶根據(jù)實際問題需要定義的數(shù)據(jù)結(jié)構(gòu),用來描述數(shù)據(jù)類型可以不同但相互關(guān)聯(lián)的一組數(shù)據(jù)。自定義類型數(shù)組是進(jìn)行數(shù)據(jù)文件操作的基礎(chǔ),應(yīng)重點掌握。
(4)控件數(shù)組可將一組完成相同或相似功能的控件設(shè)計成控件數(shù)組元素,使得它們共享相同的事件過程代碼,從而簡化了代碼的編寫。
習(xí)題
一、選擇題
1.下面的數(shù)組聲明語句中,正確的是
。
(A)?DimArray[2,3]AsInteger
(B)?DimArray(2,3)AsInteger
(C)?DimArray[2.3]AsInteger
(D)?DimArray(2:3)AsInteger
4.默認(rèn)情況下,語句DimA(-1to3,2to5,2)AsLong定義的數(shù)組元素個數(shù)是
。
(A)?11 (B)?12
(C)?60 (D)?40
5.以下說法不正確的是
。
(A)使用ReDim語句可以改變數(shù)組的維數(shù)
(B)使用ReDim語句可以改變數(shù)組的類型
(C)使用ReDim語句可以改變數(shù)組的每一維的大小
(D)使用ReDim語句可以對數(shù)組中的所有元素進(jìn)行初始化
9.下列程序段的執(zhí)行結(jié)果為
。
DimA(5)
Fori=1to5
A(i)=i*i
Nexti
PrintA(i-1)
(A)?5 (B)?25
(C)?0 (D)?16
15.定義數(shù)組Arr(1to5,5)后,下列數(shù)組元素不存在的是
。
(A)?Arr(1,1) (B)?Arr(0,1)
(C)?Arr(1,0) (D)?Arr(5,5)
16.關(guān)于ReDim語句,錯誤的說法是
。
(A)?ReDim語句只能出現(xiàn)在過程中
(B)與Dim語句、Static語句不同,ReDim語句是一個可執(zhí)行語句
(C)?ReDim語句的作用是聲明動態(tài)數(shù)組
(D)?ReDim語句的作用是給動態(tài)數(shù)組分配實際的元素個數(shù)
17.用于標(biāo)識控件數(shù)組中各個元素的參數(shù)是
。
(A)?Tag (B)?Index
(C)?ListIndex (D)?TabIndex
18.以下程序段的運(yùn)行結(jié)果是
。
PrivateSubForm_Click()
Dimx()AsString
a="Howareyou!"
n=Len(a)
ReDimx(1Ton)二、編程題
1.設(shè)有如下兩組數(shù)據(jù):
①?1,3,5,2,4,18,50,25
②?5,27,30,35,60,41,87,33
編寫一個程序,把上面兩組數(shù)據(jù)分別讀入兩個數(shù)組中,然后把兩個數(shù)組中對應(yīng)下標(biāo)的元素相加,即1+5,3+27,
…,25?+?33,并把相應(yīng)的結(jié)果放入第三個數(shù)組中,最后輸出第三個數(shù)組的值。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024土地估價師協(xié)會土地評估標(biāo)準(zhǔn)制定與實施合同3篇
- 2024年度智能穿戴設(shè)備生產(chǎn)與銷售合同3篇
- 2025關(guān)于正規(guī)工業(yè)品買賣合同范本
- 2024年夾板買賣合同范本:涉及夾板產(chǎn)品生命周期管理與服務(wù)保障3篇
- 零售店鋪設(shè)計師招聘協(xié)議模板
- 企業(yè)飲酒文化指南
- 煤質(zhì)與經(jīng)濟(jì)效益
- 廠房消防改造工程協(xié)議
- 超市購物顧客證件管理辦法
- 安徽省阜陽市潁上縣2024-2025學(xué)年高一上學(xué)期期中考試歷史試題(解析版)
- 電梯困人應(yīng)急演練方案
- 2024供應(yīng)鏈合作伙伴采購基本協(xié)議
- 2024年高考真題-政治(江蘇卷) 含解析
- 鄉(xiāng)鎮(zhèn)衛(wèi)生院污水處理技術(shù)方案
- 課件小學(xué)體育教學(xué)課件
- 2024年人教版初二地理下冊期末考試卷(附答案)
- 易制毒、易制爆化學(xué)品防盜搶應(yīng)急演練及預(yù)案
- 餐飲服務(wù)電子教案 學(xué)習(xí)任務(wù)3 西餐正餐服務(wù)
- 一年級生命安全教育教案(湖北版)
- 2024年金華市婺州糧食收儲限公司公開招聘工作人員高頻難、易錯點500題模擬試題附帶答案詳解
- 電氣自動化專業(yè)職業(yè)生涯目標(biāo)設(shè)定與規(guī)劃
評論
0/150
提交評論