




已閱讀5頁,還剩43頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章 數組和自定義類型,Visual Basic 6.0程序設計 高 等 醫 藥 院 校“十 二 五”規 劃 教 材,2,基本思想,蚌埠醫學院計算機教研室,數組是VB提供的一種復合數據類型,可以有效存儲和處理批量數據,同時也能縮短和簡化程序。 實際應用中,有些問題必須通過數組來解決。 數組一般結合循環使用。,3,5.1 數組,主要內容,蚌埠醫學院計算機教研室,5.2 列表框和組合框控件,5.3 自定義類型及其數組,5.4 控件數組,4,5.1 數組,5.1.1 基本概念 引例:求100個學生的平均成績,并統計高于平均分的人數。 sum = 0 For i = 1 To 100 mark = InputBox(“輸入學生成績“) sum = sum + mark Next i aver = sum / 100,無法統計高于平均分的人數 重復輸入成績統計,可能出錯 定義100個變量,使用100句輸入語句,5,數組和數組元素的概念:數組不是一種新的數據類型,而是一組相同類型的變量的集合。集合中的每一個數據稱為一個數組元素。 數組用一個統一的名字(數組名)代表邏輯上相關的一批數據,每個數組元素用下標變量來區分; 下標變量代表數組元素在數組中的位置。 例如,定義一個班30個學生的姓名: stuName(1)表示第一個學生的姓名, stuName(2)表示第二個學生的姓名,,5.1 數組,6,5.1.2 數組定義 1.靜態一維數組 Dim 數組名(下標上界) As 類型 下界默認為0,數組的大小為:下標上界+1。 Dim a(10) As Integer,數組必須先聲明后使用,Dim 數組名 (下界 to 上界) As 數據類型 Dim a(1 to 10) As Integer,5.1 數組,7,1數組名的命名規則。 2數組的元素個數:上界-下界+1。 3缺省為0,可在模塊的通用部分使用Option Base語句設定下界。 例如:Option Base 1 Dim a(10) as integer 如果定義數組時使用 to 顯示指明下標下界,則 option base不起作用,如:Option Base 1 Dim a(-10 to 10),5.1 數組,5.1.2 數組定義,8,4定義數組時下標必須是常量。使用數組時,下標可以是常數、變量或表達式。 Dim a(10) as integer dim a(m) as integer N=3 a(n)=1 a(7)=a(n+1)+n 5.下標必須用( )括起來。Arr(10) 與 arr10。 6.同一過程中,數組和簡單變量不能同名。 Dim a(10) as integer,a as integer,5.1.2 數組定義,5.1 數組,9,產生30個5080之間的隨機數存入數組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 數組定義,5.1 數組,10,例5.1 計算并輸出斐波那契數列的前20項。 斐波那契數列的各項分別是: 1,1,2,3,5,8, 若用數組a存放數列,則有a(1)=1,a(2)=1, 從第三項開始,即當i3時,a(i)=a(i-2)+a(i-1)。,注意: 其下標值應在聲明數組時所指定的范圍內, 否則運行時將出現“下標越界”錯誤。,5.1.2 數組定義,5.1 數組,11,Dim 數組名(下標1,下標2) As 類型 例 Dim x(2,4) As Long,5.1 數組,5.1.2 數組定義多維數組,12,二維數組的聲明基本上與一維數組相似,比如40個學生的5門科目的成績采用數組記錄,應該這樣聲明該數組: Dim score(1 To 40, 1 To 5) As Integer 訪問某個元素需要指定兩個索引下標: Print score(10,2),5.1 數組,5.1.2 數組定義多維數組,13,實際編程時有時數組的大小無法確定,希望能夠在運行時改變數組的大小動態數組。 建立動態數組分兩步: 用Dim 語句聲明數組,但不能指定數組大小。 Dim 數組名( ) As 數據類型 用ReDim語句動態地分配元素個數。 ReDim Preserve 數組名 (下標,下標2) 例如: dim a() as long redim a(10),5.1 數組,5.1.2 數組定義動態數組,14,Dim 是說明語句,可出現在程序的任何地方,而ReDim是執行語句,只能在過程中。 在過程中可多次使用ReDim語句來改變數組的大小,但不能改變數組的維數和類型。 在ReDim后加Preserve參數可保留數組中的數據,若使用Preserve參數后,只能改變最后一維的大小。,5.1 數組,5.1.2 數組定義動態數組,15,例5.3 編程,顯示有n個數的非波那契數序列。,5.1 數組,5.1.2 數組定義動態數組,16,確定數組某一維的上界和下界值。 UBound(, ) LBound( , ) :必需的。 :可選的;1 表示第一維,2 表示第二維,如此等等。如果省略默認是1。 Dim score(1 To 40, 1 To 5) As Integer UBound(score,1) LBound(score,2),5.1 數組,獲得數組上下界的兩個函數,17,數組的初始化 Array函數可方便地對數組整體賦值:,數組變量名=Array(常量列表), 使用Array函數只能給一維數組賦值。 使用Array函數給數組賦初值時,數組變量必須是變體變量。因此需顯式定義數組為Variant變量,或在定義時不指明數據類型或不定義而直接使用。,5.1 數組,5.1.3 數組的基本操作,例如,要將1,2,3,4,5,6,7 這些值賦給數組a,可使用下面的方法賦值。 Dim a() A=array(1,2,3,4,5,6,7),18,例5.4 使用Array函數為數組賦初值,求出數組元素的平均值,輸出大于平均值的數組元素。,5.1 數組,5.1.3 數組的基本操作,19,2.數組的輸入與輸出 通過TextBox控件或InputBox函數輸入 使用Print函數在窗體或者PictureBox中輸出,例5.5 從鍵盤輸入一個4行4列的矩陣并輸出。,5.1 數組,5.1.3 數組的基本操作,例5.6 用隨機函數模擬擲骰子實驗,統計擲50次骰子各點出現的次數。,20,例5.8 定義長度為10的整型數組,實現功能: 從鍵盤輸入數組元素; 按下標逆序輸出數組元素; 將數組元素按顛倒的順序重新存放并輸出。(要求借助一個簡單變量不得另外開辟數組),5.1 數組,5.1.4 數組應用舉例,21,5.1 數組,22,基本思想是:從第一個元素開始,對數組中兩兩相鄰的元素比較,將值較小的元素放在前面,值較大的元素放在后面,一輪比較完畢,一個最大的數沉底成為數組中的最后一個元素,一些較小的數如同氣泡一樣上浮一個位置。n個數,經過n-1輪比較后完成排序。,5.1 數組,例5.11 冒泡法排序,23,5,4,3,2,1,第一趟排序結果,5.1 數組,24,5,4,3,2,1,第二趟排序結果,5.1 數組,25,5,4,3,2,1,第三趟排序結果,5.1 數組,26,5,4,3,2,1,第四趟排序結果,冒 泡 排 序,5.1 數組,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 數組,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 數組,例5.11 冒泡法排序,29,n個數的序列,用選擇法按遞增次序排序的步驟: 1) 從n個數中找出最小數的下標,最小數與第1個數交換位置;通過這一輪排序,第1個數已確定好。 2) 除已排序的數外,其余數再按步驟1)的方法選出最小的數,與未排序數中的第1個數交換位置。 3) 重復步驟 2),最后構成遞增序列。,例5.10 選擇法排序,5.1 數組,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 數組,例5.10 選擇法排序,31,例5.12 有序數組中插入數據,使之仍然有序。,1)首先查找待插入數據在數組中的位置k; 2)然后從最后一個元素開始往前直到下標為k的元素依次往后移動一個位置; 3) 第k個元素的位置騰出,將數據插入。,5.1 數組,32,例5.13 刪除數據,刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1到n個位置開始向前移動;最后將數組元素減1。,5.1 數組,33,List屬性:列表框的列表內容,輸入時按Ctrl+Enter;List屬性是一個字符串數組,列表框中的每個項目對應該數組的一個元素。第一個項目的索引值為0,以此類推。 Print List1.List(0),列表框 ListBox,5.2 列表框和組合框,顯示多個選項供用戶選擇,不能直接修改內容。,34,ListCount屬性:列表框的項目總數。項目下標0-ListCount-1。 ListIndex屬性:僅在程序運行時可用,當前選定項目的索引位置。如果沒有項目被選中,ListIndex取值為-1。 Text屬性:設置或返回列表框當前選項的值。 由List,ListIndex可以決定Text的值,5.2 列表框和組合框,列表框 ListBox,35,Selected屬性:程序運行時選定列表框中的選項,如List1.Selected(2)=True。 MultiSelect屬性:當取默認值0時,只能選中列表框中的一個項目,取值1時可以選定多項,取值為2時可以選定某個范圍的項。 Sorted屬性:程序運行期間列表框中的項目是否進行排序。 Style屬性:列表框樣式。0,1。,5.2 列表框和組合框,列表框 ListBox,36,List1.ListIndex = 2 List1.ListCount = 6 List1.Sorted = False List1.Text = “C/C+程序設計 “,List1.List(List1.ListIndex)等于List1.Text,5.2 列表框和組合框,37,AddItem方法 對象.AddItem 項目字符串 ,索引值 List1.AddItem “張三”, 1 RemoveItem方法 對象.RemoveItem 索引值 List1.RemoveItem 0 Clear方法 List1.Clear,5.2 列表框和組合框,列表框 ListBox,38,例5.14 設計如圖所示的選課窗口。,5.2 列表框和組合框,39,例5.15 設計如圖所示的程序。,5.2 列表框和組合框,40,例5.16 設計如圖所示的判斷素數的程序。,5.2 列表框和組合框,41,組合框 ComboBox,5.2 列表框和組合框,組合框 組合了文本框和列表框的特性。,42,例5.17 設計如圖所示的登陸界面。,本章目錄,5.2 列表框和組合框,43,5.3 自定義類型及數組,數組存放性質相同的數據集合。若不同類型信息作為一個整體來描述,例如姓名、性別、出生年月等,通過自定義類型來實現。,Type StudentType Name As String*5 Number As String*12 Course As String*10 Score As Single End Type,Type 自定義類型名 元素名1 As 數據類型 元素名n As 數據類型 End Type,44,定義了自定義類型,就可在變量的聲明時使用。 Dim 變量名 As 自定義類型名 例如,如下語句: Dim S1 As StudentType,S2 As StudentType 聲明S1、S2為兩個同種類型的變量,5.3 自定義類型及數組,45,引用自定義類型變量中的某個成員,形式如下: 自定義類型變量名.成員名 例如,S1.Name = “張華“ S1.Course = “VB“ S1.Score =90 用With語句簡化成員引用: With 結構變量對象名 語句塊 End With,Wi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 風力發電場環評報告書
- 中國兒童果味香粉行業市場發展前景及發展趨勢與投資戰略研究報告(2024-2030)
- 2025年中國遠程智能柜員機市場前景預測及投資規劃研究報告
- 2025年中國畜牧機械制造行業市場深度分析及投資戰略研究報告
- 懷仁縣東作里水庫融資投資立項項目可行性研究報告(齊魯咨詢)
- 精細電路板行業深度研究分析報告(2024-2030版)
- 中國交叉帶式分揀系統行業市場前景預測及投資戰略研究報告
- 網站建設合同
- 版權代理合同
- 中國汽車應急燈總成行業市場發展前景及發展趨勢與投資戰略研究報告(2024-2030)
- 智能安防監控系統升級實施方案
- 考后心理健康教育課件
- 運輸行業保密知識培訓
- 南平市浦城縣石陂鎮社區工作者招聘考試基礎題匯總2023
- 《汽車發動機構造與維修》(配實訓工單) 教案 5-1冷卻系結構與循環線路(4學時)
- 員工反饋與投訴處理機制
- 《治療痤瘡藥》課件
- 《電力交易培訓》課件
- 住院精神疾病患者自殺風險護理(2023版團標)
- 研究污水處理中的微生物群落結構
- 中等職業學校教職員工績效考核實施方案
評論
0/150
提交評論