子程序與函數(shù)過程_第1頁
子程序與函數(shù)過程_第2頁
子程序與函數(shù)過程_第3頁
子程序與函數(shù)過程_第4頁
子程序與函數(shù)過程_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

子程序與函數(shù)過程第一頁,共四十三頁,編輯于2023年,星期二子程序過程(2)函數(shù)過程(4)過程之間參數(shù)傳遞(3)變量的作用域(1)講課次序第二頁,共四十三頁,編輯于2023年,星期二定義格式:[Static][Private|Public]Sub子程序名

([形參列表])

語句組1 [ExitSub]

語句組2EndSub[ByVal|ByRef]變量名[()][As類型][,…]提前結(jié)束子程序過程只能被本窗體中的過程調(diào)用能被程序中的所有過程調(diào)用。在模塊中定義,調(diào)用時直接用過程名;在窗體中定義,調(diào)用須加該過程所在窗體名第三頁,共四十三頁,編輯于2023年,星期二【實例6.1】交換兩個整型變量值的子過程PrivateSubSwap(XAsInteger,YAsInteger)

DimtempAsInteger

Temp=X:X=Y:Y=TempEndSub測試:參數(shù)的傳遞過程——值傳遞和地址傳遞,用下過程。第四頁,共四十三頁,編輯于2023年,星期二PrivateSubCommand1_Click()DimaAsInteger,bAsIntegera=3b=5CallSwap(a,b)Printa,bEndSub第五頁,共四十三頁,編輯于2023年,星期二【工具】|【添加過程】第六頁,共四十三頁,編輯于2023年,星期二子程序過程的調(diào)用格式Call過程名[(實際參數(shù))]過程名[實際參數(shù)]必須有確定值個數(shù)、類型必須與形參一一對應第七頁,共四十三頁,編輯于2023年,星期二【實例6.2】試編寫一個無參數(shù)的sub子過程Formmove(),它的功能是將當前正在運行的窗體移動到屏幕的中央。第八頁,共四十三頁,編輯于2023年,星期二Fommove()子過程代碼PublicSubformmove()Form1.Top=(Screen.Height-Form1.Height)/2Form1.Left=(Screen.Width-Form1.Width)/2EndSub第九頁,共四十三頁,編輯于2023年,星期二移動按鈕代碼

PrivateSubCommand1_Click()CallFormmoveEndsub第十頁,共四十三頁,編輯于2023年,星期二函數(shù)過程的定義函數(shù)過程的調(diào)用第十一頁,共四十三頁,編輯于2023年,星期二函數(shù)過程的一般定義格式[Static][Private|Public]Function

函數(shù)名

([形參列表])[As類型]

語句組1 [函數(shù)名=返回值

ExitFunction]

語句組2

函數(shù)名=返回值EndFunction

必有該語句提前結(jié)束函數(shù)第十二頁,共四十三頁,編輯于2023年,星期二函數(shù)過程的調(diào)用格式變量名=函數(shù)名(實際參數(shù))注意:必須有確定值個數(shù)、類型必須與形參一一對應第十三頁,共四十三頁,編輯于2023年,星期二例:定義求an值的函數(shù)。PublicFunctionan(aAsInteger,nAsInteger)x=1Fori=1Tonx=x*aNextian=xEndFunction第十四頁,共四十三頁,編輯于2023年,星期二PrivateFunctionGcd(mAsInteger,nAsInteger)DimrAsInteger,tAsIntegerIfm<nThent=m:m=n:n=tEndIf

Dor=mModnm=nn=rLoopWhile(r<>0)Gcd=mEndFunctionm*n/Gcd((m),(n))第十五頁,共四十三頁,編輯于2023年,星期二【實例6-3】編寫一個函數(shù)過程,統(tǒng)計一串字符中某個字符的出現(xiàn)次數(shù),通過調(diào)用函數(shù)過程實現(xiàn)。第十六頁,共四十三頁,編輯于2023年,星期二第十七頁,共四十三頁,編輯于2023年,星期二函數(shù)過程代碼PublicFunctionstatistic(str$,s$)AsIntegerDimk%,i%k=0Fori=1ToLen(str)IfMid(str,i,1)=sThenk=k+1EndIfNextistatistic=kEndFunction第十八頁,共四十三頁,編輯于2023年,星期二統(tǒng)計按鈕代碼PrivateSubcmdstat_Click()Dimc1$,c2$,m%c1=txtin.Textc2=txtsearch.Textm=statistic(c1,c2)txtcount.Text=mEndSub第十九頁,共四十三頁,編輯于2023年,星期二【實例6-4】某班有m名學生,要選派n名學生參加合唱隊,計算有多少種選派方法。第二十頁,共四十三頁,編輯于2023年,星期二計算階乘的函數(shù)過程PublicFunctionfactorial(ByValnAsInteger)AsDoubleDimiAsInteger,tAsDoublet=1Fori=1Tont=t*iNextifactorial=tEndFunction第二十一頁,共四十三頁,編輯于2023年,星期二計算按鈕代碼:PrivateSubcmdcount_Click()DimmAsInteger,nAsInteger,cAsDoublem=Val(txtstudent.Text)n=Val(txtneed.Text)c=factorial(m)/(factorial(n)*factorial(m-n))lblways.Caption=Str(c)EndSub第二十二頁,共四十三頁,編輯于2023年,星期二傳地址與傳值傳值方式在形參前加關鍵字ByVal,指定該參數(shù)是傳值方式例如:PrivateSubw(ByValn%)傳地址方式在形參前加關鍵字ByRef或缺省關鍵字,則指定該參數(shù)是傳地址方式。例如:PrivateSubw(ByRefx!,y!)注意:按傳地址方式傳遞參數(shù)時,要求實參必須是變量名第二十三頁,共四十三頁,編輯于2023年,星期二【實例6.5】編寫交換兩個數(shù)的子過程,s1用傳值方式,s2用傳地址方式,區(qū)分兩個過程分別調(diào)用后的結(jié)果。第二十四頁,共四十三頁,編輯于2023年,星期二s1用傳值方式PrivateSubS1(ByValxAsInteger,ByValyAsInteger)DimtempAsIntegertemp=x::x=y:y=tempEndSub第二十五頁,共四十三頁,編輯于2023年,星期二s2用傳地址方式PrivateSubS2(ByRefxAsInteger,yAsInteger)DimtempAsIntegertemp=x:x=y:y=tempEndSub第二十六頁,共四十三頁,編輯于2023年,星期二調(diào)用代碼:PrivateSubCommand1_Click()DimaAsInteger,bAsIntegera=20:b=30Print"調(diào)用前a和b的值為:";Tab(30);a;bCallS1(a,b)Print"調(diào)用s1后a和b的值為:";Tab(30);a;ba=20:b=30CallS2(a,b)Print"調(diào)用s2后a和b的值為:";Tab(30);a;bEndSub第二十七頁,共四十三頁,編輯于2023年,星期二在本過程內(nèi)使用的變量在本窗體內(nèi)使用的變量在所有窗體內(nèi)使用的變量變量局部變量窗體/模塊級變量全局變量靜態(tài)靜態(tài)動態(tài)變量Static靜態(tài)變量Dim窗體或標準模塊的“通用”聲明段中用Dim或Private關鍵字聲明的變量在窗體或標準模塊中“通用”“聲明”段用public關鍵字聲明;引用其它窗體模塊中聲明的public變量,需要加窗體名。第二十八頁,共四十三頁,編輯于2023年,星期二例:分別將k定義為不同級別的變量,觀察單擊命令按鈕事件過程中K值的變化情況。OptionexplicitPrivateSubCommand1_Click()k=k+1PrintkEndSub注意:引用其它窗體模塊中聲明的public變量,需要加窗體名。第二十九頁,共四十三頁,編輯于2023年,星期二【實例6-6】模塊級變量與局部變量應用實例。第三十頁,共四十三頁,編輯于2023年,星期二OptionExplicitDimx%PrivateSubForm_click()x=33Print"x=";xCallli1Callli2'printx1EndSub或工具||選項,□要求聲明變量第三十一頁,共四十三頁,編輯于2023年,星期二PrivateSubli1()Dimx1%x1=11Print"x1=";x1,Print"x=";xEndSub第三十二頁,共四十三頁,編輯于2023年,星期二PrivateSubli2()Dimx2%x2=22Print"x2=";x2,Print"x=";xEndSub第三十三頁,共四十三頁,編輯于2023年,星期二

聲明形式:

Static變量名[AS類型]第三十四頁,共四十三頁,編輯于2023年,星期二在文本框內(nèi)隨機產(chǎn)生n個小寫英文字母作為范文;當焦點進入打字區(qū)時開始計時;用戶輸入n個字母時計時結(jié)束,禁止向打字區(qū)再輸入內(nèi)容,并統(tǒng)計打字的速度和正確率。第三十五頁,共四十三頁,編輯于2023年,星期二測試代碼OptionExplicitDimn%,tAsDatePrivateSubcommand1_click()Dimi%,str$Randomizen=Int(Rnd*31)+10Fori=1Tonstr=Chr$(Int(Rnd*26)+97)'隨機產(chǎn)生小寫字母Text1.Text=Text1.Text&strNextiEndSub第三十六頁,共四十三頁,編輯于2023年,星期二開始時間PrivateSubtext2_gotfocus()t=TimeText3.Text=TimeEndSub第三十七頁,共四十三頁,編輯于2023年,星期二打字速度PrivateSubtext2_keypress(keyasciiAsInteger)Dimdui%,cuo%,i%IfLen(Text2)=nThen'鍵入滿n個字母Text4.Text=TimeText5.Text=str(Int(n/DateDiff("s",t,Time)*100+0.5)/100)&"字/秒"Text2.Locked=True四舍五入保留兩位小數(shù)第三十八頁,共四十三頁,編輯于2023年,星期二dateDiff函數(shù)形式:dateDiff(要間隔日期形式,日期1,日期2)作用:兩個指定日期按日期形式求相差的日期。日期形式:yyyy(年),q(季),m(月),y(一年的天數(shù)),d(日),w(一周的日數(shù)),ww(星期),h(時),n(分),s(秒)第三十九頁,共四十三頁,編輯于2023年,星期二準確率Fori=1TonIfMid(Text1,i,1)=Mid(Text2,i,1)Thendui=dui+1Elsecuo=cuo+1EndIfNextiText6.Text=Int(dui/n*10000+0.5)/100&"%"'顯示準確率EndIfEndSub第四十頁,共四十三頁,編輯于2023年,星期二下列程序代碼在單擊命令按鈕時的輸出結(jié)果SubSS(ByValX,ByRefY,Z)X=X+1Y=Y+1Z=Z+1EndSubPrivateSubCommand1_Click()a=1:b=2:c=3CallSS(a,b,c)Printa,b,cEndSub134

第四十一頁,共四十

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論