VB8 過程教學(xué)課件_第1頁
VB8 過程教學(xué)課件_第2頁
VB8 過程教學(xué)課件_第3頁
VB8 過程教學(xué)課件_第4頁
VB8 過程教學(xué)課件_第5頁
已閱讀5頁,還剩89頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

VisualBasic

'程序選id

第八章過程

武小川xiaochuan_wu@163.com

中國藥科大學(xué)計算機教研室

VisualBasic

教學(xué)要求'程序:

今掌握函數(shù)和過程的使用

今掌握參數(shù)的傳遞—按值傳遞和按地址傳遞

“掌握變量的作用域(局部變量和全局變量)

今掌握遞歸算法

今會創(chuàng)建多窗體應(yīng)用程序

2中國藥科大學(xué)

計算機教研室

VisualBasic

教學(xué)內(nèi)容'程序選id

8.1Sub過程

8.2Function過程

8.3過程調(diào)用

8.4參數(shù)傳遞

8.5遞歸過程

8.6變量的作用域

8.7程序示例

8.8多窗體程序設(shè)計

.念.中國藥科大學(xué)

3儂計算機教研室

模塊化程序設(shè)計VisualBasic

今基本思想:將一個大的程序按功能分割成一些小模塊

”特點:

A各模塊相對獨立、功能單一、結(jié)構(gòu)清晰、接口簡單

?控制了程序設(shè)計的復(fù)雜性

A提高元件的可靠性

?縮短開發(fā)周期

A避免程序開發(fā)的重復(fù)勞動

?易于維護和功能擴充

今開發(fā)方法:自上向下,逐步分解,分而治之

京東中國藥科大學(xué)

4儂計算機教研室

VisualBasic

VB中過程的分類'程序選id

京東中國藥科大學(xué)

y計算機教研室

VisualBasic

8.1Sub過程'程序:

8.1.1事件過程

?當對象識別某事件后,進行的操作處理——以代碼的形式存

儲在事件過程中。

?分類:

A窗體事件過程

A控件事件過程

京東中國藥科大學(xué)

學(xué)計算機教研室

VisualBasic

1定義事件過程'程序:

?[形式]:

PrivateSubForm_事件名([參數(shù)列表])

[局部變量木常數(shù)聲明]完全由系統(tǒng)

決定,用戶

語句塊___________________無權(quán)修改

EndSub窗體的事件過程名

中不使用其具體名

稱,而固定用Form

窗體事件固定有“Private”

關(guān)鍵字,說明它是模塊級的

,裕品中國藥科大學(xué)

7

U計算機教研室

VisualBasic

2窗體的Initialize、Load、Activate、Gotfocus事中'程序山J

?Initialize(初始化)事件——配置窗體時觸發(fā)

?Load(加載)事件——窗體裝入內(nèi)存時觸發(fā)

?Activate(激活)事件——窗體被激活時觸發(fā)

?Gotfocus事件(得到焦點)事件——窗體成為當前焦點時觸發(fā)

“窗體上無可視控件時,觸發(fā)窗體的Gotfocus事件;

“窗體上有可視控件時,觸發(fā)控件的Gotfocus事件;

?執(zhí)行次序:

Initialize-?Load-?Activate-?Gotfocus

8循相中國藥科大學(xué)

以計算機教研室

VisualBasic

注意'程序:

?窗體的Initialize、Load事件發(fā)生在窗體被顯示之前,其中可

放置系統(tǒng)初始化命令,但其中語句有所限制;

?窗體加載后,只要不被卸載,就不會再執(zhí)行Initialize、Load

事件,但Activate事件會多次發(fā)生;

?當訪問另一窗體上的“非可視”數(shù)據(jù)或調(diào)用其中定義的全局過

程時,只會觸發(fā)該窗體的Initialize事件,而Load事件不觸發(fā);

?當訪問另一窗體上的“可視”數(shù)據(jù)時,會同時觸發(fā)該窗體的

Initialize和Load事件。

.漓卜中國藥科大學(xué)

9

U計算機教研室

VisualBasic

3定義控件的事件過程'程序:

?[一般形式]:

PrivateSub控件名一事件名([參數(shù)列表])

[局部變量和常數(shù)聲明]由系統(tǒng)決定,

語句塊用戶無權(quán)修改

EndSub

控件的事件過程名中必須

使用其具體名稱

控件事件固定有“Private”

關(guān)鍵字,說明它是模塊級的

ro,裕品中國藥科大學(xué)

y計算機教研室

VisualBasic

4建立事件過程'程序:

?打開“代碼編輯器”窗口;

?先選定某對象,再選定事件過程;

?編輯代碼;FJ■工程1-Forml(Code)IT5網(wǎng)

Load三]

Activate

Click

DblClick

Deactivate

DragDrop

Di-agOver

GotFocus

Initialize

KeyDown

KeyPress

KeyUp

對象LinkClose過程

EndSub

VisualBasic

PrivateSubCommand1Click。'程序:

使用函數(shù)DimmAsInteger,nAsInteger

DimiAsInteger,kAsInteger

DimtAsLong,sAsLong

函數(shù)調(diào)用(三次)n=Val(Textl.Text)

m=Val(Text2.Text)

~~~fact(n)/(fact(m)*fact(n-m))

Text3.Text=Str(s)

<、EndSub

函數(shù)定義PrivateFunctionfact(kAsInteger)AsLong

計算k!DimiAsInteger

fact=1

Fori=1Tok

fact=fact*i

Nexti

EndFunction科大學(xué)

0計算機教研室

過程的引入VisualBasic

在以下兩種情況下,經(jīng)常使用自定義過程:

(1)應(yīng)用程序中出現(xiàn)較頻繁的處理,僅僅是每次處理的數(shù)據(jù)不

同而已;

(2)程序中比較復(fù)雜的算法,獨立出來,增強程序的可讀性;

“過程”的引入使得整個程序的結(jié)構(gòu)更加清晰,模塊化更強。

,裕品中國藥科大學(xué)

14

以計算機教研室

VisualBasic

8.1.2通用過程'程序:

?完成某一特定功能的程序段

——通用過程(自定義)

?必須顯式調(diào)用方可執(zhí)行;

?分為:

今公有過程(Public)

今私有過程(Private)

京東中國藥科大學(xué)

15學(xué)計算機教研室

VisualBasic

1通用Sub過程的定義'程序:

。[一般形式]:

[PrivateIPublic][static]Sub<過程名>([<參數(shù)列表>])

<過程體)

EndSub

?:?[說明]:

(1)以Sub開頭,EndSub結(jié)束,,中間是過程體——包括變量聲明

和語句塊;

(2)以Private為前綴的過程是模塊級的,以Public為前綴的過程

是應(yīng)用程序級的,缺省默認是Public;

(3)Static選項說明過程中的局部變量是靜態(tài)變量;

(4)過程名的命名規(guī)則和變量名相同,在同一個模塊中,過程名

京東中國藥科大學(xué)

必須是唯一的;16學(xué)計算機教研室

VisualBasic

說明(續(xù))'程序:

(5)參數(shù)列表中的參數(shù)稱為形式參數(shù),可以沒有,但無參數(shù)時圓

括號不能省略;有多個參數(shù)時,參數(shù)之間用逗號間隔;

(6)參數(shù)說明格式:

[Optional][ByVaiIByRef]<變量名>[()][As<數(shù)據(jù)類型>]

a)若參數(shù)是數(shù)組,則在變量名后面加一對圓括號,但無維界定義

b)ByVai:指明參藪傳遞方式是傳殖;

c)ByRef:指明參數(shù)傳遞方式是傳地址,為缺省值;

d)若參數(shù)是字符型的,必須是不定長字符串;

e)Optional:參數(shù)是可選的,必須定義在必選參數(shù)后面。

(7)當過程調(diào)用結(jié)束,即執(zhí)行到EndSub語句,系統(tǒng)自動返回調(diào)用

程序的調(diào)用語句處,執(zhí)行調(diào)用語句的下一條語句;

(8)過程不能嵌套定義,但可嵌套調(diào)用;

(9)ExitSub語句的功能是提前退出過程調(diào)用,返回調(diào)用語句。

17臨'中國藥科大學(xué)

母計算機教研室

VisualBasic

'程序:

傷J:PrivateSubExchange(xAsInteger,yAsInteger)

DimTempAsInteger

Temp=x:x=y:y=Temp

EndSub

該通用過程實現(xiàn)交換功能,包含兩

個參數(shù),均是ByRef形式的參數(shù)。

,裕品中國藥科大學(xué)

18

以計算機教研室

VisualBasic

2建立通用Sub過程F'程序:

方法一:在“代碼編輯窗口”的“通用”中自行輸入;

方法二:進入代碼編輯器窗口,執(zhí)行“工具”菜單的“添加

過程”,在“添加過程”對話框中輸入定義過程的名稱、類型

和范圍后單擊“確定”按鈕,系統(tǒng)會自動在代碼窗口添加自定

義過程的框架。

應(yīng).中國藥科大學(xué)

U計算機教研室

8.2Function過程定義VisualBasic

Function過程的特點是返回一個值,因此我們通常也稱之

為自定義函數(shù)。通常我們利用Function過程得到一個數(shù)值或一

個字符串或一個邏輯值。

函數(shù)返回值的類型

[格式]:\

[Private|Public]Function<函數(shù)名>([參數(shù)列表])LAs<數(shù)

據(jù)類型>]

《函數(shù)體>

EndFunction函數(shù)名=表達式

,念.中國藥科大學(xué)

20

U計算機教研室

VisualBasic

說明'程序:

(1)以Function開頭,以EndFunction結(jié)束,中間是函數(shù)體;

(2)函數(shù)名命名規(guī)則、參數(shù)列表的表示都和Sub過程相同;

(3)As數(shù)據(jù)類型:函數(shù)過程修由函數(shù)名返回一個值,值的類型

由[As數(shù)據(jù)類型]定義;★

(4)函數(shù)體中一定要有對函數(shù)名賦值的語句——函數(shù)名=表達式,

否則返回相應(yīng)類型的初值;★(見例8T)

(5)函數(shù)體內(nèi)可有ExitFunction語句---無條件退出函數(shù)過程,

返回主程序。

(6)Function過程不能嵌套定義,但可嵌套調(diào)用。

.漓卜中國藥科大學(xué)

21

U計算機教研室

VisualBasic

'程序:

例:定義函數(shù):f(x)=3x3—2x2+6x—1

函數(shù)返回值的類型

PrivateFunctionf(ByvalxAsInteger)AsInteger

f=3*x'3?2*xA2+6*x?l__________

EndFunction函數(shù)名=表達式

22商中國藥科大學(xué)

垓計算機教研室

傳值的參數(shù)E

例8?1:編寫一個求n!的函數(shù)。

23中國藥科大學(xué)

計算機教研室

VisualBasic

8.3過程調(diào)用'程序:

8.3.1事件過程的調(diào)用

事件過程由一個發(fā)生在VB中的事件來自動調(diào)

用或由同一個模塊中的其他過程顯式調(diào)用。

例見P163

總之,事件過程可以由發(fā)生的事件自動激活以響

應(yīng)系統(tǒng)或用戶的活動,也可以被其他過程調(diào)用而

激活。

.漓卜中國藥科大學(xué)

24

U計算機教研室

VisualBasic

8.3.2Sub過程調(diào)用'程序:

必須在事件過程或其它通用過程中顯示調(diào)用。

PrivateSubsubl()PrivateSubsub2(形參表)

......I①■③

CallSub2(實參表口過程語句

■"■"I5I■■的

EndSub1-EndSub

主調(diào)程序被調(diào)過程

注意:一個過程或函數(shù)可以被調(diào)用多次

「中國藥科大學(xué)

25

?計算機教研室

VisualBasic

'程序:

[格式一]:Call<過程名>[(<實參表))]

[格式二]:<過程名>[<實參表>]

[功能]:對已定義的過程進行調(diào)用。

如:

1.CallFact(x)

2.Factx

P165

26(?!褐袊幙拼髮W(xué)

學(xué)計算機教研室

VisualBasic

說明'程序:

(1)調(diào)用的過程必須是已經(jīng)定義的,否則系統(tǒng)會出現(xiàn)“子程

序或函數(shù)未定義”的信息提示;

(2)實在參數(shù)可以是常量、變量或表達式;

(3)實在參數(shù)的數(shù)目及類型要和定義時必選參數(shù)保持一致,

否則系統(tǒng)會出現(xiàn)“參數(shù)不可選”的信息提示,參數(shù)之間用逗號

間隔;

(4)若子程序沒有參數(shù),則格式一中的括號可以省略;

(5)格式一和格式二的區(qū)別在于:格式二的參數(shù)表無須括號,

而是和過程名之間用空格隔開;

27中國藥科大學(xué)

計算機教研室

VisualBasic

'程序選id

例8-2試編寫一個找出任意一個正整數(shù)的因子的程序

P165

應(yīng).中國藥科大學(xué)

28

U計算機教研室

產(chǎn)序毀學(xué)程匿r

OptionExplicit

PrivateSubCommandl_Click()求因子,該子程序定義

DimintaAsInteger,stAsString

了兩個參數(shù),來傳遞求

inta=Textl

Callfactorfinta^st)因子實現(xiàn)前的原始數(shù)據(jù)

Text2=st過程factorI和返回功能實現(xiàn)后的結(jié)

EndSub,果數(shù)據(jù);

PrivateSubfactor/ByValnAsInteger,iAsString)

DimiAsInteger定義過程

Fori=1Ton-1

IfnModi=0Thens=s&Str(i)

Nexti

EndSub

優(yōu)點:程序即Sub過程的使用不僅可以縮短程序的長度,還能

夠使程序的結(jié)構(gòu)更加清楚。

VisualBasic

'程序:

例:定義一個通用過程用以求一維數(shù)組中的最小值

PrivateSubvalue(a()AsInteger,minAsInteger)

DimiAsInteger

min=a(l)

Fori=2ToUBound(a)

Ifa(i)<minThenmin=a(i)

Nexti

EndSub

,裕云中國藥科大學(xué)

30

以計算機教研室

VisualBasic

8.3.3調(diào)用Function過程'程序:

[格式]:V函數(shù)名〉([實參表])

?:?[功能]:返回一個函數(shù)值。

?:?[說明]:

(1)一般情況下,函數(shù)的調(diào)用出現(xiàn)在賦值語句中,并且在賦值

號的右側(cè);

(2)若函數(shù)沒有參數(shù),函數(shù)名后的括號不能省略;

(3)雖然VB允許象調(diào)用Sub過程那樣調(diào)用Function過程,但這樣

調(diào)用時系統(tǒng)不返回函數(shù)值,建議大家不要使用這種調(diào)用方法。

例Callfact(x)

如:FactX這兩種方法均放棄函數(shù)的返回值

31/密鼠中國藥科大學(xué)

a計算機教研室

VisualBasic

例:用函數(shù)實現(xiàn)求一維數(shù)組中的最小值,對比前例(Sub)

PrivateFunctionmin(a()AsInteger)AsInteger

DimiAsInteger

min=a(l)函數(shù)類型

Fori=2ToUBound(a)

Ifa(i)<minThenmin=a(i)

函數(shù)名=表達式

Nexti

EndSub

應(yīng).中國藥科大學(xué)

32

母計算機教研室

VisualBasic

'程序:

例:定義函數(shù)用以判斷一個數(shù)是否是素數(shù)一.

PrivateFunctionPrime(NAsInteger)AsBoolean

DimiAsInteger

Prime=False

可省略,因Prime的初始值就是false

Fori=2ToN-l

IfNModi=0ThenExitFor

Nexti

Ifi=NthenPrime=True

函數(shù)名=表達式

EndFunction

「中國藥科大學(xué)

33

?計算機教研室

[例]:

VisualBasic

例8-3:利用函數(shù)過程編寫一個求兩個正整數(shù)的最大公約數(shù)的程序

P166

PrivateFunctionGcd(ByValAAsInteger,ByVaiBAsInteger)AsInteger

DimRAsInteger

R=AModB

DoWhileR<>0PrivateSubForm_Click(),上調(diào)過程

A=BDimNAsInteger,MAsInteger,GAsInteger

輸入

B=RN=InputBoxC'N")

M=InputBoxC'輸入M")

R=AModB

G=Gcd(N,M)

LoopPrintN;"和";M;”的最大公約數(shù)是:";G

Gcd=BEndSub

EndFunction

35,?滴除中國藥科大學(xué)

母計算機教研室

VisualBasic

8.3.4調(diào)用其他模塊中的過程_________'程序:

1、調(diào)用其他窗體模塊中的公有過程

[格式]:Call〈窗體名>.<過程名>[(〈實在參數(shù)表>)]

[功能]:調(diào)用其他窗體模塊中定義的公有過程。

PrivateSubForm_Click()在Form2

中調(diào)用

DimaAsInteger

a=10

PrintFurml.Fact(a)

EndSub

,裕品中國藥科大學(xué)

b計算機教研室

VisualBasic

2、調(diào)用標準模塊中的公有過程'程序:

[格式]:Call[<標準模塊名>.]<過程名>[(<實參表>)]

[功能]:調(diào)用其他標準模塊中定義的公有過程。

[說明]:

(a)若公有過程唯一,則直接調(diào)用,不加模塊名。

(b)若存在同名的公有過程,貝I:

A調(diào)用本模塊中過程:直接調(diào)用,不加模塊名

A調(diào)用其它模塊中過程:必須加模塊名。

(c)被調(diào)用的函數(shù)和過程必須是公有的;

(d)函數(shù)也可以這樣調(diào)用。

37循除中國藥科大學(xué)

以計算機教研室

VisualBasic

3.調(diào)用類模塊中的過程'程序:

?:?[格式]:^受哀)

dimdemoclassasnewclassl/

calldemoclass,clssub([實參表])]

?:?[注意]:

調(diào)用類模塊中的共有過程,須用該類的某一實例修飾過程。

,念.中國藥科大學(xué)

38

U計算機教研室

VisualBasic

8.4參數(shù)的傳遞'程序:

8.4.1形參和實參

①形參:

米過程定義時,在過程名后面的圓括號里的一系列變量;

*過程被調(diào)用執(zhí)行時,系統(tǒng)才給形參分配存儲空間;

*可以是除定長字符串外的任一簡單變量;

*可以是數(shù)組,變量名后接括號;

StAsString*3X

St()AsString^37

StAsString<

,念.中國藥科大學(xué)

39

U計算機教研室

VisualBasic

'程序:

?實參

米主調(diào)程序中,調(diào)用語句中,出現(xiàn)在過程名后面圓括號里的變

量,是實參,可以是常量、變量或表達式;

*過程調(diào)用傳遞參數(shù)時,實參按“位置”和形參結(jié)合;

*實參和形參,要求個數(shù)一樣,位置對應(yīng),類型一致,否則

會出錯;

*定長字符串變量可以作為實參;

健去中國藥科大學(xué)

40

計算機教研室

VisualBasic

參數(shù)結(jié)合P168'程序選id

形參實參

變量變量、常量、表達式、數(shù)組元素

數(shù)組數(shù)組

,裕品中國藥科大學(xué)

41

a計算機教研室

VisualBasic

舉例'程序:

VisualBasic

舉例:寫出下列程序執(zhí)行的結(jié)果'程序選id

PrivateSubExamSubf\asinteger,y^asinteger)

x=x+10:y=y-10

過程的先

EndSub后順序無

PrivateSubForm-click()

o

Dimxasinteger,yasinteger

x=10:y=100—

CallExamSub(y,x)--------------

調(diào)用子過程時,進行的實

Print“x=”;x;"y=”;y際操作是丫=丫+10雙=乂-10

EndSub

,裕品中國藥科大學(xué)

43

a計算機教研室

VisualBasic

8.4.2按值傳遞參數(shù)'程序:

[格式]:ByVaiv變量說明》

[傳遞方式]:

調(diào)用時,系統(tǒng)為形參分配一個臨時存儲單元,并修實參

的值存儲到該臨時單元中。

若在被調(diào)用的過程體中改變了形參的值,只是改變了臨時

存儲單元中的數(shù)據(jù),對實參的值無任何影響。

,裕品中國藥科大學(xué)

44

以計算機教研室

VisualBasic

[參數(shù)傳值傳遞]舉例'程序:

PrivateSubForm_Click()

DimMAsInteger,NAsInteger

M=15:N=20

CallValue_change(M,N)

Print,,M金;MJ,N=,,;N

EndSub

PrivateSubValue_change(ByValxAsInteger,ByVaiyAsInteger)

x=x+20

y=y+20

PrintnX=n;x,"Y=";y

EndSub

,念.中國藥科大學(xué)

45

b計算機教研室

傳值是單向的VisualBasic

'程序選id

實在參數(shù)

形式參數(shù)

調(diào)用時,實參將值傳遞給形參,兩者就無任何關(guān)聯(lián)。過

程中形參的值發(fā)生變化,對實參無任何影響。

扁中國藥科大學(xué)

y計算機教研室

VisualBasic

8?4?3按地址傳遞參數(shù)'程序:

[格式]:ByRefv變量說明,

[傳遞方式]:

系統(tǒng)在調(diào)用執(zhí)行過程時,為形參分配臨時存儲單元,并修實

參的內(nèi)存單元地址傳送給形參,存儲在臨時存儲單元中

在被調(diào)用的過程體中一切對形參的操作,都是直接對地址保

存在形參中的內(nèi)存單元中的數(shù)據(jù)進行的,而實參就是保存在此內(nèi)

存單元中的數(shù)據(jù),所以任何對形參的操作也就是對實參的操作;

按地址傳遞時,形式參數(shù)和實在參數(shù)共用同一“內(nèi)存單元”。

,裕品中國藥科大學(xué)

47

以計算機教研室

[參數(shù)傳址傳遞]舉例:(對比前例)VisualBasic

'程序選id

PrivateSubForm_Click()

DimMAsInteger,NAsInteger

M=15:N=20

CallValue(M9N)

PrintMM=M;M,nN=M;N

EndSub

PrivateSubValue(xAsInteger,yAsInteger)

x=x+20

y=y+20

PrintnX=n;x,nY=n;y

EndSub

應(yīng).中國藥科大學(xué)

48

U計算機教研室

傳地址是雙向的VisualBasic

'程序選id

實在參數(shù)

形式參數(shù)

,諭中國藥科大學(xué)

49

以計算機教研室

舉例:計算VisualBasic

5!+4!+3!+2!+1!P171'程序選id

PrivateSubForm_Click()

DimSumAsInteger,IAsInteger

ForI=5To1Step-1

Sum=Sum+Fact(I)M回昭

NextISum-120

PrintnSum=n;Sum

EndSub

PrivateFunctionFact(nAsInteger)AsInteger

Fact=1

DoWhilen>0修改:

Fact=Fact*n方法一:在形參n前加ByVai

n=n-1

Loop方法二:將調(diào)用語句中fact⑴改為

EndFunctionfact((i)):

1*4兒的C叨逮

注意VisualBasic

'程序:

參數(shù)有兩種傳遞方式:傳值(ByVai)和傳地址(ByRef)o

若調(diào)用時實參為常量或表達式,這兩種方式?jīng)]有區(qū)另山無論形

參定義的是按值傳遞還是按地址傳遞,系統(tǒng)都是按傳值方式傳遞

系統(tǒng)在調(diào)用時為形參分配一個臨時存儲單元,圈表達式的值

計算出來,存儲到該臨時單元;調(diào)用結(jié)束,系統(tǒng)收回臨時單元。

調(diào)用函數(shù)或過程時,將單個變量轉(zhuǎn)換成表達式的方法:將變

量放在一對括號中。如用Fact((I))的方式調(diào)用函數(shù),系統(tǒng)會按傳

值來處理。

中國藥科大學(xué)

51信.

U計算機教研室

注意VisualBasic

?按地址傳遞時,當實參是變量時,實參與形參必須類型完

全一致;

?按地址傳遞時,當實參是常量或表達式時,VB會自動進

行類型轉(zhuǎn)換,然后再傳遞相應(yīng)的值(即類型無須完全一致);

?在算術(shù)表達式中,函數(shù)的優(yōu)先級最高,若表達式中有函數(shù)

的實參,而函數(shù)的參數(shù)又是按地址傳遞的,則函數(shù)中有可能改變

了實參的值,即改變了表達式中變量的值,會引起混淆。

,念.中國藥科大學(xué)

52

U計算機教研室

VisualBasic

'程序:

PrivateSubForm_Click()

DimSAsSingle

S=125.5

CallConvert(⑸,”12笛.5”)

EndSub

實際的參數(shù)傳遞方式是按

Sing=Sing+23值傳遞,強制轉(zhuǎn)換后,

Print“Inx=";Inx,"Sing=";Singinx=126sing=12?5

EndSub

T產(chǎn)1

'計算

練習

4

(1)寫出程序運行結(jié)果(2)若改為按值傳遞,結(jié)果又如何?

DimpAsinteger,qAsinteger,rAsinteger

PrivateSubForm_Click()

p=2:q=3

Printp9q,r

Callpq(p,q,r)

Printp,q,r

EndSub

PrivateSubpq(xAsinteger,yAsinteger,zAsinteger)

x=p+q

y=p-q

z=x+y

EndSub

A學(xué)

練習VisualBasic

'程序選id

寫程序運行的結(jié)果-------

OptionExplicit*gorml|-||n||X

PrivateSubcommandl_click()

工二11產(chǎn)2K=43

DimiAsInteger,jAsInteger

DimkAsInteger

i=l:j=2

k=fun(i,fun(i,j))+i+j.笄逋

PrintnI=n;i;j;"K='';k

EndSub

PrivateFunctionfun(aAsInteger,ByVaibAsInteger)AsInteger

a=a+b

b=b+a

fun=a+b

EndFunction

VisualBasic

8.4.4數(shù)組參數(shù)'程序:

VB允許把數(shù)組作為形式參數(shù),聲明數(shù)組的格式是:

v數(shù)組名〉()Asv數(shù)據(jù)類型,

[注意]:

(1)數(shù)組參數(shù)只能按地址傳遞,即不能用ByVa]來4變飾數(shù)組參數(shù)

(2)定義數(shù)組參數(shù)時無須說明數(shù)組的維數(shù)和下標變化范圍;

(3)調(diào)用過程時,對應(yīng)的實在參數(shù)也必須是數(shù)組,但只需要數(shù)

組名,無須后跟括號,且數(shù)據(jù)類型也要一致。、

(4)在過程體或函數(shù)體中無須對數(shù)組參數(shù)再次說明;

(5)若實參是動態(tài)數(shù)組,在過程體或函數(shù)體中可以使用重定義

語句修改數(shù)組的維界;

京東中國藥科大學(xué)

57學(xué)計算機教研室

舉例VisualBasic

PrivateSubForm_Click()PrivateSubPrintArray(x()AsInteger)

Dima()AsInteger,iAsIntegerDimiAsInteger

DimnAsIntegerFori=LBound(x)ToUBound(x)

n=InputBox("請輸入數(shù)組的初始大小,Printx(i);

ReDima(n)Nexti

Fori=1TonPrint

a(i)=iEndSub

NextiPrivateSubArrayl(a()AsInteger)

CallPrintArray(a)DimmAsInteger,nAsInteger

CallArrayl(a)n=UBound(a)

CallPrintArray(a)m=InputBox—請輸入新大小”)

EndSubReDimPreservea(m)

輸入5和8,程序執(zhí)行結(jié)果為:DimiAsInteger

Fori=n+1Tom

a(i)=0

Nexti

EndSub

舉例:自定義一個將一維數(shù)組按從小到大排序的通用過程。

PrivateSubsort(a()AsInteger)PrivateSub

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論