




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VisualBasic程序設(shè)計
主講教師:杜云
---西南大學(xué)計算機與信息科學(xué)學(xué)院
E-mail:Dyun_j
第6章過程第6章過程第6章過程過程概述將程序分割成較小的邏輯部件就可以簡化程序設(shè)計任務(wù)。稱這些部件為過程。過程可用于壓縮重復(fù)任務(wù),例如,壓縮頻繁的計算。例如:求1!+2!+…+n!第6章過程求1!+2!+3!+…+N!DimiAsIntegerDimjAsIntegersum=0n=InputBox(請輸入一個數(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("請輸入一個數(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("請輸入一個數(shù)n"))sum=0Fori=1TonCallfact(i)sum=sum+i/kNext
Print"1/1!+2/2!+..."&n&"/"&n&"!"&"="&sumEndSub第6章過程用過程編程有兩大好處:
1:過程可使程序劃分成離散的邏輯單元,每個單元都比無過程的整個程序容易調(diào)試。
2:一個程序中的過程,往往不必修改或只需稍作改動,便可以成為另一個程序的構(gòu)件。
VB中有兩類過程,一類是事件過程,另—類是通用過程。事件過程是由系統(tǒng)提供的、不需要用戶創(chuàng)建。通用過程是由用戶根據(jù)自己的需要定義和編寫的、可供事件過程多次調(diào)用的程序段。通用過程又可分為:
Sub子過程
Function過程(函數(shù)過程)第6章過程6.2SUB子過程的定義與調(diào)用Sub子過程格式:[Private|Public][Static]Sub過程名[(參數(shù)表)]
語句組
[ExitSub]
語句組EndSub其創(chuàng)建方法有兩種:一是在代碼窗口中直接按規(guī)定的格式編寫;二是利用VB的過程添加工具生成過程框架,然后編寫過程體。
可以將子過程放入標(biāo)準(zhǔn)模塊、類模塊和窗體模塊中。按照缺省規(guī)定,所有模塊中的子過程為Public(公用的),這意味著在應(yīng)用程序中可隨處調(diào)用它們。第6章過程2:使用《添加過程》對話框創(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語句格式:CALL<過程名>(實際參數(shù))直接使用過程名格式:<過程名>[實際參數(shù)]
第6章過程過程編寫事例:
該過程的功能是讓計算機發(fā)出”梆梆梆”的聲音,發(fā)聲次數(shù)由調(diào)用過程時傳遞的參數(shù)控制.該過程帶有一個形式參數(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事例:編程計算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語句編寫自己的Function過程。1:函數(shù)過程的語法是[Public|Private][Static]Function函數(shù)名([形參表])[As數(shù)據(jù)類型]
語句組
[函數(shù)名=表達(dá)式][ExitFunction]
語句組
[函數(shù)名=表達(dá)式]EndFunction與Sub過程一樣,F(xiàn)unction過程也是一個獨立的過程,可讀取參數(shù)、執(zhí)行一系列語句并改變其參數(shù)的值。與子過程不同,F(xiàn)unction過程可返回一個值到調(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)+"是素數(shù)"IfPR=FalseThenPicture1.PrintStr(M)+"不是素數(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過程計算
S=1!+2!+…+N!PrivateSubForm_Load()ption="輸入一個數(shù)N"ption="1!+2!+...+N!="Text1.Text=""Text2.Text=""ption="計算"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)用過程計算階乘累加和第6章過程分別用SUB過程和FUNCTION過程計算
S=1!+2!+…+N!PublicFunctionfact1(nAsInteger)AsLongDimiAsInteger,sAsLongs=1Fori=1Tons=s*iNextfact1=sEndFunction注意函數(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)用計算三角形面積的函數(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ì)來確定兩個正整數(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ù)sub過程和function函數(shù)過程中的參數(shù)稱為形式參數(shù)(簡稱形參)在程序中調(diào)用sub過程和function函數(shù)過程時的參數(shù)稱為實際參數(shù)(簡稱實參)
第6章過程1.按位置傳送
按位置傳送就是實參的次序與形參的次序應(yīng)匹配,位置次序一一對應(yīng)。
2.傳值與傳址ByVal:可選項。表示該參數(shù)按值傳遞。此時實參的值不隨形參值的變化而變化。
ByRef:可選項。表示該參數(shù)按地址傳遞。此時實參的值隨形參值的變化而變化,ByRef是VisualBasic的默認(rèn)選項。
CallArea(50,20)SubArea(Length,Width)第6章過程按地址傳遞參數(shù)是把實參變量的內(nèi)存地址傳遞給形參變量。在定義過程時,用ByRef說明的形參,或缺省傳遞方式說明,都是按地址傳遞。PublicFunctionf1(ByRefxAsInteger)AsIntegerx=x*xf1=xEndFunctionPrivateSubCommand1_Click()DimnAsIntegerDimsAsIntegern=Val(Text1.Text)s=f1(n)Print"s=";sPrint"n=";nEndSub由于參數(shù)按地址傳遞,過程中對形式參數(shù)的改變將改變實際參數(shù)的值,?程序的輸出結(jié)果是????第6章過程例如,編寫一個交換兩變量值的函數(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ù)傳遞方式對實際參數(shù)的影響第6章過程按值傳遞參數(shù)按值傳遞參數(shù)是把實參變量的值傳遞給形參變量,實參變量的值在過程調(diào)用前后保持不變。定義過程時用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ù)按值傳遞,過程中對形式參數(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ù)傳值方式對實際參數(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ù)X傳遞個形式參數(shù)X,請分析輸出結(jié)果將調(diào)用過程改為:PrivateSubForm_Click()DimxAsIntegerx=1
mysub4xPrintxEndSub
分析結(jié)果???第6章過程PrivateSubForm_Click()DimbAsInteger,yAsIntegerCallMysub2(3,b)y=b
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加油員財務(wù)管理職責(zé)
- 精神科住院患者安全管理措施
- 寵物食品產(chǎn)品項目合作計劃書
- 醫(yī)院志愿者心理輔導(dǎo)計劃
- 小學(xué)音樂教學(xué)改革活動計劃
- 施工管理中的各部門職責(zé)分析
- 2025小學(xué)一年級體育活動培優(yōu)輔差工作計劃
- 高管助理的工作職責(zé)與日常任務(wù)
- 電子商務(wù)技術(shù)總工崗位職責(zé)
- 基于大數(shù)據(jù)的婦產(chǎn)科健康管理平臺研究-洞察闡釋
- 《倉儲物流管理》課件:優(yōu)化倉儲與物流效率
- 商場超市公司章程
- 四川省攀枝花市重點名校2025屆中考生物押題卷含解析
- 1與食品經(jīng)營相適應(yīng)的操作流程
- 農(nóng)險理賠培訓(xùn)
- 制藥車間5S標(biāo)準(zhǔn)化管理
- 《禽生產(chǎn)》課程標(biāo)準(zhǔn)
- 寫字樓租賃技巧培訓(xùn)
- T-CEEAS 003-2024 養(yǎng)老合規(guī)師職業(yè)技能評價標(biāo)準(zhǔn)
- 鋼筋混凝土蓄水池設(shè)計方案
- 2025年保密知識試題庫帶答案(考試直接用)
評論
0/150
提交評論