課件及答案-第8章過程掌握Sub定義和調(diào)用_第1頁
課件及答案-第8章過程掌握Sub定義和調(diào)用_第2頁
課件及答案-第8章過程掌握Sub定義和調(diào)用_第3頁
課件及答案-第8章過程掌握Sub定義和調(diào)用_第4頁
課件及答案-第8章過程掌握Sub定義和調(diào)用_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余54頁可下載查看

下載本文檔

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

文檔簡介

第8—《VisualBasic程序設(shè)計(jì)教學(xué)目掌握Sub掌握FunctionSubVB的Sub過程完成一定的功能,過不能返回值事件過PrivateSubCommand1_Click()DimNAsInteger,FAsLongN=Val(Text1.Text)F=Fori=1ToF=F*iNextiText2=FEndPrivateSubEndPrivateSubForm_Load()Text1.Text=""Text2.Text=""End事件過???

EudPrivateSubForm_事件名(〔參數(shù)列表〔局部變量和常數(shù)語句Eud【例【例8-2 DimDimaAsa=3EndPrivateSubPrintEndPrivateSuba=EndPrivateSuba=2EndSub圖8-3窗體設(shè) 圖8-4事件過程模8814過以Private為前綴的Sub過程是模塊級的(私有的)Sub過程不能嵌套定義,即在Sub[Optional][ByVal][ByRef]變量名[()][As數(shù)據(jù)類型語[Exit語句End通用過創(chuàng)建通用過程的方法有2種。第法的操作步驟是首先在“添加過程”框中(圖8-5)輸入過( 程 PrivateSub…End通用過口的文本編輯區(qū)空白行處鍵入“PrivateSub過”或“PublicSub過”;【例【例8-3】用通用過程,求數(shù)字N的階乘(界面同例8-PrivateSubDimNAsIntegerCallFactorial(N)EndPrivateSubFactorial(NAsDimFAsLongF=1Fori=1ToF=F*iNextiEndPrivateSubEnd8.1.4過Call<過>(實(shí)在參數(shù)表完過程,返回調(diào)用程序,執(zhí)行Call過后的“實(shí)在參數(shù)表”和過程定義中的“形式參數(shù)2)過作為語句調(diào)用:<過>實(shí)在參數(shù)8.1.4過Function?[?[語句塊Fun2.FunctionFunction Function [語句塊[函數(shù)名=表達(dá)式【例8-4】用【例8-4】用Function過程,求數(shù)字NPrivateSubCommand1_Click()DimNAsInteger,FAsLongN=Val(Text1.Text)F=EndPrivateFunctionFactorial(NAsInteger)AsFactorial=‘Fori=1ToFactorial=Factorial*iNextiEndPrivateSubCommand2_Click()Text1.Text=""EndFunctionCall如圖8-7所如圖8-7所示,主調(diào)過程Command1_Click中執(zhí)行調(diào)用語句CallS(a,b),即轉(zhuǎn)向執(zhí)行過程S中的代碼,在這過見8.3),直到執(zhí)行過程S的EndSub語句之后,再轉(zhuǎn)回還必須正確理解實(shí)在參數(shù)和形式參數(shù)的結(jié)合傳遞(調(diào)過程的下一條語句Printa,b這個(gè)例子中窗體上的輸出結(jié)果是“這個(gè)結(jié)果,學(xué)完8.3參數(shù)傳遞就可以完全理解了-1。至于【例8-6】解釋例8-5PrivateSubDimaAsInteger,bAsCalls(a '實(shí)參Printa,EndPrivateSubs(xAsInteger,yAsInteger) x=x+1y=y-EndSub調(diào)用時(shí)實(shí)參a和形參x按地址結(jié)合共用同一個(gè)定義Sub過程或者定義Function過參數(shù)列表中調(diào)用Sub或Function ,參數(shù)列表中參數(shù)稱實(shí)在參數(shù)(實(shí)參) 【例8-7PrivatePrivateSubDimaAsInteger,bAsIntegerDimxAsSingle,yAsDoublea=1:b=2x=3.4:y=CallS1(a,b)CallS2(y,x)Printa,bPrintx,yEndPrivateSubS1(bAsInteger,aAsb=b+a=a+EndPrivateSubS2(xAsDouble,yAsx=x+5.3y=x-2.1End按值傳遞參[Private|Public][Static]Sub過([形式參數(shù)[局部變量和常量[ExitEnd[Optional][ByVal][ByRef[AsPrivateSubCommand1_Click()DimPrivateSubCommand1_Click()DimMAsInteger,NAsIntegerM=15:N=20CallValue_Change(M,N)Print"m=";M,"n=";NEndPrivateSubValue_Change(ByValXAsByValYAsX=X+Y=X+Print"X=";X,"Y=";End【例8-8參數(shù)的區(qū)別,代碼修改一下,將過程Value_Change定義的PrivatePrivateSubValue_Change(XAsInteger,YX=X+Y=X+Print"X=";X,"Y=";End運(yùn)行結(jié)果將發(fā)生變化如右圖PrivateSubFormDimSumAsInFori=5To1SSum=SumNextiPrint"SUM=EndSubPrivateFact=DoWhileN>Fact=Fact*N=N-1End

PrivateFunctionFact(ByValNAsInteger)。方法二:修改ForFori=5To1Step-Sum=Sum+Next數(shù)組參形參數(shù)組名()[As數(shù)據(jù)類【例8-10 PrivateSubCommand1_Click()Dimch()AsString,tAsStringDimNAsInteger,iAsIntegert=Text1.TextN=If(UCase(t)>="A"And<=26-(Asc(UCase(t))-ReDimCallsub1(ch,t,Fori=1ToNext

PrivateSubsub1(s()AsString,aAsString,kDimiAss(1)=Fori=1Tok-s(i+1)=Chr(Asc(a)+i)NextiEndPrivateSubEndPrivateSubEndText1.TextText2.TextEndIfEnd。遞歸的代碼看起來不需要了解Factorial(N1)8.4.2的DimDimaAsPrivateSubDimaAsa=PrintEndPrivateSubCommand2_Click()PrintaEnd8.5作用位使用語局部變過過模塊級窗體及模塊部全局變整個(gè)應(yīng)用程模塊部8.5.過程變普級a窗體上輸出結(jié)果如圖8-21第4次a=a+3=9+3=12

tica如果是在模塊的通用部分定義一個(gè)變量,則這個(gè)

DimaAsPrivateSubCommand1_Click()a=10PrintEndPrivateSub部分有語句DimaInteger,變量a定義為模塊級變量,變量的作用范圍是整個(gè)窗體模塊,a 全局變?nèi)绻谀K通用處使用關(guān)鍵字Public定義變量,則程序。如果建立VB工,包括了若干個(gè)窗體,在某個(gè)窗體模塊的通用部分有語句PubliccAsInteger,全局變量用起來很方便,一個(gè)全局變量c值,都會(huì)導(dǎo)致其他過程使用到的cPrivateSubPrintForm1.c=Form1.c+10PrintForm1.cEnd

PubliccAsIntegerPrivateSubCommand1_Click()c=3Print mand1中:"&EndPrivateSubc=c+Print mand2中:"&定義為全局變量,在2 擊的的 靜態(tài)變量與模塊級變量的區(qū) 行 然保 的 續(xù)性 PrivateSubStaticaAsIntegera=a+3PrintEndPrivateSubCommand2_Click()a=a+10PrintaEndSubDimaAsPrivateSubPrivateSubStaticaAsIntegera=a+3PrintEndPrivateSubCommand2_Click()a=a+10PrintaEndSubDimaAsPrivateSubCommand1_Click()a=a+3PrintaEndSubPrivateSuba=a+10PrintaEnd同名變現(xiàn)導(dǎo)致無法正常生活呢?因?yàn)檫@些同名同姓的人出不會(huì)它們。但是如果同名變量作用的范圍有重合,當(dāng)不同作用域的同名變量發(fā) 可以加前綴指 某個(gè)全局變量別實(shí)現(xiàn)。(改寫例8-3和例8-4),見表8-5實(shí)現(xiàn)方Function實(shí)Sub實(shí)代PrivateSubDimNAsInteger,FAsLongN=Val(Text1)F=Text2=FEndSubPrivateFunctionFactorial(NAs_Integer)AsFactorial=1Fori=1ToNFactorial=Factorial*NextEndPrivateSubDimNAsInteger,FAsLongN=Val(Text1)CallFactorial(N,Text2=FEndSubPrivateSubFactorial(NAs,FAsF=Fori=1ToNF=F*iNextEnd過程定PrivateFunctionFactorial(NAs_Integer)AsPrivateSubFactorial(NAs,FAs過程調(diào)F=CallFactorial(N,【例【例8-15OptionPrivateSubDimxAsSingle,nAsInteger,epsAsDimsAsSingle,aAsSingle,tempAstempInputBox("

sin1的數(shù)與允許誤差:

n1

(2

1)x(2i"求函數(shù)值","0.5,1e-temp=n=InStr(temp,x=Left(temp,n-1):eps=Len(temp)-n)s=x:n=1a=afun(x,Ifa<=epsThenExitDos=s+an=n+1Label2.Caption="arcsin("&CStr(x)&EndSub

PrivateFunctionafun(ByValxAsSingle,ByValnAsInteger)AsSingleDimiAsInteger,pAsSinglep=1Fori=1Top=p*(2*i-1)/(2*Nextafun=p*x^(2*n+1)/(2*n+1)EndFunctionPrivateSubEndSubPrivateSubEndPrivateSubInsert_Sort(a()AsDimiAsInteger,jAsInteger,minjAstempAsIntegerFori=1To9minj=iForj=i+1ToIfa(minj)>a(j)1.直接排序。最基本、最直觀的排

minj=jEndIfNexttemp=a(minj)a(minj)=a(i)a(i)=tempNextEnd變。這樣的話,原來小的數(shù)字還 ,大PrivateSubBubble_Sort(a()AsDimiAsInteger,jAsInteger,tempAsFori=1ToForj=1To10-Ifa(j)>a(j+1)Thentemp=a(j)a(j)=a(j+a(j+1)=EndNextjNextiEndDimiAsInteger,jAsInteger,tempAsi=j=temp=a(i)DoUntili>=jDoWhilea(j)>tempAndj>ij=j-1Ifj>iThena(i)=a(j)a(j)=tempi=i+1EndDoWhilea(i)<tempAndj>i=i+1Ifj>iThena(j)=a(i)a(i)=tempj=j-1EndIfIfL<i-1ThenCallQuick_Sort(a,L,i-IfR>i+1ThenCallQuick_Sort(a,i+1,End 過過PrivateFunction(ByValAAsInteger,ByValBInteger)AsIntegerDimRAsIntegerR=AModA=B=LoopWhileR<>=EndPrivateSubEndSubPrivateSubDimNAsInteger,MAsM=N=Te

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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

提交評論