版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
VisualBasic程序設(shè)計(jì)
主講教師:杜云
---西南大學(xué)計(jì)算機(jī)與信息科學(xué)學(xué)院
E-mail:Dyun_j
第6章過程第6章過程第6章過程過程概述將程序分割成較小的邏輯部件就可以簡(jiǎn)化程序設(shè)計(jì)任務(wù)。稱這些部件為過程。過程可用于壓縮重復(fù)任務(wù),例如,壓縮頻繁的計(jì)算。例如:求1!+2!+…+n!第6章過程求1!+2!+3!+…+N!DimiAsIntegerDimjAsIntegersum=0n=InputBox(請(qǐng)輸入一個(gè)數(shù)N)Fori=1Tonk=1Forj=1Toik=k*jNextjsum=sum+kNextiPrint"1!+2!+3!+..."&n&"!"&"="&sum一般的方法第6章過程PublickAsLongPublicSubfact(ByRefnAsInteger)k=1Forj=1Tonk=k*iNextEndSub求階乘的過程n=InputBox("請(qǐng)輸入一個(gè)數(shù)n")sum=0Fori=1TonCallfact(i)sum=sum+kNextPrint"1!+2!+3!+..."&n&"!"&"="&sum調(diào)用過程求1!+2!+…n!DimnAsIntegerDimsumAsLongDimiAsInteger第6章過程1/1!+2/2!+…N/N!PrivateSubCommand2_Click()n=Val(InputBox("請(qǐng)輸入一個(gè)數(shù)n"))sum=0Fori=1TonCallfact(i)sum=sum+i/kNext
Print"1/1!+2/2!+..."&n&"/"&n&"!"&"="&sumEndSub第6章過程用過程編程有兩大好處:
1:過程可使程序劃分成離散的邏輯單元,每個(gè)單元都比無(wú)過程的整個(gè)程序容易調(diào)試。
2:一個(gè)程序中的過程,往往不必修改或只需稍作改動(dòng),便可以成為另一個(gè)程序的構(gòu)件。
VB中有兩類過程,一類是事件過程,另—類是通用過程。事件過程是由系統(tǒng)提供的、不需要用戶創(chuàng)建。通用過程是由用戶根據(jù)自己的需要定義和編寫的、可供事件過程多次調(diào)用的程序段。通用過程又可分為:
Sub子過程
Function過程(函數(shù)過程)第6章過程6.2SUB子過程的定義與調(diào)用Sub子過程格式:[Private|Public][Static]Sub過程名[(參數(shù)表)]
語(yǔ)句組
[ExitSub]
語(yǔ)句組EndSub其創(chuàng)建方法有兩種:一是在代碼窗口中直接按規(guī)定的格式編寫;二是利用VB的過程添加工具生成過程框架,然后編寫過程體。
可以將子過程放入標(biāo)準(zhǔn)模塊、類模塊和窗體模塊中。按照缺省規(guī)定,所有模塊中的子過程為Public(公用的),這意味著在應(yīng)用程序中可隨處調(diào)用它們。第6章過程2:使用《添加過程》對(duì)話框創(chuàng)建過程:打開代碼窗口工具菜單添加過程第6章過程事例:編寫求N的累加和的SUB過程PrivateSubCommand2_Click()Text1.Text=""Text2.Text=""Text1.SetFocusEndSubPublicsAsIntegerPublicSubsumzr(nAsInteger)DimiAsIntegers=0Fori=1Tons=s+iNextEndSubPrivateSubCommand1_Click()Callsumzr(Val(Text1.Text))Text2.Text=sEndSub第6章過程PublicSubsumzr(nAsInteger,sAsInteger)DimiAsIntegers=0Fori=1Tons=s+iNextEndSubPrivateSubCommand1_Click()DimnAsInteger,sAsIntegerCallsumzr(Val(Text1.Text),s)Text2.Text=sEndSub第6章過程3:過程的調(diào)用使用Call語(yǔ)句格式:CALL<過程名>(實(shí)際參數(shù))直接使用過程名格式:<過程名>[實(shí)際參數(shù)]
第6章過程過程編寫事例:
該過程的功能是讓計(jì)算機(jī)發(fā)出”梆梆梆”的聲音,發(fā)聲次數(shù)由調(diào)用過程時(shí)傳遞的參數(shù)控制.該過程帶有一個(gè)形式參數(shù).Subbeepsound(nAsInteger)DimiAsIntegerDimjAsDoubleFori=1TonBeepForj=1To100000NextjNextiEndSub分析該過程的作用范圍?注意過程創(chuàng)建的方法、創(chuàng)建的位置、參數(shù)的使用第6章過程調(diào)用beepsound過程PrivateSubCommand1_Click()Callbeepsound(Val(Text1.Text))EndSub注意調(diào)用格式PrivateSubCommand1_Click()beepsoundVal(Text1.Text)EndSub第6章過程
例6.4SubMyMove(ByValTag%)Label1.Left=Label1.Left+Tag*100Label1.Top=Label1.Top+Tag*100EndSub
'事件過程調(diào)用MyMove:PrivateSubCommand1_Click()Dimk%IfRnd>0.5Thenk=1Elsek=-1MyMove(k)EndSub第6章過程事例:編寫求N!的SUB過程PublicSubfact(nAsInteger,sAsLong)DimiAsIntegers=1Fori=1Tons=s*iNextEndSub事例:編程計(jì)算1!+2!+…+n!PrivateSubCommand1_Click()DimiAsInteger,sAsLong,sumAsLongFori=1ToVal(Text1.Text)Callfact(i,s)sum=sum+sNextText2.Text=sumEndSub第6章過程VisualBasic包含內(nèi)部的函數(shù),如Sqr、Cos或Chr。此外,還可用Function語(yǔ)句編寫自己的Function過程。1:函數(shù)過程的語(yǔ)法是[Public|Private][Static]Function函數(shù)名([形參表])[As數(shù)據(jù)類型]
語(yǔ)句組
[函數(shù)名=表達(dá)式][ExitFunction]
語(yǔ)句組
[函數(shù)名=表達(dá)式]EndFunction與Sub過程一樣,F(xiàn)unction過程也是一個(gè)獨(dú)立的過程,可讀取參數(shù)、執(zhí)行一系列語(yǔ)句并改變其參數(shù)的值。與子過程不同,F(xiàn)unction過程可返回一個(gè)值到調(diào)用的過程。6.1Function過程第6章過程事例:編寫求N!的FUNCTION過程PublicKAsLongFunctionFACT(NAsInteger)AsLongK=1ForI=1ToNK=K*INextIFACT=KEndFunctionPrivateSubCommand1_Click()DimNAsIntegerDimSAsLongN=Val(Text1.Text)S=FACT(N)Text2.Text=SEndSub第6章過程2Function過程的調(diào)用格式:變量名=Function過程名([參數(shù)列表])PrivateSubCommand1_Click()DimPRAsBoolean,MAsLongM=Val(Text1.Text)PR=Prime(M)IfPR=TrueThenPicture1.PrintStr(M)+"是素?cái)?shù)"IfPR=FalseThenPicture1.PrintStr(M)+"不是素?cái)?shù)"EndSubOptionExplicitPrivateFunctionPrime(MAsLong)AsBooleanDimiAsIntegerPrime=True'向函數(shù)名賦值IfM>2ThenFori=2ToSqr(M)IfMModi=0ThenPrime=False:ExitForNextEndIfEndFunction注意調(diào)用格式,分析函數(shù)返回值的傳遞第6章過程例編寫求1+2+3+…..+N的函數(shù)過程PublicmAsLongFunctionfuncsum(nAsInteger)AsLongm=0Fori=1Tonm=m+iNextfuncsum=mEndFunctionPrivateSubCommand2_Click()DimnAsIntegerDimsumAsLongn=Val(Text1.Text)sum=funcsum(n)Text2.Text=sumEndSub第6章過程分別用SUB過程和FUNCTION過程計(jì)算
S=1!+2!+…+N!PrivateSubForm_Load()ption="輸入一個(gè)數(shù)N"ption="1!+2!+...+N!="Text1.Text=""Text2.Text=""ption="計(jì)算"EndSubOptionExplicitPublicSubFACT(nAsInteger,sAsLong)DimiAsIntegers=1Fori=1Tons=s*iNextEndSub該過程可以放在標(biāo)準(zhǔn)模塊中PrivateSubCommand1_Click()DimnAsInteger,sAsLongDimiAsInteger,sumAsLongn=Val(Text1.Text)Fori=1TonCallFACT(i,s)sum=sum+sNextText2.Text=sumEndSub調(diào)用過程計(jì)算階乘累加和第6章過程分別用SUB過程和FUNCTION過程計(jì)算
S=1!+2!+…+N!PublicFunctionfact1(nAsInteger)AsLongDimiAsInteger,sAsLongs=1Fori=1Tons=s*iNextfact1=sEndFunction注意函數(shù)過程如何才能實(shí)現(xiàn)返回值到調(diào)用過程PrivateSubCommand1_Click()DimnAsInteger,iAsIntegerDimxAsLongDimsumAsLongn=Val(Text1.Text)Fori=1Tonx=fact1(i)sum=sum+xNextText2.Text=sumEndSub第6章過程FunctionArea(x!,y!,z!)AsSingleDimc!c=(x+y+z)/2Area=Sqrt(c*(c-x)*(c-y)*(c-z))EndFunction例6.1'在事件過程中輸入數(shù)據(jù),分別調(diào)用計(jì)算三角形面積的函數(shù)過程,然后顯示總面積SubForm_Click()Dima!,b!,c!,d!,e!,f!,g!,s1!,s2!,s3!a=InputBox("輸入a"):b=InputBox("輸入b"):c=InputBox("輸入c")d=InputBox("輸入d"):e=InputBox("輸入e"):f=InputBox("輸入f")g=InputBox("輸入g")s1=Area(a,b,c)s2=Area(c,d,e)s3=Area(e,f,g)MsgBox("多邊形面積="&s1+s2+s3)EndSub第6章過程
Functiongcd%(ByValm%,ByValn%)Ifm<nThent=m:m=n:n=tr=mModnDoWhile(r<>0)m=n:n=r:r=mModnLoopgcd=nEndFunction例6.2輾轉(zhuǎn)相除法是利用以下性質(zhì)來確定兩個(gè)正整數(shù)a和b的最大公因子的:1.a÷b,令r為所得余數(shù)(0≤r<b)。若r=0,算法結(jié)束;b即為答案。2.互換:置a←b,b←r,并返回第一步。第6章過程傳遞參數(shù)的方式有兩種:6.3參數(shù)的傳遞按地址傳遞參數(shù)按值傳遞參數(shù)第6章過程形式參數(shù)與實(shí)際參數(shù)sub過程和function函數(shù)過程中的參數(shù)稱為形式參數(shù)(簡(jiǎn)稱形參)在程序中調(diào)用sub過程和function函數(shù)過程時(shí)的參數(shù)稱為實(shí)際參數(shù)(簡(jiǎn)稱實(shí)參)
第6章過程1.按位置傳送
按位置傳送就是實(shí)參的次序與形參的次序應(yīng)匹配,位置次序一一對(duì)應(yīng)。
2.傳值與傳址ByVal:可選項(xiàng)。表示該參數(shù)按值傳遞。此時(shí)實(shí)參的值不隨形參值的變化而變化。
ByRef:可選項(xiàng)。表示該參數(shù)按地址傳遞。此時(shí)實(shí)參的值隨形參值的變化而變化,ByRef是VisualBasic的默認(rèn)選項(xiàng)。
CallArea(50,20)SubArea(Length,Width)第6章過程按地址傳遞參數(shù)是把實(shí)參變量的內(nèi)存地址傳遞給形參變量。在定義過程時(shí),用ByRef說明的形參,或缺省傳遞方式說明,都是按地址傳遞。PublicFunctionf1(ByRefxAsInteger)AsIntegerx=x*xf1=xEndFunctionPrivateSubCommand1_Click()DimnAsIntegerDimsAsIntegern=Val(Text1.Text)s=f1(n)Print"s=";sPrint"n=";nEndSub由于參數(shù)按地址傳遞,過程中對(duì)形式參數(shù)的改變將改變實(shí)際參數(shù)的值,?程序的輸出結(jié)果是????第6章過程例如,編寫一個(gè)交換兩變量值的函數(shù)過程Swap:PrivateFunctionSwap(xAsInteger,yAsInteger)DimtmpAsIntegertmp=x:x=y:y=tmpEndFunction‘
編寫窗體的Click事件過程,調(diào)用該函數(shù)過程:PrivateSubForm_Click()DimaAsInteger,bAsIntegera=10:b=15Print"調(diào)用交換函數(shù)過程前:a=";a,"b=";bSwapa,bPrint"調(diào)用交換函數(shù)過程后:a=";a,"b=";bEndSub分析參數(shù)傳遞方式對(duì)實(shí)際參數(shù)的影響第6章過程按值傳遞參數(shù)按值傳遞參數(shù)是把實(shí)參變量的值傳遞給形參變量,實(shí)參變量的值在過程調(diào)用前后保持不變。定義過程時(shí)用ByVal關(guān)鍵字指出參數(shù)是按值來傳遞的。例如:SubFun(ByValxasInteger)
……
EndSubPublicFunctionf2(ByValx)x=x*xf2=xEndFunctionPrivateSubCommand1_Click()DimnAsIntegerDimsAsIntegern=Val(Text1.Text)s=f2(n)Print"s=";sPrint"n=";nEndSub由于參數(shù)按值傳遞,過程中對(duì)形式參數(shù)的改變不會(huì)改變實(shí)際參數(shù)的值,?程序的輸出結(jié)果是????第6章過程例如,把上面調(diào)用交換變量值的函數(shù)過程Swap修改為按值傳遞參數(shù):PrivateFunctionSxAsInteger,ByValyAsInteger)DimtmpAsIntegertmp=x:x=y:y=tmpEndFunctionPrivateSubForm_Click()DimaAsInteger,bAsIntegera=10:b=15Print"調(diào)用交換函數(shù)過程前:a=";a,"b=";bSwapa,b'按值傳遞參數(shù)
Print"調(diào)用交換函數(shù)過程后:a=";a,"b=";bEndSub分析參數(shù)傳值方式對(duì)實(shí)際參數(shù)的影響???顯示按值傳遞參數(shù)沒有能實(shí)現(xiàn)兩變量值的交換。第6章過程本章作業(yè)分析第6章過程1PublicSubmysub4(xAsInteger)x=3*x-1Ifx<5Thenx=x+9PrintxEndSubPrivateSubForm_Click()x=1mysub43+XPrintxEndSub注意調(diào)用過程是把3+X的值4傳遞給形式參數(shù)X,而非將實(shí)際參數(shù)X傳遞個(gè)形式參數(shù)X,請(qǐng)分析輸出結(jié)果將調(diào)用過程改為:PrivateSubForm_Click()DimxAsIntegerx=1
mysub4xPrintxEndSub
分析結(jié)果???第6章過程PrivateSubForm_Click()DimbAsInteger,yAsIntegerCallMysub2(3,b)y=b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)教學(xué)評(píng)價(jià)立項(xiàng)申請(qǐng)書
- 水庫(kù)供水一體化建設(shè)項(xiàng)目規(guī)劃設(shè)計(jì)方案
- 古城導(dǎo)游面試題目及答案
- 施工勞動(dòng)力資源配置方案
- 管道工程環(huán)保技術(shù)應(yīng)用方案
- 口腔護(hù)士理論考試及答案
- 壓縮氣體儲(chǔ)存溫濕度監(jiān)控系統(tǒng)
- 光電子學(xué)考試試題及答案
- 工地材料管理與庫(kù)存控制方案
- 工程環(huán)境影響評(píng)價(jià)方案
- 25秋二上語(yǔ)文期末押題卷5套
- 達(dá)人分銷合同范本
- 檢修車間定置管理制度(3篇)
- 乘用車內(nèi)部凸出物法規(guī)培訓(xùn)
- 建筑工程施工管理論文2025年
- 吸煙有害健康課件教學(xué)
- 2025年拳擊行業(yè)拳擊培訓(xùn)與拳擊賽事研究報(bào)告及未來發(fā)展趨勢(shì)
- 2025年公司押運(yùn)年終總結(jié)樣本(五篇)
- 鋁單板幕墻施工工藝與鋁單板幕墻施工方案
- 安全協(xié)議責(zé)任書模板
- 卵巢顆粒細(xì)胞瘤的診治進(jìn)展2025
評(píng)論
0/150
提交評(píng)論