版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
VisualBasic程序設計任務5數(shù)組VisualBasic程序設計任務5數(shù)組11.了解數(shù)組的基本概念2.熟練掌握一維數(shù)組的使用方法
3.掌握數(shù)組的基本操作4.靈活應用靜態(tài)數(shù)組與動態(tài)數(shù)組
5.掌握數(shù)組的常用算法本章學習目標6.掌握用戶自定義類型的基本用法教學重點——數(shù)組和控件數(shù)組的應用教學難點——控件數(shù)組1.了解數(shù)組的基本概念2.熟練掌握一維數(shù)組的使用方法3.掌25.1數(shù)組的概念引例1.己知50名學生的一門課成績,要求找出高于平均分的所有學生的成績。2.輸入50個數(shù),要求程序按輸入時的逆序把這50個數(shù)輸出來。即按輸入時的相反順序輸出這50個數(shù)。
少量的數(shù)據(jù)可以使用簡單變量方便地存取或處理。若數(shù)據(jù)量很大,采用這種處理方法幾乎是難以做到的。而數(shù)組可以很方便地處理這種大量的數(shù)據(jù)。5.1數(shù)組的概念引例1.己知50名學生的一門課成績,要求找3數(shù)組是一組按一定規(guī)律進行排列的相同類型變量的集合。數(shù)組用于表示一組性質相同的有序的數(shù),這一組數(shù)用一個統(tǒng)一的名稱來代替,稱為數(shù)組名。數(shù)組名的命名規(guī)則與簡單變量的命名規(guī)則相同。數(shù)組中的每一個變量稱為數(shù)組元素。為了在處理時能夠區(qū)分數(shù)組中的每一個元素,需要用一個索引號加以區(qū)別,該索引號稱為下標。數(shù)組中的每一個元素可以用數(shù)組名和下標唯一表示,寫成:數(shù)組名(下標)。
數(shù)組元素在程序中的使用與簡單變量類似,在簡單變量允許出現(xiàn)的地方也允許出現(xiàn)數(shù)組元素。所以,數(shù)組元素又稱為下標變量。數(shù)組是一組按一定規(guī)律進行排列的相同類型變量的集合。數(shù)4
表示數(shù)組元素時,應注意1)需用圓括號也只能用把下標括起來。2)下標可以是常量、符號常量或表達式,其值必須是整數(shù)。3)下標的最小值稱為下界,下標的最大值稱為上界。在沒有任何說明的情況下,數(shù)組的下界默認值為0。例如dimscore(48)assingle(integer)OptionBase1
一個班(48個)學生的成績Score或30種圖書的名字BookName或100種商品的價格Cost數(shù)組元素——數(shù)組中的各個變量,使用唯一的下標(索引)來標識。Score(1)、Score(2)……Score(48)或BookName(0)~BookName(29)或Cost(0)~Cost(99)表示數(shù)組元素時,應注意例如dimscore(4855.2數(shù)組的定義5.2.1定義數(shù)組的一般格式Dim數(shù)組名(第一維說明[,第二維說明]……)[As類型名稱]說明:(1)數(shù)組須先定義后使用,未定義不能使用。(2)格式中的[]部分為可選部分。(3)省略[As類型名稱]定義數(shù)組,默認為變體類型的數(shù)組。(4)維說明的形式為:[下標下界to]下標上界其中當下標的下界為默認值0時,可以省略不寫(5)也可以下面方式定義下標下界的默認值:OptionBasen
(其中n為0或1)。(6)用Dim語句定義數(shù)組時,該語句把數(shù)組元素初始化為0或空字符串。(7)在同一過程中,數(shù)組名不能與其他數(shù)組名或變量名相同。5.2數(shù)組的定義5.2.1定義數(shù)組的一般格式6數(shù)組的維數(shù)一個數(shù)組元素只有一個下標,則稱為一維數(shù)組。例如,要表示某班40名同學的英語成績可以表示成G(1)、G(2)、G(3)……G(40)。用兩個下標來表示的數(shù)組稱為二維數(shù)組。對于可以表示成表格形式的數(shù)據(jù),如矩陣、行列式等,用二維數(shù)組來表示則比較方便。例如,要表示六個班(各班40人)共240個學生的英語成績,就可以用二維數(shù)組表示G(6,40),第一個下標表示班級,第二個下標表示學號,則一班30號學生的成績可以表示成G(1,30)。根據(jù)需要,還可以使用三維數(shù)組、四維數(shù)組等,VB最多允許有60維。數(shù)組的維數(shù)75.2.2數(shù)組的引用引用數(shù)組元素的格式
數(shù)組名(下標1,[下標2]…)說明:(1)在程序中,凡是能用變量的地方,都可用數(shù)組元素來替換。(2)引用數(shù)組元素時,要注意數(shù)組名、類型及維數(shù)要與定義的一致。(3)數(shù)組元素的下標要在定義的范圍之內(nèi),否則出現(xiàn)下標越界錯誤。5.2.2數(shù)組的引用引用數(shù)組元素的格式數(shù)組名(下標1,[8
一般通過循環(huán)語句及InputBox函數(shù)給數(shù)組輸入數(shù)據(jù)。數(shù)組的輸出一般用Print方法、標簽或文本框實現(xiàn)。賦值Fori=1To10a(i)=Val(InputBox("輸入第"&i&"個數(shù)"))Nexti輸出Fori=1To10Printa(i);Nexti5.2.3數(shù)組的賦值和輸出一般通過循環(huán)語句及InputBox函數(shù)給數(shù)組9對輸入的20個整數(shù)按每行5個數(shù)的格式輸出。例5-1PrivateSubCommand1_Click()
Dimb(20)AsInteger,i%
Fori=1To20
b(i)=InputBox("請輸入一個整型數(shù)")
Nexti
Fori=1To20Printb(i);IfiMod5=0ThenPrint
NextiEndSub對輸入的20個整數(shù)按每行5個數(shù)的格式輸出。例5-1Pri10由鍵盤輸入10個數(shù),再逆序輸出。例5-2
PrivateSubCommand1_Click()Dima(10)AsInteger,i%Print"輸入的數(shù)據(jù)為"Fori=1To10a(i)=InputBox("請輸入第"&i&"個數(shù)")
Printa(i),
NextiEndSubPrivateSubCommand2_Click()Dima(10)AsInteger,i%PrintPrint"逆序輸出為"Fori=10To1step-1Printa(i),NextiEndSub由鍵盤輸入10個數(shù),再逆序輸出。例5-2Private11由鍵盤上輸入40人的考試成績,輸出高于平均成績的分數(shù)。例5-3分析:該問題需處理三部分,一輸入40個人的成績;二求平均分;三把這40個分數(shù)逐一和平均成績進行比較,若高于平均成績,則輸出。程序代碼如下:PrivateSubCommand1_Click()Dimscore(40)AsSingle,aver!,i%aver=0Fori=1To40score(i)=InputBox("請輸入成績")aver=aver+score(i)Nextiaver=aver/40Fori=1To40Ifscore(i)>averThenPrintscore(i)NextiEndSub由鍵盤上輸入40人的考試成績,輸出高于平均成績的分數(shù)。例512定義一個可存放不同類型數(shù)據(jù)的一維數(shù)組并輸出。例5-4
OptionBase1PrivateSubCommand1_Click()Dimabc(4)abc(1)=dateabc(2)="你的考試得了"abc(3)=100abc(4)="分"PrintFori=1To4Printabc(i)NextiEndSub定義一個可存放不同類型數(shù)據(jù)的一維數(shù)組并輸出。例5-4Op135.2.4二維數(shù)組的定義和引用1.二維數(shù)組定義格式
Dim數(shù)組名(下標1,下標2)[As類型名稱]說明:(1)兩個下標形式為:[下標下界]To上界,如果下標下界省略,則下標下界默認為0。如果之前用OptionBase1說明,則下標下界默認值為1。(2)二維數(shù)組可以形象地用平面的二維表格來表示,表格的行數(shù)和列數(shù)就是數(shù)組地第一個下標和第二個下標地取值個數(shù),同一行上的元素,第一個下標是相同的,同一列上的元素,第二個下標是相同的。(3)二維數(shù)組的元素個數(shù)為(上界1-下界1+1)×(上界2-下界2+1)5.2.4二維數(shù)組的定義和引用1.二維數(shù)組定義格式Dim142.二維數(shù)組的引用引用形式:數(shù)組名(下標1,下標2)說明:習慣上將下標1為行下標,下標2為列下標。例如:a(1,2)為數(shù)組第二行第三列的元素。
二維數(shù)組的下標范圍由下標的下界和上界來確定,下界和上界可以是任何整型常量或常量表達式。
如:Dimaa(2,3)asintegeraa(0,0)aa(0,1)aa(0,2)aa(0,3)aa(1,0)aa(1,1)aa(1,2)aa(1,3)aa(2,0)aa(2,1)aa(2,2)aa(2,3)2.二維數(shù)組的引用引用形式:數(shù)組名(下標1,下標2)15又如:Dimaa(-1to1,-2to1)aa(-1,-2)aa(-1,-1)aa(-1,0)aa(-1,1)aa(0,-2)aa(0,-1)aa(0,0)aa(0,1)aa(1,-2)aa(1,-1)aa(1,0)aa(1,1)3.二維數(shù)組的賦值可以通過循環(huán)語句賦值:例如:
fori=0to2forj=0to3a(i,j)=int(rnd*100)nextjnexti又如:Dimaa(-1to1,-2t16
LBound函數(shù)和UBound函數(shù)格式:
LBound(數(shù)組名[,維]) UBound(數(shù)組名[,維])說明:
(1)數(shù)組名是要測試的數(shù)組。
(2)LBound函數(shù)返回數(shù)組的下界值,UBound函數(shù)返回數(shù)組的上界值。
(3)一維數(shù)組可省略[,維],二維數(shù)組必須指定LBound(aa,2)表示測試aa數(shù)組的第二維下界,其值為:-2。
UBound(aa,1)表示測試aa數(shù)組的第一維上界,其值為:1。5.2.5數(shù)組下標的界值LBound函數(shù)和UBound函數(shù)格式: 5.2.5數(shù)組17用LBound函數(shù)和UBound函數(shù)改寫例4-4。例5-5OptionBase1PrivateSubCommand1_Click()Dimabc(4)abc(1)=dateabc(2)="你的考試得了"abc(3)=100abc(4)="分"PrintFori=LBoundToUBound(abc)Printabc(i)NextiEndSub用LBound函數(shù)和UBound函數(shù)改寫例4185.3靜態(tài)數(shù)組動態(tài)數(shù)組5.3.1.靜態(tài)數(shù)組靜態(tài)數(shù)組的二種形式:用Dim語句所定義的數(shù)組。用Static語句定義的數(shù)組。兩者的區(qū)別:(1)Static語句只能出現(xiàn)在過程中,Dim語句不僅可以出現(xiàn)在過程中,還可以出現(xiàn)在通用聲明中。(2)在過程中用Dim語句定義的數(shù)組,過程執(zhí)行結束后將釋放內(nèi)存空間。(3)在過程中用Static語句定義的數(shù)組,過程執(zhí)行結束后將不會釋放內(nèi)存空間。5.3靜態(tài)數(shù)組動態(tài)數(shù)組5.3.1.靜態(tài)數(shù)組19比較用Static語句定義的數(shù)組與用Dim語句定義的數(shù)組之區(qū)別。單擊5次“打印”命令按鈕后的結果如圖所示.例5-6比較用Static語句定義的數(shù)組與用Dim語句定205.3.2.動態(tài)數(shù)組(可調數(shù)組)定義可調數(shù)組分兩步:第一步:聲明一個沒有下標參數(shù)的數(shù)組。格式:
Dim
數(shù)組名()[As類型]第二步:引用數(shù)組前用ReDim語句重新定義。格式:ReDim[Preserve]數(shù)組名([下界to]上界[,[下界to]上界……])[As類型]5.3.2.動態(tài)數(shù)組(可調數(shù)組)定義可調數(shù)組分兩步:21例如:PrivateSubCommand1_Click()Dima()AsIntegerDimn%……n=Val(InputBox("inputn"))ReDima(n)……EndSub例如:22可調數(shù)組說明(1)在過程中,可多次用ReDim語句來改變數(shù)組的大小,也可改變數(shù)組的維數(shù),但不能改變數(shù)組的類型。(2)若不指定[Preserve]保留字,在執(zhí)行ReDim語句時,數(shù)組中原來所存放的值將全部丟失。(3)指定[Preserve]保留字,在執(zhí)行ReDim語句時,數(shù)組中原來所存放的值將不會丟失。但使用[Preserve]保留字后,只能改變最后一維的大小,前幾維的大小不能改變。可調數(shù)組說明(1)在過程中,可多次用ReDim語句來改變數(shù)23通過輸入對話框輸入一批成績,把及格的和不及格的成績分別存放在數(shù)組a和b中,并以每行5個數(shù)據(jù)的形式輸出數(shù)組a和b。輸入-1時程序結束。例5-6通過輸入對話框輸入一批成績,把及格的和不及格的成24數(shù)組是一種構造類型,數(shù)組名通常是整個數(shù)組的標識,對數(shù)組的操作實際上是對數(shù)組元素的操作?;静僮饕话闶侵笇?shù)組元素所進行的輸入和輸出,即如何給數(shù)組元素賦值,又如何將數(shù)組元素的值顯示在窗體上或控件上。5.4數(shù)組的基本操作數(shù)組是一種構造類型,數(shù)組名通常是整個數(shù)組的標識,對25方法一用循環(huán)結構及InputBox函數(shù)給數(shù)組元素賦值由鍵盤輸入10個數(shù)據(jù),分別統(tǒng)計正數(shù)之和及負數(shù)之和。例5-75.4.1.數(shù)組元素的輸入方法一用循環(huán)結構及InputBox函數(shù)給數(shù)組元素賦值由鍵盤輸26例5-8方法二用數(shù)組名直接賦值用靜態(tài)數(shù)組ww元素的值給動態(tài)數(shù)組yy賦值。OptionBase1PrivateSubCommand1_Click()Dimww(4)asintegerDimyy()asinteger'yy為動態(tài)數(shù)組Fori=1To5Nextiyy=ww'用ww給yy賦值printyy(i)nextiEndSub例5-8方法二用數(shù)組名直接賦值用靜態(tài)數(shù)組ww元素的值給動態(tài)27例5-8說明(1)通過數(shù)組名給數(shù)組名賦值的條件是:兩個數(shù)組的類型相同,且賦值號左邊為動態(tài)數(shù)組,右邊為靜態(tài)數(shù)組。(2)賦值號左邊的動態(tài)數(shù)組,通過賦值確定大小。例5-8說明(1)通過數(shù)組名給數(shù)組名賦值的條件是:兩個數(shù)組28格式:數(shù)組變量名=Array(數(shù)組元素值)功能:將小括號中的數(shù)據(jù)依次賦給數(shù)組中的各元素。說明:
(1)數(shù)組可以說明成Variant類型或不說明類型。
(2)所聲明的數(shù)組為可調數(shù)組,圓括號可省略不寫
(3)數(shù)組下標的上界值由括號內(nèi)的參數(shù)個數(shù)決定
(4)Array函數(shù)只適用于一維數(shù)組。
(5)Array函數(shù)中的數(shù)組元素值之間以逗號分隔方法三用Array函數(shù)給數(shù)組元素賦值。格式:數(shù)組變量名=Array(數(shù)組元素值)方法三用Array29用Array函數(shù)為數(shù)組C賦初值。例5-9PrivateSubCommand1_Click()DimcasVariantc=Array(4,5,3,7,2,9)Fori=LBound(c)ToUBound(c)printc(i)NextiprintprintFori=0To5printc(i)nextiEndSub用Array函數(shù)為數(shù)組C賦初值。例5-9PrivateS30 根據(jù)提示分別將5個數(shù)據(jù)通過文本框賦給一維數(shù)組w,單擊輸入框中的“確定”按鈕完成每次的輸入操作;單擊顯示框中的“確定”按鈕,在圖片框中輸出數(shù)組w中所有元素的值。例5-10方法四將控件(對象)的屬性給數(shù)組元素賦值。 根據(jù)提示分別將5個數(shù)據(jù)通過文本框賦給一維數(shù)組w,單擊輸31如例5-9中的語句:
Fori=0To5Printc(i)Nexti再如例5-10中的語句:
Fori=1To5Picture1.Printww(i)Nexti是利用循環(huán)并結合Print語句將數(shù)組元素的值依次輸出在窗體上。是利用循環(huán)并結合Print語句將數(shù)組元素的值依次輸出在圖片框上。5.4.2.數(shù)組元素的輸出方法一用print方法將數(shù)組元素的值直接輸出到窗體上或圖片框中。如例5-9中的語句: 是利用循環(huán)并結合Print語句將數(shù)組32求數(shù)組中的最大元素及下標。例5-11方法二用賦值語句方法將數(shù)組元素的值顯示在標簽、文本框中或其它控件上。求數(shù)組中的最大元素及下標。例5-11方法二用賦值語句方法將33格式:
ForEach成員in數(shù)組
…
[ExitFor]
… Next[成員]功能:ForEach…Next語句用于對數(shù)組或集合中的元素逐一進行循環(huán)控制操作。方法三用ForEach...Next語句輸出。格式:方法三用ForEach...Next語句輸出。34該語句的執(zhí)行過程:(1)首先計算數(shù)組元素的個數(shù),決定循環(huán)的次數(shù)(2)每次執(zhí)行循環(huán)體之前先將數(shù)組的一個元素的值賦給成員,第一次是第一個數(shù)組元素,第二次是第二個數(shù)組元素,依次類推。(3)執(zhí)行循環(huán)體后,轉到(2)。(4)直到遍歷完每一個數(shù)組元素或遇到ExitFor語句則退出該循環(huán)。該語句的執(zhí)行過程:35說明:(1)“成員”必須是一個變體變量名,為循環(huán)而設,表示某個數(shù)組元素的值。(2)“數(shù)組”僅為一個數(shù)組名,不需括號、上界、下界等。(3)從ForEach語句到Next語句之間的語句為循環(huán)體??捎肊xitFor語句直接跳出循環(huán)。說明:36用ForEach…Next語句輸出數(shù)組元素。例5-12用ForEach…Next語句輸出數(shù)組元素。例5-375.5控件數(shù)組控件數(shù)組的建立方法一1.在界面設計時建立(1)先創(chuàng)建數(shù)組中的第一個控件(注意此時控件的Index屬性值為空)。(2)選取該控件復制,再粘貼。系統(tǒng)自動提示:“是否創(chuàng)建一個控件數(shù)組嗎?”。(3)單擊“是”按鈕,窗體上自動增加一個屬性基本相同的控件(注意此時第一個控件的Index=0,新增控件的Index=1)。(4)繼續(xù)粘貼,便會產(chǎn)生一系列屬性基本相同,而只有Index屬性不同的一組控件,即控件數(shù)組。1.控件數(shù)組的概念2.控件數(shù)組的建立5.5控件數(shù)組控件數(shù)組的建立方法一1.在界面設計時建立1.385.5控件數(shù)組1.控件數(shù)組的概念2.控件數(shù)組的建立
一組完成類似功能且類型相同的控件,將它們組合起來,以控件的名稱作為數(shù)組名,并給各個控件冠以不同的下標,所組成的數(shù)組,稱之為控件數(shù)組。數(shù)組中的某個元素,代表某一個具體的控件,所完成的功能與獨立的控件幾乎一樣。5.5控件數(shù)組1.控件數(shù)組的概念2.控件數(shù)組的建立395.5控件數(shù)組控件數(shù)組的建立方法二2.在程序運行時增加控件數(shù)組元素(1)在窗體上添加第一個控件,將其Index屬性設置為0,Visible屬性設置為False。(2)在編寫事件代碼中,用Load方法添加新的控件數(shù)組元素,并將其Visible屬性設置為True;用UnLoad方法可以刪除控件數(shù)組元素。(3)設置其Left屬性和Top屬性。(4)當程序運行時,則會根據(jù)編程中的命令,添加或刪除控件。1.控件數(shù)組的概念2.控件數(shù)組的建立5.5控件數(shù)組控件數(shù)組的建立方法二2.在程序運行時增加控件405.5控件數(shù)組1.控件數(shù)組的概念2.控件數(shù)組的建立建立一個含有三個命令按鈕的控件數(shù)組,當單擊某個命令按鈕時,標簽的背景分別顯示不同的顏色。例5-135.5控件數(shù)組1.控件數(shù)組的概念2.控件數(shù)組的建立415.5控件數(shù)組Load語句和UnLoad語句Load語句的一般格式為:
Load控件數(shù)組名(下標)
其中控件數(shù)組名為控件名稱,如:Label1、Command1、Picture1等,下標為1、2、3等。UnLoad語句的一般格式為:
UnLoad控件數(shù)組名(下標)1.控件數(shù)組的概念2.控件數(shù)組的建立5.5控件數(shù)組Load語句和UnLoad語句Load語句的425.5控件數(shù)組單擊“添加圖片”按鈕,在窗體上增加一幅圖片,單擊“刪除圖片”按鈕,在窗體上刪除一幅圖片,最多顯示四幅圖片。例5-141.控件數(shù)組的概念2.控件數(shù)組的建立5.5控件數(shù)組單擊“添加圖片”按鈕435.7數(shù)組應用舉例將輸入的一維數(shù)組的數(shù)據(jù)逆序存放并輸出。例5-18例5-18例5-19例5-20例5-21例5-22例5-235.7數(shù)組應用舉例將輸入的一維數(shù)組的數(shù)據(jù)逆序存放并輸出。例44從鍵盤輸入7個數(shù)據(jù),從小到大排序。例5-195.7數(shù)組應用舉例例5-18例5-19例5-20例5-21例5-22例5-23代碼從鍵盤輸入7個數(shù)據(jù),從小到大排序。例5-195.745選擇排序:選擇排序:46冒泡原理:冒泡原理:47求矩陣A的轉置矩陣。例5-20矩陣A1234567895.7數(shù)組應用舉例例5-18例5-19例5-20例5-21例5-22例5-23求矩陣A的轉置矩陣。例5-20矩陣A1234567895.48在一個二維數(shù)組中查找某個整數(shù),若找到就顯示該元素及其數(shù)組下標,若未找到則給出提示。例5-215.7數(shù)組應用舉例例5-18例5-19例5-20例5-21例5-22例5-23在一個二維數(shù)組中查找某個整數(shù),49分別求下列矩陣兩個對角線元素之和。例5-225.7數(shù)組應用舉例例5-18例5-19例5-20例5-21例5-22例5-23123456789分別求下列矩陣兩個對角線元素之和。例5-225.7數(shù)組應50求下列兩個矩陣之和。矩陣A矩陣B123012456345789678例5-235.7數(shù)組應用舉例例5-18例5-19例5-20例5-21例5-22例5-23求下列兩個矩陣之和。矩陣A矩陣B1251設要在一個具有n個升序排列元素的一維數(shù)組中插入一個新的元素k,使原數(shù)組仍然是有序的。算法描述如下:
(1)從第1個元素開始逐個與k比較,一旦發(fā)現(xiàn)第p個元素大于k,則確定插入的位置為p,如果所有元素均小于k,則確定插入的位置為n+1。
(2)重新定義數(shù)組大小,從第n個元素到第p個元素逐一向后移動一個位置。
(3)將k賦值給第p個元素,完成插入操作。例5-245.7數(shù)組應用舉例246108待插入元素ka(1)a(2)a(3)a(4)a(5)a(6)7①②③例5-24例5-25設要在一個具有n個升序52在窗上畫一個文本框一個圖形框,和一個命令按鈕,在文本框中輸入一串字符,當單擊“統(tǒng)計”按鈕時,統(tǒng)計各字母出現(xiàn)的次數(shù),并在圖形框中輸出。輸入不區(qū)分大小寫字母例5-255.7數(shù)組應用舉例例5-25例5-24在窗上畫一個文本框一個圖形框,53
VisualBasic程序設計任務5數(shù)組VisualBasic程序設計任務5數(shù)組541.了解數(shù)組的基本概念2.熟練掌握一維數(shù)組的使用方法
3.掌握數(shù)組的基本操作4.靈活應用靜態(tài)數(shù)組與動態(tài)數(shù)組
5.掌握數(shù)組的常用算法本章學習目標6.掌握用戶自定義類型的基本用法教學重點——數(shù)組和控件數(shù)組的應用教學難點——控件數(shù)組1.了解數(shù)組的基本概念2.熟練掌握一維數(shù)組的使用方法3.掌555.1數(shù)組的概念引例1.己知50名學生的一門課成績,要求找出高于平均分的所有學生的成績。2.輸入50個數(shù),要求程序按輸入時的逆序把這50個數(shù)輸出來。即按輸入時的相反順序輸出這50個數(shù)。
少量的數(shù)據(jù)可以使用簡單變量方便地存取或處理。若數(shù)據(jù)量很大,采用這種處理方法幾乎是難以做到的。而數(shù)組可以很方便地處理這種大量的數(shù)據(jù)。5.1數(shù)組的概念引例1.己知50名學生的一門課成績,要求找56數(shù)組是一組按一定規(guī)律進行排列的相同類型變量的集合。數(shù)組用于表示一組性質相同的有序的數(shù),這一組數(shù)用一個統(tǒng)一的名稱來代替,稱為數(shù)組名。數(shù)組名的命名規(guī)則與簡單變量的命名規(guī)則相同。數(shù)組中的每一個變量稱為數(shù)組元素。為了在處理時能夠區(qū)分數(shù)組中的每一個元素,需要用一個索引號加以區(qū)別,該索引號稱為下標。數(shù)組中的每一個元素可以用數(shù)組名和下標唯一表示,寫成:數(shù)組名(下標)。
數(shù)組元素在程序中的使用與簡單變量類似,在簡單變量允許出現(xiàn)的地方也允許出現(xiàn)數(shù)組元素。所以,數(shù)組元素又稱為下標變量。數(shù)組是一組按一定規(guī)律進行排列的相同類型變量的集合。數(shù)57
表示數(shù)組元素時,應注意1)需用圓括號也只能用把下標括起來。2)下標可以是常量、符號常量或表達式,其值必須是整數(shù)。3)下標的最小值稱為下界,下標的最大值稱為上界。在沒有任何說明的情況下,數(shù)組的下界默認值為0。例如dimscore(48)assingle(integer)OptionBase1
一個班(48個)學生的成績Score或30種圖書的名字BookName或100種商品的價格Cost數(shù)組元素——數(shù)組中的各個變量,使用唯一的下標(索引)來標識。Score(1)、Score(2)……Score(48)或BookName(0)~BookName(29)或Cost(0)~Cost(99)表示數(shù)組元素時,應注意例如dimscore(48585.2數(shù)組的定義5.2.1定義數(shù)組的一般格式Dim數(shù)組名(第一維說明[,第二維說明]……)[As類型名稱]說明:(1)數(shù)組須先定義后使用,未定義不能使用。(2)格式中的[]部分為可選部分。(3)省略[As類型名稱]定義數(shù)組,默認為變體類型的數(shù)組。(4)維說明的形式為:[下標下界to]下標上界其中當下標的下界為默認值0時,可以省略不寫(5)也可以下面方式定義下標下界的默認值:OptionBasen
(其中n為0或1)。(6)用Dim語句定義數(shù)組時,該語句把數(shù)組元素初始化為0或空字符串。(7)在同一過程中,數(shù)組名不能與其他數(shù)組名或變量名相同。5.2數(shù)組的定義5.2.1定義數(shù)組的一般格式59數(shù)組的維數(shù)一個數(shù)組元素只有一個下標,則稱為一維數(shù)組。例如,要表示某班40名同學的英語成績可以表示成G(1)、G(2)、G(3)……G(40)。用兩個下標來表示的數(shù)組稱為二維數(shù)組。對于可以表示成表格形式的數(shù)據(jù),如矩陣、行列式等,用二維數(shù)組來表示則比較方便。例如,要表示六個班(各班40人)共240個學生的英語成績,就可以用二維數(shù)組表示G(6,40),第一個下標表示班級,第二個下標表示學號,則一班30號學生的成績可以表示成G(1,30)。根據(jù)需要,還可以使用三維數(shù)組、四維數(shù)組等,VB最多允許有60維。數(shù)組的維數(shù)605.2.2數(shù)組的引用引用數(shù)組元素的格式
數(shù)組名(下標1,[下標2]…)說明:(1)在程序中,凡是能用變量的地方,都可用數(shù)組元素來替換。(2)引用數(shù)組元素時,要注意數(shù)組名、類型及維數(shù)要與定義的一致。(3)數(shù)組元素的下標要在定義的范圍之內(nèi),否則出現(xiàn)下標越界錯誤。5.2.2數(shù)組的引用引用數(shù)組元素的格式數(shù)組名(下標1,[61
一般通過循環(huán)語句及InputBox函數(shù)給數(shù)組輸入數(shù)據(jù)。數(shù)組的輸出一般用Print方法、標簽或文本框實現(xiàn)。賦值Fori=1To10a(i)=Val(InputBox("輸入第"&i&"個數(shù)"))Nexti輸出Fori=1To10Printa(i);Nexti5.2.3數(shù)組的賦值和輸出一般通過循環(huán)語句及InputBox函數(shù)給數(shù)組62對輸入的20個整數(shù)按每行5個數(shù)的格式輸出。例5-1PrivateSubCommand1_Click()
Dimb(20)AsInteger,i%
Fori=1To20
b(i)=InputBox("請輸入一個整型數(shù)")
Nexti
Fori=1To20Printb(i);IfiMod5=0ThenPrint
NextiEndSub對輸入的20個整數(shù)按每行5個數(shù)的格式輸出。例5-1Pri63由鍵盤輸入10個數(shù),再逆序輸出。例5-2
PrivateSubCommand1_Click()Dima(10)AsInteger,i%Print"輸入的數(shù)據(jù)為"Fori=1To10a(i)=InputBox("請輸入第"&i&"個數(shù)")
Printa(i),
NextiEndSubPrivateSubCommand2_Click()Dima(10)AsInteger,i%PrintPrint"逆序輸出為"Fori=10To1step-1Printa(i),NextiEndSub由鍵盤輸入10個數(shù),再逆序輸出。例5-2Private64由鍵盤上輸入40人的考試成績,輸出高于平均成績的分數(shù)。例5-3分析:該問題需處理三部分,一輸入40個人的成績;二求平均分;三把這40個分數(shù)逐一和平均成績進行比較,若高于平均成績,則輸出。程序代碼如下:PrivateSubCommand1_Click()Dimscore(40)AsSingle,aver!,i%aver=0Fori=1To40score(i)=InputBox("請輸入成績")aver=aver+score(i)Nextiaver=aver/40Fori=1To40Ifscore(i)>averThenPrintscore(i)NextiEndSub由鍵盤上輸入40人的考試成績,輸出高于平均成績的分數(shù)。例565定義一個可存放不同類型數(shù)據(jù)的一維數(shù)組并輸出。例5-4
OptionBase1PrivateSubCommand1_Click()Dimabc(4)abc(1)=dateabc(2)="你的考試得了"abc(3)=100abc(4)="分"PrintFori=1To4Printabc(i)NextiEndSub定義一個可存放不同類型數(shù)據(jù)的一維數(shù)組并輸出。例5-4Op665.2.4二維數(shù)組的定義和引用1.二維數(shù)組定義格式
Dim數(shù)組名(下標1,下標2)[As類型名稱]說明:(1)兩個下標形式為:[下標下界]To上界,如果下標下界省略,則下標下界默認為0。如果之前用OptionBase1說明,則下標下界默認值為1。(2)二維數(shù)組可以形象地用平面的二維表格來表示,表格的行數(shù)和列數(shù)就是數(shù)組地第一個下標和第二個下標地取值個數(shù),同一行上的元素,第一個下標是相同的,同一列上的元素,第二個下標是相同的。(3)二維數(shù)組的元素個數(shù)為(上界1-下界1+1)×(上界2-下界2+1)5.2.4二維數(shù)組的定義和引用1.二維數(shù)組定義格式Dim672.二維數(shù)組的引用引用形式:數(shù)組名(下標1,下標2)說明:習慣上將下標1為行下標,下標2為列下標。例如:a(1,2)為數(shù)組第二行第三列的元素。
二維數(shù)組的下標范圍由下標的下界和上界來確定,下界和上界可以是任何整型常量或常量表達式。
如:Dimaa(2,3)asintegeraa(0,0)aa(0,1)aa(0,2)aa(0,3)aa(1,0)aa(1,1)aa(1,2)aa(1,3)aa(2,0)aa(2,1)aa(2,2)aa(2,3)2.二維數(shù)組的引用引用形式:數(shù)組名(下標1,下標2)68又如:Dimaa(-1to1,-2to1)aa(-1,-2)aa(-1,-1)aa(-1,0)aa(-1,1)aa(0,-2)aa(0,-1)aa(0,0)aa(0,1)aa(1,-2)aa(1,-1)aa(1,0)aa(1,1)3.二維數(shù)組的賦值可以通過循環(huán)語句賦值:例如:
fori=0to2forj=0to3a(i,j)=int(rnd*100)nextjnexti又如:Dimaa(-1to1,-2t69
LBound函數(shù)和UBound函數(shù)格式:
LBound(數(shù)組名[,維]) UBound(數(shù)組名[,維])說明:
(1)數(shù)組名是要測試的數(shù)組。
(2)LBound函數(shù)返回數(shù)組的下界值,UBound函數(shù)返回數(shù)組的上界值。
(3)一維數(shù)組可省略[,維],二維數(shù)組必須指定LBound(aa,2)表示測試aa數(shù)組的第二維下界,其值為:-2。
UBound(aa,1)表示測試aa數(shù)組的第一維上界,其值為:1。5.2.5數(shù)組下標的界值LBound函數(shù)和UBound函數(shù)格式: 5.2.5數(shù)組70用LBound函數(shù)和UBound函數(shù)改寫例4-4。例5-5OptionBase1PrivateSubCommand1_Click()Dimabc(4)abc(1)=dateabc(2)="你的考試得了"abc(3)=100abc(4)="分"PrintFori=LBoundToUBound(abc)Printabc(i)NextiEndSub用LBound函數(shù)和UBound函數(shù)改寫例4715.3靜態(tài)數(shù)組動態(tài)數(shù)組5.3.1.靜態(tài)數(shù)組靜態(tài)數(shù)組的二種形式:用Dim語句所定義的數(shù)組。用Static語句定義的數(shù)組。兩者的區(qū)別:(1)Static語句只能出現(xiàn)在過程中,Dim語句不僅可以出現(xiàn)在過程中,還可以出現(xiàn)在通用聲明中。(2)在過程中用Dim語句定義的數(shù)組,過程執(zhí)行結束后將釋放內(nèi)存空間。(3)在過程中用Static語句定義的數(shù)組,過程執(zhí)行結束后將不會釋放內(nèi)存空間。5.3靜態(tài)數(shù)組動態(tài)數(shù)組5.3.1.靜態(tài)數(shù)組72比較用Static語句定義的數(shù)組與用Dim語句定義的數(shù)組之區(qū)別。單擊5次“打印”命令按鈕后的結果如圖所示.例5-6比較用Static語句定義的數(shù)組與用Dim語句定735.3.2.動態(tài)數(shù)組(可調數(shù)組)定義可調數(shù)組分兩步:第一步:聲明一個沒有下標參數(shù)的數(shù)組。格式:
Dim
數(shù)組名()[As類型]第二步:引用數(shù)組前用ReDim語句重新定義。格式:ReDim[Preserve]數(shù)組名([下界to]上界[,[下界to]上界……])[As類型]5.3.2.動態(tài)數(shù)組(可調數(shù)組)定義可調數(shù)組分兩步:74例如:PrivateSubCommand1_Click()Dima()AsIntegerDimn%……n=Val(InputBox("inputn"))ReDima(n)……EndSub例如:75可調數(shù)組說明(1)在過程中,可多次用ReDim語句來改變數(shù)組的大小,也可改變數(shù)組的維數(shù),但不能改變數(shù)組的類型。(2)若不指定[Preserve]保留字,在執(zhí)行ReDim語句時,數(shù)組中原來所存放的值將全部丟失。(3)指定[Preserve]保留字,在執(zhí)行ReDim語句時,數(shù)組中原來所存放的值將不會丟失。但使用[Preserve]保留字后,只能改變最后一維的大小,前幾維的大小不能改變??烧{數(shù)組說明(1)在過程中,可多次用ReDim語句來改變數(shù)76通過輸入對話框輸入一批成績,把及格的和不及格的成績分別存放在數(shù)組a和b中,并以每行5個數(shù)據(jù)的形式輸出數(shù)組a和b。輸入-1時程序結束。例5-6通過輸入對話框輸入一批成績,把及格的和不及格的成77數(shù)組是一種構造類型,數(shù)組名通常是整個數(shù)組的標識,對數(shù)組的操作實際上是對數(shù)組元素的操作。基本操作一般是指對數(shù)組元素所進行的輸入和輸出,即如何給數(shù)組元素賦值,又如何將數(shù)組元素的值顯示在窗體上或控件上。5.4數(shù)組的基本操作數(shù)組是一種構造類型,數(shù)組名通常是整個數(shù)組的標識,對78方法一用循環(huán)結構及InputBox函數(shù)給數(shù)組元素賦值由鍵盤輸入10個數(shù)據(jù),分別統(tǒng)計正數(shù)之和及負數(shù)之和。例5-75.4.1.數(shù)組元素的輸入方法一用循環(huán)結構及InputBox函數(shù)給數(shù)組元素賦值由鍵盤輸79例5-8方法二用數(shù)組名直接賦值用靜態(tài)數(shù)組ww元素的值給動態(tài)數(shù)組yy賦值。OptionBase1PrivateSubCommand1_Click()Dimww(4)asintegerDimyy()asinteger'yy為動態(tài)數(shù)組Fori=1To5Nextiyy=ww'用ww給yy賦值printyy(i)nextiEndSub例5-8方法二用數(shù)組名直接賦值用靜態(tài)數(shù)組ww元素的值給動態(tài)80例5-8說明(1)通過數(shù)組名給數(shù)組名賦值的條件是:兩個數(shù)組的類型相同,且賦值號左邊為動態(tài)數(shù)組,右邊為靜態(tài)數(shù)組。(2)賦值號左邊的動態(tài)數(shù)組,通過賦值確定大小。例5-8說明(1)通過數(shù)組名給數(shù)組名賦值的條件是:兩個數(shù)組81格式:數(shù)組變量名=Array(數(shù)組元素值)功能:將小括號中的數(shù)據(jù)依次賦給數(shù)組中的各元素。說明:
(1)數(shù)組可以說明成Variant類型或不說明類型。
(2)所聲明的數(shù)組為可調數(shù)組,圓括號可省略不寫
(3)數(shù)組下標的上界值由括號內(nèi)的參數(shù)個數(shù)決定
(4)Array函數(shù)只適用于一維數(shù)組。
(5)Array函數(shù)中的數(shù)組元素值之間以逗號分隔方法三用Array函數(shù)給數(shù)組元素賦值。格式:數(shù)組變量名=Array(數(shù)組元素值)方法三用Array82用Array函數(shù)為數(shù)組C賦初值。例5-9PrivateSubCommand1_Click()DimcasVariantc=Array(4,5,3,7,2,9)Fori=LBound(c)ToUBound(c)printc(i)NextiprintprintFori=0To5printc(i)nextiEndSub用Array函數(shù)為數(shù)組C賦初值。例5-9PrivateS83 根據(jù)提示分別將5個數(shù)據(jù)通過文本框賦給一維數(shù)組w,單擊輸入框中的“確定”按鈕完成每次的輸入操作;單擊顯示框中的“確定”按鈕,在圖片框中輸出數(shù)組w中所有元素的值。例5-10方法四將控件(對象)的屬性給數(shù)組元素賦值。 根據(jù)提示分別將5個數(shù)據(jù)通過文本框賦給一維數(shù)組w,單擊輸84如例5-9中的語句:
Fori=0To5Printc(i)Nexti再如例5-10中的語句:
Fori=1To5Picture1.Printww(i)Nexti是利用循環(huán)并結合Print語句將數(shù)組元素的值依次輸出在窗體上。是利用循環(huán)并結合Print語句將數(shù)組元素的值依次輸出在圖片框上。5.4.2.數(shù)組元素的輸出方法一用print方法將數(shù)組元素的值直接輸出到窗體上或圖片框中。如例5-9中的語句: 是利用循環(huán)并結合Print語句將數(shù)組85求數(shù)組中的最大元素及下標。例5-11方法二用賦值語句方法將數(shù)組元素的值顯示在標簽、文本框中或其它控件上。求數(shù)組中的最大元素及下標。例5-11方法二用賦值語句方法將86格式:
ForEach成員in數(shù)組
…
[ExitFor]
… Next[成員]功能:ForEach…Next語句用于對數(shù)組或集合中的元素逐一進行循環(huán)控制操作。方法三用ForEach...Next語句輸出。格式:方法三用ForEach...Next語句輸出。87該語句的執(zhí)行過程:(1)首先計算數(shù)組元素的個數(shù),決定循環(huán)的次數(shù)(2)每次執(zhí)行循環(huán)體之前先將數(shù)組的一個元素的值賦給成員,第一次是第一個數(shù)組元素,第二次是第二個數(shù)組元素,依次類推。(3)執(zhí)行循環(huán)體后,轉到(2)。(4)直到遍歷完每一個數(shù)組元素或遇到ExitFor語句則退出該循環(huán)。該語句的執(zhí)行過程:88說明:(1)“成員”必須是一個變體變量名,為循環(huán)而設,表示某個數(shù)組元素的值。(2)“數(shù)組”僅為一個數(shù)組名,不需括號、上界、下界等。(3)從ForEach語句到Next語句之間的語句為循環(huán)體??捎肊xitFor語句直接跳出循環(huán)。說明:89用ForEach…Next語句輸出數(shù)組元素。例5-12用ForEach…Next語句輸出數(shù)組元素。例5-905.5控件數(shù)組控件數(shù)組的建立方法一1.在界面設計時建立(1)先創(chuàng)建數(shù)組中的第一個控件(注意此時控件的Index屬性值為空)。(2)選取該控件復制,再粘貼。系統(tǒng)自動提示:“是否創(chuàng)建一個控件數(shù)組嗎?”。(3)單擊“是”按鈕,窗體上自動增加一個屬性基本相同的控件(注意此時第一個控件的Index=0,新增控件的Index=1)。(4)繼續(xù)粘貼,便會產(chǎn)生一系列屬性基本相同,而只有Index屬性不同的一組控件,即控件數(shù)組。1.控件數(shù)組的概念2.控件數(shù)組的建立5.5控件數(shù)組控件數(shù)組的建立方法一1.在界面設計時建立1.915.5控件數(shù)組1.控件數(shù)組的概念2.控件數(shù)組的建立
一組完成類似功能且類型相同的控件,將它們組合起來,以控件的名稱作為數(shù)組名,并給各個控件冠以不同的下標,所組成的數(shù)組,稱之為控件數(shù)組。數(shù)組中的某個元素,代表某一個具體的控件,所完成的功能與獨立的控件幾乎一樣。5.5控件數(shù)組1.控件數(shù)組的概念2.控件數(shù)組的建立925.5控件數(shù)組控件數(shù)組的建立方法二2.在程序運行時增加控
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度平菇香菇線上線下銷售渠道拓展合同
- 2025年度二手房買賣合同交易手續(xù)辦理指南
- 2025年度文化創(chuàng)意產(chǎn)業(yè)項目合作開發(fā)合同4篇
- 2025年度寧夏糧食和物資儲備局糧食儲備庫安全管理合同4篇
- 二零二五年度高品質木箱紙箱租賃經(jīng)營合同3篇
- 二零二五年停薪留職員工績效管理合同
- 二零二五年度床上用品電商平臺合作推廣合同2篇
- 江蘇省村衛(wèi)生室人員合理用藥培訓
- 二零二五年度民政局認證離婚協(xié)議書范本
- 二零二五年度林地使用權租賃合同范例3篇
- 《榜樣9》觀后感心得體會四
- 2023事業(yè)單位筆試《公共基礎知識》備考題庫(含答案)
- 化學-廣東省廣州市2024-2025學年高一上學期期末檢測卷(一)試題和答案
- 2025四川中煙招聘高頻重點提升(共500題)附帶答案詳解
- EHS工程師招聘筆試題與參考答案(某大型央企)2024年
- 營銷策劃 -麗亭酒店品牌年度傳播規(guī)劃方案
- 2025年中國蛋糕行業(yè)市場規(guī)模及發(fā)展前景研究報告(智研咨詢發(fā)布)
- 潤滑油過濾培訓
- 護理組長年底述職報告
- 浙江省紹興市2023-2024學年高一上學期期末考試物理試題(含答案)
- 2013年6月22日下午湖北省公務員國家安全局面試真題
評論
0/150
提交評論