




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第七章過程7.1通用過程7.2常用算法舉例第七章過程7.1通用過程
7.1.1通用過程概念7.1.2參數(shù)傳遞7.1.3過程的嵌套與遞歸調用7.1.4變量、過程的作用域第七章過程
引例:已知多邊形的各條邊的長度,要計算多邊形的面積。abdfgecs3s2s1求三角形面積的代碼重復使用了三次第七章過程
解決辦法:對于重復使用的程序段,可以自定義一個函數(shù)過程,供多次調用.第七章過程
7.1.1通用過程概念及分類Function過程(函數(shù)過程)。
第七章過程Sub過程(子過程)7.1.1.1Function過程1.Function過程的定義第七章過程⑴利用代碼窗口直接定義通用過程
[Public|Private][Static]Function函數(shù)名([形參表])[As數(shù)據類型]語句組[函數(shù)名=表達式][ExitFunction]語句組[函數(shù)名=表達式]EndFunction⑵利用“工具”菜單下的“添加過程”命令定義過程第七章過程2.Function過程的調用
格式二(獨立作為語句)
Function過程名([參數(shù)列表])第七章過程格式一(作為語句的一部分):
a=Function過程名([參數(shù)列表])
引例:已知多邊形的各條邊的長度,要計算多邊形的面積。abdfgecs3s2s1第七章過程例:
編寫函數(shù)過程求s=3!+5!+11!。第七章過程7.1.1.2Sub過程1.Sub過程的定義第七章過程⑴利用代碼窗口直接定義通用過程其格式為:[Private|Public][Static]Sub過程名[(參數(shù)表)]語句組[ExitSub]語句組EndSub2.Sub過程的調用
⑴直接使用過程名調用Sub過程,即把過程名作為一個語句來使用,格式如下:
過程名[參數(shù)列表]⑵使用Call語句調用Sub過程。格式如下
Call過程名[(參數(shù)列表)]第七章過程7.1.2參數(shù)傳遞第七章過程7.1.2.1形式參數(shù)與實際參數(shù)的概念
形式參數(shù)第七章過程(簡稱形參)是指在定義過程時,在過程頭(指Sub或Fuction語句行)的參數(shù)列表中出現(xiàn)的變量名和數(shù)組名,在過程體中被引用。
實際參數(shù)第七章過程(簡稱實參)是調用過程時,在過程名后的參數(shù)列表中出現(xiàn)的變量名、數(shù)組名、常量或表達式。7.1.2.2參數(shù)按地址傳遞和按值傳遞第七章過程2.按值傳遞參數(shù)1.按地址傳遞參數(shù)判斷參數(shù)傳遞方式的原則:
原則一:定義通用過程時的形參前是否有關鍵字ByVal或ByRef,若為ByVal
按值傳遞若為ByRef
按地址傳遞
原則二:事件過程中調用通用過程時實參的形式
常量、表達式按值傳遞
變量、數(shù)組
按地址傳遞第七章過程1.按地址傳遞參數(shù)
讓過程根據變量的內存地址去訪問實際變量的內容,即形式參數(shù)與實際參數(shù)使用相同的內存地址單元,這樣通過子過程就可以改變變量本身的值。第七章過程PrivateSubSwap(xAsInteger,yAsInteger)DimtmpAsIntegertmp=x:x=y:y=tmpEndSub第七章過程PrivateSubForm_Click()DimaAsInteger,bAsIntegera=10:b=15Print"調用交換函數(shù)過程前:a=";a,"b=";bSwapa,bPrint"調用交換函數(shù)過程后:a=";a,"b=";bEndSub事件過程:通用過程:ab1015xy按地址傳遞按地址傳遞tmp101510第七章過程例:PublicSubMysub3(ByValxAsInteger,yAsInteger)x=y+xy=xModyEndSubPrivateSubForm_Click()DimaAsInteger,bAsIntegera=11:b=22CallMysub3(a,b)Printa;bEndSub
A.3311B.1111C.1122D.22112.按值傳遞參數(shù)
傳遞的只是變量的副本,如果過程改變了這個值,則所做的變動只影響副本而不會影響變量本身。第七章過程PrivateSubSwap(ByValxAsInteger,ByValyAsInteger)DimtmpAsIntegertmp=x:x=y:y=tmpEndSub第七章過程PrivateSubForm_Click()DimaAsInteger,bAsIntegera=10:b=15Print"調用交換函數(shù)過程前:a=";a,"b=";bSwapa,b‘按值傳遞參數(shù)
Print"調用交換函數(shù)過程后:a=";a,"b=";bEndSub1510事件過程:通用過程:ab1015xy按值傳遞按值傳遞tmp101510例:PublicSubMysub4(xAsInteger)x=3*x-1Ifx<5Thenx=x+9Printx;EndSubPrivateSubForm_Click()x=1Mysub43+xPrintxEndSubA.201B.2014C.111D.1114例;以下程序段運行后,單擊窗體顯示的結果是
。PublicSubMysub2(x,t)t=0Fork=1Toxt=t+kNextEndSubPrivateSubForm_Click()DimbAsInteger,yAsIntegerCallMysub2(3,b)y=bCallMysub2(4,b)Printy+bEndSubA.13B.16C.19D.217.1.2.3傳遞數(shù)組參數(shù)(按地址傳遞)第六章過程—通用過程(參數(shù)傳遞)
當數(shù)組作為過程的參數(shù)時,采取的是按地址傳遞的方式,因此對數(shù)組元素的修改將帶回調用程序。例:編寫一個Function過程you,實現(xiàn)數(shù)組元素循環(huán)右移一位。再編寫窗體的Click事件,調用you過程,在窗體上顯示移動前和移動后的結果。第六章過程—通用過程(參數(shù)傳遞)7.1.3過程的嵌套與遞歸調用第六章過程—通用過程(過程的嵌套與遞歸調用)7.1.3.1過程的嵌套調用第六章過程—通用過程(過程的嵌套與遞歸調用)7.1.3.2過程的遞歸調用第六章過程—通用過程(過程的嵌套與遞歸調用)使用遞歸調用的條件是:⑴可以把要解決的問題轉化為一個新的問題,而這個新的問題的解法仍與原來的解法相同,只是所處理的對象有規(guī)律地遞增或遞減。⑵可以用上述轉化過程使問題得到解決。⑶有一個明確的結束遞歸的條件例:采用遞歸方法計算n!(n>0)。分析:自然數(shù)n的階乘可以遞歸定義為:第六章過程—通用過程(過程的嵌套與遞歸調用)遞歸調用的執(zhí)行過程分兩部分進行:Fact(4)=4*fact(3)Fact(3)=3*fact(2)Fact(2)=2*fact(1)Fact(1)=1*fact(0)Fact(0)=1Fact(4)=4*6Fact(3)=3*2Fact(2)=2*1Fact(1)=1*1邊界條件第六章過程—通用過程(過程的嵌套與遞歸調用)例:P186(2)例:用遞歸調用方法求兩個正整數(shù)n和m的最大公約數(shù)。(上機操作)分析:通過輾轉相除求兩個整數(shù)最大化的方法,也可以采用遞歸調用方法來求解,遞歸終止的條件是余數(shù)為0。第六章過程—通用過程(過程的嵌套與遞歸調用)7.1.4變量、過程的作用域第六章過程—通用過程(變量、過程的作用域)7.1.4.1代碼模塊的概念第六章過程—通用過程(變量、過程的作用域)1.窗體模塊
2.標準模塊
3.類模塊VB應用程序.VBP窗體模塊.Frm類模塊.Cls標準模塊.Bas函數(shù)過程(Function)Sub過程事件過程函數(shù)過程(Function)Sub過程第六章過程—通用過程(變量、過程的作用域)7.1.4.2變量的作用域1.過程級變量2.模塊級變量7.1.4.3變量的生成期1.動態(tài)變量2.靜態(tài)變量(Static)第六章過程—通用過程(變量、過程的作用域)例:運行下列程序段后,單擊窗體,顯示結果是
⑴,再次單擊窗體時,顯示結果是⑵。去掉StaticTemp語句后,單擊窗體,顯示結果是⑶,再次單擊窗體時,顯示結果是
⑷。PrivateFunctionFn2(tAsInteger)StaticTempTemp=Temp+tFn2=TempEndFunctionPrivateSubForm_Click()s=Fn2(1)+Fn2(2)+Fn2(3)PrintsEndSub第六章過程—通用過程(變量、過程的作用域)7.1.4.4過程的作用域1.模塊級過程2.全局過程3.調用其他模塊中的過程習題7第六章過程—通用過程(習題)一.單選題1.假設已通過下列Sub語句定義了Mysub過程。若要調用該過程,可以采用
語句。
SubMysub(xAsInteger)
A.s=Mysub(2)B.Mysub(32000)C.PrintMysub(120)D.Callysub(40000)2.要使過程調用后返回兩個參數(shù)s和t,下列的過程定義語句中,正確的是
。
A.SubMySub1(ByRefs,ByValt)B.SubMySub1(ByVals,ByValt)C.SubMySub1(ByRefs,ByReft)D.SubMySub1(ByVals,ByReft)第六章過程—通用過程(習題)3.以下程序段運行后,單擊窗體顯示的結果是
。PrivateSubForm_Click()DimbAsInteger,yAsIntegerCallMysub2(3,b)y=bCallMysub2(4,b)Printy+bEndSubPublicSubMysub2(x,t)t=0Fork=1Toxt=t+kNextEndSubA.13B.16C.19D.214.下列程序段運行后,單擊窗體時顯示的結果是
。PublicSubMysub3(ByValxAsInteger,yAsInteger)x=y+xy=xModyEndSubPrivateSubForm_Click()DimaAsInteger,bAsIntegera=11:b=22CallMysub3(a,b)Printa;bEndSubA.3311B.1111C.1122D.22115.下列程序運行后,單擊窗體時顯示的結果是
。PublicSubMysub4(xAsInteger)x=3*x-1Ifx<5Thenx=x+9Printx;EndSubPrivateSubForm_Click()x=1Mysub43+xPrintxEndSubA.201B.2014C.111D.11146.在窗體模塊的通用段中聲明變量時,不能使用
關鍵字。
A.DimB.PublicC.PrivateD.Static第六章過程—通用過程(習題)7.使用PublicConst語句聲明一個全局的符號常量時,該語句應在
。
A.事件過程中B.窗體模塊的通用段中
C.標準模塊的通用段中D.通用過程中第六章過程—通用過程(習題)8.下列論述中,正確的是
。
A.用戶可以定義通用過程的過程名,也可以定義事件過程的過程名。
B.一個工程中只能有一個SubMain過程
C.窗體的Hide方法和Unload方法的作用完全相同。
D.在一個窗體文件中用Private定義的通用過程,可以被其他窗體調用第六章過程—通用過程(習題)二.填空題1.下列程序段運行后,單擊窗體時顯示的結果是
。PublicFunctionFn1(x)AsStringk=Len(x)Fn1=Mid(x,2,k-2)EndFunctionPrivateSubForm_Click()DimaAsString,bAsString,sAsStringa="ABCDEFG":b="12345"s=Fn1(a)+Fn1(b)PrintFn1(Fn1(Fn1(s)))EndSub2.在窗體上已經建立了3個文本框(Text1,Text2及Text3)和一個命令按鈕(Command1),運行程序后單擊命令按鈕,則在文本框Text1中顯示的內容是
⑴,在文本框Text2中顯示的內容是
⑵,在文本框Text3中顯示的內容是
⑶。PublicSubMySub5(x,ByValy)a=x+yx=a+yy=2*xEndSubPrivateSubCommand1_Click()DimbAsInteger,cAsIntegerb=1:CallMySub5(b,c)c=a+b:CallMySub5(c,b)a=a+cText1.Text=aText2.Text=bText3.Text=cEndSub3.運行下列程序段后,單擊窗體,顯示結果是
⑴,再次單擊窗體時,顯示結果是
⑵
。去掉StaticTemp語句后,單擊窗體,顯示結果是
⑶
,再次單擊窗體時,顯示結果是
⑷
。PrivateFunctionFn2(tAsInteger)StaticTempTemp=Temp+tFn2=TempEndFunctionPrivateSubForm_Click()s=Fn2(1)+Fn2(2)+Fn2(3)PrintsEndSub4.設在窗體(啟動窗體)上有一個命令按鈕Command1,在該按鈕的Click事件過程中已經寫了一些代碼,完成一定的功能,現(xiàn)要使程序運行時自動執(zhí)行該按鈕的功能,請在空白處填入合適的語句。PrivateSubForm_Load()
EndSub5.從鍵盤輸入一個十進制正整數(shù)(小于32767),利用過程To_hex的遞歸調用將該數(shù)轉換為十六進制數(shù)。完善下列程序,使之求出正確結果。PublicSubTo_hex(nAsInteger)DimrAsInteger,chAsStringch="0123456789ABCDEF"r=nMod16:n=n\16If⑴ThenTo_hex(⑵)EndIfPrintMid(⑶);EndSubPrivateSubForm_Load()DimnAsIntegerShown=Val(InputBox(""))To_hex(n)EndSub上機編程練習61.設計一個能檢查字符串是否為數(shù)字字符串的通用過程,調用該過程檢驗3個框中輸入的字符是否都是數(shù)字。如果都是數(shù)字,求這3個數(shù)字之和并把結果顯示在第4個文本框中。2.編寫一個標準模塊,該模塊包含一個能比較3個數(shù)大小和送回大數(shù)的Sub過程。調用該過程來求6個數(shù)的最大數(shù)。利用文本框控件數(shù)組和文本框來分別輸入數(shù)據和輸出最大數(shù)。3.窗體上含有兩個文本框(Textl及Text2)、一個列表框(Listl)和一個命令按鈕(Commandl)。程序運行后,用戶在文本框Textl中輸入一個字符串,其中包含若干個英文單詞,單詞之間用空格分隔。單擊命令按鈕后,分解出這些單詞,并依次顯示在列表框Listl中,單詞個數(shù)顯示在文本框Text2。完善下列程序代碼。PrivateSubCommand1_Click()DimsAsStrings=Trim(Text1.Text)List1.Clearn=Getword(s)Text2.Text=nEndSubPublicFunctionGetword(sAsString)AsIntegern=0DoWhilen<=Len(s)p=InStr(s,Space(1))n=n+1Ifp=0ThenList1.AddItemss=""ElseList1.AddItemLeft(s,p-1)s=Mi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)老顧聘用合同范本
- 先付款后供貨合同范本
- 保險投資合同范本
- 加工生產勞務合同范本
- 京東物流折扣合同范本
- 上門電纜轉讓合同范例
- epc裝飾工程合同范本
- 代人取藥兼職合同范本
- 不賒銷合同范本模板
- 化肥銷售協(xié)議合同范本
- 數(shù)字電子技術(武漢科技大學)知到智慧樹章節(jié)測試課后答案2024年秋武漢科技大學
- 綜合應用能力事業(yè)單位考試(綜合管理類A類)試題及解答參考
- 阿爾茲海默病的家庭護理
- bim技術課件教學課件
- 腹水形成的原因及治療
- 單晶爐車間安全培訓
- 高中地理必修第一冊期末試卷及答案-中圖版-2024-2025學年
- 護理核心制度測試題+參考答案
- 機械制造技術基礎(課程課件完整版)
- 《2023版CSCO卵巢癌診療指南》解讀課件
- 【醫(yī)院藥品管理系統(tǒng)探析與設計(論文)10000字】
評論
0/150
提交評論