教學(xué)材料《VB導(dǎo)論》-6.1_第1頁
教學(xué)材料《VB導(dǎo)論》-6.1_第2頁
教學(xué)材料《VB導(dǎo)論》-6.1_第3頁
教學(xué)材料《VB導(dǎo)論》-6.1_第4頁
教學(xué)材料《VB導(dǎo)論》-6.1_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Q:如何定義1個(gè)學(xué)生的VB成績(jī)?Q:如何定義1個(gè)學(xué)生的6門課成績(jī)?Q:如何定義1個(gè)學(xué)生4學(xué)期5門課的成績(jī)?可不可以一次定義多個(gè)變量?引例數(shù)組概念的引出在科學(xué)計(jì)算和數(shù)據(jù)處理中,經(jīng)常要用到成批數(shù)據(jù),這些數(shù)據(jù)類型相同,且彼此間存在一定的順序關(guān)系。為處理方便,可考慮用數(shù)組進(jìn)行存儲(chǔ)。數(shù)組是一組相同類型的有序變量的集合。在程序中使用數(shù)組時(shí),用一個(gè)數(shù)組名代表邏輯上相關(guān)的一批數(shù)據(jù),用下標(biāo)區(qū)分該數(shù)組中的各個(gè)元素。一維數(shù)組A(0)A(1)A(2)A(3)A(4)A(5)數(shù)列(一個(gè)學(xué)生的6門課成績(jī))859083788977學(xué)期第一學(xué)期第二學(xué)期第三學(xué)期第四學(xué)期數(shù)學(xué)物理化學(xué)生物外語8565907080778089807890969275838078818681二維表(一個(gè)學(xué)生4學(xué)期5門課成績(jī))二維數(shù)組A(1,1)A(1,2)A(1,3)A(1,4)A(1,5)A(2,1)A(2,2)A(2,3)A(2,4)A(2,5)A(3,1)A(3,2)A(3,3)A(3,4)A(3,5)A(4,1)A(4,2)A(4,3)A(4,4)A(4,5)6.1數(shù)組的基本概念1、數(shù)組:是同類型變量的一個(gè)有序的集合。數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它用1個(gè)統(tǒng)一的名字(數(shù)組名)代表邏輯上相關(guān)的一批數(shù)據(jù),每個(gè)元素用下標(biāo)變量來區(qū)分;下標(biāo)代表元素在數(shù)組中的位置。比如:學(xué)26樓401里面6個(gè)人,定義這六個(gè)人的年齡序列。

dimnl(5)asinteger

數(shù)組名注:數(shù)組名的命名規(guī)則和普通變量一樣。2、數(shù)組元素:即數(shù)組中的每一個(gè)成員。用下標(biāo)唯一識(shí)別數(shù)組元素。

表示方法:數(shù)組名(P1,P2,……)其中P1、P2表示數(shù)組元素的“下標(biāo)”,默認(rèn)情況下,下標(biāo)從0開始。即數(shù)組元素名由數(shù)組名、下標(biāo)和圓括號(hào)共同組成。例:

dimnl(5)asintegernl(0):宿舍老大的年齡

nl(1):宿舍老二的年齡

……n(5):宿舍老幺的年齡

特別注意:下標(biāo)可以是常量、變量或算術(shù)表達(dá)式。當(dāng)下標(biāo)的值為非整數(shù)時(shí),會(huì)按cint函數(shù)的方式將其轉(zhuǎn)換為整數(shù)處理。例:A(5),A(6.6),A(6.5)A(7)A(6)3、數(shù)組維數(shù):由數(shù)組元素中下標(biāo)的個(gè)數(shù)決定:1個(gè)下標(biāo)表示一維數(shù)組,2個(gè)下標(biāo)表示二維數(shù)組。

VB中有一維數(shù)組、二維數(shù)組、……最多60維數(shù)組。

例:

A(1),A(10)

一維數(shù)組

X(1,1),X(2,10)

二維數(shù)組

Y(0,0,0),Y(1,2,5)

三維數(shù)組6.1.2數(shù)組的定義(重點(diǎn))

數(shù)組必須先定義后使用。定義數(shù)組就是確定名稱、數(shù)組元素的數(shù)據(jù)類型、數(shù)組的維數(shù)和每一維的上、下界。定義數(shù)組的本質(zhì)是通知系統(tǒng)在內(nèi)存中分配一個(gè)連續(xù)的區(qū)域,用來存儲(chǔ)數(shù)組元素。1、固定大小數(shù)組的定義格式:Public|Private|Dim|Static數(shù)組名([下界1To]

上界1

[,[下界2To]上界2]…)[As數(shù)據(jù)類型關(guān)鍵字]

注意:下界和關(guān)鍵字to可以缺省。如果在程序中沒有特別聲明,缺省下界和關(guān)鍵字時(shí),則表示下標(biāo)的取值是從0開始的。例1:Dim

A(6)AsInteger

等同于

DimA(0to6)asinteger

表示定義了一個(gè)數(shù)組,名稱是A、數(shù)組元素的數(shù)據(jù)類型為整型、一維數(shù)組,共7個(gè)元素。分別是:

A(0),A(1),A(2),A(3),A(4),

A(5),A(6)。

例2:Dim

B(5)AsString*3

數(shù)組名B

、字符串型、一維數(shù)組、有6個(gè)元素,下標(biāo)的范圍是0~5,每個(gè)元素最多存放3個(gè)字符。例3:

Dim

C(2,1To2)As

Long

聲明了數(shù)組名是C、長(zhǎng)整型的二維數(shù)組,第一維下標(biāo)范圍為0~2,第二維下標(biāo)的范圍是1~2,共6個(gè)數(shù)組元素,分別是:

C(0,1),C(0,2),C(1,1),

C(1,2),C(2,1),C(2,2)。1、數(shù)組的維下界默認(rèn)從0開始。

可以使用OptionBase語句設(shè)定數(shù)組的維默認(rèn)下界的初始值,optionbase0或者optionbase1,在窗體的通用部分使用該語句。例:數(shù)組定義注意事項(xiàng)

下標(biāo)越界Optionbase1PrivateSubForm_Click()Dimscore(4)asinteger,B(3,3)asintegerscore(1)=1B(1,3)=10Printscore(1),B(1,3)EndSubPrintscore(0),B(0,3)2、數(shù)組的大?。杭磾?shù)組元素的個(gè)數(shù)。每一維的大小=上界-下界+1;數(shù)組的大小=每一維大小的乘積。課堂練習(xí)2:在VB中,設(shè)有聲明語句

OptionBase0DimB(-1to10,2to9,20)asinteger則數(shù)組B中全部元素的個(gè)數(shù)是()A、2016B、2310C、1800D、1848A缺省維下界為03、在dimA(6)asinteger中,A(6)

是數(shù)組說明符,而該數(shù)組的第7個(gè)元素的名字也是A(6)

,雖然書寫形式一樣,但含義不同,不要混淆,出現(xiàn)在數(shù)組定義語句中的A(6)是數(shù)組說明符,而出現(xiàn)在程序的其他地方的A(6)則是A數(shù)組中下標(biāo)為6的數(shù)組元素的名字。PrivateSubForm_Click()Dimnl(5)AsIntegernl(1)=21nl(2)=21nl(3)=21nl(4)=21

nl(5)=20Printn1(5)Endsub4、數(shù)組的上、下界某維的下界和上界分別表示該維的最小和最大的下標(biāo)值。維界的取值范圍不得超過長(zhǎng)整型的數(shù)據(jù)范圍,且下界小于等于上界,否則將產(chǎn)生錯(cuò)誤。例:dima(6to0)×

特別注意:在定義固定大小數(shù)組時(shí),維的上、下界必須是常數(shù)表達(dá)式(含常數(shù)、符號(hào)常量、數(shù)字字符串),不可以是變量名。而且在數(shù)組定義語句中若用符號(hào)常數(shù)說明數(shù)組的維界,那么該符號(hào)常數(shù)在這個(gè)說明語句之前必須被定義過。

課堂練習(xí):判斷下列數(shù)組定義語句是否正確dimmasintegerconstnasinteger=5dima(n)asintegerdimb(1to6.5)asintegerdimc(1to2*3)asintegerdimd(0tom)asinteger

×定義時(shí)下標(biāo)不能使用變量√等同于:dimb(1to6)asinteger√使用符號(hào)常量表達(dá)維界。等同于:dima(5)asinteger√等同于:dimb(1to6)asinteger

除了數(shù)組定義語句外,在其他地方出現(xiàn)的數(shù)組元素的下標(biāo)可以是變量。DimA(0To6)AsIntegerb=3A(b)=100PrintA(b)5、數(shù)組的數(shù)據(jù)類型數(shù)組的數(shù)據(jù)類型就是數(shù)組元素的數(shù)據(jù)類型。在As子句中給出,可以是Integer,long,single,double,date,boolean,string,string*length,object,currency,Variant和自定義類型。

6、數(shù)組的初值問題對(duì)于數(shù)值型數(shù)組,在定義后將各元素初始化初值為0;對(duì)于不定長(zhǎng)字符型數(shù)組,在定義后將各元素初始化為空字符;對(duì)于定長(zhǎng)字符型數(shù)組,在定義后將各元素初始化為指定個(gè)數(shù)的空格,邏輯型的初始值為false。7、用static關(guān)鍵字定義的固定大小數(shù)組叫靜態(tài)數(shù)組。

它的特點(diǎn)是:在調(diào)用過程時(shí),它的各個(gè)元素會(huì)繼承上次退出該過程時(shí)元素的取值。

Statica(3)asinteger例簡(jiǎn)單變量在內(nèi)存中是獨(dú)立存放的,彼此間沒有聯(lián)系。而數(shù)組元素在內(nèi)存中是連續(xù)存放的。...A1...A0A5...A3...A2...A4...普通變量:獨(dú)立存放數(shù)組元素變量:連續(xù)存放(帶下標(biāo)的變量)A(1)A(2)A(3)A(4)A(5)A(6)6.1.3數(shù)組的結(jié)構(gòu)一維數(shù)組的存儲(chǔ)方式按下標(biāo)由小到大的線性順序存放在一串連續(xù)的內(nèi)存單元中。Dimx(5)asIntegerX(0)X(1)X(2)X(3)X(4)X(5)在內(nèi)存中的存儲(chǔ)結(jié)構(gòu)A(0,0)A(1,0)A(0,1)A(1,1)A(0,2)A(1,2)二維數(shù)組的存儲(chǔ)方式二維數(shù)組的數(shù)組元素是“按列”的順序存放的。DimA(1,2)asSingleDimA(2,1)asSingleA(0,0)A(1,0)A(2,0)A(0,1)A(1,1)A(2,1)第1列第2列第3列第1列第2列6.1.4數(shù)組函數(shù)及數(shù)組語句(重點(diǎn))兩個(gè)函數(shù)和兩個(gè)語句LboundUboundEraseForeach---next6.1.4數(shù)組函數(shù)及數(shù)組語句Lbound函數(shù)求數(shù)組指定維數(shù)的下界;Ubound函數(shù)求數(shù)組指定維數(shù)的上界;語法格式:

Lbound(數(shù)組名

[,維])Ubound(數(shù)組名

[,維])若省略第2個(gè)參數(shù),則代表求第一維的上下界。比如Dima(5)asinteger,b(3to8,200to208)printlbound(a),lbound(b,1),lbound(b,2)printubound(a),ubound(b,1),ubound(b,2)

結(jié)果為:

0320058208思考下列代碼的輸出結(jié)果?Dima(5,5)asinteger,jsasintegerFori=1toubound(a,1)forj=1toubound(a,2)a(i,j)=i+jtext1.text=text1.text&str(a(i,j))js=js+1ifjsmod5=0thentext1.text=text1.text&vbcrlfendifnextjNextiErase語句功能:初始化固定大小數(shù)組或收回動(dòng)態(tài)數(shù)組的空間。語句格式:Erase數(shù)組名[,數(shù)組名]……說明:1)Erase語句初始化固定大小的數(shù)組

數(shù)值數(shù)組將每個(gè)元素設(shè)為0。變長(zhǎng)字符串?dāng)?shù)組將每個(gè)元素設(shè)為空字符串。定長(zhǎng)字符串?dāng)?shù)組將每個(gè)元素設(shè)為指定長(zhǎng)度的空格。布爾型數(shù)組將每個(gè)元素設(shè)為FALSE。例10.課本p89PrivateSubForm_Click() Dima(3)AsInteger,b()AsInteger a(1)=1:a(2)=2:a(3)=3

ReDimb(4)

Printa(1),a(2),a(3)

Erasea,b Printa(1),a(2),a(3)EndSub123000思考:下列代碼的執(zhí)行結(jié)果PrivateSubForm_Click()Diminta(2)AsString*2inta(0)=“aa”inta(1)=“bb”EraseintaPrintLen(inta(0))EndSub22)對(duì)于動(dòng)態(tài)數(shù)組:Erase語句將刪除整個(gè)動(dòng)態(tài)數(shù)組結(jié)構(gòu)并釋放該數(shù)組所占用的內(nèi)存,即動(dòng)態(tài)數(shù)組經(jīng)Erase操作后即不再存在。下次引用該動(dòng)態(tài)數(shù)組之前,程序必須使用ReDim語句來重新定義該數(shù)組變量的維數(shù)。

思考下列代碼的執(zhí)行結(jié)果PrivateSubForm_Click()Dima()AsIntegerReDima(3)a(1)=1Printa(1)EraseaPrinta(1)EndSub下標(biāo)越界Redima(2)ForEach……Next語句語句格式:為數(shù)組中的每個(gè)元素重復(fù)執(zhí)行一組語句。ForEach成員In數(shù)組循環(huán)體

[ExitFor]……Next[成員]說明:(1)格式中的“成員”是一個(gè)Variant型變量.“數(shù)組”是一個(gè)數(shù)組名,沒有括號(hào)和上下界。(2)ForEach……Next語句按數(shù)組元素在內(nèi)存中的排列順序依次處理每一個(gè)元素,執(zhí)行次數(shù)為數(shù)組元素的個(gè)數(shù).

Dimscore(1to5)asintegerForEachxInscorePrintx;Nextx例:編程實(shí)現(xiàn)142128354249566370778491

產(chǎn)生12個(gè)能被7整除的兩位數(shù),并使用foreach----next語句將這些數(shù)分成兩行輸出OptionBase1‘定義數(shù)組的默認(rèn)下標(biāo)為1PrivateSubCommand1_Click()Dima(12)AsInteger,iAsInteger,jsAsIntegerjs=14

Fori=1To12a(i)=jsjs=js+7Nextijs=0ForEachvinajs=js+1Printv;

IfjsMod6=0ThenPrintNextvEndSub用來給每個(gè)數(shù)組元素賦值用來定義被7整除的數(shù)身份變了:用來定義換行的用來將每個(gè)數(shù)組元素輸出用來定義滿足一行六個(gè)元素OptionBase1PrivateSubCommand1_Click()Dimexam(2,3)AsInteger,iAsInteger,jAsIntegerFori=1To2Forj=1To3

NextjNexti

ForEachvEndSub111213212223編程2:將此二維數(shù)組先用foreach-next語句輸出,觀察輸出結(jié)果;然后用for輸出,再對(duì)比輸出結(jié)果。exam(i,j)=i*10+jInexamPrintv;Nextv:Printexam(i,j)輸出結(jié)果是?112112221323輸出結(jié)果是?1112132122231、數(shù)組元素的賦值2、數(shù)組元素的輸出3、數(shù)組元素的引用6.2數(shù)組的基本操作1、數(shù)組元素的賦值逐一給數(shù)組元素賦值使用循環(huán)賦值用INPUTBOX函數(shù)用ARRAY函數(shù)數(shù)組賦值使用文本框賦值1)用賦值語句給數(shù)組元素賦值例1:求8個(gè)數(shù)的平均數(shù)。適用于元素個(gè)數(shù)較小的數(shù)組OptionBase1PrivateSubForm_Click()Dimnums(8)AsSingle,sAsSingle

nums(1)=12nums(2)=14nums(3)=50

nums(4)=12nums(5)=14‘nums(6)=50

nums(7)=12nums(8)=14s=nums(1)+nums(2)+nums(3)+…….

將8個(gè)元素的值加起來(限于篇幅,以省略號(hào)代替,實(shí)際程序不可這樣寫

s=s/8PrintsEndSub2)利用循環(huán)語句對(duì)數(shù)組元素進(jìn)行逐一地賦值。Privatesubform_click()dima(6)asinteger,iasintegerfori=1to6

a(i)=Inputbox(“給數(shù)組元素賦值”,“數(shù)組A賦值”)

printa(i);nextiendsub給數(shù)組a的5個(gè)元素賦值,a(i)代表數(shù)組元素使用inputbox函數(shù)結(jié)合循環(huán)給數(shù)組a的5個(gè)元素賦值,a(i)代表數(shù)組元素Privatesubform_click()dima(5)asinteger,iasinteger fori=1to5 A(i)=Int(100*rnd)+1 printa(i); nextiendsub

利用Array函數(shù)可以把一個(gè)數(shù)據(jù)集賦值給一個(gè)Variant變量或Variant類型的動(dòng)態(tài)數(shù)組。格式:<變體變量名>=Array([數(shù)據(jù)列表])逗號(hào)間隔.3)把一組數(shù)據(jù)賦給一個(gè)數(shù)組OptionBase1PrivateSubCommand1_Click()DimaAsVariant,IAsInteger,b()AsVarianta=Array(5,4,3,2,1)Printa(1);a(2);a(3);a(4);a(5)a=Array(1.5!,2.3!,3.6!,4.1!)Printa(1);a(2);a(3);a(4)b=Array(1,2,3,4,5,6)Fori=1To6Printb(i);NextEndSub4)數(shù)組賦值

將一個(gè)數(shù)組的整個(gè)內(nèi)容賦給另一個(gè)數(shù)組或者variant變量

PrivateSubCommand1_Click()DimaAsVariant,b()AsVariant,iAsIntegera=Array(1,2,3,4,5)

b=aForEachxInbPrintxNextxEndSub用數(shù)組給數(shù)組賦值時(shí),要遵循的規(guī)則是:(1)賦值符左邊的數(shù)組是動(dòng)態(tài)數(shù)組.(2)賦值符兩邊的數(shù)據(jù)類型必須相同。(3)數(shù)組賦值后,賦值符左邊的數(shù)組的維數(shù)、每一維的維下界和維上界都和賦值符右邊的數(shù)組相同。5)文本框賦值:inputbox函數(shù)每次只能輸入一個(gè)值,當(dāng)數(shù)組元素較多時(shí)不方便,使用文本框可以方便地給數(shù)組的多個(gè)元素賦值。S=text1Fori=1to3forj=1to3k=0Pos=pos+1Dowhilemid(s,pos,1)<>”“andpos<=len(s)Pos=pos+1

溫馨提示

  • 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. 人人文庫(kù)網(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)論