復(fù)合數(shù)據(jù)類型_第1頁(yè)
復(fù)合數(shù)據(jù)類型_第2頁(yè)
復(fù)合數(shù)據(jù)類型_第3頁(yè)
復(fù)合數(shù)據(jù)類型_第4頁(yè)
復(fù)合數(shù)據(jù)類型_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章復(fù)合數(shù)據(jù)類型VB.Net程序設(shè)計(jì)教程

本章學(xué)習(xí)目標(biāo):□了解數(shù)組的概述和根本用途□掌握靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組的聲明、引用和初始化方法□了解集合的使用方法□掌握結(jié)構(gòu)的概念和使用方法4.1 數(shù)組數(shù)組通常用于存儲(chǔ)相似類型的值和對(duì)象。它允許對(duì)變量進(jìn)行分組,并且允許使用索引進(jìn)行檢索。數(shù)組有上界和下界,它用于指示數(shù)組的開(kāi)始索引值和結(jié)束索引值。另外,數(shù)組中的數(shù)據(jù)可以按序排列。簡(jiǎn)單的數(shù)組是一維的,當(dāng)然,在VB.NET中也可以使用多維數(shù)組。還可以對(duì)數(shù)組進(jìn)行循環(huán),以確定或修改存儲(chǔ)在數(shù)組中的某個(gè)值。4.1.1數(shù)組的聲明與初始化1.?dāng)?shù)組的聲明(1)方法一一維數(shù)組:Dim[數(shù)組名](下標(biāo)上限)As<類型>二維數(shù)組:Dim[數(shù)組名](第一維下標(biāo)上限,第二維下標(biāo)上限)As<類型>多維數(shù)組的聲明方法依此類推,本文不再贅述。數(shù)組的下標(biāo)從0開(kāi)始,最大下標(biāo)可以是常數(shù)、變量或者表達(dá)式,數(shù)組的類型可以是整型、長(zhǎng)整型、單精度、雙精度等類型,數(shù)組聲明后每個(gè)元素自動(dòng)置為0,布爾型數(shù)組的每個(gè)元素將賦給False,字符串?dāng)?shù)組那么為空。例如:

DimArr(8)AsInteger

Dimatt(10)asString

Dimstu(3,5)asSingle

第一個(gè)例子中,Arr是數(shù)組名,Arr(0)表示第一個(gè)元素,Arr數(shù)組可以存儲(chǔ)9個(gè)元素,其下標(biāo)從0到8,每個(gè)元素都為Integer類型。第二個(gè)例子中,att是數(shù)組名,該數(shù)組的每個(gè)元素為String類型,數(shù)組的第一個(gè)元素是att(0),一共有11個(gè)元素,最后一個(gè)元素為att(10)。

二維數(shù)組的每個(gè)元素具有兩個(gè)下標(biāo):一個(gè)表示行,一個(gè)表示列,二維數(shù)組的定義方法與一維數(shù)組相似,需定義數(shù)組名、最大行下標(biāo)、最大列下標(biāo)及數(shù)組類型。行號(hào)與列號(hào)的下標(biāo)均從0開(kāi)始。第三個(gè)例子中,定義了一個(gè)二維數(shù)組stu,一共4行、6列,共24個(gè)元素,每個(gè)元素的類型為Single。

(2)方法二Dim[數(shù)組名]As<類型>()={數(shù)據(jù)表}Dim數(shù)組名(,)As類型={{第1行數(shù)據(jù)},{第2行數(shù)據(jù)},…,{第m行數(shù)據(jù)}}每行數(shù)據(jù)個(gè)數(shù)相同。例如:DimArrAsInteger()={1,2,3,4,5,6,7}DimWordArAsString()={"Zero","One","Two"}DimData(,)AsInteger={{4,2,8,9},{3,3,2,4},{5,2,8,7}}注意:①數(shù)組的名稱的定義規(guī)那么與變量名相同,且不能與變量名重名。②數(shù)組的下標(biāo)從0開(kāi)始。③數(shù)組元素賦的值的類型必須與數(shù)組的類型相同。④如果聲明數(shù)組時(shí)不說(shuō)明類型,那么數(shù)組為變體類型,即Variant型。2.?dāng)?shù)組的初始化(1)方法一

先聲明數(shù)組,然后對(duì)其進(jìn)行初始化??梢灾苯訛閿?shù)組的某個(gè)元素賦值,例如Arr(0)=100,也可以使用循環(huán)語(yǔ)句依次為數(shù)組中的每個(gè)元素賦值。例如:

Fori=0To10

Arr(i)=i

Next

對(duì)于二維數(shù)組的初始化使用嵌套循環(huán)即可,例如:

Fori=0To10

Forj=0To10

Arr(i,j)=iNext

Next(2)方法二可以使用聲明中的方法二在聲明的時(shí)候直接為每個(gè)元素賦值。4.1.2數(shù)組的使用數(shù)組被聲明了以后,對(duì)使用數(shù)組中的元素只能逐個(gè)引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。一維數(shù)組的引用格式如下:數(shù)組名(下標(biāo))。注意:(1)數(shù)組名是表示要引用哪一個(gè)數(shù)組中的元素,這個(gè)數(shù)組必須已經(jīng)聲明過(guò)。(2)下標(biāo)用一對(duì)中括號(hào)()括起來(lái),它表示要引用的元素在數(shù)組中的位置,下標(biāo)可以是常數(shù)、變量、函數(shù)、表達(dá)式等形式。例如:a(3)、a(i+j)。(3)如果下標(biāo)是負(fù)數(shù)或者超越了下標(biāo)上限,系統(tǒng)將給出提示。數(shù)組下標(biāo)從0開(kāi)始。一個(gè)含有n個(gè)元素的數(shù)組,數(shù)組下標(biāo)的取值范圍為:0~(n-1)。例如:Dima(4)asInteger那么下標(biāo)只能為0、1、2、3、4,如果引用a(5)那么發(fā)生錯(cuò)誤。(4)如果下標(biāo)是實(shí)數(shù),將自動(dòng)四舍五入取整?!纠?-1】創(chuàng)立一個(gè)具有5個(gè)元素的數(shù)組,并實(shí)現(xiàn)數(shù)組的輸入與輸出。具體操作步驟和源程序參見(jiàn)教材【例4-2】創(chuàng)立一個(gè)簡(jiǎn)單應(yīng)用程序,輸入6個(gè)學(xué)生的成績(jī),計(jì)算他們的總成績(jī)及平均成績(jī)并輸出。具體操作步驟和源程序參見(jiàn)教材【例4-3】創(chuàng)立一個(gè)簡(jiǎn)單應(yīng)用程序,隨機(jī)產(chǎn)生10個(gè)1到100之間的數(shù),并按從小到大對(duì)這10個(gè)數(shù)排序并輸出。具體操作步驟和源程序參見(jiàn)教材【例4-4】創(chuàng)立一個(gè)簡(jiǎn)單應(yīng)用程序,隨機(jī)產(chǎn)生10個(gè)1到100之間的數(shù),將數(shù)組中的元素逆序排放并輸出。具體操作步驟和源程序參見(jiàn)教材【例4-5】創(chuàng)立一個(gè)簡(jiǎn)單應(yīng)用程序,現(xiàn)有10個(gè)學(xué)生,每個(gè)學(xué)生有4門課,計(jì)算每個(gè)學(xué)生的平均成績(jī)并輸出。具體操作步驟和源程序參見(jiàn)教材4.1.3動(dòng)態(tài)數(shù)組上小節(jié)介紹的數(shù)組聲明后元素的數(shù)量不能改變,如果需要改變?cè)氐臄?shù)量可以使用動(dòng)態(tài)數(shù)組,用ReDim語(yǔ)句聲明動(dòng)態(tài)數(shù)組,但動(dòng)態(tài)數(shù)組的維數(shù)與類型不能改變。聲明格式:ReDim[Preserve]數(shù)組名(新下標(biāo)上限,[新下標(biāo)上限2])例如:DimarrasInteger()={1,2,3,4,5}'聲明arr數(shù)組,其元素個(gè)數(shù)為5個(gè)ReDimarr(8)‘?dāng)?shù)組的元素個(gè)數(shù)從5個(gè)變?yōu)?個(gè),各元素的值被自動(dòng)清0ReDimPreservearr(8)‘?dāng)?shù)組的元素個(gè)數(shù)變?yōu)?個(gè),原來(lái)各元素的值不變,新元素的值為0注意:①ReDim聲明的數(shù)組名必須是已經(jīng)定義的。②Preserve關(guān)鍵字可有可無(wú),如果沒(méi)有Preserve,數(shù)組經(jīng)過(guò)ReDim后,原來(lái)數(shù)組的值被刷新。③如果ReDim聲明時(shí)使用Preserve關(guān)鍵字,那么原來(lái)數(shù)組的值被保存。④新下標(biāo)上限2使用于二維數(shù)組,多為數(shù)組按照同樣的方式處理?!纠?-6】創(chuàng)立一個(gè)簡(jiǎn)單應(yīng)用程序,使用ReDim及ReDimPreserve定義動(dòng)態(tài)數(shù)組,并觀察數(shù)組輸出值的不同。具體操作步驟和源程序參見(jiàn)教材4.1.4交錯(cuò)數(shù)組一個(gè)數(shù)組中的每個(gè)元素本身都是數(shù)組的數(shù)組稱為“數(shù)組的數(shù)組〞或交錯(cuò)數(shù)組。當(dāng)數(shù)據(jù)結(jié)構(gòu)是兩維的但不是矩形,例如,一個(gè)月份的數(shù)組,其每個(gè)元素又是天數(shù)的數(shù)組。由于不同的月份有不同的天數(shù),元素不能構(gòu)成一個(gè)矩形的兩維數(shù)組。在這種情況下,可以使用交錯(cuò)數(shù)組而不是多維數(shù)組。例如:Dimdate()()AsDouble=NewDouble(11)(){}DimmonthAsIntegerDimdaysAsIntegerFormonth=0To11days=DateTime.DaysInMonth(Year(Now),month+1)date(month)=NewDouble(days-1){}Nextmonth例子中聲明一個(gè)數(shù)組變量,數(shù)組date的每個(gè)元素本身都是表示月份的數(shù)組。每個(gè)月份數(shù)組包含該月中每天的值。New子句將該數(shù)組變量設(shè)置為一個(gè)12個(gè)元素的數(shù)組,其每個(gè)元素又是Double型元素的Double()型數(shù)組。For循環(huán)使用Year(Now)確定該年的每個(gè)月有多少天,并將date的相應(yīng)元素設(shè)置為適宜長(zhǎng)度的Double型數(shù)組。4.1.5使用ArrayList處理數(shù)組ArrayList就是數(shù)組列表,它位于System.Collections名稱空間下,是集和類型。它具有一些集合的操作方法,比方遍歷,查找,插入等操作。同時(shí)ArrayList還相當(dāng)于一個(gè)大小可自由改變的一維數(shù)組。所以當(dāng)然也可以象對(duì)待數(shù)組一樣對(duì)他進(jìn)行操作。使用ArrayList類必須先用New關(guān)鍵字新建對(duì)象。

ArrayList的常用方法為: Count:返回目前ArrayList中元素的個(gè)數(shù) Item:取得或設(shè)置指定索引的元素值 Add:新增一個(gè)元素到ArrayList對(duì)象的尾端 AddRange:新增其它數(shù)組或ArrayList對(duì)象到數(shù)組尾端 Contains:指定的元素是否存在于ArrayList對(duì)象中 GetRange:返回一個(gè)連續(xù)范圍的ArrayList對(duì)象 Insert:將指定的元素插入到ArrayList對(duì)象的指定位置 InsertRange:將指定的數(shù)組或ArrayList對(duì)象插入至ArrayList對(duì)象的指定位置 Remove:移去ArrayList中與指定值第一個(gè)相符的元素 RemoveAt:移去ArrayList指定位置的元素 RemoveRange:移去整個(gè)范圍的元素 Repeat:返回指定的元素,可以指定復(fù)制的數(shù)目 SetRange:將其它集合或數(shù)組的值指定至ArrayList中 ToArray:將ArrayList類對(duì)象轉(zhuǎn)為Array類對(duì)象【例4-7】創(chuàng)立一個(gè)應(yīng)用程序,具有四個(gè)按鈕“輸出〞、“添加〞、“查找〞、“刪除〞,完成的功能分別為輸出ArrayList中的元素,向ArrayList中添加元素,在ArrayList中根據(jù)索引查找元素,刪除指定元素。ArrayList中存儲(chǔ)學(xué)生的姓名。具體操作步驟和源程序參見(jiàn)教材4.2 集合集合〔Collection〕是工程所組成的有序集合,可以把這個(gè)集合作為單元來(lái)引用。集合不用創(chuàng)立新對(duì)象或復(fù)制現(xiàn)有元素,它在處理大小調(diào)整時(shí)所用的執(zhí)行時(shí)間比數(shù)組少,而數(shù)組必須使用ReDim。但是,如果不更改或很少更改大小,數(shù)組很可能更有效。集合一般是用來(lái)處理Object數(shù)據(jù)類型的,但它也可以用來(lái)處理任何數(shù)據(jù)類型。有時(shí)用集合存取數(shù)據(jù)比用數(shù)組更加有效。Collection對(duì)象提供了簡(jiǎn)便方法,直截了當(dāng)將一組相關(guān)的工程視為單一對(duì)象來(lái)引用。集合中的工程或成員被這樣一個(gè)事實(shí)聯(lián)系起來(lái):它們都屬于這個(gè)集合。集合的成員不一定都是同一種數(shù)據(jù)類型的。建立集合的方法與建立其它對(duì)象的方法一樣。1.建立集合

為了建立集合,必須先建立一個(gè)Collection類的實(shí)例,格式為:

Dim集合名AsNewCollection()

建立集合后,可以對(duì)集合執(zhí)行以下操作: Add方法:添加元素 Remove方法:刪除元素 Clear方法:刪除所有元素 Count方法:查詢集合的元素個(gè)數(shù) Contains方法:查詢集合中是否存在某個(gè)元素 Item方法:返回集合中的特定元素 使用ForEach……Next語(yǔ)句訪問(wèn)集合中的各個(gè)元素2.添加元素使用Add方法可以在集合中添加一個(gè)元素,Add方法的格式為:PublicSubAdd〔ByValItemAsObject,OptionalByValKeyAsString,OptionalByVal{Befor|After}AsObject=Nothing〕 Item:制定要添加到集合中的元素 Key:可選項(xiàng)。指定鍵字符串的唯一String表達(dá)式,可以用此鍵字符串代替定位索引訪問(wèn)集合的這個(gè)新元素。 Before:可選項(xiàng)。制定集合中的相對(duì)位置的表達(dá)式。將要添加的元素放在集合中由Before參數(shù)標(biāo)識(shí)的元素前面。如果Before是數(shù)值表達(dá)式,那么它必須介于1和集合Count屬性值之間的數(shù)值。如果Before是String表達(dá)式,那么必須對(duì)應(yīng)于將引用的元素添加到集合時(shí)指定的鍵字符串。不能同時(shí)指定Before和After。 After:可選項(xiàng)。制定集合中的相對(duì)位置的表達(dá)式。將要添加的元素放在集合中由Before參數(shù)標(biāo)識(shí)的元素后面。如果After是數(shù)值表達(dá)式,那么它必須介于1和集合Count屬性值之間的數(shù)值。如果After是String表達(dá)式,那么必須對(duì)應(yīng)于將引用的元素添加到集合時(shí)指定的鍵字符串。不能同時(shí)指定Before和After。注意:〔1〕集合中的成員可以是同一種類型的數(shù)據(jù),也可以混合使用多種數(shù)據(jù)?!?〕參數(shù)Key是一個(gè)字符串表達(dá)式,在一個(gè)集合中,必須是唯一的。3.刪除元素從集合中刪除元素可以使用Remove方法,其格式為:PublicOverloadsSubRemove〔ByVal{KeyAsString|IndexAsInteger}〕 Key必須是唯一的,為String類型,指定可用于訪問(wèn)集合的元素的鍵字符串。Key必須對(duì)應(yīng)于將元素添加到集合時(shí)指定的Key參數(shù)。 Index指定集合的元素位置的數(shù)值表達(dá)式。Index必須從1到此集合的Count屬性值之間的數(shù)字。4.查詢?cè)厥褂肐tem方法能夠從集合中返回某個(gè)特定的元素,其格式為:DefaultPublicReadOnlyPropertyItem〔ByVal{KeyAsString|IndexAsInteger|IndexAsObject}〕AsObject Key必須是唯一的,為String類型,指定可用于訪問(wèn)集合的元素的鍵字符串。Key必須對(duì)應(yīng)于將元素添加到集合時(shí)指定的Key參數(shù)。 Index指定集合的元素位置的數(shù)值表達(dá)式。Index必須從1到此集合的Count屬性值之間的數(shù)字?!纠?-8】創(chuàng)立一個(gè)集合,存儲(chǔ)數(shù)學(xué)、語(yǔ)文、英語(yǔ)、物理等成績(jī),使用Add方法向集合添加成績(jī),使用Remove方法刪除成績(jī),使用循環(huán)輸出所有成績(jī)。具體操作步驟和源程序參見(jiàn)教材4.3結(jié)構(gòu)類型4.3.1結(jié)構(gòu)類型定義如果想讓單個(gè)變量持有幾個(gè)相關(guān)信息時(shí)結(jié)構(gòu)很有用。例如,您可能想將一個(gè)學(xué)生的姓名、學(xué)號(hào)、院系、年齡等信息存儲(chǔ)在一起??梢詫?duì)這些信息使用幾個(gè)變量,或者定義一個(gè)結(jié)構(gòu)并將它用于單個(gè)學(xué)生變量。當(dāng)有許多學(xué)生并且因此有該變量的許多實(shí)例時(shí),結(jié)構(gòu)的優(yōu)點(diǎn)變得非常明顯。使用Structure語(yǔ)句作為VB.NET聲明結(jié)構(gòu)的開(kāi)始,并使用EndStructure語(yǔ)句作為結(jié)構(gòu)聲明的結(jié)束。在這兩條語(yǔ)句之間必須至少聲明一個(gè)“元素〞。元素可以是任何數(shù)據(jù)類型,但是至少一個(gè)必須是非共享變量,或是非共享非自定義事件。 聲明結(jié)構(gòu)的方法:[Private|Public|Private|Dim]Structure結(jié)構(gòu)類型名結(jié)構(gòu)體EndStructure例如:PrivateStructurestudent結(jié)構(gòu)體EndStructure其中student是結(jié)構(gòu)的名字,Structure是創(chuàng)立結(jié)構(gòu)的開(kāi)始語(yǔ)句,EndStructure是創(chuàng)立結(jié)構(gòu)的結(jié)束語(yǔ)句??梢允褂?/p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論