vb數(shù)組和自定義類型.ppt_第1頁
vb數(shù)組和自定義類型.ppt_第2頁
vb數(shù)組和自定義類型.ppt_第3頁
vb數(shù)組和自定義類型.ppt_第4頁
vb數(shù)組和自定義類型.ppt_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第5章 數(shù)組和自定義類型,Visual Basic 6.0程序設(shè)計(jì) 高 等 醫(yī) 藥 院 ?!笆?二 五”規(guī) 劃 教 材,2,基本思想,蚌埠醫(yī)學(xué)院計(jì)算機(jī)教研室,數(shù)組是VB提供的一種復(fù)合數(shù)據(jù)類型,可以有效存儲(chǔ)和處理批量數(shù)據(jù),同時(shí)也能縮短和簡化程序。 實(shí)際應(yīng)用中,有些問題必須通過數(shù)組來解決。 數(shù)組一般結(jié)合循環(huán)使用。,3,5.1 數(shù)組,主要內(nèi)容,蚌埠醫(yī)學(xué)院計(jì)算機(jī)教研室,5.2 列表框和組合框控件,5.3 自定義類型及其數(shù)組,5.4 控件數(shù)組,4,5.1 數(shù)組,5.1.1 基本概念 引例:求100個(gè)學(xué)生的平均成績,并統(tǒng)計(jì)高于平均分的人數(shù)。 sum = 0 For i = 1 To 100 mark = InputBox(“輸入學(xué)生成績“) sum = sum + mark Next i aver = sum / 100,無法統(tǒng)計(jì)高于平均分的人數(shù) 重復(fù)輸入成績統(tǒng)計(jì),可能出錯(cuò) 定義100個(gè)變量,使用100句輸入語句,5,數(shù)組和數(shù)組元素的概念:數(shù)組不是一種新的數(shù)據(jù)類型,而是一組相同類型的變量的集合。集合中的每一個(gè)數(shù)據(jù)稱為一個(gè)數(shù)組元素。 數(shù)組用一個(gè)統(tǒng)一的名字(數(shù)組名)代表邏輯上相關(guān)的一批數(shù)據(jù),每個(gè)數(shù)組元素用下標(biāo)變量來區(qū)分; 下標(biāo)變量代表數(shù)組元素在數(shù)組中的位置。 例如,定義一個(gè)班30個(gè)學(xué)生的姓名: stuName(1)表示第一個(gè)學(xué)生的姓名, stuName(2)表示第二個(gè)學(xué)生的姓名,,5.1 數(shù)組,6,5.1.2 數(shù)組定義 1.靜態(tài)一維數(shù)組 Dim 數(shù)組名(下標(biāo)上界) As 類型 下界默認(rèn)為0,數(shù)組的大小為:下標(biāo)上界+1。 Dim a(10) As Integer,數(shù)組必須先聲明后使用,Dim 數(shù)組名 (下界 to 上界) As 數(shù)據(jù)類型 Dim a(1 to 10) As Integer,5.1 數(shù)組,7,1數(shù)組名的命名規(guī)則。 2數(shù)組的元素個(gè)數(shù):上界-下界+1。 3缺省為0,可在模塊的通用部分使用Option Base語句設(shè)定下界。 例如:Option Base 1 Dim a(10) as integer 如果定義數(shù)組時(shí)使用 to 顯示指明下標(biāo)下界,則 option base不起作用,如:Option Base 1 Dim a(-10 to 10),5.1 數(shù)組,5.1.2 數(shù)組定義,8,4定義數(shù)組時(shí)下標(biāo)必須是常量。使用數(shù)組時(shí),下標(biāo)可以是常數(shù)、變量或表達(dá)式。 Dim a(10) as integer dim a(m) as integer N=3 a(n)=1 a(7)=a(n+1)+n 5.下標(biāo)必須用( )括起來。Arr(10) 與 arr10。 6.同一過程中,數(shù)組和簡單變量不能同名。 Dim a(10) as integer,a as integer,5.1.2 數(shù)組定義,5.1 數(shù)組,9,產(chǎn)生30個(gè)5080之間的隨機(jī)數(shù)存入數(shù)組a中,并輸出。,Dim a(1 To 30) As Integer For i = 1 To 30 a(i) = Int(Rnd * 50 + 30) Next I For i = 1 To 30 Print a(i) If i Mod 5 = 0 Then Print Next i,5.1.2 數(shù)組定義,5.1 數(shù)組,10,例5.1 計(jì)算并輸出斐波那契數(shù)列的前20項(xiàng)。 斐波那契數(shù)列的各項(xiàng)分別是: 1,1,2,3,5,8, 若用數(shù)組a存放數(shù)列,則有a(1)=1,a(2)=1, 從第三項(xiàng)開始,即當(dāng)i3時(shí),a(i)=a(i-2)+a(i-1)。,注意: 其下標(biāo)值應(yīng)在聲明數(shù)組時(shí)所指定的范圍內(nèi), 否則運(yùn)行時(shí)將出現(xiàn)“下標(biāo)越界”錯(cuò)誤。,5.1.2 數(shù)組定義,5.1 數(shù)組,11,Dim 數(shù)組名(下標(biāo)1,下標(biāo)2) As 類型 例 Dim x(2,4) As Long,5.1 數(shù)組,5.1.2 數(shù)組定義多維數(shù)組,12,二維數(shù)組的聲明基本上與一維數(shù)組相似,比如40個(gè)學(xué)生的5門科目的成績采用數(shù)組記錄,應(yīng)該這樣聲明該數(shù)組: Dim score(1 To 40, 1 To 5) As Integer 訪問某個(gè)元素需要指定兩個(gè)索引下標(biāo): Print score(10,2),5.1 數(shù)組,5.1.2 數(shù)組定義多維數(shù)組,13,實(shí)際編程時(shí)有時(shí)數(shù)組的大小無法確定,希望能夠在運(yùn)行時(shí)改變數(shù)組的大小動(dòng)態(tài)數(shù)組。 建立動(dòng)態(tài)數(shù)組分兩步: 用Dim 語句聲明數(shù)組,但不能指定數(shù)組大小。 Dim 數(shù)組名( ) As 數(shù)據(jù)類型 用ReDim語句動(dòng)態(tài)地分配元素個(gè)數(shù)。 ReDim Preserve 數(shù)組名 (下標(biāo),下標(biāo)2) 例如: dim a() as long redim a(10),5.1 數(shù)組,5.1.2 數(shù)組定義動(dòng)態(tài)數(shù)組,14,Dim 是說明語句,可出現(xiàn)在程序的任何地方,而ReDim是執(zhí)行語句,只能在過程中。 在過程中可多次使用ReDim語句來改變數(shù)組的大小,但不能改變數(shù)組的維數(shù)和類型。 在ReDim后加Preserve參數(shù)可保留數(shù)組中的數(shù)據(jù),若使用Preserve參數(shù)后,只能改變最后一維的大小。,5.1 數(shù)組,5.1.2 數(shù)組定義動(dòng)態(tài)數(shù)組,15,例5.3 編程,顯示有n個(gè)數(shù)的非波那契數(shù)序列。,5.1 數(shù)組,5.1.2 數(shù)組定義動(dòng)態(tài)數(shù)組,16,確定數(shù)組某一維的上界和下界值。 UBound(, ) LBound( , ) :必需的。 :可選的;1 表示第一維,2 表示第二維,如此等等。如果省略默認(rèn)是1。 Dim score(1 To 40, 1 To 5) As Integer UBound(score,1) LBound(score,2),5.1 數(shù)組,獲得數(shù)組上下界的兩個(gè)函數(shù),17,數(shù)組的初始化 Array函數(shù)可方便地對(duì)數(shù)組整體賦值:,數(shù)組變量名=Array(常量列表), 使用Array函數(shù)只能給一維數(shù)組賦值。 使用Array函數(shù)給數(shù)組賦初值時(shí),數(shù)組變量必須是變體變量。因此需顯式定義數(shù)組為Variant變量,或在定義時(shí)不指明數(shù)據(jù)類型或不定義而直接使用。,5.1 數(shù)組,5.1.3 數(shù)組的基本操作,例如,要將1,2,3,4,5,6,7 這些值賦給數(shù)組a,可使用下面的方法賦值。 Dim a() A=array(1,2,3,4,5,6,7),18,例5.4 使用Array函數(shù)為數(shù)組賦初值,求出數(shù)組元素的平均值,輸出大于平均值的數(shù)組元素。,5.1 數(shù)組,5.1.3 數(shù)組的基本操作,19,2.數(shù)組的輸入與輸出 通過TextBox控件或InputBox函數(shù)輸入 使用Print函數(shù)在窗體或者PictureBox中輸出,例5.5 從鍵盤輸入一個(gè)4行4列的矩陣并輸出。,5.1 數(shù)組,5.1.3 數(shù)組的基本操作,例5.6 用隨機(jī)函數(shù)模擬擲骰子實(shí)驗(yàn),統(tǒng)計(jì)擲50次骰子各點(diǎn)出現(xiàn)的次數(shù)。,20,例5.8 定義長度為10的整型數(shù)組,實(shí)現(xiàn)功能: 從鍵盤輸入數(shù)組元素; 按下標(biāo)逆序輸出數(shù)組元素; 將數(shù)組元素按顛倒的順序重新存放并輸出。(要求借助一個(gè)簡單變量不得另外開辟數(shù)組),5.1 數(shù)組,5.1.4 數(shù)組應(yīng)用舉例,21,5.1 數(shù)組,22,基本思想是:從第一個(gè)元素開始,對(duì)數(shù)組中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在后面,一輪比較完畢,一個(gè)最大的數(shù)沉底成為數(shù)組中的最后一個(gè)元素,一些較小的數(shù)如同氣泡一樣上浮一個(gè)位置。n個(gè)數(shù),經(jīng)過n-1輪比較后完成排序。,5.1 數(shù)組,例5.11 冒泡法排序,23,5,4,3,2,1,第一趟排序結(jié)果,5.1 數(shù)組,24,5,4,3,2,1,第二趟排序結(jié)果,5.1 數(shù)組,25,5,4,3,2,1,第三趟排序結(jié)果,5.1 數(shù)組,26,5,4,3,2,1,第四趟排序結(jié)果,冒 泡 排 序,5.1 數(shù)組,27,初始序列 3 6 4 5 1 2,第1趟,3,6,1,4,5,2,3,1,6,4,5,1,2,第2趟,3,4,2,2,5,6,第3趟,3,1,2,第4趟,4,5,6,1,3,4,5,6,第5趟,5.1 數(shù)組,28,For i = 0 To n - 1 For j = 0 To n-1-i If a(j) a(j+1) Then t=a(j) a(j)=a(j+1) a(j+1)=t End if Next j Next i,5.1 數(shù)組,例5.11 冒泡法排序,29,n個(gè)數(shù)的序列,用選擇法按遞增次序排序的步驟: 1) 從n個(gè)數(shù)中找出最小數(shù)的下標(biāo),最小數(shù)與第1個(gè)數(shù)交換位置;通過這一輪排序,第1個(gè)數(shù)已確定好。 2) 除已排序的數(shù)外,其余數(shù)再按步驟1)的方法選出最小的數(shù),與未排序數(shù)中的第1個(gè)數(shù)交換位置。 3) 重復(fù)步驟 2),最后構(gòu)成遞增序列。,例5.10 選擇法排序,5.1 數(shù)組,30,For i = 0 To n 1 min=i For j = i + 1 To n If a(min) a(j) Then min=j Next j t = a(i) a(i) = a(min) a(min) = t Next i,5.1 數(shù)組,例5.10 選擇法排序,31,例5.12 有序數(shù)組中插入數(shù)據(jù),使之仍然有序。,1)首先查找待插入數(shù)據(jù)在數(shù)組中的位置k; 2)然后從最后一個(gè)元素開始往前直到下標(biāo)為k的元素依次往后移動(dòng)一個(gè)位置; 3) 第k個(gè)元素的位置騰出,將數(shù)據(jù)插入。,5.1 數(shù)組,32,例5.13 刪除數(shù)據(jù),刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1到n個(gè)位置開始向前移動(dòng);最后將數(shù)組元素減1。,5.1 數(shù)組,33,List屬性:列表框的列表內(nèi)容,輸入時(shí)按Ctrl+Enter;List屬性是一個(gè)字符串?dāng)?shù)組,列表框中的每個(gè)項(xiàng)目對(duì)應(yīng)該數(shù)組的一個(gè)元素。第一個(gè)項(xiàng)目的索引值為0,以此類推。 Print List1.List(0),列表框 ListBox,5.2 列表框和組合框,顯示多個(gè)選項(xiàng)供用戶選擇,不能直接修改內(nèi)容。,34,ListCount屬性:列表框的項(xiàng)目總數(shù)。項(xiàng)目下標(biāo)0-ListCount-1。 ListIndex屬性:僅在程序運(yùn)行時(shí)可用,當(dāng)前選定項(xiàng)目的索引位置。如果沒有項(xiàng)目被選中,ListIndex取值為-1。 Text屬性:設(shè)置或返回列表框當(dāng)前選項(xiàng)的值。 由List,ListIndex可以決定Text的值,5.2 列表框和組合框,列表框 ListBox,35,Selected屬性:程序運(yùn)行時(shí)選定列表框中的選項(xiàng),如List1.Selected(2)=True。 MultiSelect屬性:當(dāng)取默認(rèn)值0時(shí),只能選中列表框中的一個(gè)項(xiàng)目,取值1時(shí)可以選定多項(xiàng),取值為2時(shí)可以選定某個(gè)范圍的項(xiàng)。 Sorted屬性:程序運(yùn)行期間列表框中的項(xiàng)目是否進(jìn)行排序。 Style屬性:列表框樣式。0,1。,5.2 列表框和組合框,列表框 ListBox,36,List1.ListIndex = 2 List1.ListCount = 6 List1.Sorted = False List1.Text = “C/C+程序設(shè)計(jì) “,List1.List(List1.ListIndex)等于List1.Text,5.2 列表框和組合框,37,AddItem方法 對(duì)象.AddItem 項(xiàng)目字符串 ,索引值 List1.AddItem “張三”, 1 RemoveItem方法 對(duì)象.RemoveItem 索引值 List1.RemoveItem 0 Clear方法 List1.Clear,5.2 列表框和組合框,列表框 ListBox,38,例5.14 設(shè)計(jì)如圖所示的選課窗口。,5.2 列表框和組合框,39,例5.15 設(shè)計(jì)如圖所示的程序。,5.2 列表框和組合框,40,例5.16 設(shè)計(jì)如圖所示的判斷素?cái)?shù)的程序。,5.2 列表框和組合框,41,組合框 ComboBox,5.2 列表框和組合框,組合框 組合了文本框和列表框的特性。,42,例5.17 設(shè)計(jì)如圖所示的登陸界面。,本章目錄,5.2 列表框和組合框,43,5.3 自定義類型及數(shù)組,數(shù)組存放性質(zhì)相同的數(shù)據(jù)集合。若不同類型信息作為一個(gè)整體來描述,例如姓名、性別、出生年月等,通過自定義類型來實(shí)現(xiàn)。,Type StudentType Name As String*5 Number As String*12 Course As String*10 Score As Single End Type,Type 自定義類型名 元素名1 As 數(shù)據(jù)類型 元素名n As 數(shù)據(jù)類型 End Type,44,定義了自定義類型,就可在變量的聲明時(shí)使用。 Dim 變量名 As 自定義類型名 例如,如下語句: Dim S1 As StudentType,S2 As StudentType 聲明S1、S2為兩個(gè)同種類型的變量,5.3 自定義類型及數(shù)組,45,引用自定義類型變量中的某個(gè)成員,形式如下: 自定義類型變量名.成員名 例如,S1.Name = “張華“ S1.Course = “VB“ S1.Score =90 用With語句簡化成員引用: With 結(jié)構(gòu)變量對(duì)象名 語句塊 End With,Wi

溫馨提示

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