vb第7章2008.11.27.ppt_第1頁
vb第7章2008.11.27.ppt_第2頁
vb第7章2008.11.27.ppt_第3頁
vb第7章2008.11.27.ppt_第4頁
vb第7章2008.11.27.ppt_第5頁
已閱讀5頁,還剩51頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1,第7章,復(fù)合數(shù)據(jù)類型,本章要點(diǎn): 數(shù)組 數(shù)組的操作 控件數(shù)組 記錄 記錄數(shù)組 集合,2,7.1 數(shù)組,7.1.1 數(shù)組的定義 數(shù)組: 一組性質(zhì)相同的有序的數(shù) 例: 多項(xiàng)式y(tǒng)=a0+a1x+a2x2+a3x3+anxn 系數(shù)A=(a0,a1,a2,an)可以構(gòu)成一個(gè)數(shù)組 表示: A(0) A(1) A(2) . A(n) 例: 全班40名同學(xué)的英語成績(jī) G(1) G(2) G(3) G(40) 所有班級(jí)(如6個(gè)班,每班40人)同學(xué)的英語成績(jī) 表示1: G(1) G(2) G(3) G(240) 表示2: G(1,1) G(1,2) G(1,40) G(2,1) G(2,2) G(2,40)

2、G(6,1) G(6,2) G(6,40),3,例: 矩陣,矩陣中各元素b11-b33可表示成: B(1,1) B(1,2) B(1,3) B(2,1) B(2,2) B(2,3) B(3,1) B(3,2) B(3,3),4,數(shù)組名:一組數(shù)用一個(gè)統(tǒng)一的名稱表示,稱數(shù)組名。 數(shù)組元素(下標(biāo)變量): 數(shù)組中的每一個(gè)元素。 表示成: 數(shù)組名(下標(biāo)) 下標(biāo)的取值可以是常數(shù)、變量、表達(dá)式 如: A(8) B(I) C(3+K) 下標(biāo)還可以是下標(biāo)變量 如: A(A(5) 令A(yù)(5)=4, A(A(5)=A(4) 數(shù)組的維數(shù):下標(biāo)個(gè)數(shù) 一維數(shù)組: 由一個(gè)下標(biāo)組成。如 A(2),C(6) 二維數(shù)組: 由兩個(gè)

3、下標(biāo)組成。如 B(2,3) 三維數(shù)組: 由三個(gè)下標(biāo)組成。如 G(3,4,23) 三維以上的數(shù)組稱為多維數(shù)組,最多60維,5,固定大小的數(shù)組的定義,1. 格式 Public|Private|Dim () As 2. 功能: 聲明數(shù)組名稱、維數(shù)、維大小、類型。 為數(shù)組分配存儲(chǔ)空間。 3. 說明 : 合法的變量名 : To , To , 如果下界省略,則使用默認(rèn)下界 默認(rèn)下界: Option Base 0|1,6,: Integer Long Single Double Boolean String String*n Date Variant Object 用戶定義類型 數(shù)組在定義后自動(dòng)被初始化:

4、將可變類型數(shù)組元素值置為Empty 將數(shù)值型數(shù)組元素值置為0 將字符串類型數(shù)組元素值置為零長(zhǎng)度字符串 分配固定的存儲(chǔ)空間 使用以下語句初始化數(shù)組元素: Erase ,7,例: Dim A(-4 TO 10) As Integer 一維整型數(shù)值數(shù)組 下界 -4,上界 10 元素 A(-4) A(-3) . A(0) A(1) . A(10) 例: Dim B(0 to 8,0 to 3) As String DIM B(8,3) As String 二維字符串類型數(shù)組 第一維: 下界0,上界 8 第二維: 下界0,上界 3 元素 B(0,0) B(0,1) B(0,2) B(0,3) B(1,0

5、) B(1,1) B(1,2) B(1,3) . B(8,0) B(8,1) B(8,2) B(8,3),8,例: Dim C(-99 TO -5,-3 TO 0) As Boolean 第一維下界-99 ,上界5 ; 第二維下界3, 上界0 元素: C(-99,-3) C(-99,-2) C(-99,-1) C(-99,0) C(-98,-3) C(-98,-2) C(-98,-1) C(-98,0) . C(-5,-3) C(-5,-2) C(-5,-1) C(-5,0) 例: DIM S1(50) AS LONG DIM M(-3 TO 10) DIM ABC(20) AS STRING

6、 DIM ST2(7,0 TO 14) AS STRING*20 例: CONST Y1=10 CONST Y2=50 DIM ABC(Y1 TO Y2) AS INTEGER 數(shù)組元素個(gè)數(shù):(上界1-下界1+1)*(上界2-下界2+1)*,9,7.1.2 動(dòng)態(tài)數(shù)組 根據(jù)內(nèi)存區(qū)開辟時(shí)機(jī)的不同,可以把數(shù)組分為靜態(tài)數(shù)組(Static)和動(dòng)態(tài)數(shù)組(Dynamic)。把需要在編譯時(shí)開辟內(nèi)存區(qū)的數(shù)組稱為靜態(tài)數(shù)組,在運(yùn)行時(shí)開辟內(nèi)存區(qū)的數(shù)組稱為動(dòng)態(tài)數(shù)組。 1. 定義格式 分以下兩步進(jìn)行: (1) 在模塊級(jí)或過程級(jí)定義一個(gè)沒有下標(biāo)的數(shù)組 Public|Private|Dim ()As , (2) 在過程級(jí)使用

7、ReDim語句定義數(shù)組的實(shí)際大小 ReDim () As ,10,2. 說明 (1) : 常包含明確值變量或表達(dá)式 (2) 可以用ReDim反復(fù)改變數(shù)組元素及維數(shù)的數(shù)目 (3) 若步驟(1)定義了類型,則不許用步驟(2)改變類型 (4) 執(zhí)行ReDim語句將重新對(duì)數(shù)組元素進(jìn)行初始化 (5) Erase : 釋放動(dòng)態(tài)數(shù)組所占的存儲(chǔ)空間,11,例: Dim A() As Integer Private Sub Command1_Click() N = 4 ReDim A(N) For I = 0 To N A(I) = 1: Print A(I); Next I Print N = 8 ReDim

8、 A(N, N) For I = 0 To N For J = 0 To N A(I, J) = 2: Print A(I, J); Next J Print Next I End Sub,12,7.2 數(shù)組的基本操作,7.2.1 數(shù)組元素的輸入與輸出 數(shù)組輸入: 賦值 IntputBox Array函數(shù)(僅用于一維數(shù)組) 數(shù)組輸出: 用Print、Label、TextBox 、ListBox、Combox等 例: 輸入10個(gè)單詞,按相反的次序輸出,13,方法1: Dim A(1 To 10) As String A(1) = one A(2) = two A(3) = three A(4)

9、= four A(5) = five A(6) = six A(7) = seven A(8) = eight A(9) = nine A(10) = ten For I = 10 To 1 Step 1劑 Print A(I) Next I,適合于對(duì)數(shù)組的個(gè)別元素賦初值 適合于輸出少量數(shù)據(jù),14,方法2: Dim A(1 To 10) As String For I = 1 To 10 A(I)=InputBox(請(qǐng)輸入單詞, , 在此輸入) Next I Text1.Text = For I = 10 To 1 Step -1 Text1.Text = Text1.Text Next A,

10、19,例: 求二維數(shù)組Y的所有元素之和。 Dim Y(10, 10) For Each A In Y Sum = Sum + A Next A Print Sum,使用For Each.Next循環(huán)處理數(shù)組時(shí),適合于不關(guān)心數(shù)組元素的處理次序的問題。,20,7.2.4 保留動(dòng)態(tài)數(shù)組的內(nèi)容 格式: ReDim Preserve () Dim A() As Integer Private Sub Command1_Click() N = 4 ReDim A(N) For I = 0 To N A(I) = 1 Next I N = 8 ReDim Preserve A(N) For I = 0 To

11、 N Print A(I); Next I End Sub,21,7.2.5 數(shù)組應(yīng)用舉例,【例7-1 】生成20個(gè)10到100之間的隨機(jī)整數(shù),存于一維整型數(shù)組A中,同時(shí)顯示于第一個(gè)文本框中,單擊窗體將這20個(gè)數(shù)以相反的次序顯示于另一個(gè)文本框中。,22,Option Base 1 Private Sub Form_Click() Dim A(20) As Integer Text1.Text = For I = 1 To 20 A(I) = Int(Rnd * 91 + 10) Text1.Text = Text1.Text Next i Print,28,For i = 1 To 5 t =

12、 arr(i) arr(i) = arr(11 - i) arr(11 - i) = t Next i Print 對(duì)換后數(shù)組元素為: For i = 1 To 10 Print arr(i); Next i End Sub,29,【例7-4】輸入N名同學(xué)的成績(jī),顯示于文本框Text1中,按成績(jī)從低到高的次序排序,并將結(jié)果顯示于另一個(gè)文本框Text2中。,30,比較交換法: 對(duì)N個(gè)數(shù)進(jìn)行排序 (1) 將第1個(gè)數(shù)與第2個(gè)數(shù)到第N個(gè)數(shù)依次比較,如果X(1)X(J)(J=2,3,N),則交換X(1)、X(J)的內(nèi)容; (2) 將第2個(gè)數(shù)與第3個(gè)數(shù)到第N個(gè)數(shù)依次比較,如果X(2)X(J)(J=3,4,

13、N),則交換X(2)、X(J)的內(nèi)容; (3) 重復(fù)以上方法,將第I個(gè)數(shù)與第I+1個(gè)數(shù)到第N個(gè)數(shù)依次比較,如果X(I)X(J)(J=I+1,N),則交換X(I)、X(J)的內(nèi)容; 共重復(fù)N-1輪。,31,Option Base 1 Dim N As Integer, X() As Integer Private Sub Command1_Click() 輸入成績(jī) N = Val(InputBox(請(qǐng)輸入總?cè)藬?shù), , ) ReDim X(N) Text1.Text = For I = 1 To N X(I) = Val(InputBox(請(qǐng)輸入第 Next J Next I End Sub,運(yùn)行

14、時(shí)單擊窗體,輸入N值6,在窗體上打印結(jié)果如圖所示。,44,【例7-7】求兩個(gè)矩陣的積。 分析: M行N列的矩陣A與N行M列的矩陣B相乘,結(jié)果為一個(gè)M行M列的矩陣C,C矩陣中第I行第J列的元素,等于A矩陣中第I行的元素與B矩陣中第J列的元素分別相乘后再相加。即:,45,Dim M As Integer, N As Integer Dim A() As Integer, B() As Integer, C() As Integer Private Sub Form_Load() M = InputBox(請(qǐng)輸入A矩陣行數(shù), _ 矩陣相乘, ) N = InputBox(請(qǐng)輸入A矩陣列數(shù), _ 矩陣

15、相乘, ) ReDim A(1 To M, 1 To N), B(1 To N, 1 To M), _ C(1 To M, 1 To M) Randomize,46, 在List1中生成包含0,10之間的隨機(jī)整數(shù)的矩陣A List1.Clear For I = 1 To M S1 = For J = 1 To N A(I, J) = Int(Rnd * 11) S1 = S1 & Format(A(I, J), !) Next J List1.AddItem S1 Next I,47, 在List2中生成包含0,10之間的隨機(jī)整數(shù)的矩陣B List2.Clear For I = 1 To N

16、S1 = For J = 1 To M B(I, J) = Int(Rnd * 11) S1 = S1 & Format(B(I, J), !) Next J List2.AddItem S1 Next I End Sub,48,Private Sub Command1_Click() 求A矩陣與B矩陣的積C矩陣,并顯示在List3中 List3.Clear For I = 1 To M S1 = For J = 1 To M C(I, J) = 0 For K = 1 To N C(I, J) = C(I, J) + A(I, K) * B(K, J) Next K S1 = S1 & Fo

17、rmat(C(I, J), !) Next J List3.AddItem S1 Next I End Sub,49,7.3 控件數(shù)組,控件數(shù)組的定義: 控件數(shù)組的表示: () 1. 控件數(shù)組的建立 1. 將多個(gè)控件取相同的名稱 2. 復(fù)制、粘貼現(xiàn)有的控件 3. 給控件設(shè)置一個(gè)Index屬性值 2. 控件數(shù)組的使用 同一個(gè)控件數(shù)組的所有控件共享同一事件過程。該過程返回參數(shù)Index表示在哪個(gè)控件上發(fā)生該事件。,50,例如: 命令按鈕數(shù)組Command1的單擊事件過程為: Private Sub Command1_Click(Index As Integer) 在此過程中可以根據(jù)Index的值決

18、定 當(dāng)前按下哪個(gè)按鈕,以便做相應(yīng)的處理 End Sub,【例7-8】設(shè)計(jì)如圖所示的界面,創(chuàng)建一選項(xiàng)按鈕控件數(shù)組(Option1)。運(yùn)行時(shí),當(dāng)按下某一選項(xiàng)按鈕時(shí),對(duì)圖形設(shè)置相應(yīng)的填充顏色。,51,Private Sub Option1_Click(Index As Integer) Select Case Index Case 0 Shape1.backColor = vbWhite Case 1 Shape1.backColor = vbBlue Case 6 Shape1.backColor = vbYellow End Select End Sub,52,【例7-9】創(chuàng)建圖形控件數(shù)組S1,

19、包含6個(gè)圓,當(dāng)按下移動(dòng)按鈕時(shí),所有圓全部向下移動(dòng)100Twips,當(dāng)移動(dòng)到窗體底部時(shí),返回窗體頂部。界面如下:,53,移動(dòng)按鈕的Click事件過程如下: Private Sub Command1_Click() For I = 0 To 5 If S1(I).Top+S1(I).Height Form1.ScaleHeight Then S1(I).Top = 0 Else S1(I).Top = S1(I).Top + 100 End If Next I End Sub,54,7.4 記錄,用戶可以根據(jù)自己的需要定義自己的數(shù)據(jù)類型。通常稱為記錄類型。 定義記錄類型 定義記錄類型通過type 語句來定義: Private|Public Type 數(shù)據(jù)類型名 元素名

溫馨提示

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