版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualBasic
'程序選id
第五章數(shù)組
武小川xiaochuan_wu@163.com
中國(guó)藥科大學(xué)計(jì)算機(jī)教研室
VisualBasic
教學(xué)要求'程序:
掌握靜態(tài)數(shù)組和動(dòng)態(tài)數(shù)組的概念和基本操作
掌握控件數(shù)組的建立和使用方法
掌握常用算法
,裕品中國(guó)藥科大學(xué)
2
以計(jì)算機(jī)教研室
VisualBasic
教學(xué)內(nèi)容'程序:
5.1教組的概念
5.2教組的基本掾作
5.3動(dòng)態(tài)教組
5.4控件數(shù)組
5.5程序示例
3?漓Y中國(guó)藥科大學(xué)
計(jì)算機(jī)教研室
VisualBasic
5J數(shù)組的概念'程序:
5.1.1數(shù)組命名與數(shù)組元素
5.1.2數(shù)組定義
5.1.3數(shù)組的結(jié)構(gòu)
5.1.4數(shù)組函數(shù)及數(shù)組語(yǔ)句
.漓卜中國(guó)藥科大學(xué)
4
以計(jì)算機(jī)教研室
VisualBasic
基本^概^念^'程序:
前面所說(shuō)的變量都是指簡(jiǎn)單變量,即一個(gè)變量名對(duì)應(yīng)一
個(gè)存儲(chǔ)單元,只能存儲(chǔ)一個(gè)值,各個(gè)變量之間無(wú)關(guān)聯(lián)。
本章我們要介紹的是一種下標(biāo)變量——數(shù)組,是通過(guò)一
個(gè)數(shù)組名和下標(biāo)的組合來(lái)表示多個(gè)值。用一個(gè)相同的名字引
用一組變量的數(shù)據(jù)。
數(shù)組,是VB支持的一種復(fù)合結(jié)構(gòu)的數(shù)據(jù)類型。
數(shù)組,易用于保存一組具有相同數(shù)據(jù)類型的有序的變量
的集合。
,裕品中國(guó)藥科大學(xué)
5
U計(jì)算機(jī)教研室
5.L1數(shù)組命名與數(shù)組元素VisualBasic
?命名規(guī)則與簡(jiǎn)單變量相同。(參閱P45)
?數(shù)組名不是代表某一變量,而是一組變量。
?數(shù)組元素:
今由數(shù)組名和該元素在數(shù)組中的編號(hào)(索引、下標(biāo))唯一
確定,下標(biāo)是連續(xù)的整數(shù)。
少數(shù)組元素的一般形式:
數(shù)組名(下標(biāo)1L下標(biāo)2,…])
?數(shù)組的維數(shù):
“一維數(shù)組——只需一個(gè)下標(biāo)即可唯一確定一個(gè)數(shù)組元素
“多維數(shù)組——有兩個(gè)或兩個(gè)以上下標(biāo)的數(shù)組,每個(gè)下標(biāo)
對(duì)應(yīng)一個(gè)“維”。
6/編工中國(guó)藥科大學(xué)
呼計(jì)算機(jī)教研室
VisualBasic
5.L2數(shù)組定義'程序:
■數(shù)組必須先定義后使用。
?定義數(shù)組時(shí),確定其名稱、數(shù)據(jù)類型、維數(shù)、每一維的上、
下界。
?數(shù)組定義時(shí),系統(tǒng)分配連續(xù)的內(nèi)存空間,用于依次保存所
有數(shù)組元素。
?固定大小數(shù)組與動(dòng)態(tài)數(shù)組。
.漓卜中國(guó)藥科大學(xué)
7
U計(jì)算機(jī)教研室
VisualBasic
1、數(shù)組說(shuō)明語(yǔ)句________________'程序:
[格式]:
Public|Private|Static|Dim數(shù)組名([<下界1>To]<上界1>
[,卜下界2>To]<上界2>,…])As類型
[說(shuō)明]:
“聲明關(guān)鍵字決定作用域,見(jiàn)下頁(yè)
“〈下界〉TOv上界》決定了每一維的大小,下界指下標(biāo)的最
小值,上界指下標(biāo)的最大值,其中[〈下界>TO]可省略,此
時(shí),默認(rèn)下界是0。
“我們習(xí)慣于下標(biāo)是從1開(kāi)始,可在模塊的“通用”聲明段中
使用如下語(yǔ)句
OptionBase1
則在缺省下界的情況下,默認(rèn)下界是1。
8「瀟工中國(guó)藥科大學(xué)
垓計(jì)算機(jī)教研室
VisualBasic
'程序:
關(guān)鍵字使用位置作用域
Public在標(biāo)準(zhǔn)模塊的聲明段中全局
Private和Dim在模塊的聲明段中模塊
Dim在過(guò)程中局部
Static在過(guò)程中局部、靜態(tài)
注意:全局?jǐn)?shù)組、全局符號(hào)常量和全局定長(zhǎng)字符
串只能在標(biāo)準(zhǔn)模塊中定義,念.中國(guó)藥科大學(xué)
U計(jì)算機(jī)教研室
VisualBasic
2數(shù)組的上、下界'程序:
?上、下界表示下標(biāo)的最大、最小值;
?下界《上界;
?在固定大小數(shù)組定義時(shí),上、下界是常量或常量表達(dá)式,不
得是變量;
?上、下界應(yīng)是整數(shù),若不是,則自動(dòng)四舍五人。
舉例:Dimmasinteger
Constn=5asinteger
Dima(n)asinteger
Dimb(1to6.6)asinteger
Dimc(1to2*3)asinteger
Dimd(0tom)asintegerX
io,念.中國(guó)藥科大學(xué)
b計(jì)算機(jī)教研室
VisualBasic
3數(shù)組的類型'程序:
今可為任一簡(jiǎn)單數(shù)據(jù)類型
4數(shù)組的大小
,指數(shù)組中包含元素的個(gè)數(shù)。
,一維數(shù)組元素個(gè)數(shù):上界-下界+1
,二維數(shù)組元素個(gè)數(shù):
(上界「下界1+1)*(上界2-下界2+1)
京東中國(guó)藥科大學(xué)
11學(xué)計(jì)算機(jī)教研室
5.L3數(shù)組的結(jié)構(gòu)VisualBasic
?數(shù)組的所有元素是按一定順序存儲(chǔ)在連續(xù)的存儲(chǔ)單元的。
i.一維數(shù)組的結(jié)構(gòu)
*例:Dimstra(3)
它邏輯結(jié)構(gòu):(stra(0),stra(1),stra(2)stra(3))
叱存儲(chǔ)結(jié)構(gòu):按照下標(biāo)從小到大依次存儲(chǔ)
Str(O)Str(1)Str(2)Str(3)
京東中國(guó)藥科大學(xué)
12學(xué)計(jì)算機(jī)教研室
VisualBasic
2二維數(shù)組的結(jié)構(gòu)'程序:
?例:Optionbase1
Dimy(3,4)asinteger
?邏輯結(jié)構(gòu):
'y(l,l),y(l,2),y(l,3),y(l,4)‘
y(2,l),y(2,2),y(2,3),y(2,4)
、y(3,l),y(3,2),y(3,3),y(3,4).
?存儲(chǔ)結(jié)構(gòu):
“按列存放”
京東中國(guó)藥科大學(xué)
13學(xué)計(jì)算機(jī)教研室
VisualBasic
3三維數(shù)組的結(jié)構(gòu)'程序:
?行、列和頁(yè)組成的三維表。
?邏輯結(jié)構(gòu):見(jiàn)書(shū)P88
?存儲(chǔ)結(jié)構(gòu):“逐頁(yè)逐列”
.漓卜中國(guó)藥科大學(xué)
14
以計(jì)算機(jī)教研室
VisualBasic
5.1.4數(shù)組函數(shù)及數(shù)組語(yǔ)句'程序:
1、2返回上、下界函數(shù):
上界:UBound(數(shù)組名[,d])
下界:LBound(數(shù)組名[,d])
說(shuō)明:d代表維數(shù)。省略時(shí)表示返回第一維的值。
舉例:DimA(5)AsInteger,B(2,3to5)AsInteger
al=LBound(A)
al=UBound(A)
bl=LBound(B,l)
b2=LBound(B,2)
結(jié)果:
b3=UBound(B,l)050325
b4=UBound(B,2)
Printal;a2;bl;b2;b3;b4_____,科大學(xué)
計(jì)算機(jī)教研室
VisualBasic
3Erase初始化數(shù)組語(yǔ)句'程序:
格式:Eraseal[,a2,...]
功能:對(duì)普通數(shù)組初始化(按數(shù)組類型給元素賦初值),
對(duì)動(dòng)態(tài)數(shù)組進(jìn)行存儲(chǔ)空間釋放。例:P.89
OptionBase1
PrivateSubForm_Click()
Dima(3)AsInteger
a(l)=1:a(2)=2:a(3)=3
Printa(l),a(2),a(3)
Erasea
Printa(l),a(2),a(3)
EndSub
言.中國(guó)藥科大學(xué)
16
U計(jì)算機(jī)教研室
VisualBasic
4ForEach-Next數(shù)組循環(huán)結(jié)構(gòu)'程序:
格式:ForEachElementIn〈數(shù)組名)
語(yǔ)句組
[ExitFor]
語(yǔ)句組
Next[Element]
功能:依次(存儲(chǔ)次序)處理每一個(gè)數(shù)組元數(shù),直到數(shù)組結(jié)束。
說(shuō)明:Element是Variant變量,它逐個(gè)地代表數(shù)組中的每一
個(gè)變量。
.漓卜中國(guó)藥科大學(xué)
17
U計(jì)算機(jī)教研室
VisualBasic
例:'程序:
Fori=1To2
Forj=1To3
E(iJ)=iM0+j
Nextj
Nexti
ForEachVInE
PrintV;處理順序?yàn)樵摂?shù)組的存儲(chǔ)順序——按列!
NextV
EndSub
TK
VisualBasic
5.2數(shù)組的基本操作程序迭
5.2.1教組元素的賦值
5.2.2教組元素的輸出
5.23教組元素的引用
行才中國(guó)藥科大學(xué)
19型計(jì)算機(jī)教研室
VisualBasic
5.2.1數(shù)組元素的賦值'程序:
1用賦值語(yǔ)句給單個(gè)數(shù)組元素賦值。
Dimscore(3)asinteger
score(1)=90:score(2)=80:score(3)=68
2在循環(huán)結(jié)構(gòu)中,用賦值語(yǔ)句逐一給數(shù)組元素賦值。
Dima(1to6)asinteger
Fori=1to6
a(i)=int(99*rnd)+1|一維數(shù)組用一層循環(huán)結(jié)構(gòu)
Nexti
3在循環(huán)結(jié)構(gòu)中,利用Inputbox函數(shù)給數(shù)組元素賦值。
Dima(lto6)asinteger
Fori=1to6
a(i)=inputbox(“請(qǐng)輸入a("&str(I)&“數(shù)組賦值”)
Nexti
VisualBasic
4、Array賦值函數(shù)'程序:
格式:變體變量名=Array([nl,n2,...])
功能:將一個(gè)變體型變量創(chuàng)建成為一個(gè)一維數(shù)組,并包含指定
的元素。元素的引用方式與一般數(shù)組一樣。
注意:Array賦值函數(shù)只能給變體型變量賦值。不能給其他類
型的變量及任何類型的數(shù)組賦值。
1510
OptionBase1b-ray
PrivateSubForm_Click()
DimaAsVariant,bAsIntegerMicrosoftVisualBasic
a=Array(l,2,3,4,5,6,7,8,9,10)實(shí)時(shí)錯(cuò)誤T3’:
Printa(l),a(5),a(10)類型不匹配
a="Array''
Printa
b=Array。,2,3,4,5,6,7,8,9,10)
EndSub姆◎|結(jié)束量”隨聞跡寸
VisualBasic
5.2.2數(shù)組元素的輸出'程序:
?用Print方法顯示在窗體或圖片框上
?賦值給文本框的Text屬性,在文本框中顯示
?調(diào)試時(shí),調(diào)用Debug的Print方法在“立即”窗口中顯示
5.2.3數(shù)組元素的引用
注意:在引用數(shù)組元素時(shí),元素的下標(biāo)一定要在定義的上
下界范圍之內(nèi),否則“數(shù)組越界”出錯(cuò)。
,裕品中國(guó)藥科大學(xué)
22
以計(jì)算機(jī)教研室
VisualBasic
OptionBase1'程序:
PrivateSubForm_click()
例
Dimcompare(12)AsInteger,iAsInteger出
最5
DimmaxAsInteger,minAsInteger
—
Randomize大1
Fori=lTol2值
產(chǎn)
compare(i)=Int(90*Rnd)+10、
生
Printcompare(i);最
Nexti小
12
個(gè)
.rint值
max=compare⑴:min=compare⑴兩
Fori=2Tol2位
Ifcompare(i)>maxThen
數(shù)
max=compare(i)
Elselfcompare(i)<minThen,
從
min=compare(i)
EndIf中
Nexti找
Print”最大教是;";max
Print”最小教是min
EndSub
例:有'―4—>維數(shù)組a(20),要求按照每行6個(gè).
VisualBasic
格式輸出。數(shù)組元素為100-200之間的隨機(jī)數(shù)。'程序山J
I.Foral
OptionBase1
171153158129130178
PrivateSubForm_Click()1011761821T1104141
Dima(20)AsInteger187179137197188105
DimiAsInteger,jAsInte;195136
Fori=1To20
a(i)=Int(101*Rnd)+100
Nexti
Fori=1To20
Printa(i);
j=j+l
IfjMod6=0ThenPrint
Nexti
EndSub,念.中國(guó)藥科大學(xué)
b計(jì)算機(jī)教研室
例:二維數(shù)組的賦值與輸出
OptionExplicit程序分析:
OptionBase1
PrivateSubForm_Click()程序執(zhí)行時(shí),計(jì)數(shù)變量i和j的變化為:
DimiAsInteger,jAsIntegeri=l時(shí),j從1變化到4,結(jié)束內(nèi)層循環(huán),i變成2
Dima(3,4)AsInteger
Randomizei=2時(shí),j從1變化到4,結(jié)束內(nèi)層循環(huán),i變成3
<Fori=1To3
i=3時(shí),j從1變化到4,結(jié)束內(nèi)層循環(huán),i變成4
Forj=1To4
a(i,j)=Int(Rnd*31+20)結(jié)束外層循環(huán)。循環(huán)變量(i,j)的變化過(guò)程為
Nextj
Fori=1To3
Forj=1To4
s=s&a(i,j)
Nextj
s=s&Chr(13)&Chr(10)正好和二維數(shù)組引用的下標(biāo)一致。
NextI
Textl.Text=s二維數(shù)組引用必須用二重循環(huán)實(shí)現(xiàn)
Enad計(jì)算機(jī)教研丁
例:下列程序完成在窗體上輸出二維數(shù)組每行元素之和?;卮饐?wèn)題:
1、程序有沒(méi)有錯(cuò)?2、錯(cuò)在哪里?3、輸出語(yǔ)句應(yīng)出現(xiàn)在什么地方?
OptionBase1
PrivateSubForm_Click()W.Foral?]回兇
Dima(4,5)AsInteger171153158129130
DimiAsInteger,jAsInteger178101176182171
DimsumAsInteger104141187179137
197188105195136
Fori=1To4
之
除
元
1I和741
Forj=1To5
之
斯
元
2B和808
之
那
元
a(i,j)=Int(101*Rnd)+1003和748
B
之
雙
元
Printa(i,j);4和821
Nextj
Nexti
Fori=Uh-J-----Sum=O
Forj=1To5
sum=sum+a(i,j)程序執(zhí)行結(jié)果界面
NextJ
NextIPrint"第i;”行元素之和為:”;sum
Print"第";i;''行元素之和為sum
EndSub,念.中國(guó)藥科大學(xué)
U計(jì)算機(jī)教研室
VisualBasic
有關(guān)二維數(shù)組的常見(jiàn)問(wèn)題:'程序:
?轉(zhuǎn)置
?求對(duì)角線元素之和
?求周邊元素之和
?求上、下三角形元素之和
?求最大、最小元素
?二維數(shù)組相乘
京東中國(guó)藥科大學(xué)
27學(xué)計(jì)算機(jī)教研室
例:產(chǎn)生一個(gè)3行4列的矩陣,數(shù)據(jù)為[20,50]之間的隨機(jī)數(shù),然后
將矩陣轉(zhuǎn)置輸出。
OptionBase1
PrivateSubForm_Click()
DimiAsInteger,jAsInteger,a(3,4)AsInteger
Randomize
Fori=1To3
Forj=1To4
a(iJ)=Int(Rnd*31+20)
Printa(i5j);
Nextj
NextI
Fori=1To4Forj=1To4
Forj=1ToFori=1To思考題:
Printa(j,i);Printa(i,j);
NextjNextj求n階方陣的轉(zhuǎn)置
PrintPrint
NextiNexti矩陣,并輸出?
FT再為甲f大學(xué)
EndSub十算機(jī)教研室
VisualBasic
_____mj____'程序:
1、分別求一個(gè)3*3二維數(shù)組的主、付對(duì)角線元
素之和。
2、求二維數(shù)組周邊元素之和。
5.3動(dòng)態(tài)數(shù)組_________________VisualBasic
定義:在程序運(yùn)行過(guò)程中,可重新定義大小的數(shù)組。
說(shuō)明語(yǔ)句:
①Dim數(shù)組名()as類型一在變量說(shuō)明部分
②ReDim[Preserve]<數(shù)組名)(維界定義)一在可執(zhí)行語(yǔ)句中
PrivateSubForm_ClickQ
DimPin()AsInteger,說(shuō)明整型的動(dòng)態(tài)數(shù)組Pin
DimxasInteger
X=Val(Textl.text)
ReDimPin(x),重新說(shuō)明數(shù)組Pin
???
EndSub
注意:-Redim是可執(zhí)行語(yǔ)句,只能出現(xiàn)在過(guò)程中
-重新定義動(dòng)態(tài)數(shù)組時(shí),不能改變數(shù)據(jù)類型
,漓中國(guó)藥科大學(xué)
-重定義時(shí),維界定義中可以有變量U計(jì)算機(jī)教研室
VisualBasic
說(shuō)明'程序:
-如果Redim重定義的數(shù)組不存在,則相當(dāng)于一個(gè)說(shuō)明語(yǔ)句
-當(dāng)缺省Preserve參數(shù)時(shí),定義后,原來(lái)存儲(chǔ)在數(shù)組中的數(shù)據(jù)
全部丟失,此時(shí)可重新定義數(shù)組的維數(shù)和各維的上下界。
-當(dāng)有Preserve參數(shù)時(shí),可保留原數(shù)組中的數(shù)據(jù),但不能改變
數(shù)組的維數(shù),且只能改變最后一維的維上界。
-用Dim語(yǔ)句聲明過(guò)的數(shù)組,只是一個(gè)空數(shù)組,系統(tǒng)并沒(méi)有給它
分配內(nèi)存空間,此時(shí),不能對(duì)數(shù)組元素進(jìn)行存取操作,否則出
錯(cuò)。必須用ReDim語(yǔ)句重新定義其大小,系統(tǒng)才給它分配內(nèi)存,
用戶才能對(duì)此數(shù)組元素進(jìn)行操作。
31看品中國(guó)藥科大學(xué)
以計(jì)算機(jī)教研室
VisualBasic
舉例:'程序:
Optionbase1
Dimdynarry()asinteger
Dimxasinteger,yasinteger
Dynarry(1)=1非法語(yǔ)句,出錯(cuò)
Redimdynarry(9)
Dynarry(1)=1給一維數(shù)組元素賦值
x=2:y=4
Redimdynarry(x,y)
Dynarry(1,1)二1給二維數(shù)組元素賦值
Erasedynarry
Dynarry(1,1)二1非法語(yǔ)句,出錯(cuò).漓卜中國(guó)藥科大學(xué)
U計(jì)算機(jī)教研室
VisualBasic
舉例'程序逐匕
OptionExplicit
OptionBase1
PrivateSubFonn_Click(:
DimiAsInteger,a'
ReDima(4)
Fori=1To4
a(i)=i如果省去Preserve會(huì)怎樣?
Printa(i);
Nexti
ReDimPreservea(6)
a(5)=5
a(6)=6
Fori=1To6
Printa(i);
Nexti
EndSub司藥科大學(xué)
茬機(jī)教研室
VisualBasic
5.4控件數(shù)組'程序:
5.4.1基本概念
5.4.2建立控件數(shù)組
5.4.3使用控件數(shù)組
ALoad語(yǔ)句
AUnload語(yǔ)句
.漓卜中國(guó)藥科大學(xué)
34
以計(jì)算機(jī)教研室
VisualBasic
5.4.1基本概念'程序:
——由一組具有相同名稱的同類型控件組成。
---控件數(shù)組中的每個(gè)控件都由其下標(biāo)屬性-皿4箜標(biāo)識(shí)。
即:控件數(shù)組名(下標(biāo))
如,Optionl(O)、Optionl⑴、Optionl(2)
——控件數(shù)組中的每一個(gè)控件元素可有自己獨(dú)立的屬性設(shè)置,
但共享同一個(gè)事件過(guò)程,即無(wú)論是控件數(shù)組中的哪一個(gè)控件
響應(yīng)用戶的事件,都觸發(fā)同一事件過(guò)程,但相對(duì)于簡(jiǎn)單控件,
事件過(guò)程增加了Index參數(shù),由其指明具體響應(yīng)的控件。
例如:PrivateSubOption1_Click(lndexAsInteger)
■■■
EndSub
注意:控件數(shù)組的第一個(gè)下標(biāo)為0
優(yōu)點(diǎn):使用控件數(shù)組編寫代碼簡(jiǎn)單、易于維護(hù)
健去中國(guó)藥科大學(xué)
35
a計(jì)算機(jī)教研室
VisualBasic
w4-z建立控件數(shù)組'程序:
L創(chuàng)建同名控件
b在窗體中放置一組控件(同類型),確定某個(gè)控件為第一
個(gè)元素(可將其Index屬性設(shè)為0)。
e按順序?qū)⑵渌丶腘ame(名稱)屬性改成第一個(gè)控件
名稱(同名)。
b系統(tǒng)提示“已有一個(gè)控件為***,創(chuàng)建一個(gè)控件數(shù)組
嗎?”,若第一個(gè)控件的Index屬性已設(shè)為0,則不出現(xiàn)提示。
.漓卜中國(guó)藥科大學(xué)
36
U計(jì)算機(jī)教研室
VisualBasic
'程序:
2.復(fù)制現(xiàn)存控件
今在窗體中放置一個(gè)控件,設(shè)置好相應(yīng)的屬性
今選定該控件,單擊“復(fù)制”按鈕
今單擊“粘貼”按鈕
今系統(tǒng)提示”已有一個(gè)控件為***,創(chuàng)建一仝控解海嗎?“
今單擊“是"按鈕件Index
屬性,7
系統(tǒng)給每個(gè)數(shù)組控件標(biāo)明唯二的索引號(hào),
即為該對(duì)象的Index屬性(下標(biāo))。"麝端
例如:在窗體上有一個(gè)包含四個(gè)命令按紐的控件數(shù)組。這4個(gè)命令
按紐的名稱相同,均為Commandl,系統(tǒng)通過(guò)下標(biāo)一Index屬性,
區(qū)別4個(gè)不同的控件:Commandl(O),Commandl(l),
Commandl(2),Commandl(3)。
這個(gè)由4個(gè)按紐組成的命令按紐控件數(shù)組,具有相同的事件過(guò)
程,由參數(shù)Index決定,到底是哪個(gè)按紐被觸發(fā)。在事件過(guò)程中,
應(yīng)根據(jù)Index參數(shù),分別進(jìn)行不同的操作。
PrivateSubCommandl_Click(Indexasinteger)
Selectcaseindex
Case0
???
Case1
???
Endselect
EndSub
38「國(guó)藥科大學(xué)
計(jì)算機(jī)教研室
VisualBasic
5.4.3使用控件數(shù)組'程序:
LOAD語(yǔ)句
[格式]loadobject(index)
[功能]在程序運(yùn)行時(shí),向控件數(shù)組中添加控件。
UNLOAD語(yǔ)句
[格式]unloadobject(index)
[功能]在程序運(yùn)行時(shí),刪除控件數(shù)組中用Load產(chǎn)生的對(duì)
象數(shù)組元素。____-—
注意上二明白了嗎?還是飛
-index可以跳序;上機(jī)驗(yàn)證一下吧!
-UNLOAD語(yǔ)句只能刪除由L0A?一
-由LOAD語(yǔ)句添加的控件,其Visible屬性為false,所以
要在程序中設(shè)置True,才能在窗體上可見(jiàn);
-由LOAD語(yǔ)句添加的控件,其大小、位置與原控件一樣,
隱藏在其背后,所以要重新破置它的Top等屬性;⑥*疆藉
isualBasic
演示裁判程序設(shè)火
京東中國(guó)藥科大學(xué)
40
U計(jì)算機(jī)教研室
PrivateSubCommandl_Click()
DimiAsInteger,scoreAsSingle
Fori=0To5
PrivateSubTextlKeyPress(IndexAsInteger,KeyAsciiAsInteger)
IfKeyAscii=13Then
IfIndex=5Then
Commandl.SetFocus
Else
Textl(Index+l).SetFocus
EndIf
EndIf
EndSubu
VisualBasic
5.5程序示例'程序:
a選擇法排序
?冒泡法排序
a順序查找
?二分查找
京東中國(guó)藥科大學(xué)
42學(xué)計(jì)算機(jī)教研室
VisualBasic
例5-2:選擇法排序。(設(shè)從大到小排序'程序山J
[分析]:先將N個(gè)數(shù)存入數(shù)組A(N),
第一輪比較,修A(l)與A(2)比較,若A(l)vA(2),則交換A(l)
和A(2)的值;再招1A(1)與A(3)、A(4)…A(N)依次按以上規(guī)則
比較和交換,第一輪比較完畢,N個(gè)數(shù)中最支數(shù)存放到A(l)中
第二輪比較,^A(2)與A(3)、A(4)…A(N)依次比較,結(jié)束后,
N個(gè)數(shù)中第二大數(shù)存放到A(2)日;
第三輪比較,將A(3)與A(4)、A(5)...A(N)依次
比較,完畢后,N個(gè)數(shù)中第三大數(shù)存放到A(3)中;
???
第N-1輪比較,A(N-l)與A(N)進(jìn)行比較;完畢后,A(N?1)中
存放第二小的數(shù),顯然A(N)中是最小的數(shù)。
這樣,數(shù)組A中的N個(gè)元素經(jīng)過(guò)N-1輪掃視,按從大到小的順
序排列。
43/密鼠中國(guó)藥科大學(xué)
母計(jì)算機(jī)教研室
[實(shí)例說(shuō)明]:設(shè)無(wú)序數(shù)據(jù)為1、2、3、4、5、6,共有6個(gè)元
素,進(jìn)行6-1=5輪比較。5次比較情況如下:
第一輪比較:
第二輪比較:第三車
A(l)a(2)a(3)a(4)a(5)a(6);比較:
6、2、1、3、4、5
213456vr6、5、2、1、3、4
3124566、3、1、2、4、5
6、5、3、1、2、4
412356、4、1、2、3、5
-------------6
5123466、5、4、1、2、3
6、5、1、2、3、4
6^1~2-5
第五輪比較:
6、5、4、3、2、1
44益中國(guó)藥科大學(xué)
b計(jì)算機(jī)教研室
VisualBasic
[選擇排序程序]'程序:
i既控制外層循環(huán)執(zhí)行的次數(shù),
又可作為被比較數(shù)的下標(biāo)
ForN-l^-j既控制內(nèi)層循環(huán)執(zhí)行的次
Forj^Hl^toN數(shù),又可作為比較數(shù)的下標(biāo)
IfA(i)<AQ)Then
TEMP=A(i)
A(i尸A(j)
Ag)=TEMP
EndIf
Nextj
Nexti
,裕品中國(guó)藥科大學(xué)
45
以計(jì)算機(jī)教研室
VisualBasic
直接排序法'程序:
?選擇排序法的改進(jìn),每輪掃視,只交換一次數(shù)據(jù)——A(I)
僅與其后序元素中最大的元素交換。
?實(shí)現(xiàn):增設(shè)一個(gè)point變量,記錄本輪最大元素的下標(biāo)。
在每輪掃視開(kāi)始時(shí),先設(shè)初值為I,然后讓A(POINT)依
次與其后元素比較,當(dāng)比某元素小時(shí),將該大元素的下標(biāo)
賦給POINT,即讓A(POINT)指向本輪大的元素。
?當(dāng)每輪掃視結(jié)束后,比較I與POINT的值,若不同,說(shuō)明
A(I)中不是本輪的最大元素,則交換A(I)與A
(POINT)中的元素,否則不交換。
46針》中國(guó)藥科大學(xué)
42計(jì)算機(jī)教研室
[直接排序程序]VisualBasic
'程序:
Fori=ltoN-l
point=i
Forj=i+1tuN
IfA(point)vA(j)Thenpuint=j
Nextj
Ifiv>pointthen
TEMP=A(i):A(i)=A(point):A(point)=TEMP
Endif
Nexti
慮.中國(guó)藥科大學(xué)
47
U計(jì)算機(jī)教研室
VisualBasic
例:冒泡法排序。(設(shè)從大到小排序)'程序:
[分析]:
第一輪比較:將A(1)和A(2)比較,若A(1)vA(2)
則交換這兩個(gè)數(shù)組元素的值,否則不交換;然后再用A(2)和
A(3)比較,處理方法相同;以此類推,直到A(N-1)和
A(N)比較后,這時(shí)A(N)中就存放了N個(gè)數(shù)中最小的數(shù)。
第二輪比較:將A⑴和A(2)、A(2)和A(3),........,
A(N-2)和A(N-l)依次比較,處理方法和第一輪相同,這
一輪比較結(jié)束后,A(N-1)中就存放了N個(gè)數(shù)中第二小的數(shù)。
第N-1輪比較:將A(1)和A(2)進(jìn)行比較,處理同上,
則A(2)中存放了第二大的數(shù),A(1)中顯然是最大的數(shù)。
這樣,經(jīng)過(guò)N-1輪掃視,數(shù)組A中的N個(gè)元素按從大到小的順
序排列。
48「瀟工中國(guó)藥科大學(xué)
垓計(jì)算機(jī)教研室
[實(shí)例說(shuō)明]:設(shè)無(wú)序數(shù)據(jù)為1、2、3、4、5、6,共有6
個(gè)元素,進(jìn)行6-1=5輪掃視。5次掃視情況如下:
第一輪掃視:
第二輪掃視:第三輪掃視:
、3、4、5、6
3、2、4、5、6、
2、、4、5、64、3、5、6、2、1
3、4、2、5、6、
2、3、4、1、5、6
vr4、5、3、6、2、1
2、3、4、5、1、63、4、5、2、6、
4、5、6、3、2、1
2、3、4、5、6、13、4、5、6、2、--------"
--------------------------
第四輪掃視:第五軌掃視:
^5.4、3、2、1
5、4、6、3、2、1
5、6、4、3、2、1
____
49中國(guó)藥科大學(xué)
計(jì)算機(jī)教研室
VisualBasic
冒泡排序程序'程序:
For14也一紅------i只控^夕謖循環(huán)執(zhí)紅的次數(shù)
Fori=l_j既控制內(nèi)層循環(huán)執(zhí)行的次
一數(shù),又可作為比較數(shù)的下標(biāo)
Ifa(j)va(j+l)Then
TEMP=A0):A(j尸A(j+l):A(j+l)=TEMP
EndIf
Nextj
Nexti
慮.中國(guó)藥科大學(xué)
50
U計(jì)算機(jī)教研室
VisualBasic
改進(jìn)的冒泡排序'程序:
Ub=Ubound(a)
Switch=True
DoWhileswitch
switch=false
Ub=ub-1
Forj=ltoub
Ifa(j)va(j+l)Then
swtich=true
TEMP=A(j):Ag)=AO+l):A(j+l)=TEMP
EndIf
Nextj
NextI
----------------------------------------------31---------------------------------二川一,…I大學(xué)
學(xué)計(jì)算機(jī)教研室
選擇法:逐個(gè)比較,逆序交換
冒泡法:兩兩比較,逆序交換
XZ
要數(shù)
-例
PrivateSubForm_Click()
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新概念二家長(zhǎng)會(huì)
- 陌陌藝人簽約合同模板
- 采購(gòu)業(yè)務(wù)服務(wù)合同模板
- 退休財(cái)務(wù)勞務(wù)合同模板
- 讓我們蕩起雙槳課件
- 油脂企業(yè)租賃合同模板
- 貸款定金合同模板
- 私人租房陰陽(yáng)合同模板
- 合作合同和采購(gòu)合同模板
- 飯店合伙店鋪合同模板
- YY/T 0612-2022一次性使用人體動(dòng)脈血樣采集器(動(dòng)脈血?dú)忉?
- JJG 693-2011可燃?xì)怏w檢測(cè)報(bào)警器
- GB/T 9441-2009球墨鑄鐵金相檢驗(yàn)
- 牦牛胴體、分割肉示意表
- 國(guó)學(xué)第九冊(cè)第四課《道育萬(wàn)物》第四課時(shí)優(yōu)秀教案
- 時(shí)代與變革-為人生而藝術(shù)(第一課時(shí)) 課件- 高中美術(shù)人美版(2019)美術(shù)鑒賞
- 《膜分離技術(shù)》教學(xué)課件
- 法人單位基礎(chǔ)信息庫(kù)設(shè)計(jì)方案
- 高級(jí)會(huì)計(jì)師評(píng)審個(gè)人業(yè)績(jī)報(bào)告(精選9篇)
- 海康威視系列說(shuō)明書(shū)-ivms-4200客戶端用戶手冊(cè)
- 中石油公司資質(zhì)管理相關(guān)規(guī)定及工作要求課件
評(píng)論
0/150
提交評(píng)論