版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第5章 數(shù)組和自定義類型,5.1 數(shù)組的概念 5.2 數(shù)組的基本操作和排序 5.3 列表框和組合框控件 5.4 自定義類型及其數(shù)組 5.5 綜合應(yīng)用,本章目錄,5.1 數(shù)組的概念,1. 引例 例5.1 求100個學(xué)生的平均成績,并統(tǒng)計高于平均分的人數(shù)。用簡單變量和循環(huán),求平均成績程序段如下: aver = 0 For i = 1 To 100 mark = InputBox(輸入學(xué)生成績) aver = aver + mark Next i aver = aver / 100 由于循環(huán)體內(nèi)變量mark只能放一個學(xué)生的成績,無法統(tǒng)計高于平均分的人數(shù)。若用簡單變量保存100個學(xué)生的成績,則需定義1
2、00個變量和使用100句輸入語句。由此引入了數(shù)組。,本章目錄,mark,aver,用數(shù)組解決問題的程序如下: Dim mark(99) As Integer 聲明數(shù)組mark Dim aver!, overn%, i% aver = 0 For i = 0 To 99 輸入成績,求分?jǐn)?shù)和 mark(i) = InputBox(輸入學(xué)生的成績) aver = aver + mark(i) Next i aver = aver / 100 求100人的平均分 overn = 0 For i = 0 To 99 統(tǒng)計高于平均分的人數(shù) If mark(i) aver Then overn = over
3、n + 1 Next i MsgBox (平均分: next I end sub,例:,Dim sB(3,4) As Single For i=0 To 3 For j=0 To 4 sB(i,j)=Val(InputBox(“輸入” next I end sub,4數(shù)組 的輸出 數(shù)組元素的輸出可以使用For循環(huán)和Print語句來實現(xiàn)。,例5.3 形成55的方陣,分別輸出方陣中各元素、上三角和下三角元素,方陣規(guī)律:第一行的元素為04,以后每一行是前一行對應(yīng)元素增加5 上三角規(guī)律: 每一行的起始列與行號相同,只要控制內(nèi)循環(huán)的初值 用Tab函數(shù)或Space定位控制輸出的空格 sc,5、求數(shù)組和、最
4、值、位置及交換,例5.4 求一維數(shù)組中各元素之和、最小數(shù)組元素,并將最小值數(shù)組元素與數(shù)組中第一個元素交換 求元素和 通過循環(huán)將每個元素進(jìn)行累加 求數(shù)組中最小元素 假設(shè)第一個元素為最小,然后將該數(shù)與其他元素逐一比較,若發(fā)現(xiàn)小于最小值,就用新值替換最小值,同時記錄下標(biāo)值。 求最大值的方法與求最小值相似,Dim a, i%, min%, imin%, sum%, t% a = Array(26, 43, 61, 87, 33, 19, 37, 59, 76, 69),交換元素,本章目錄,6、數(shù)組排序,排序是將一組數(shù)按遞增或遞減的次序排列,例如按學(xué)生的成績、球賽積分等排序。排序的算法有許多,常用的有選
5、擇法、冒泡法、插入法、合并排序等。,本章目錄,選擇法排序 基本思想:每次在若干個無序數(shù)中找最小(大)數(shù),并放在相應(yīng)的位置。,n個數(shù)的序列,用選擇法按遞增次序排序的步驟: 1) 從n個數(shù)中找出最小數(shù)的下標(biāo),出了內(nèi)循環(huán),最小數(shù)與第1個數(shù)交換位置;通過這一輪排序,第1個數(shù)已確定好。 2) 除已排序的數(shù)外,其余數(shù)再按步驟1)的方法選出最小的數(shù),與未排序數(shù)中的第1個數(shù)交換位置。 3) 重復(fù)步驟 2),最后構(gòu)成遞增序列。,選擇法演示,選擇法排序,例5.5 對已知存放在數(shù)組中的6個數(shù),用選擇法按遞增順序排序。,選擇法排序過程示意,本章目錄,冒泡法排序,基本思想是:從第一個元素開始,對數(shù)組中兩兩相鄰的元素比較
6、,將值較小的元素放在前面,值較大的元素放在后面,一輪比較比較完畢,一個最大的數(shù)沉底成為數(shù)組中的最后一個元素,一些較小的數(shù)如同氣泡一樣上浮一個位置。n個數(shù),經(jīng)過n-1輪比較后完成排序。,冒泡法演示,本章目錄,冒泡法排序,例5.6 用冒泡排序法實現(xiàn)例5.5的問題。,本章目錄,7、插入數(shù)據(jù),插入數(shù)據(jù)基本思想是: 1)首先查找待插入數(shù)據(jù)在數(shù)組中的位置k; 2)然后從最后一個元素開始往前直到下標(biāo)為k的元素依次往后移動一個位置; 3) 第k個元素的位置騰出,將數(shù)據(jù)插入。,例5.7在有序數(shù)組a中插入數(shù)值x。,本章目錄,數(shù)據(jù)插入演示,8、刪除數(shù)據(jù),刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1到n個
7、位置開始向前移動;最后將數(shù)組元素減1。,例5.8要將值為13的元素刪除。,本章目錄,數(shù)據(jù)刪除演示,基本概念:由一組具有相同名稱的同種類型的控件組成,數(shù)組中的每一控件共享同樣的事件過程。,當(dāng)建立控件數(shù)組時,系統(tǒng)給每個元素賦一個唯一的索引號(Index),通過屬性窗口的Index屬性,可以知道該控件的下標(biāo)是多少,第1個下標(biāo)是0。 如:Text1(0)、Text1(1)、Text1(2)、Text1(3),控件數(shù)組適用于若干個控件執(zhí)行的操作相似的場合,控件組共享同樣的事件過程。 例如:一個控件數(shù)組有三個命令按鈕,不論單擊哪一個,都會調(diào)用同一個Click事件過程。,建立的方法: 1、創(chuàng)建同名控件。 2
8、、復(fù)制現(xiàn)存控件。,Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 Text1.Text = 第一組 Case 1 Text1.Text = 第二組 Case 2 Text1.Text =第三組 End Select End Sub,5.3 列表框和組合框控件,5.3.1列表框,列表框(ListBox) 可顯示多個選項供用戶選擇,不能直接修改其中的內(nèi)容。 如果項目總數(shù)超過了可顯示的項目數(shù), VB會自動加上滾動條。,列表框有兩種風(fēng)格:標(biāo)準(zhǔn)列表框和復(fù)選列表框。通過它的Style屬性來設(shè)置。如下圖:,1、列表框
9、主要屬性,(1) List List是一個集合 Ctrl+Enter List: 字符型數(shù)組,存放列表框的項目數(shù)據(jù),下標(biāo)是從0開始的。 例如: List(0)表示第一項的內(nèi)容,(2) ListIndex 選項的序號(從0開始) 整型值,選中的項目的序號, 沒有項目選中時為-1。 (3) ListCount項目數(shù)量 整型值,表示項目的數(shù)量,ListCount-1是最后一項的下標(biāo)。,List1.ListIndex = 2 List1.ListCount = 6 List1.Sorted = False List1.Text = C/C+程序設(shè)計 ,List1.List(List1.ListInde
10、x)等于List1.Text,List1.ListIndex = List1.ListCount = List1.Sorted = False List1.Text =,(4)Sorted屬性 返回一個邏輯值,當(dāng)Sorted屬性為True時列表框控件或組合框控件的項目自動按字母表順序(升序)排序,為False時項目按加入的先后順序排列顯示。該屬性只能在設(shè)計時設(shè)置,不能在程序代碼中設(shè)置。,(5)Text屬性 字符型 被選定項目的文本內(nèi)容 Text屬性的返回值總與List(ListIndex)的值相同。,List1.List(List1.ListIndex)等于List1.Text,(6)Sele
11、cted屬性 該屬性返回或設(shè)置列表框控件中的一個項目的選擇狀態(tài)。該屬性是一個邏輯類型的數(shù)組,數(shù)組元素個數(shù)與列表框中的項目數(shù)相同,其下標(biāo)的變化范圍與List屬性相同。 例如:List1.Selected(0)=True表示列表框List1的第一個項目被選中,此時ListIndex的值設(shè)置為0。Selected屬性在設(shè)計時是不可用的,即無法在屬性窗口中設(shè)置屬性值。,(7)MultiSelect屬性,用于指示是否能夠在列表框控件中進(jìn)行復(fù)選以及如何進(jìn)行復(fù)選,在運行時是只讀的。注意,組合框控件無此屬性。 0:(缺省值)不允許復(fù)選 1:簡單復(fù)選。鼠標(biāo)單擊或按下空格鍵在列表中選中或取消選中項。箭頭鍵移動焦點
12、 2:擴展復(fù)選。按下 SHIFT 并單擊鼠標(biāo)將在以前選中項的基礎(chǔ)上擴展選擇到當(dāng)前選中項。按下 CTRL 并單擊鼠標(biāo)來在列表中選中或取消選中項,2.常用方法,(1) AddItem方法 功能:把一個項目加入列表 形式: 對象.AddItem 項目字符串 ,索引值 索引值:決定新增項在列表中的位置,原位置的項目依次后移;如果省略,則新增項目添加在最后。對于第一個項目,索引值為0.,2.常用方法,(2)RemoveItem方法 功能:刪除列表中指定項目 形式: 對象.RemoveItem 索引值,本章目錄,2.常用方法,(3)Clear方法 作用:清除列表框中所有項目 形式: 列表框?qū)ο?Clear
13、 例如:List1.Clear,全部清除,3.事件,列表框:Click、DblClick 例5.9編寫一個能對列表框進(jìn)行項目添加、清除和刪除的應(yīng)用程序。,例5.9要求: (1)在Form_Load事件中利用AddItem方法實現(xiàn)對列表框添加若干項目。 (2)選定某項目,項目內(nèi)容和下標(biāo)自動在Label1控件中顯示。 (3)“添加”按鈕,將Text1控件輸入的項目添加在列表框最后。 (4)“刪除”按鈕,對選定的項目刪除。 (5)“清除”按鈕,清除列表框中所有項目。,Private Sub Form_Load() List1.AddItem 大學(xué)計算機基礎(chǔ) List1.AddItem VB.NET程
14、序設(shè)計 List1.AddItem C/C+程序設(shè)計 List1.AddItem 多媒體技術(shù)及應(yīng)用 List1.AddItem 數(shù)據(jù)庫技術(shù)及應(yīng)用 List1.AddItem Web技術(shù)及應(yīng)用 End Sub,Private Sub List1_Click() Label1 = List1.Text 或在編輯區(qū)域中直接輸入文本內(nèi)容來選定項目。 組合框的屬性、方法和事件與列表框基本相同 不同:無MultiSelect和Selected屬性。 style屬性不同,組合框共三種風(fēng)格:下拉式組合框、簡單組合框和下拉式列表框,例5.10編寫一個使用屏幕字體、字號的程序,Private Sub Form_L
15、oad() For i = 0 To Screen.FontCount - 1 Combo1.AddItem Screen.Fonts(i) Next I For i = 6 To 40 Step 2 Combo2.AddItem i Next i End Sub, 將字體添加到組合框1, 將字號添加到組合框2,Private Sub Combo2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Label4.FontSize = Combo2.Text End If End Sub,在組合框輸入字號,Private Sub Combo1
16、_Click() Label4.FontName = Combo1.Text End Sub, 在組合框選中字體,標(biāo)簽的字體相應(yīng)改變,Private Sub Combo2_Click() Label4.FontSize = Combo2.Text End Sub, 在組合框選中字號,標(biāo)簽的字號相應(yīng)改變,5.3.3 列表框和組合框應(yīng)用,例5.11使用列表框?qū)崿F(xiàn)排序、查找、刪除,本章目錄,在Form_Load事件中通過AddItem方法在列表框中自動形成有序的數(shù)據(jù)項目。 “插入”按鈕:將文本框中輸入的內(nèi)容插入到列表框,使列表框仍保持有序。 “查找刪除”按鈕:要刪除的值由文本框輸入的值決定,這通過查
17、找方式?jīng)Q定。 “刪除選的內(nèi)容”按鈕:刪除列表框中選定的項目。,Private Sub Form_Load() Dim a, i%, k%, x%, n% a = Array(1, 4, 7, 9, 12, 14, 23, 56) n = UBound(a) For i = 0 To n List1.AddItem a(i) Next i End Sub, 自動形成有序的列表,56,23,14,9,12,7,4,1,a(0),a(1),a(2),a(3),a(4),a(5),a(6),a(7),Private Sub Command1_Click() x = Val(Text1) For k =
18、 0 To List1.ListCount - 1 If x Val(List1.List(k) Then Exit For Next k List1.AddItem x, k End Sub,插入, 查找欲插入數(shù)x在列表框中的位置, 列表框有List1.ListCount項,Private Sub Command2_Click() x = Val(Text1) For k = 0 To List1.ListCount - 1 If x = Val(List1.List(k) Then List1.RemoveItem k 找到則刪除 End If Next k End Sub, 查找刪除數(shù)據(jù)
19、,Private Sub Command3_Click() List1.RemoveItem List1.ListIndex End Sub, 直接在列表框選定要刪除的內(nèi)容后直接輸出,刪除由選定項的序號ListIndex決定的選項,5.3.3 列表框和組合框應(yīng)用,例5.12使用組合框?qū)κ『椭陛犑忻Q管理。 要求: 添加不重復(fù)的各省或直轄市名到組合框 對不正確的名稱可作修改 按拼音字符順序有序顯示。,本章目錄,Dim pos% Private Sub Form_Load() Combo1.AddItem 上海市 Combo1.AddItem 北京市 End Sub, 組合框添加初值,Privat
20、e Sub Combo1_KeyPress(KeyAscii As Integer) Dim i%, Find As Boolean If KeyAscii = 13 Then 按回車表示本項輸入結(jié)束 Find = False For i = 0 To Combo1.ListCount - 1 If Combo1.Text = Combo1.List(i) Then Find = True Next i If Not Find Then Combo1.AddItem Combo1.Text Combo1.Text = End If End Sub,Private Sub Combo1_Clic
21、k() pos = Combo1.ListIndex End Sub,將選定項目的序號保存在窗體級變量i中,選定的項目同時在文本框顯示,Private Sub Command1_Click() Combo1.List(pos) = Combo1.Text End Sub, 將文本框修改后的內(nèi)容更新列表框原位置的項目,5.4 自定義類型及數(shù)組,數(shù)組存放性質(zhì)相同的數(shù)據(jù)集合。若不同類型信息作為一個整體來描述,例如姓名、性別、出生年月等,通過Type語句來實現(xiàn)。,本章目錄,1)基本數(shù)據(jù)類型; 2)已經(jīng)定義的自定義類型; (若為字符串類型,必須使用定長字符串),表示自定義類型中的的一個成員,可以是簡單變
22、量,也可以是數(shù)組說明符。,Type 自定義類型名 元素名1 As 數(shù)據(jù)類型名 元素名n As 數(shù)據(jù)類型名 End Type,例如,定義一個有關(guān)學(xué)生信息的類型: Type StudType StudType為自定義類型名 Name As String*5 姓名 Sex As String*1 性別 Telephone As Long 電話 School As String*10 學(xué)校 End Type 自定義類型不能在過程內(nèi)定義,一般放在標(biāo)準(zhǔn)模塊文件,默認(rèn)為Public;若在窗體模塊的通用聲明段定義,必須加Private。,本章目錄,5.4.2自定義類型變量的聲明和使用,1.自定義類型的聲明 語
23、法形式: Dim 變量名 As 自定義類型名 例如,如下語句: Dim S1 As StudType,S2 As StudType Dim student As StudType,mystud As StudType 聲明S1、S2為兩個同種類型的變量,本章目錄,注意: 不要混淆StudType 和S1 ,前者如同Integer等的類型名,后者根據(jù)該類型分配所需的內(nèi)存空間,存儲各成員數(shù)據(jù)。 (2) 類型變量和數(shù)組相同之處它們都是由若干個成員組成;不同之處,前者的成員代表不同性質(zhì)、不同類型的數(shù)據(jù),以各個不同的成員名表示;而數(shù)組一般存放的是同種性質(zhì)、同種類型的數(shù)據(jù),以下標(biāo)表示不同的元素。,2.自定義類型變量元素的引用,形式如下: 自定義類型變量名.成員名 例如, S1.Name S1變量中的姓名 S1.Sex 性別,本章目錄,3.WITH語句的使用 可利用With語句簡化成員引用: 形式如下: With 變量名 語句塊 End With,自定義變量名 或 控件名,With S1 .Name = 張華 .Sex = 男 .School=同濟大學(xué)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年西安市雁塔區(qū)第一小學(xué)教師招聘備考題庫帶答案詳解
- 初中生物概念建構(gòu)中的多媒體資源運用與教學(xué)策略教學(xué)研究課題報告
- 2025年保定市寬高高級中學(xué)招聘備考題庫及答案詳解1套
- 2型糖尿病個體化治療藥物轉(zhuǎn)換策略
- 國網(wǎng)浙江電力2026年度高校畢業(yè)生招聘1170人備考題庫及一套參考答案詳解
- 2025年大連海事大學(xué)公開招聘事業(yè)編制非教學(xué)科研人員23人(第一批)備考題庫含答案詳解
- 2025年河南實達(dá)國際人力資源合作有限公司招聘宋城產(chǎn)投勞務(wù)派遣人員備考題庫有答案詳解
- 2025年連山教師招聘29人備考題庫完整參考答案詳解
- 2025年上海大學(xué)誠聘法學(xué)院院長備考題庫及答案詳解參考
- 簡約插畫風(fēng)深色年度晚會慶典
- 2025年榆林市住房公積金管理中心招聘(19人)備考筆試試題及答案解析
- 2025年金屬非金屬礦山(地下礦山)安全管理人員證考試題庫含答案
- 2025秋蘇教版(新教材)小學(xué)科學(xué)三年級上冊知識點及期末測試卷及答案
- 2025年及未來5年中國非晶合金變壓器市場深度分析及投資戰(zhàn)略咨詢報告
- 中文核心期刊論文模板(含基本格式和內(nèi)容要求)
- 2024-2025學(xué)年云南省普通高中高二下學(xué)期期末學(xué)業(yè)水平合格性考試數(shù)學(xué)試卷
- GB/T 18213-2025低頻電纜和電線無鍍層和有鍍層銅導(dǎo)體直流電阻計算導(dǎo)則
- 泰康人壽會計筆試題及答案
- 園林綠化養(yǎng)護項目投標(biāo)書范本
- 烷基化裝置操作工安全培訓(xùn)模擬考核試卷含答案
- 汽車租賃行業(yè)組織架構(gòu)及崗位職責(zé)
評論
0/150
提交評論