VB程序設(shè)計(jì)-數(shù)組課件_第1頁
VB程序設(shè)計(jì)-數(shù)組課件_第2頁
VB程序設(shè)計(jì)-數(shù)組課件_第3頁
VB程序設(shè)計(jì)-數(shù)組課件_第4頁
VB程序設(shè)計(jì)-數(shù)組課件_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VisualBasic目錄前言第1講第2講第3講第4講第5講第6講第7講第8講第9講第10講第11講第12講第13講第14講第15講第16講回顧上一講學(xué)習(xí)的內(nèi)容判斷條件執(zhí)行循環(huán)While……wendDoWhile……LoopDoUntil……LoopDo……LoopWhileDo……LoopUntil第六章數(shù)組(4學(xué)時(shí))6.1數(shù)組的引入6.2數(shù)組的聲明6.3動(dòng)態(tài)數(shù)組及聲明6.4數(shù)組的基本操作6.5控件數(shù)組6.6自定義數(shù)據(jù)類型6.7數(shù)組應(yīng)用6.8常見錯(cuò)誤

1.數(shù)組概念例6.1

求一個(gè)班36個(gè)學(xué)生的平均成績,然后統(tǒng)計(jì)高于平均分的人數(shù)。按以前簡單變量的使用和循環(huán)結(jié)構(gòu)相結(jié)合,求平均成績程序段如下:

aver=0Fori=1To36mark=InputBox("輸入第"+i+"位學(xué)生的成績")aver=aver+markNexti

aver=aver/100§6.1數(shù)組的引入

若要統(tǒng)計(jì)高于平均分的人數(shù),則無法實(shí)現(xiàn)。mark是一個(gè)簡單變量,存放的是最后一個(gè)學(xué)生的成績。已有知識(shí)解決方法:再重復(fù)輸入成績,這樣又帶來兩個(gè)問題:(1)輸入數(shù)據(jù)的工作量成倍增加;(2)若本次輸入的成績與上次不同,則統(tǒng)計(jì)的結(jié)果不正確。解決此問題的根本方法,需引入數(shù)組,保存輸入的數(shù)據(jù),一次輸入,多次使用。數(shù)組的概念數(shù)組是用一個(gè)統(tǒng)一的名稱表示的、順序排列的一組內(nèi)存變量。數(shù)組中的每個(gè)變量稱為數(shù)組元素,用不同的數(shù)字(下標(biāo))來標(biāo)識(shí)它們,因此數(shù)組元素又稱為下標(biāo)變量。如果每個(gè)數(shù)組元素只有一個(gè)下標(biāo),則稱這個(gè)數(shù)組為一維數(shù)組。有兩個(gè)下標(biāo)的數(shù)組稱為二維數(shù)組。VB中規(guī)定:數(shù)組必須先聲明后使用,不允許使用隱含定義。2.數(shù)組的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)例如:聲明一維整型數(shù)組N(8)DimN%(8)N(8)在內(nèi)存中排列示意圖:例:從鍵盤隨意輸入8個(gè)數(shù),將這8個(gè)數(shù)從大到小排列輸出。二維數(shù)組的邏輯結(jié)構(gòu)二維數(shù)組的邏輯結(jié)構(gòu):可以看成一個(gè)二維表格或看成一個(gè)矩陣。數(shù)組元素的第一個(gè)下標(biāo)值表示該元素在表格中的行號(hào),第二個(gè)下標(biāo)值表示該元素在表格中的列號(hào)。例如:聲明二維數(shù)組:DIMW%(4,3)VB中,使用4個(gè)關(guān)鍵字聲明數(shù)組,它們格式相同,只是適用范圍不同而已。Dim

用在窗體模塊或標(biāo)準(zhǔn)模塊中,也可用于過程ReDim

用于過程中Static

用在過程中Public用在標(biāo)準(zhǔn)模塊中,定義全局?jǐn)?shù)組。VB中,數(shù)組又有兩種情況:①靜態(tài)(定長)數(shù)組②動(dòng)態(tài)(可變長)數(shù)組§6.2數(shù)組的聲明1.靜態(tài)數(shù)組定義數(shù)組時(shí),明確了數(shù)組的維數(shù),及每維下標(biāo)的上下界,這種數(shù)組稱為靜態(tài)數(shù)組。靜態(tài)數(shù)組:計(jì)算機(jī)在程序執(zhí)行之前,進(jìn)行編譯時(shí)就根據(jù)數(shù)組說明語句開辟了固定的內(nèi)存區(qū),直到程序執(zhí)行完畢。聲明靜態(tài)數(shù)組,下標(biāo)必須用數(shù)值常數(shù)或符號(hào)常量。2.靜態(tài)數(shù)組聲明靜態(tài)數(shù)組聲明語句形式(以dim為例)

:

Dim數(shù)組名(下標(biāo)1[,下標(biāo)2…])[As類型]聲明了數(shù)組的名、維數(shù)、大小、類型維數(shù):有N個(gè)下標(biāo)稱為N維數(shù)組,N=1,2,……最多60維。下標(biāo):[下界To]上界 省略下界默認(rèn)為0,下標(biāo)必須為常數(shù)每一維大小:上界-下界+1數(shù)組大小:每一維大小的乘積數(shù)組聲明語句格式2Dim數(shù)組名([下界To]上界[,[下界To]上界])As類型說明:此格式可以自由定義下標(biāo)的下界和上界。

例: dima(-2to10)asinteger dimb(10to100)aslong dimc(1to10,11to20)assingle數(shù)組下界上界的測試函數(shù)LBound(數(shù)組[,維])、UBound(數(shù)組[,維])默認(rèn)數(shù)組數(shù)據(jù)類型為Variant的數(shù)組稱默認(rèn)數(shù)組。定義時(shí)省略As類型說明。數(shù)組中元素的類型可以不同。例1:Dimmark(1to100)AsInteger例2:DimlArray(0To3,0To4)AsLong等價(jià)于:DimlArray(3,4)AsLong聲明了Larray數(shù)組共有20(4×5)個(gè)元素注意:(1)聲明靜態(tài)數(shù)組,下標(biāo)為常數(shù)表達(dá)式,不能是變量。

n=Inputbox(“輸入n”)

Dimx(n)AsSingle(2)數(shù)組聲明語句中的下標(biāo)說明了數(shù)組的整體,即每一維的大?。欢诔绦蚱渌胤匠霈F(xiàn)的下標(biāo)表示數(shù)組中的一個(gè)元素。兩者寫法形式相同,但意義不同。例如:

Dimx(10)AsInteger '聲明了x數(shù)組有11個(gè)元素x(10)=100 '對(duì)x(10)這個(gè)數(shù)組元素賦值§6.3動(dòng)態(tài)數(shù)組聲明數(shù)組時(shí),沒有說明數(shù)組的大小,這種數(shù)組稱為動(dòng)態(tài)數(shù)組。動(dòng)態(tài)數(shù)組:在程序未運(yùn)行時(shí),動(dòng)態(tài)數(shù)組不占用內(nèi)存,計(jì)算機(jī)在執(zhí)行過程中才給數(shù)組開辟存儲(chǔ)空間,當(dāng)不需要時(shí),可以用Erase語句刪除它,收回分配給它的內(nèi)存區(qū),需要時(shí)還可以用Redim語句再次分配存儲(chǔ)區(qū)。動(dòng)態(tài)數(shù)組可以用已經(jīng)賦值的變量定義下標(biāo)范圍。動(dòng)態(tài)數(shù)組的定義和聲明動(dòng)態(tài)數(shù)組定義首先在窗體、標(biāo)準(zhǔn)模塊或過程中用Dim、Public聲明一個(gè)沒有下標(biāo)的數(shù)組。再在過程中用ReDim語句定義帶下標(biāo)的數(shù)組。ReDim語句格式如下:ReDim[Preserve]

數(shù)組名(下標(biāo)[,下標(biāo)2…])

[As類型] 例:SubForm_Load()DimsArray()AsSingle…ReDimsArray(4,8)…EndSub動(dòng)態(tài)數(shù)組聲明的幾點(diǎn)說明:(1)Dim、Private、Public變量聲明語句是說明性語句,可出現(xiàn)在過程內(nèi)或通用聲明段;ReDim語句是執(zhí)行語句,只能出現(xiàn)在過程內(nèi)。(2)在過程中可多次使用ReDim來改變數(shù)組的大小,也可改變數(shù)組的維數(shù)。(3)每次使用ReDim語句都會(huì)使原來數(shù)組中的值丟失,可以在ReDim語句后加Preserve參數(shù)用來保留數(shù)組中的數(shù)據(jù),但使用Preserve只能改變最后一維的大小,前面幾維大小不能改變。(4)ReDim中的下標(biāo)可以是常量,也可以是有了確定值的變量。(1)用循環(huán)和賦值語句

Fori=1To10iA(i)=iNextI(2)Array函數(shù)

DimibAsVariantib=Array("abc","def","67")Fori=0ToUBound(ib)Picture1.Printib(i);"";Nexti注意:(1)利用Array對(duì)數(shù)組各元素賦值,聲明的數(shù)組是可調(diào)數(shù)組或連圓括號(hào)都可省,并且其類型只能是Variant。(2)數(shù)組的上界由Array函數(shù)括號(hào)內(nèi)的參數(shù)個(gè)數(shù)決定,也可通過函數(shù)Ubound獲得。1.數(shù)組元素的賦值格式:數(shù)組變量名=array(數(shù)組元素值表)功能:把一組數(shù)據(jù)賦給數(shù)組中每個(gè)元素。說明:數(shù)組元素值表是一個(gè)用逗號(hào)分隔的值表;Array函數(shù)僅適用于一維數(shù)組使用array函數(shù)創(chuàng)建的數(shù)組,其下界受Optionbase語句指定的下界的限制。若不提供參數(shù),則創(chuàng)建一個(gè)長度為0的數(shù)組。Array函數(shù)數(shù)組變量名是預(yù)先定義的數(shù)組名。在數(shù)組變量名后沒有括號(hào)。采用變量定義形式,作為數(shù)組使用,類型為variant。數(shù)組元素的引用

例2:交換數(shù)組中各元素Fori=1To10\2t=iA(i)iA(i)=iA(10-i+1)iA(10-i+1)=tNextI參看例數(shù)組元素交換交換前24681013579交換后97531108642要求是:將數(shù)組的第1個(gè)元素與最后1個(gè)元素交換,第2個(gè)元素與倒數(shù)第2個(gè)交換,以此類推。3.二維數(shù)組的輸入和輸出Dima%(4,2)Fori=0To4Forj=0To2a(i,j)=Val(InputBox("請(qǐng)輸入第("&i+1&","&j+1&")元素"))Picture1.PrintFormat(a(i,j),"@@@@@");NextjPicture1.PrintNexti數(shù)組輸入和賦值舉例1、定義兩個(gè)一維數(shù)組A和B,大小相同。要求從鍵盤輸入數(shù)據(jù),然后交換A、B中的值后輸出。數(shù)組輸入和賦值舉例2、定義兩個(gè)階數(shù)相同的矩陣,求c=a+b,并輸出。4.數(shù)組的清除清除數(shù)組的語句格式:Erase數(shù)組名[,數(shù)組名]……Erase用于靜態(tài)數(shù)組時(shí),若數(shù)組是數(shù)值型,則所有元素置0;若數(shù)組是字符串類型,則所有元素置空字符串。Erase用于動(dòng)態(tài)數(shù)組時(shí),將刪除整個(gè)數(shù)組結(jié)構(gòu)并釋放數(shù)組所占內(nèi)存。Erase用于變體數(shù)組時(shí),每個(gè)元素被重置為空Empty問題講解簡單變量與數(shù)組變量的區(qū)別:AI A(I)I=1,2,3…10A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(8)A(9)A(10)小結(jié):AI代表的是一個(gè)簡單變量,而A(I)代表的則是以A為名的十個(gè)下標(biāo)變量組成的數(shù)組。當(dāng)I發(fā)生變化時(shí),A(I)中的I會(huì)隨著I值的變化而變化,而AI變量與I毫無關(guān)系。動(dòng)態(tài)數(shù)組示例:例:輸入若干個(gè)學(xué)生的成績,統(tǒng)計(jì)高于平均分的人數(shù)。

Dimmark()AsInteger,i%,n%,avern=InputBox("輸入學(xué)生的人數(shù)")ReDimmark(1Ton)'聲明存放n個(gè)學(xué)生成績的動(dòng)態(tài)數(shù)組

aver=0Fori=1Tonmark(i)=Int(Rnd*61+40)'通過隨機(jī)數(shù)產(chǎn)生[40

,100]的成績

aver=aver+mark(i)NextiReDimPreservemark(1Ton+2)'增加兩個(gè)元素,存放平均分和高于平均分的人數(shù),原來的學(xué)生成績?nèi)员A?/p>

mark(n+1)=aver/nmark(n+2)=0Fori=1TonIfmark(i)>mark(n+1)Thenmark(n+2)=mark(n+2)+1NextiFori=1TonPrint"mark(";i;")=";mark(i)NextiPrint"平均分=";mark(n+1),"高于平均分人數(shù)=";mark(n+2)4.使用數(shù)組的注意事項(xiàng)⑴數(shù)組的命名與簡單變量的命名規(guī)則相同。⑵下標(biāo)必須用圓括號(hào)括起來,即A(5)。不能把數(shù)組元素A(5)寫成A5。⑶系統(tǒng)默認(rèn)下標(biāo)的起始值為0。下標(biāo)可以是常量、變量或表達(dá)式,還可以是數(shù)組元素。如:A(4)=6,

溫馨提示

  • 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)論