學(xué)習(xí)vb課件第七章_第1頁
學(xué)習(xí)vb課件第七章_第2頁
學(xué)習(xí)vb課件第七章_第3頁
學(xué)習(xí)vb課件第七章_第4頁
學(xué)習(xí)vb課件第七章_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章過程7.1Sub過程

7.1.1事件過程與通用過程7.1.2通用過程的創(chuàng)建

7.1.3通用過程的調(diào)用7.2Function過程7.2.1Function過程的定義7.2.2Function過程的調(diào)用7.2.3查看過程

7.3

向過程傳遞參數(shù)7.3.1形式參數(shù)與實(shí)際參數(shù)7.3.2按值傳遞與按地址傳遞

7.3.3使用參數(shù)

7.3.4傳遞數(shù)組

7.4

過程的嵌套與遞歸調(diào)用7.4.1過程的嵌套

7.4.2過程的遞歸

習(xí)題七

7.1Sub過程7.1.1事件過程與通用過程1.事件過程編寫事件過程代碼應(yīng)注意以下幾點(diǎn):

(1)事件過程的命名要符合下列要求。=

控件的事件過程名由控件的(在Name屬性中規(guī)定的)實(shí)際名字、下劃線“_”和事件名組合起來構(gòu)成。例如,如果希望在單擊了一個(gè)名為cmdPlay的命令按鈕后,這個(gè)按鈕會調(diào)用單擊事件過程,則要使用cmdPlay_Click過程名。=

窗體的事件過程名由單詞“Form”、下劃線“_”和事件名組合起來構(gòu)成。例如,如果希望在單擊窗體后窗體會調(diào)用單擊事件,則要使用Form_Click過程名。MDI窗體的事件過程名由詞匯“MDIForm”、下劃線“_”和事件名組合起來構(gòu)成。(2)控件事件過程的語法為PrivateSub〈控件名〉_〈事件名〉([〈形參表〉])[〈語句組〉]EndSub(3)窗體事件過程的語法為PrivateSubForm_〈事件名〉([〈形參表〉])[〈語句組〉]EndSub7.1.2通用過程的創(chuàng)建1.在“代碼”編輯窗口中輸入在“代碼”編輯窗口中,把光標(biāo)定位在已有過程的外面。然后按如下格式輸入通用過程:[Private|Public][Static]Sub〈過程名〉([〈形參表〉])[〈語句列〉][ExitSub][〈語句列〉]EndSub2.使用“添加過程”對話框使用“添加過程”對話框建立過程的方法為

(1)打開要添加過程的代碼編輯窗口。

(2)執(zhí)行“工具”菜單中的“添加過程”命令,打開“添加過程”對話框。

(3)在“名稱”文本框中輸入過程名。從“類型”組中選擇過程類型。從“范圍”組中選擇范圍,相當(dāng)于使用Public或Private關(guān)鍵字。

(4)單擊“確定”按鈕。7.1.3通用過程的調(diào)用調(diào)用Sub過程有兩種方法:=

使用Call語句:Call〈過程名〉([〈實(shí)參表〉])=

直接使用過程名:〈過程名〉[〈實(shí)參表〉]【例7-1】在一個(gè)窗口中包含3個(gè)命令按鈕,當(dāng)用戶單擊其中一個(gè)時(shí),要求其他個(gè)別按鈕不能使用,如圖7-2所示。

單擊Command1后單擊Command3后單擊Command2后圖7-23個(gè)按鈕雙擊窗體的空白區(qū),打開代碼編輯窗口。

(2)編寫通用過程代碼:PublicSubButton_Manage(ButtomAsObject)SelectCaseButtomCaseCommand1Command2.Enabled=FalseCaseCommand2Command1.Enabled=FalseCaseCommand3Command1.Enabled=TrueCommand2.Enabled=TrueEndSelectEndSub(3)運(yùn)行工程?!纠?-2】計(jì)算階乘5!、6!、8!,以及階乘的和5!+6!+8!(如圖7-6所示)。

圖7-6計(jì)算階乘以及階乘的和

應(yīng)用程序用戶界面的建立與對象屬性的設(shè)置參見圖7-6,下面給出通用過程及事件過程代碼:

fact通用子過程為Subfact(mAsInteger,totalAsLong)'計(jì)算階乘子過程

DimiAsIntegertotal=1Fori=1Tomtotal=total*iNextiEndSub

命令按鈕組的Click事件代碼為PrivateSubCommand1_Click(IndexAsInteger)DimaAsInteger,bAsInteger,cAsInteger,sAsLong,totAsLongn=IndexSelectCasenCase0a=5Callfact(a,tot)Label1.Caption=a&"!="&totCase1a=6Callfact(a,tot)Label1.Caption=a&"!="&totCase2a=8Callfact(a,tot)Label1.Caption=a&"!="&totCase3a=5:b=6:c=8Callfact(a,tot)s=totCallfact(b,tot)s=s+totCallfact(c,tot)s=s+totLabel1.Caption=a&"!+"&b&"!+"&c&"!="&sEndSelectEndSub7.2Function過程7.2.1Function過程的定義Function過程的語法是[Private|Public][Static]Function〈函數(shù)名〉([〈形參表〉])[As〈類型〉][〈語句列〉][〈函數(shù)名〉=〈表達(dá)式〉][ExitFunction][〈語句列〉][〈函數(shù)名〉=〈表達(dá)式〉]EndFunction【例7-6】求3到10的階乘之和。下面給出命令按鈕的Click事件代碼:PrivateSubCommand1_Click()DimsumAsLong,iAsIntegerFori=3To10sum=sum+fact(i)NextiLabel2.Caption=sumEndSub圖7-7求3到10的階乘之和7.2.3查看過程1.查看當(dāng)前模塊中的過程2.查看其他模塊中的過程7.3向過程傳遞參數(shù)7.3.1形式參數(shù)與實(shí)際參數(shù)1.形式參數(shù)2.實(shí)際參數(shù)7.3.2按值傳遞與按地址傳遞

1.按地址傳遞參數(shù)【例7-8】利用【例7-7】中的Function過程,求任意兩數(shù)的最大公約數(shù)。應(yīng)用程序用戶界面的建立與對象屬性的設(shè)置參見圖7-9,圖7-9求2個(gè)整數(shù)的最大公約數(shù)下面給出命令按鈕的事件代碼:PrivateSubCommand1_Click()DimxAsLong,yAsLongtemp=InputBox("請輸入第1個(gè)整數(shù):")x=Val(temp)temp=InputBox("請輸入第2個(gè)整數(shù):")y=Val(temp)Ifx*y=0ThenExitSubLabel1.Caption=x&","&y&"的最大公約數(shù)是:"&Str(Hcf(x,y))Label2.Caption=x&","&y&"的最大公約數(shù)是:"&Str(Hcf(x,y))EndSub2.按值傳遞參數(shù)【例7-9】在例7-8中使用傳值調(diào)用Function過程,求兩個(gè)整數(shù)的最大公約數(shù)和最小公倍數(shù)。下面給出命令按鈕的事件代碼:PrivateSubCommand1_Click()DimmAsLong,nAsLongtemp=InputBox("請輸入第1個(gè)整數(shù):")m=Val(temp)temp=InputBox("請輸入第2個(gè)整數(shù):")n=Val(temp)Ifn*m=0ThenExitSubLabel1.Caption=m&","&n&"的最大公約數(shù)是:"&Str(Hcf((m),(n)))Label2.Caption=m&","&n&"的最小公倍數(shù)是:"&Str(m*n/Hcf((m),(n)))EndSub圖7-10求最大公約數(shù)與最小公倍數(shù)7.3.3使用參數(shù)使用可選的參數(shù)2.提供可選參數(shù)的缺省值3.使用不定數(shù)量的參數(shù)7.3.4傳遞數(shù)組

【例7-14】隨機(jī)產(chǎn)生三組整數(shù),并求出每組的最大數(shù),如圖7-14所示。

圖7-14分別求3組隨機(jī)整數(shù)中的最大數(shù)

設(shè)計(jì)步驟如下:

(1)設(shè)計(jì)窗體界面以及設(shè)置對象屬性。

(2)編寫程序代碼。考慮到要在不同的過程中使用數(shù)組,所以首先在模塊的通用段聲明數(shù)組:Dima(1To10)AsInteger,b(1To10)AsInteger,c(1To10)AsInteger

產(chǎn)生隨機(jī)數(shù)組并將10個(gè)數(shù)連成一個(gè)字符串返回的Fuction過程:Functionsui_ji(p()AsInteger)AsStringtemp=""RandomizeFori=1To10Dox=Int(Rnd*90)+10yes=0Forj=1Toi-1Ifx=p(j)Thenyes=1:ExitForNextLoopWhileyes=1p(i)=xtemp=temp<rim(Str(p(i)))&","Nextsui_ji=tempEndFunction

找出數(shù)組10個(gè)數(shù)中最大數(shù)并返回的Fuction過程:Functionda(p()AsInteger)AsIntegerMax=p(1)Fori=2To10IfMax<p(i)ThenMax=p(i)Nextda=MaxEndFunction

隨機(jī)整數(shù)的生成由窗體的Load事件代碼完成:PrivateSubForm_Load()DimpAsStringp=sui_ji(a())Frame1(0).Caption="第1組隨機(jī)整數(shù):"Label1(0).Caption=LTrim(Left(p,Len(p)-1))p=sui_ji(b())Frame1(1).Caption="第2組隨機(jī)整數(shù):"Label1(1).Caption=LTrim(Left(p,Len(p)-1))p=sui_ji(c())Frame1(2).Caption="第3組隨機(jī)整數(shù):"Label1(2).Caption=LTrim(Left(p,Len(p)-1))EndSub

兩個(gè)命令按鈕的Click事件代碼:PrivateSubCommand1_Click()Form_LoadEndSubPrivateSubCommand2_Click()DimpAsStringp="第1組數(shù)中的最大者是:"Frame1(0).Caption=p&da(a())p="第2組數(shù)中的最大者是:"Frame1(1).Caption=p&da(b())p="第3組數(shù)中的最大者是:"Frame1(2).Caption=p&da(c())EndSub7.4過程的嵌套與遞歸調(diào)用

7.4.1過程的嵌套

【例7-15】輸入?yún)?shù)n,m,求組合數(shù)的值。

窗體界面的設(shè)計(jì)以及對象屬性的設(shè)置參見圖7-16所示。下面給出Function過程與事件過程的代碼。求階乘Function過程fact的代碼:PrivateFunctionfact(x)p=1Fori=1Toxp=p*iNextifact=pEndFunction圖7-16求組合數(shù)

求組合數(shù)用Function過程Comb的代碼:PrivateFunctioncomb(n,m)comb=fact(n)/(fact(m)*fact(n-m))EndFunction

等號按鈕Command1的Click事件的代碼:PrivateSubCommand1_Click()m=Val(Text1(0).Text):n=Val(Text1(1).Text)Ifm>nThenMsgBox"請保證參數(shù)的正確輸入!" '參數(shù)輸入時(shí)必須保證n>=mExitSubEndIfText2.Text=Format(comb(n,m),"@@@@@@@@@@@")EndSub7.4.2過程的遞歸

【例7-17】契比雪夫多項(xiàng)式定義如下。圖7-19求契比雪夫多項(xiàng)式的的值

窗體界面設(shè)計(jì)以及對象屬性的設(shè)置參見圖7-19。下面給出Function過程與事件過程的代碼。求契比雪夫多項(xiàng)式的遞歸Function過程fnt的代碼:PrivateFunctionfnt(nAsInteger,xAsSingle)AsSingleIfn=0Thenfnt=1ElseIfn=1Thenfnt=xElsefnt=2*x*fnt(n–1,x)-fnt(n–2,x)EndIfEndFunction

計(jì)算按鈕Command1的Click事件代碼:PrivateSubCommand1_Click()DimmAsInteger,yAsSinglem=Val(Text1.Text)y=Val(Text2.Text)Text3.Text=fnt(m,y)EndSub習(xí)題七

7.1

編制判斷素?cái)?shù)的Sub過程或Function過程,驗(yàn)證哥德巴赫猜想:一個(gè)不小于6的偶數(shù)可以表示為兩個(gè)素?cái)?shù)之和。例如:6=3+3,8=3+5,10=3+7,…(參見第5章習(xí)題)。

7.2

編寫輸入一個(gè)0~6數(shù)字,顯示漢英對照輸出星期的Function過程。

7.3

編制隨機(jī)整數(shù)Function過程,輸出30個(gè)1~100之內(nèi)的隨機(jī)數(shù)。

7.4

編制求兩數(shù)中的較大數(shù)Function過程,求多個(gè)數(shù)的較大數(shù)。

7.5

編制求較大數(shù)Function過程,使用不定數(shù)量的參數(shù),求任意多數(shù)中的最大數(shù)。

7.6

編制判斷奇偶數(shù)Function過程。輸入一個(gè)整數(shù),判斷其奇偶性。

7.7

編制判斷是否同時(shí)被17與37整除的Function過程。輸出1000~2000之間所有能同時(shí)被17與37整除的數(shù)。

7.8

使用Timer函數(shù)設(shè)計(jì)用來暫停指定時(shí)間(秒)的Sub過程。

7.9

編寫計(jì)算階乘的Function過程,利用

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論