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

下載本文檔

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

文檔簡介

1、Visual Basic 1目 錄前言第1講第2講第3講第4講第5講第6講第7講第8講第9講第10講第11講第12講第13講第14講第15講第16講2回顧上一講學習的內(nèi)容判斷條件執(zhí)行循環(huán)WhilewendDo WhileLoopDo UntilLoopDo Loop WhileDo Loop Until3上機實驗中的問題求累加和SUM=SUM+K (sum的初始值一定是0)求連乘SUM=SUM*K(sum的初始值一定是1)程序填空題:特別要注意選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的完整性。4第六章 數(shù)組 (4學時)6.1 數(shù)組的引入6.2 數(shù)組的聲明6.3 動態(tài)數(shù)組及聲明6.4 數(shù)組的基本操作6.5 控件數(shù)組6

2、.6 自定義數(shù)據(jù)類型6.7 數(shù)組應(yīng)用6.8 常見錯誤51.數(shù)組概念例6.1 求一個班36個學生的平均成績,然后統(tǒng)計高于平均分的人數(shù)。按以前簡單變量的使用和循環(huán)結(jié)構(gòu)相結(jié)合,求平均成績程序段如下: aver = 0 For i = 1 To 36 mark = InputBox(輸入第 + i + 位學生的成績) aver = aver + mark Next i aver = aver / 1006.1 數(shù)組的引入6若要統(tǒng)計高于平均分的人數(shù),則無法實現(xiàn)。mark是一個簡單變量,存放的是最后一個學生的成績。已有知識解決方法:再重復(fù)輸入成績,這樣又帶來兩個問題: (1)輸入數(shù)據(jù)的工作量成倍增加; (

3、2)若本次輸入的成績與上次不同,則統(tǒng)計的結(jié)果不正確。解決此問題的根本方法,需引入數(shù)組,保存輸入的數(shù)據(jù),一次輸入,多次使用。7數(shù)組的概念具有相同類型的一組變量作為一個整體,稱為數(shù)組。數(shù)組占據(jù)一塊內(nèi)存區(qū)域,數(shù)組名是這個區(qū)域的名稱,區(qū)域中的每個內(nèi)存單元都有自己的地址,該地址用下標表示,即標識了數(shù)組中的每個元素。定義數(shù)組的目的就是通知系統(tǒng)為其留出所需要的空間,且同名數(shù)組中的元素按一定的順序連續(xù)存放。8數(shù)組的概念數(shù)組是用一個統(tǒng)一的名稱表示的、順序排列的一組內(nèi)存變量。數(shù)組中的每個變量稱為數(shù)組元素,用不同的數(shù)字(下標)來標識它們,因此數(shù)組元素又稱為下標變量。 如果每個數(shù)組元素只有一個下標,則稱這個數(shù)組為一維

4、數(shù)組。有兩個下標的數(shù)組稱為二維數(shù)組。VB中規(guī)定:數(shù)組必須先聲明后使用,不允許使用隱含定義。92.數(shù)組的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)例如:聲明一維整型數(shù)組N(8) Dim N%(8)N(8)在內(nèi)存中排列示意圖:例:從鍵盤隨意輸入8個數(shù),將這8個數(shù)從大到小排列輸出。10二維數(shù)組的邏輯結(jié)構(gòu)二維數(shù)組的邏輯結(jié)構(gòu):可以看成一個二維表格或看成一個矩陣。數(shù)組元素的第一個下標值表示該元素在表格中的行號,第二個下標值表示該元素在表格中的列號。 例如:聲明二維數(shù)組:DIM W%(4,3)11二維數(shù)組的存儲結(jié)構(gòu)數(shù)組的存儲結(jié)構(gòu):按行為主序存儲。12 VB中,使用4個關(guān)鍵字聲明數(shù)組,它們格式相同,只是適用范圍不同而已。Dim 用在

5、窗體模塊或標準模塊中,也可用于過程ReDim 用于過程中Static 用在過程中Public 用在標準模塊中,定義全局數(shù)組。 VB中,數(shù)組又有兩種情況: 靜態(tài)(定長)數(shù)組 動態(tài)(可變長)數(shù)組6.2 數(shù)組的聲明131.靜態(tài)數(shù)組定義數(shù)組時,明確了數(shù)組的維數(shù),及每維下標的上下界,這種數(shù)組稱為靜態(tài)數(shù)組。靜態(tài)數(shù)組:計算機在程序執(zhí)行之前,進行編譯時就根據(jù)數(shù)組說明語句開辟了固定的內(nèi)存區(qū),直到程序執(zhí)行完畢。聲明靜態(tài)數(shù)組,下標必須用數(shù)值常數(shù)或符號常量。142.靜態(tài)數(shù)組聲明靜態(tài)數(shù)組聲明語句形式(以dim為例) : Dim 數(shù)組名(下標1,下標2) As 類型聲明了數(shù)組的名、維數(shù)、大小、類型維數(shù):有N個下標稱為N維

6、數(shù)組,N=1,2,最多60維。下標: 下界 To 上界 省略下界默認為0,下標必須為常數(shù)每一維大小: 上界-下界+1數(shù)組大小: 每一維大小的乘積15例:dim x(9) as integerdim a(10,10) as long說明:(1)對于數(shù)組的每一維,可以只給出使用的下標的最大值,即下標的上界。此時,默認下標下界為0。(2)如果需要數(shù)組的下標下界從1開始,可以:dim x%(1 to 9),a&(1 to 10,1 to 10)或使用option base語句:option base 1說明:Option base語句只能出現(xiàn)在窗體通用段或標準模塊中,不能出現(xiàn)在過程中,且必須在數(shù)組定義

7、語句之前。默認下標值對每一維都有效。數(shù)組聲明語句格式116數(shù)組聲明語句格式2Dim 數(shù)組名(下界 To 上界,下界 To上界) As 類型說明:此格式可以自由定義下標的下界和上界。 例:dim a(-2 to 10) as integerdim b(10 to 100) as longdim c(1 to 10 , 11 to 20) as single數(shù)組下界上界的測試函數(shù)LBound(數(shù)組,維)、UBound(數(shù)組,維)默認數(shù)組數(shù)據(jù)類型為Variant的數(shù)組稱默認數(shù)組。定義時省略As類型說明。數(shù)組中元素的類型可以不同。17例1:Dim mark(1 to 100) As Integer例2

8、:Dim lArray( 0 To 3,0 To 4) As Long等價于: Dim lArray(3,4) As Long聲明了Larray數(shù)組共有20( 45)個元素18注意:(1)聲明靜態(tài)數(shù)組,下標為常數(shù)表達式,不能是變量。 n =Inputbox(“輸入n”)Dim x(n) As Single(2)數(shù)組聲明語句中的下標說明了數(shù)組的整體,即每一維的大小;而在程序其他地方出現(xiàn)的下標表示數(shù)組中的一個元素。兩者寫法形式相同,但意義不同。例如: Dim x(10) As Integer 聲明了x數(shù)組有11個元素 x(10)=100 對x(10)這個數(shù)組元素賦值19給數(shù)組中的各元素賦初值的操作

9、稱為“數(shù)組的初始化”。使用dim定義的靜態(tài)數(shù)組,數(shù)值型的初始化為0,字符型的初始化為空串,變體類型為Empty。206.3 動態(tài)數(shù)組聲明數(shù)組時,沒有說明數(shù)組的大小,這種數(shù)組稱為動態(tài)數(shù)組。動態(tài)數(shù)組:在程序未運行時,動態(tài)數(shù)組不占用內(nèi)存,計算機在執(zhí)行過程中才給數(shù)組開辟存儲空間,當不需要時,可以用Erase語句刪除它,收回分配給它的內(nèi)存區(qū),需要時還可以用Redim語句再次分配存儲區(qū)。動態(tài)數(shù)組可以用已經(jīng)賦值的變量定義下標范圍。21動態(tài)數(shù)組的定義和聲明動態(tài)數(shù)組定義首先在窗體、標準模塊或過程中用Dim、Public聲明一個沒有下標的數(shù)組。再在過程中用ReDim語句定義帶下標的數(shù)組。ReDim語句格式如下:

10、ReDim Preserve 數(shù)組名(下標,下標2) As 類型例: Sub Form_Load( ) Dim sArray( ) As Single ReDim sArray(4,8) End Sub22動態(tài)數(shù)組聲明的幾點說明:(1)Dim、Private、Public變量聲明語句是說明性語句,可出現(xiàn)在過程內(nèi)或通用聲明段;ReDim語句是執(zhí)行語句,只能出現(xiàn)在過程內(nèi)。(2)在過程中可多次使用ReDim來改變數(shù)組的大小,也可改變數(shù)組的維數(shù)。(3)每次使用ReDim語句都會使原來數(shù)組中的值丟失,可以在ReDim語句后加Preserve參數(shù)用來保留數(shù)組中的數(shù)據(jù),但使用Preserve只能改變最后一維

11、的大小,前面幾維大小不能改變。(4)ReDim中的下標可以是常量,也可以是有了確定值的變量。236.4 數(shù)組的基本操作 數(shù)組元素的賦值賦值語句使用For循環(huán)和InputBox函數(shù)來賦值使用array函數(shù)數(shù)組元素的引用數(shù)組名(下標)數(shù)組元素的輸出使用Print方法實現(xiàn)24(1)用循環(huán)和賦值語句 For i = 1 To 10 iA(i)=i Next I(2)Array函數(shù) Dim ib As Variant ib =Array(abc, def, 67) For i = 0 To UBound(ib) Picture1.Print ib(i); ; Next i注意:(1)利用Array 對數(shù)

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

13、i = 0 To UBound(a) b(i) = a(i)Next i注意:賦值號左邊的數(shù)組只能聲明為Variant的可調(diào)數(shù)組或簡單變量。數(shù)組的賦值在VB6.0中,提供了數(shù)組直接對數(shù)組的賦值。例如: Dim a( ) As Variant, b( ) As Variant, i% a = Array(1, 2, 3, 4, 5) ReDim b(UBound(a) b = a27Dim Max As Integer, iMax As IntegerDim ia(1 to 10) as integer Max=iA(1):iMax=1For i = 2 To 10 If iA(i)Max Th

14、en Max=iA(i) iMax=i End IfNext I2.數(shù)組元素的引用 例1:求數(shù)組中的最大元素及所在下標ia(1)ia(2)ia(3)ia(4)ia(5)ia(6)ia(7)ia(8)ia(9)ia(10)maximax參看例5交換數(shù)組元素:求數(shù)組中最大值及所在下標28數(shù)組元素的引用 例2: 交換數(shù)組中各元素For i =1 To 102 t=iA(i) iA(i)=iA(10-i+1) iA(10-i+1)=tNext I參看例 數(shù)組元素交換交換前24681013579交換后97531108642要求是:將數(shù)組的第1個元素與最后1個元素交換,第2個元素與倒數(shù)第2個交換,以此類推

15、。293. 二維數(shù)組的輸入和輸出Dim a%(4, 2)For i = 0 To 4For j = 0 To 2 a(i, j) = Val(InputBox(請輸入第( & i + 1 & , & j + 1 & )元素) Picture1.Print Format(a(i, j), );Next jPicture1.PrintNext i30數(shù)組輸入和賦值舉例1、定義兩個一維數(shù)組A和B,大小相同。要求從鍵盤輸入數(shù)據(jù),然后交換A、B中的值后輸出。31數(shù)組輸入和賦值舉例2、定義兩個階數(shù)相同的矩陣,求c=a+b,并輸出。324.數(shù)組的清除清除數(shù)組的語句格式:Erase 數(shù)組名,數(shù)組名Erase用

16、于靜態(tài)數(shù)組時,若數(shù)組是數(shù)值型,則所有元素置0;若數(shù)組是字符串類型,則所有元素置空字符串。Erase用于動態(tài)數(shù)組時,將刪除整個數(shù)組結(jié)構(gòu)并釋放數(shù)組所占內(nèi)存。Erase用于變體數(shù)組時,每個元素被重置為空Empty33問題講解簡單變量與數(shù)組變量的區(qū)別: AIA(I) I=1,2,310A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(8)A(9)A(10)小結(jié):AI代表的是一個簡單變量,而A(I)代表的則是以A為名的十個下標變量組成的數(shù)組。當I發(fā)生變化時,A(I)中的I會隨著I值的變化而變化,而AI變量與I毫無關(guān)系。34動態(tài)數(shù)組示例:例:輸入若干個學生的成績,統(tǒng)計高于平均分的人數(shù)。 Dim

17、mark() As Integer, i%, n%, aver n = InputBox(輸入學生的人數(shù)) ReDim mark(1 To n) 聲明存放n個學生成績的動態(tài)數(shù)組 aver = 0 For i = 1 To n mark(i) = Int(Rnd * 61 + 40) 通過隨機數(shù)產(chǎn)生 40 ,100的成績 aver = aver + mark(i) Next i ReDim Preserve mark(1 To n + 2) 增加兩個元素,存放平均分和高于平均分的人數(shù),原來的學生成績?nèi)员A?mark(n + 1) = aver / n mark(n + 2) = 0 For i = 1 To n If mark(i) mark(n + 1) Then mark(n + 2) = mark(n + 2) + 1 Next i For i = 1 To n Print mark(; i; )=; mark(i) Next i Print 平均分=; mark(n + 1), 高于平均分人數(shù)=; mark(n + 2)354.使用數(shù)組的注意事項 數(shù)組的命名與簡單變量的命名規(guī)則相同。下標必須用圓括號括起來,即A(5)。不能把數(shù)組元素A(5)寫成A5。系統(tǒng)默認下標的起始值為0

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論