




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章數(shù)組5.1數(shù)組的概念5.2靜態(tài)數(shù)組5.3動態(tài)數(shù)組5.4控件數(shù)組為什么要使用數(shù)組?變量代表在程序執(zhí)行過程中其值可以改變的存儲單元.問題:輸入50個數(shù),放在內存存儲單元中?若需要對相同類型的一批數(shù)據(jù)進行處理,則需要在計算機內存中開辟一塊連續(xù)的區(qū)域對之進行存儲.數(shù)組的概念數(shù)組:具有相同類型變量的有序集合。這些變量按照一定的規(guī)則排列,使用一片連續(xù)的存儲單元。5.2靜態(tài)數(shù)組VB中兩種變量數(shù)組:靜態(tài)數(shù)組和動態(tài)數(shù)組。
靜態(tài)數(shù)組大小固定
動態(tài)大小不確定,使用前重新定義(定義2次)VB中的對象數(shù)組----控件數(shù)組下標的格式如下:[<下界1>To]上界1
[[,<下界2>To]上界2…]其中,“下界”和關鍵字“To”可以省略,若程序中無特別聲明,表示下標的取值從0開始,等價于“0To上界”。①DimA(5)AsInteger①等價于DimA(0To5)AsIntegerA為數(shù)組名,該數(shù)組中有6個數(shù)組元素,分別為:A(0)、A(1)、A(2)、A(3)、A(4)、A(5)
A(0)A(1)A(2)A(3)A(4)A(5)A②DimB(2,1To2)AsSingle②等價于DimB(0To2,1To2)AsSingle解析:定義了一個名為B的二維數(shù)組,其中有6個數(shù)組元素,分別為:B(0,1)、B(0,2)、b(1,1)、B(1,2)、B(2,1)、B(2,2)二維數(shù)組:其元素構成一個二維表格或矩陣.數(shù)組元素的第一個下標值表示該元素在表格中的行號,第二個下標值表示列號.數(shù)組定義(續(xù))二維數(shù)組 矩陣二維數(shù)組的元素表示表示B(2,1to2)=B(0,1) B(0,2)B(1,1) B(1,2)B(2,1) B(2,2)第1行第2行第3行第1列 第2列1.數(shù)組的上下界數(shù)組的上界和下界下界:數(shù)組中表示某維最小的下標值;上界:數(shù)組中表示某維最大的下標值;注:定義靜態(tài)數(shù)組時,維的上下界必須是常數(shù)表達式,不可以是變量名。且下界≤上界5.2.2靜態(tài)數(shù)組的操作靜態(tài)數(shù)組的操作(續(xù))數(shù)組的上界和下界DimMAsInteger
ConstN=5AsIntegerDimA(N)AsIntegerDimB(1To6.6)AsInteger四舍五入后維上界7DimC(1To2*3)AsStringDimD(0ToM)AsSingle數(shù)組的維下界定義數(shù)組時,若未指定某維的下界,則下界默認為0設置缺省維下界的數(shù)組的維下界為1的方法:在代碼窗口通用聲明部分寫一語句optionBase1
再在cmd1_click()事件過程中進行定義:DimS(4),B(3,3)asinteger變體型,整型數(shù)組數(shù)組的大小數(shù)組的大小即數(shù)組所包含的數(shù)組元素的個數(shù),也稱為數(shù)組的長度。數(shù)組的大小=第一維大小×第二維大小×…×第N維大小
維的大小=維上界–維下界+1dimA(6)asintegerdimB(3,-1to4)assingle2.數(shù)組元素的引用引用形式:數(shù)組名(下標表達式)Dimscore(3)asintegerDimtwo(1,1to2)asintegerscore(0)=80:score(1)=score(0)+23score(2)=87:score(3)=9two(0,1)=score(0)3.數(shù)組的輸入/輸出操作(1)一維數(shù)組元素的初始化(輸入)初始化是給數(shù)組成員賦初值。通過循環(huán)逐一給數(shù)組元素賦值*使用Inputbox接收若干數(shù)值*隨機產生數(shù)值(2)一維數(shù)組元素值的顯示(輸出)*邊輸入(獲得每一元素值后)邊輸出*獲得全部元素值后再輸出窗體/圖片框/文本框/Msgbox實例在FOR循環(huán)中用循環(huán)控制變量作為數(shù)組元素的下標。邊輸入邊輸出FORI=0TO5A(I)=INT(99*RND)+1PRINTA(I);NEXTI用INPUT函數(shù)給數(shù)組元素賦值DIMA(6)asinteger,IasintegerFORI=0to6
A(I)=inputbox(“給數(shù)組元素賦值”,”數(shù)組A賦值”)PRINTA(I);NEXTI例1:輸入50個數(shù),按逆序輸出輸入使用隨機函數(shù),每得到一個數(shù)將之賦給數(shù)組元素.邊輸入邊輸出每個元素值(正序)如何實現(xiàn)逆序輸出?例2隨機產生100個0到9之間的整數(shù),統(tǒng)計并輸出每個數(shù)出現(xiàn)的次數(shù)。所產生的整數(shù)在0-9之中需要10個計數(shù)器(計數(shù)變量)來存放10個數(shù)各自出現(xiàn)的次數(shù)(數(shù)組元素)a(0)---0的個數(shù)a(1)----1的個數(shù)例3最值問題(重點算法)編寫一個程序,隨機產生10個兩位正整數(shù),并從中找出一個最大數(shù)和一個最小數(shù)。打擂臺思想5.4控件數(shù)組控件數(shù)組由一組相同類型的控件組成,例如一組命令按鈕或一組文本框。它們共用一個控件名,具有相同的屬性,建立時系統(tǒng)給每個元素賦一個唯一的索引號(Index)。1.基本概念控件共享事件代碼,那么如何識別哪個控件執(zhí)行事件代碼呢?在某個控件識別了一個事件時,VB將調用公共事件過程,并把該控件的Index屬性值傳遞給過程,由它指明是哪個控件識別了控件。例:PrivateSubCommand1_click(Index
AsInteger)…
EndSub2.建立控件數(shù)組方法一:創(chuàng)建同名控件TEXT1TEXT2命名(NAME屬性)為TEXT1,創(chuàng)建控件數(shù)組。INDEX值不同。方法二:復制現(xiàn)存控件
3.使用控件數(shù)組例如:為文本框控件數(shù)組的三個元素設置共同字體與大小DimIAsIntegerForI=0TO2Text1(I).Font.Name=“隸書”Text1(I).Font.Size=20NextI…【例4】隨機生成包含10個元素(全為一位正整數(shù))的數(shù)組,要求交換對稱位置的元素,并輸出交換前后的各元素值。
交換:a(0)------a(7)a(1)------a(6)a(2)------a(5)..【例5】輸出Fibonacci數(shù)列的前20項
要求4項一行輸出,請使用數(shù)組完成,即數(shù)組各元素取得各項值,以4個一行的形式輸出數(shù)組中各元素值。
5.3動態(tài)數(shù)組動態(tài)數(shù)組:應用中數(shù)組的大小不確定.首先定義不指明大小的數(shù)組:Dim數(shù)組名()As數(shù)據(jù)類型其次,使用ReDim語句動態(tài)定義數(shù)組的大小。
ReDim[Preserve]數(shù)組名(下標1[,下標2])
[As<數(shù)據(jù)類型>]注意:用Redim語句定義數(shù)組時若指定數(shù)據(jù)類型,應與上面的Dim數(shù)組名()As數(shù)據(jù)類型中的數(shù)據(jù)類型一致,即不允許更換類型.例:OptionBase1PrivateSubCommand1_Click() Dima()asinteger
redima(9)Printa(8)Redima(2,3)Printa(1,1)EndSub思考:將藍色語句改為redima(9)aslong是否會出錯?Redim
Preserve數(shù)組名(維界定義)[As數(shù)據(jù)類型]例子:動態(tài)數(shù)組單循環(huán)例子(讀程序見下頁)在使用ReDim語句重新定義數(shù)組時,如果需要保留動態(tài)數(shù)組的內容可采用如下方式:重新定義數(shù)組時可以保留原數(shù)組中的內容單循環(huán)例子(讀程序)OptionBase1PrivateSubForm_Click()Dima()AsIntegerDimiAsInteger,jAsIntegerFori=1To3ReDima(i)思考:redimpreservea(i)a(i)=iNextiPrinta(1);a(2);a(3)EndSub【例6】生成若干個0-99之間的整數(shù)存于數(shù)組a,刪除指定位置的元素,并顯示刪除前、后結果。利用循環(huán)生成數(shù)組各元素值。指定要刪除元素的位置刪除方法:用后繼元素覆蓋之由于數(shù)組大小在刪除元素后會發(fā)生變化,所以應定義為動態(tài)數(shù)組?!纠?】將某范圍內的素數(shù)存放到數(shù)組中.從鍵盤輸入一個正整數(shù),找出該數(shù)以內的所有素數(shù)存放在數(shù)組prime中并將所有找到的素數(shù)按每行5個的形式輸出到文本框中。
輸出到當前窗體中。數(shù)組第二次課內容數(shù)組的輸入(賦值)與輸出(顯示)Array函數(shù):給Variant類型的變量或Variant類型的動態(tài)數(shù)組賦值例:ARRAY賦值.vbp4.用ARRAY函數(shù)給一維數(shù)組賦值一維數(shù)組的輸入:直接賦值,隨機賦值,inputbox賦值OptionBase1PrivateSubForm_Click()DimAAsVariant,IAsIntegerDimB()AsVariantFontSize=30A=Array(5,4,3,2,1)PrintA(1);A(2);A(3);A(4);A(5)A=Array(1.5!,2.3!,3.6!,4.1!)PrintA(1);A(2);A(3);A(4);A="NOARRAY"PrintAB=Array(1,2,3,4,5,6)PrintB(1)EndSub數(shù)組的輸出(元素值的顯示)循環(huán)控制(下標變量printa(i))ForEach…Next結構不需要提供初值與終值根據(jù)數(shù)組元素的個數(shù)確定循環(huán)執(zhí)行的次數(shù)ForEachvIn數(shù)組‘v是變體變量…Exitfor…Next[成員]v必須定義為variant類型
Dimi%,j%Dimb(1To2,1To3)AsIntegerFori=1To2Forj=1To3b(i,j)=i*10+jPrintb(i,j);NextjPrintNexti*此方法按行列式的格式輸出二維數(shù)組的定義及賦初值ForEachvInb'此結構按列輸出二維數(shù)組中的各元素Printv;Next【例2】隨機生成兩位正整數(shù),存放到一個4*5的數(shù)組中,請按下圖所示格式分別將其輸出到文本框及圖片框中。
5.2.3數(shù)組的常用函數(shù)及語句1.LBound函數(shù)返回指定數(shù)組某維的下界值.LBound(數(shù)組名[,維編號])2.UBound函數(shù)返回指定數(shù)組某維的上界值.UBound(數(shù)組名[,維編號])*缺省時返回第一維上/下界Erase語句:用于清除指定數(shù)組的內容用于靜態(tài)數(shù)組時,將所有數(shù)組元素置為默認值用于動態(tài)數(shù)組時,將刪除整個數(shù)組結構并釋放該數(shù)組所占內存。下次引用該動態(tài)數(shù)組前必須REDIM重新定義。例:Erase.vbp3.Erase語句Dima(3)AsInteger,b()AsIntegera(1)=1:a(2)=2:a(3)=3ReDimb(4)Printa(1),a(2),a(3)Erasea,bPrinta(1),a(2),a(3)Printb(1)此行出錯部分重點算法:一數(shù)組,求其中最大和最小;對一數(shù)組排序(選擇法、冒泡法)在一數(shù)組中查找指定的數(shù)(順序、二分查找)插入,刪除刪除一數(shù)組中重復的數(shù)一維數(shù)組的應用【例3】選擇排序法基本思想:設在數(shù)組S中存放n個無序的數(shù),要求將這n個數(shù)按升序(從小到大)重新排列。第一輪比較:使得s(1)為所有元素中最小的.用s(1)與s(2)比較,若s(1)>s(2),則交換兩個元素中的值,然后繼續(xù)用s(1)與sort(3)比較,若s(1)>s(3),則交換這兩個元素的值。依此類推,直到s(1)與s(n)進行比較處理后,s(1)中存放了這n個數(shù)中的最小數(shù)。第二輪比較,s(2)依次與…比較…總共通過n-1輪比較,得到一個從小到大排列的有序序列。【例4】數(shù)組元素的插入(1)將任意一整數(shù)插入到數(shù)組中,由用戶指定插入的數(shù)據(jù)作為第幾個元素
(2)已知一按升序排好的包含有10個元素的數(shù)組,將某一整數(shù)插入到該數(shù)組中基本思路:首先要找到插入位置.以升序為例.【例5】數(shù)據(jù)檢索問題(順序查找法)基本思想對所存儲的數(shù)據(jù)從第一項開始,依次與所要檢索的數(shù)據(jù)進行比較,直到找到該數(shù)據(jù),或將全部元素都找完還沒有找到該數(shù)據(jù)為止。將元素顯示在列表框中.結果顯示在文本框中,結果格式為:23找到了,為元素a(5)?!纠?】二分查找(要求數(shù)組已排好序)算法說明:給定一組數(shù)據(jù),查找是否存在指定的某個值,二分法查找要求這組數(shù)據(jù)必須已經是排好序的,每次將查找范圍一分為二,直到找到或查詢了所有區(qū)間也沒有找到要查找的數(shù)為止。具體思路為:
假設給定的一組數(shù)據(jù)存放在數(shù)組A中,需要查找的數(shù)為x。設定三個下標left(初始值為0)、right(初始值為數(shù)組A的上界)、Mid分別指向查找區(qū)間的左端、右端和中間位置。計算Mid=,比較x和A[Mid]的大小,
*若Find=A[Mid],則要查找的數(shù)已經找到;*若Find<A[Mid],說明需要查找的數(shù)應當在left和Mid區(qū)間,則right=Mid-1;
*若Find>A[Mid],說明需要查找的數(shù)應當在Mid和right區(qū)間,則left=mid+1;重復以上步驟,每次查找區(qū)間減少一半,直到找到或者Left>Right(表示找不到,停止查找)?!纠?】:使用冒泡(起泡)法對10個整數(shù)(數(shù)組元素)從小到大排序,并輸出排序前后數(shù)組中元素的值。起泡法的思路是:將相鄰兩個數(shù)比較,將小的調到前頭。排序通常分為以下3個步驟:①將需要排序的n個數(shù)存放到一個數(shù)組中(設x數(shù)組)。②將x數(shù)組中的元素從小到大排序,即x(1)最小、x(2)次之、……、x(n)最大。③將排序后的x數(shù)組輸出。
在第一輪比較中進行兩兩比較___次,在第二輪中比較__次,第4輪中比較__次.
如果有n個數(shù),則要進行______輪比較,用i表示輪次,在第i輪比較中要進行_________次兩兩比較.
【例8】隨機生成包含10個無重復元素的數(shù)組,要求元素在[0,9]之間。思路:每生成一個元素與前面的元素進行比較,若相同,則重新生成該元素.【例9】刪除一數(shù)組中重復的數(shù)第一輪用A(1)依次和位于其后的所有數(shù)組元素比較,假設元素A(j)與它相同,則將A(j)刪除.刪除的方法是將位于A(j)元素后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化創(chuàng)意產業(yè)園區(qū)場地無償租賃協(xié)議
- 成都企業(yè)股權變更盡職調查與代辦合同
- 財務部內部控制與審計合同范本
- 常規(guī)量具使用培訓
- 氣化爐檢修培訓主要內容
- 中班組常規(guī)情況匯報
- 2025年教育事業(yè)統(tǒng)計培訓
- ??谱o士培訓計劃
- 2025新高二(復習課)必修下冊詩歌知識梳理(教師版)
- 腫瘤患者春節(jié)節(jié)前健康宣教
- 審計 第7版 課件 第10章采購與付款循環(huán)審計
- 概率論與數(shù)理統(tǒng)計(天津理工大學)智慧樹知到期末考試答案2024年
- 八年級親子共評
- 家用冰箱市場調研報告
- 國際財務報告準則
- 初中數(shù)學-專項24 圓內最大張角米勒角問題
- 行政單位酒店住宿合同
- 機械設備安裝程序、安裝分類、固定方式及安裝新技術應用
- 大樓維修改造工程投標方案(完整技術標)
- 《建筑施工安全檢查標準》JGJ
- 建筑陶瓷磚檢測報告及原始記錄
評論
0/150
提交評論