高等教育Visual-Basic-清華大學(xué)vb編程語言基礎(chǔ)-第6講_第1頁
高等教育Visual-Basic-清華大學(xué)vb編程語言基礎(chǔ)-第6講_第2頁
高等教育Visual-Basic-清華大學(xué)vb編程語言基礎(chǔ)-第6講_第3頁
高等教育Visual-Basic-清華大學(xué)vb編程語言基礎(chǔ)-第6講_第4頁
高等教育Visual-Basic-清華大學(xué)vb編程語言基礎(chǔ)-第6講_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第六講數(shù)組內(nèi)容提要數(shù)組的概念數(shù)組的聲明與數(shù)組有關(guān)的函數(shù)和語句控件數(shù)組數(shù)組的概念

數(shù)組是保存一組具有相同名字和類型的數(shù)據(jù)的集合。

用統(tǒng)一的名字代表邏輯上相關(guān)的一批數(shù)據(jù),每個元素用下標(biāo)來區(qū)分。

數(shù)組必須先聲明后使用聲明時指定數(shù)組名稱、類型、維數(shù)和大小。數(shù)組聲明時下標(biāo)的個數(shù)確定數(shù)組的維數(shù),VB中的數(shù)組最多60維。按聲明時數(shù)組的大小是否確定分為靜態(tài)數(shù)組和動態(tài)數(shù)組。Dimstudent(1to30)asString數(shù)組的聲明Dim數(shù)組名(下標(biāo)1[,下標(biāo)2,……)[as類型]

定義數(shù)組的名稱指定數(shù)組的數(shù)據(jù)類型指定數(shù)組中元素的數(shù)目初始化數(shù)組中每個元素的值,數(shù)值數(shù)組中的所有元素初始化為0,字符數(shù)組中的所有元素初始化為空字符串。Dimstudent(1to30)asStringstudent(1)student(2)student(3)……student(30)靜態(tài)數(shù)組Dim數(shù)組名(下標(biāo))[As類型]下標(biāo)必須是常數(shù),不允許是表達(dá)式或變量。下標(biāo)的形式為:[下界to]上界最小下界是-32768,最大上界是32767,下界的缺省值是0。一維數(shù)組的大小為:上界-下界+1。As類型缺省時是Variant類型。缺省情況下,下標(biāo)從0開始,VisualBasic中可用optionbasen語句在窗體或標(biāo)準(zhǔn)模塊中重新設(shè)定數(shù)組的下界。

optionbase1,設(shè)定數(shù)組的下標(biāo)從1開始。一維數(shù)組聲明格式靜態(tài)數(shù)組多維數(shù)組聲明格式

Dim數(shù)組名(下標(biāo)1[,下標(biāo)2,……)[as類型]

數(shù)組聲明中若有兩個下標(biāo),則為二維數(shù)組,有兩個或兩個以上下標(biāo),則為多維數(shù)組。

Dima(2,3)asintegera(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)a(2,1)a(2,2)a(2,3)靜態(tài)數(shù)組應(yīng)用隨機(jī)產(chǎn)生一個班50個學(xué)生的成績,計算出平均分并統(tǒng)計出高于85分的人數(shù)。

PrivateSubCommand1_Click()Dimscore(1To50)AsInteger'聲明一個有50個元素的數(shù)組scoreDimi%,j%DimaverageAsSingleaverage=0j=0Randomize'初始化隨機(jī)數(shù)生成器

Print"學(xué)生成績?yōu)椋?

分析:使用隨機(jī)函數(shù)產(chǎn)生隨機(jī)數(shù),賦給數(shù)組score,通過循環(huán)計算出總分,然后計算出平均分,通過循環(huán)統(tǒng)計出高于85分的人數(shù)。

靜態(tài)數(shù)組應(yīng)用Fori=1To50score(i)=Int(Rnd*90+11)'產(chǎn)生[11,100]的隨機(jī)數(shù)并賦給數(shù)組scorePrintscore(i);IfiMod10=0ThenPrintaverage=average+score(i)Nextiaverage=average/50Print"平均分是:"&average

Fori=1To50Ifscore(i)>=85Thenj=j+1NextiPrint"高于85分的有:"&j&"人"EndSub動態(tài)數(shù)組動態(tài)數(shù)組也稱為可調(diào)數(shù)組,在數(shù)組聲明時不指定數(shù)組的大小,而在使用時才指定數(shù)組的大小。動態(tài)數(shù)組使用靈活、方便,可以更高效的使用計算機(jī)內(nèi)存。

創(chuàng)建動態(tài)數(shù)組:在窗體模塊、標(biāo)準(zhǔn)模塊或過程中用Dim語句或Public語句聲明一個沒有下標(biāo)的數(shù)組,將數(shù)組聲明為動態(tài)數(shù)組在過程中用ReDim語句指明數(shù)組的大小,其一般格式為:ReDim[Preserve]數(shù)組名(下標(biāo)1[,下標(biāo)2……])[as類型]動態(tài)數(shù)組的使用在過程外部用Dim語句聲明一個動態(tài)數(shù)組:

Dima()asinteger

在過程內(nèi)部用ReDim語句指明數(shù)組的實(shí)際大小:

ReDima(2,3)ReDim語句是執(zhí)行語句,只能出現(xiàn)在過程中,在程序運(yùn)行時執(zhí)行,可動態(tài)的分配內(nèi)存空間。ReDim語句中數(shù)組的下標(biāo)即可以是常量,也可以是有確定值的變量,as

類型可省略,若不省略,必須與Dim語句聲明的類型一致。在過程中可多次使用ReDim語句改變數(shù)組的維數(shù)和大小。每執(zhí)行一個新的ReDim語句都會使原來數(shù)組中的值丟失,可以在ReDim語句后加上Preserve參數(shù)用來保留數(shù)組中的數(shù)據(jù),但Preserve參數(shù)只能改變最后一維的大小,前面幾維大小不能改變。動態(tài)數(shù)組的應(yīng)用OptionBase1'設(shè)定數(shù)組的下界為1Dima()AsInteger'在過程外聲明動態(tài)數(shù)組aPrivateSubCommand1_Click()Dimm%,n%,i%,j%m=Val(InputBox("輸入m"))n=Val(InputBox("輸入n"))ReDima(m,n)'定義數(shù)組的大小

Print"輸出數(shù)組a:"Fori=1TomForj=1Tona(i,j)=i*j'為數(shù)組賦值

Printa(i,j);NextjPrintNexti動態(tài)數(shù)組的應(yīng)用

ReDima(6)'重定義數(shù)組的大小

Print"第2次輸出數(shù)組a:"Fori=1To6a(i)=i'再次為數(shù)組賦值

Printa(i);NextiPrintReDimPreservea(10)'重定義數(shù)組的大小,但保留其中的元素

Print"第3次輸出數(shù)組a:"Fori=1To10Printa(i);NextiEndSub數(shù)組元素賦初值數(shù)組有關(guān)的操作

數(shù)組元素一般通過for循環(huán)和InputBox賦初值Dima(30)AsIntegerDimiAsIntegerFori=0To30a(i)=InputBox("請輸入學(xué)生成績:")Nexti當(dāng)數(shù)組元素較少或只給指定的數(shù)組元素賦初值時,可用賦值語句為指定的數(shù)組元素賦初值a(4)=88數(shù)組元素的引用數(shù)組元素的引用方法是在數(shù)組的后面的括號中指定下標(biāo),引用方法和簡單變量相同,即可以被賦值也可以參與運(yùn)算。

a(2)=a(1)+10引用數(shù)組時,其下標(biāo)要在數(shù)組聲明的范圍內(nèi),否則程序運(yùn)行時會出現(xiàn)“下標(biāo)越界”的錯誤。數(shù)組有關(guān)的操作

數(shù)組元素的輸出數(shù)組有關(guān)的操作

數(shù)組元素的輸出可以用Print方法實(shí)現(xiàn)。對于矩陣形式的輸出,如:

123456789先把上面的數(shù)據(jù)存放在3行3列的數(shù)組a中,然后用二重循環(huán)按原樣輸出。OptionBase1(放在過程外)Dima(1To3,1To3)AsIntegerDimi%,j%Fori=1To3Forj=1To3Printa(i,j);NextjPrintNextiForEach……Next語句ForEach……Next語句專門用于數(shù)組或?qū)ο蠹系拿恳粋€成員ForEach成員In數(shù)組循環(huán)體

[ExitFor]Next成員“成員”是一個Variant變量,代表數(shù)組中的每個元素該語句可以對數(shù)組元素進(jìn)行查詢、顯示和讀取,循環(huán)重復(fù)的次數(shù)由數(shù)組的元素數(shù)決定,即數(shù)組有多少個元素,該語句就自動循環(huán)多少次。ForEach……Next語句-例

定義一個有10個元素的一維整型數(shù)組a,使用隨機(jī)函數(shù)為數(shù)組的每個元素賦1~99之間的值,然后用ForEach……Next語句讀取并顯示數(shù)組a中各元素的值。

OptionBase1(放到過程外)PrivateSubForm_Click()Dima(10)AsIntegerDimiAsIntegerFori=1To10a(i)=Int(Rnd*100)NextiForEachxInaPrintx;NextxPrintEndSub窗體上單擊4次后的結(jié)果。Array()函數(shù)對一維數(shù)組進(jìn)行初始化數(shù)組變量名=Array(數(shù)組元素值)

Array()函數(shù)只能給Variant變量或動態(tài)數(shù)組賦值“數(shù)組元素值”是要賦給數(shù)組各元素的值,之間用逗號隔開。數(shù)組有關(guān)的函數(shù)Dima()‘聲明動態(tài)數(shù)組a=array(2,4,6,8,10)相當(dāng)于:a(0)=2a(1)=4a(2)=6a(3)=8a(4)=10Dimb

'聲明Variant變量b=array("A","B","C","D")相當(dāng)于:b(0)="A"b(1)="B"b(2)="C"b(3)="D"UBound()、LBound()函數(shù)數(shù)組有關(guān)的函數(shù)UBound()函數(shù)和LBound()函數(shù)用來求數(shù)組某一維的上界和下界UBound(數(shù)組名[,維數(shù)])LBound(數(shù)組名[,維數(shù)])

DimDynArray(8)AsStringDimUB%,LB%,U2B%,L2B%UB=UBound(DynArray)LB=LBound(DynArray)PrintUB,LBDimmatrix(1To5,6)AsIntegerU2B=UBound(matrix,2)L2B=LBound(matrix,2)PrintU2B,L2BUB=8LB=0U2B=6L2B=0Split函數(shù)從一個字符串開始,以某個指定符號為分隔符,分離若干個子字符串建立一個下標(biāo)為0的一維數(shù)組Split(字符串表達(dá)式[,分隔符])

Dimi%Dima()AsStringa=Split("how!are!you","!")Fori=0ToUBound(a)Printa(i)Nextihowareyou控件數(shù)組控件數(shù)組由一組相同類型的控件組成,它們具有相同的控件名、相同的屬性、相同的事件過程。在設(shè)計時創(chuàng)建控件數(shù)組一般步驟為:在窗體上畫出控件數(shù)組的第一個控件,并設(shè)置該控件的Name等屬性。選中該控件,執(zhí)行“復(fù)制”/“粘貼”操作系統(tǒng)彈出對話框,詢問是否創(chuàng)建控件數(shù)組,選擇“是”,創(chuàng)建了控件數(shù)組的一個元素,其索引值是1。重復(fù)執(zhí)行前兩步,創(chuàng)建多個控件數(shù)組的元素。雙擊任一控件數(shù)組元素,打開代碼編輯窗口,編寫事件過程代碼控件數(shù)組-例創(chuàng)建有4個復(fù)選框的控件數(shù)組,單擊不同的復(fù)選框,文本框中的文字分別顯示宋體、楷體、隸書和黑體。

控件名

indexstylecaptionCheck101宋體

Check111楷體

Check121隸書

Check131黑體

PrivateSubCheck1_Click(IndexAsInteger)SelectCaseIndexCase0Text1.FontName="宋體"Case1Text1.FontName="楷體_GB2312"Case2Text1.FontName="隸書"Case3Text1.FontName="黑體"EndSelectEndSub運(yùn)行時創(chuàng)建控件數(shù)組在窗體上畫出一個控件,并在屬性面板上設(shè)置該控件的Index屬性值為0,代表控件數(shù)組,還可以設(shè)置該控件的其它屬性。在程序中用Load方法添加該控件數(shù)組的其它元素,用Unload方法刪除添加的元素,一般格式為:

Load

控件數(shù)組名(index)Unload

控件數(shù)組名(index)設(shè)置每個添加的控件數(shù)組元素的Left和

Top屬性,以確定該元素在窗體中的位置,設(shè)置Visible屬性為True。運(yùn)行時創(chuàng)建控件數(shù)組-例用“篩法”找100以內(nèi)的全部素數(shù)分析:用“篩法”求素數(shù)時首先把要判斷的全部整數(shù)寫在紙上,然后逐一判斷是否是素數(shù),不是素數(shù)的就把該整數(shù)篩掉,最后剩下的就是素數(shù)。

控件名屬性值picture1backcolor空白label1caption空白index0backcolor白command1caption開始

form1caption篩法求素數(shù)具體步驟是:先將1篩掉,分別用2到去除它們后面的每個數(shù),能整除的就不是素數(shù),把該數(shù)篩掉?!昂Y法”求素數(shù)“篩法”求素數(shù)PrivateSubForm_Load()Picture1.Move0,0

Label1(0).Visible=FalsePicture1.Height=Label1(0).Height*10+100'設(shè)置圖形控件的高度和寬度

Picture1.Width=Label1(0).Width*10+100Form1.Width=Picture1.Width+100'設(shè)置窗體的高度和寬度

Form1.Height=Picture1.Height+800Forn=1To100'創(chuàng)建標(biāo)簽控件數(shù)組

i=(n-1)\10j=(n-1)Mod10

LoadLabel1(n)WithLabel1(n)'設(shè)置控件數(shù)組的位置,可見性和標(biāo)題

.Left=5+j*Label1(0).Width.Top=5+i*Label1(0).Height.Visible=True.Caption=nEndWithNextEndSub“篩法”求素數(shù)PrivateSubCommand1_Click()Label1(1).Visible=Falsen=100

Fori=2ToSqr(n)

IfLabel1(i).Visible=TrueThenMsgBox"開始刪除"&Str(i)&"的倍數(shù)",64,"用篩法找素數(shù)"

Forj=i+1Ton

IfLabel1(j).Visible=TrueAndjModi=0ThenLabel1(j).Visible=False

EndIf

Next

EndIf

NextMsgBox"剩下的整數(shù)全是素數(shù)",64,"用篩法找素數(shù)"EndSub自定義數(shù)據(jù)類型Type自定義數(shù)據(jù)類型名元素名1[(下標(biāo))]as

類型名元素名2[(下標(biāo))]as

類型名

……EndTypeTypestudentNameasstring*20'姓名

Noasinteger'學(xué)號

Ageasinteger'年齡

Sexasstring*1'性別

Score(4)assingle

'5門課成績Endtype自定義數(shù)據(jù)類型一般在標(biāo)準(zhǔn)模塊(.bas)中定義,默認(rèn)是Public,在窗體模塊中定義,默認(rèn)是Private。自定義數(shù)據(jù)類型可以是字符串,但只能是定長字符串。自定義的數(shù)據(jù)類型名使用上和Integer、Double等基本類型名相同。自定義數(shù)據(jù)類型的使用定義了數(shù)據(jù)類型之后,就可以聲明該數(shù)據(jù)類型的變量,聲明的形式為:Dim變量名As自定義數(shù)據(jù)類型名Dimstuasstudent使用stu變量中的元素,形式為:變量名.元素名

stu.noWithstu.name=“張三”

.no=04134.age=18.sex=“男”

Fori=0to4.score(i)=int(rnd*101)Nex

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論