VB5 數(shù)組教學(xué)課件_第1頁(yè)
VB5 數(shù)組教學(xué)課件_第2頁(yè)
VB5 數(shù)組教學(xué)課件_第3頁(yè)
VB5 數(shù)組教學(xué)課件_第4頁(yè)
VB5 數(shù)組教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩56頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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

Print

Nexti

Print

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

Print

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

Print

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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論