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

下載本文檔

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

文檔簡介

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

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

DimArr(8)AsInteger

Dimatt(10)asString

Dimstu(3,5)asSingle

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

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

(2)方法二Dim[數(shù)組名]As<類型>()={數(shù)據(jù)表}Dim數(shù)組名(,)As類型={{第1行數(shù)據(jù)},{第2行數(shù)據(jù)},…,{第m行數(shù)據(jù)}}每行數(shù)據(jù)個數(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開始。③數(shù)組元素賦的值的類型必須與數(shù)組的類型相同。④如果聲明數(shù)組時不說明類型,那么數(shù)組為變體類型,即Variant型。2.?dāng)?shù)組的初始化(1)方法一

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

Fori=0To10

Arr(i)=i

Next

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

Fori=0To10

Forj=0To10

Arr(i,j)=iNext

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

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

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

Dim集合名AsNewCollection()

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

溫馨提示

  • 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

提交評論