版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第9章 程序與函數(shù)[換零錢程式],,Contents,9-1 模組化程式設(shè)計9-2 建立程序與函數(shù)9-3 傳值或傳址呼叫9-4 程序與函數(shù)的變數(shù)範圍9-5 常用的內(nèi)建函數(shù),9-1 模組化程式設(shè)計,9-1-1 模組基礎(chǔ)9-1-2 程序與函數(shù)是一個黑盒子,9-1-1 模組的基礎(chǔ),模組化是把大型功能切割成無數(shù)子功能,至於如何切割成一個個子功能的模組(相當於是Visual Basic模組),屬於結(jié)構(gòu)化分析的範疇,最常使用的是第7章的由
2、上而下設(shè)計方法。以Visual Basic語言來說,模組化的基本單位是程序與函數(shù),因為模組可大可小,可能只擁有單一程序或函數(shù),也可能是整個子功能的函式庫。不過每一個程序和函數(shù)都可以解決一個小問題,等到所有小問題都解決了,使用程序與函數(shù)堆積成的軟體系統(tǒng)或應(yīng)用程式也就開發(fā)完成。,9-1-2 程序與函數(shù)是一個黑盒子-說明,程序與函數(shù)是一個執(zhí)行特定功能的程式區(qū)塊,執(zhí)行程序與函數(shù)稱為函數(shù)呼叫(Functions Call),擁有傳回值的程序稱為
3、「函數(shù)」(Functions)。在呼叫時並不需要了解程序與函數(shù)內(nèi)部實際程式碼,程序與函數(shù)如同是一個「黑盒子」(Black Box),只要知道如何使用黑盒子的「使用介面」(Interface)即可,如下圖所示:,,,9-1-2 程序與函數(shù)是一個黑盒子-規(guī)則,當使用程式語言撰寫程序與函數(shù)時,有一些規(guī)則可供參考,如下所示:程序與函數(shù)的使用介面需要直接、良好定義和容易了解。在呼叫程序與函數(shù)時,並不需要知道任何有關(guān)內(nèi)部實作問題,唯一需要知道
4、的是如何使用它的使用介面。在實作程序與函數(shù)時,並不用考量或知道到底是誰需要使用它,只需滿足使用介面定義的輸入?yún)?shù)和傳回值即可。,9-1-2 程序與函數(shù)是一個黑盒子-語法與語意,程序與函數(shù)的「語法」(Syntax)是說明程序與函數(shù)需要傳入何種資料型態(tài)的「參數(shù)」(Parameters)和傳回值。「語意」(Semantic)是指出程序與函數(shù)可以作什麼事?換句話說,在撰寫程序與函數(shù)時,需要了解其語法規(guī)則,而在呼叫程序與函數(shù)時需要了解其語意規(guī)
5、則,如此才能正確呼叫程序與函數(shù)。,9-2 建立程序與函數(shù),9-2-1 建立程序與函數(shù)9-2-2 擁有參數(shù)的程序與函數(shù)9-2-3 強迫跳出程序與函數(shù),9-2 建立程序與函數(shù),在Visual Basic語言的程序可以分為兩種,如下所示:事件處理程序:事件處理程序是處理指定事件的程序(一定是Sub,因為不會有傳回值),在本章前的Windows應(yīng)用程式已經(jīng)使用Click事件處理程序,關(guān)於事件的更進一步說明請參閱第11章。一般程序:將程式
6、區(qū)塊使用一個程序或函數(shù)名稱來代替,以便呼叫程序與函數(shù)來執(zhí)行特定功能。Visual Basic語言的程序分為Sub程序和Function函數(shù)兩種,函數(shù)和程序的差別在於函數(shù)擁有傳回值;而程序沒有。,9-2-1 建立程序與函數(shù)-說明,Visual Basic語言的程序是使用Sub和End Sub包圍的程式區(qū)塊,在Sub關(guān)鍵字後是程序名稱,程序並沒有傳回值。Function函數(shù)類似Sub程序只是改為使用Function和End Functio
7、n包圍,其主要差異是函數(shù)擁有傳回值。,9-2-1 建立程序與函數(shù)-建立程序(語法),在Visual Basic語言建立程序的基本語法,如下所示:[Public | Private] Sub 名稱 程式區(qū)塊End Sub上述Sub指令前的Public或Private是存取修飾子。Public是公用程序,即在專案中的所有程式檔案都可以呼叫。Private只允許在同一個程式檔案進行呼叫。如果沒有指定,預(yù)設(shè)是Public。,9-2
8、-1 建立程序與函數(shù)-建立程序(範例),例如:顯示提示字串的ShowPrompt()程序,如下所示:Sub ShowPrompt() Dim msg As String msg = "50元: " lblOutput.Text = msgEnd Sub上述程式碼是ShowPrompt()程序,並沒有傳回值。,9-2-1 建立程序與函數(shù)-呼叫程序,在程式碼呼叫程序是使用Call指令,只需在
9、其後加上程序名稱即可,如下所示:Call ShowPrompt()上述程序呼叫因為程序沒有參數(shù),可以省略括號,而且不使用Call關(guān)鍵字也可以,如下所示:ShowPrompt,9-2-1 建立程序與函數(shù)-建立函數(shù)(語法),在Visual Basic語言建立函數(shù)的基本語法,如下所示:[Public | Private] Function 函數(shù)名稱 [As 資料型態(tài)] 程式區(qū)塊 Return 值 | 函數(shù)名稱 = 值
10、End FunctionFunction函數(shù)和Sub程序十分相似,As之後是傳回值的資料型態(tài)。函數(shù)傳回值是使用Return關(guān)鍵字來傳回,或?qū)⒑瘮?shù)名稱指定成需要傳回的值。,9-2-1 建立程序與函數(shù)-建立函數(shù)(範例),例如:將臺幣現(xiàn)鈔換成50元零錢的ReturnChange()函數(shù),如下所示:Function ReturnChange() Dim Amount As Integer Amount = CInt(txtA
11、mount.Text) Dim Change As Integer = 0 Do While Amount >= 50 Amount = Amount - 50 Change = Change + 1 Loop Return ChangeEnd Function,9-2-1 建立程序與函數(shù)-呼叫函數(shù),函數(shù)因為擁有傳回值,通常都是在指定敘述來呼叫函數(shù),而且是位在指
12、定敘述的右邊,如下所示:lblOutput.Text &= ReturnChange(),9-2-1 建立程序與函數(shù)-Visual Basic專案,Visual Basic專案:Ch9-2-1\換零錢程式在Windows應(yīng)用程式使用TextBox控制項輸入兌換金額後,呼叫程序與函數(shù)來顯示與計算可以換成幾個50元硬幣的零錢。其執(zhí)行結(jié)果如下圖所示:,9-2-1 建立程序與函數(shù)-程序與函數(shù)的執(zhí)行過程,Visual Basic程式是
13、如何執(zhí)行程序與函數(shù),以本節(jié)的範例為例,如下圖所示:,9-2-2 擁有參數(shù)的程序與函數(shù)-說明,程序與函數(shù)不只可以單純將重複程式區(qū)塊抽出成獨立區(qū)塊,還可以在程序與函數(shù)加上參數(shù)。在呼叫時傳入?yún)?shù)值後,相同程序與函數(shù)就可以得到不同的執(zhí)行結(jié)果。,9-2-2 擁有參數(shù)的程序與函數(shù)-語法,在Visual Basic語言建立擁有參數(shù)的程序與函數(shù),其語法如下所示:[Public | Private] [Sub | Function] 名稱(參數(shù)1,
14、參數(shù)2, …) 程式區(qū)塊 [Return 值 | 名稱 = 值]End [Sub | Function]括號的參數(shù)稱為「正式參數(shù)」(Formal Parameters)或「假的參數(shù)」(Dummy Parameters)。正式參數(shù)是識別字,其角色如同變數(shù),需要指定資料型態(tài),而且可以在程式區(qū)塊中使用。,9-2-2 擁有參數(shù)的程序與函數(shù)-範例1,例如:顯示提示字串的ShowPrompt()程序擁有1個參數(shù),如下所示:Su
15、b ShowPrompt(msg As String) lblOutput.Text = msgEnd Sub上述程序擁有一個參數(shù)。,9-2-2 擁有參數(shù)的程序與函數(shù)-範例2,例如:新增參數(shù)的換零錢函數(shù)ReturnChange(),如下所示:Function ReturnChange(Amount As Integer, Unit As Integer) Dim Change As Integer = 0
16、 Do While Amount >= Unit Amount = Amount - Unit Change = Change + 1 Loop Return ChangeEnd Function,9-2-2 擁有參數(shù)的程序與函數(shù)-呼叫,程序與函數(shù)如果擁有參數(shù),在呼叫時可以指定不同的參數(shù)值。因為新版ShowPrompt()程序擁有參數(shù),所以在呼叫時需指定參數(shù)值,如下所示:Call
17、 ShowPrompt("50元: ")上述程序呼叫的括號中就是指定參數(shù)值。擁有參數(shù)的函數(shù)呼叫,如下所示:lblOutput.Text &= ReturnChange(Amount, Unit),9-2-2 擁有參數(shù)的程序與函數(shù)-實際參數(shù),在呼叫程序與函數(shù)時的參數(shù)稱為「實際參數(shù)」(Actual Parameters),這就是參數(shù)值,需要和正式參數(shù)定義的資料型態(tài)相同。換句話說,每一個正式參數(shù)都需對應(yīng)同型態(tài)的
18、實際參數(shù)。,9-2-2 擁有參數(shù)的程序與函數(shù)-Visual Basic專案,Visual Basic專案:Ch9-2-2\換零錢程式這個Windows應(yīng)用程式是修改第9-2-1節(jié)的【換零錢程式】,改為使用擁有參數(shù)的程序與函數(shù)來換零錢,並且在表單新增TextBox控制項來輸入零錢的單位。其執(zhí)行結(jié)果如下圖所示:,9-2-3 強迫跳出程序與函數(shù)-說明,在執(zhí)行程序或函數(shù)時如果需要中斷程序或函數(shù)的執(zhí)行,此時可以使用Exit Sub跳出程序;Ex
19、it Function中斷函數(shù)的執(zhí)行,即跳出函數(shù)。,9-2-3 強迫跳出程序與函數(shù)-範例,例如:換零錢的ReturnChange()函數(shù),如下所示:Function ReturnChange(Amount As Integer, _ Unit As Integer) Dim Change As Integer = 0 Do While True
20、 Amount = Amount - Unit If Amount >= 0 Then Change = Change + 1 Else Return Change Exit Function End If Loop End Function,9-2-3 強迫跳出程序與函數(shù)-Visual Basic專案,Vis
21、ual Basic專案:Ch9-2-3\換零錢程式這個Windows應(yīng)用程式是修改第9-2-2節(jié)的【換零錢程式】,改為使用RadioButton選項按鈕來選擇零錢種類,在ReturnChange()函數(shù)的迴圈則改用Exit Function敘述來兌換零錢。其執(zhí)行結(jié)果如下圖所示:,9-3 傳值或傳址呼叫-說明,程序與函數(shù)不只能夠傳遞參數(shù),不同參數(shù)傳遞方式更影響傳入?yún)?shù)的變數(shù)值。Visual Basic語言提供兩種參數(shù)傳遞方式,如下表所示
22、:,,,,9-3 傳值或傳址呼叫-使用,在Visual Basic程序與函數(shù)預(yù)設(shè)使用傳值呼叫,如果沒有指明,VBE的程式碼編輯器自動會加上ByVal,如下所示:Sub SubByVal(ByVal P As Integer) …..End Sub事實上只有傳址程序或函數(shù)才需要特別指名ByRef,如下所示:Sub SubByRef(ByRef P As Integer) ….End Sub,9-3 傳值或傳址呼叫-Visu
23、al Basic專案,Visual Basic專案:Ch9-3\換零錢程式這個Windows應(yīng)用程式是修改第9-2-3節(jié)的【換零錢程式】,只是將ReturnChange()函數(shù)改為使用整數(shù)除法和餘數(shù)來計算,並且使用傳址呼叫來傳回剩下的金額。其執(zhí)行結(jié)果如下圖所示:,9-4 程序與函數(shù)的變數(shù)範圍-說明,在Visual Basic程式檔案可以同時建立多個程序或函數(shù),不同位置宣告變數(shù)都擁有不同的有效範圍,也就是只能在指定程式區(qū)塊的程式碼來存取
24、這些變數(shù)?!缸償?shù)範圍」(Scope)是當程式執(zhí)行時,變數(shù)可以讓程序或函數(shù)內(nèi)或其他程式區(qū)塊存取的範圍。,9-4 程序與函數(shù)的變數(shù)範圍-種類,區(qū)塊範圍(Block Scope):在If/End If、Select Case/End Case和Do While/Loop等程式區(qū)塊內(nèi)使用Dim宣告的變數(shù),變數(shù)只能在區(qū)塊內(nèi)使用,在區(qū)塊外的程式碼並無法存取這些變數(shù)。區(qū)域範圍(Local Scope):在程序與函數(shù)內(nèi)使用Dim宣告的變數(shù),變數(shù)只能
25、在程序或函數(shù)內(nèi)使用,程序或函數(shù)外程式碼並無法存取此變數(shù),稱為「區(qū)域變數(shù)」(Local Variables)。全域範圍(Global Scope):變數(shù)如果是在模組/類別的Module/ End Module和Class/End Class中,以Dim或Private宣告在程序和函數(shù)外,則該模組/類別檔案的程序和函數(shù)都可以存取此變數(shù),稱為「全域變數(shù)」(Global Variables)。,9-4 程序與函數(shù)的變數(shù)範圍-Visual Ba
26、sic專案,Visual Basic專案:Ch9-4\換零錢程式這個Windows應(yīng)用程式是修改和擴充第9-3節(jié)的【換零錢程式】,改為使用CheckBox控制項來勾選想兌換的硬幣種類,程式可以計算出可兌換成幾個50元硬幣、幾個20元、幾個10元、5元和1元硬幣。其執(zhí)行結(jié)果如下圖所示:,9-5 常用的內(nèi)建函數(shù),9-5-1 日期/時間函數(shù)9-5-2 字串處理函數(shù)9-5-3 資料型態(tài)檢查函數(shù)9-5-4 數(shù)學(xué)函數(shù),9-5-1 日期/時間
27、函數(shù)-說明,日期/時間函數(shù)可以處理日期/時間格式資料和進行分析。Visual Basic語言內(nèi)建常用的日期/時間函數(shù),其說明如下表所示:,9-5-1 日期/時間函數(shù)-範例,例如:在Label標籤控制項顯示現(xiàn)在的日期、時間和星期幾,如下所示:lblOutput.Text = "現(xiàn)在的日期時間: " & Now & _ vbNewLinelblOu
28、tput.Text &= "現(xiàn)在的日期: " & Today & vbNewLinelblOutput.Text &= "現(xiàn)在的時間: " & TimeOfDay & _ vbNewLineDim dtDay As Date ' 宣告日期/時間變數(shù)dtDay = Today
29、 ' 傳回現(xiàn)在日期lblOutput.Text &= "星期幾: " & Weekday(dtDay) & _ vbNewLine,9-5-1 日期/時間函數(shù)-DateAdd()函數(shù)(說明),DateAdd()函數(shù)可以加減日期/時間,其語法如下所示:DateAdd(單位字串, Number, DateTime)上述DateAd
30、d()函數(shù)是使用單位字串的秒、分或小時等單位,將第3個參數(shù)的日期/時間加減參數(shù)Number的值。單位字串的說明,如下表所示:,9-5-1 日期/時間函數(shù)-DateAdd()函數(shù)(範例),例如:在Label標籤控制項顯示5天後日期,如下所示:Dim dtDay, dtDay1 As Date ' 宣告日期時間變數(shù)dtDay = Today ' 傳回現(xiàn)在日期dtDay1 = DateAdd(&
31、quot;D", 5, dtDay) ' 加上5日lblOutput.Text &= "5天後為: " & dtDay1 & _ vbNewLine,9-5-1 日期/時間函數(shù)-DateDiff()函數(shù)(說明),DateDiff()函數(shù)可以計算日期或時間差,其語法如下所示:DateDiff(單位字串, DateTi
32、me1, DateTime2)上述DateDiff()函數(shù)能夠計算後2個參數(shù)的時間差,第1個參數(shù)字串同DateAdd()函數(shù),可以設(shè)定後2個日期/時間差是使用秒、分或小時等單位。,9-5-1 日期/時間函數(shù)-DateDiff()函數(shù)(範例),例如:在Label標籤控制項顯示計算結(jié)果的日期或時間差,如下所示:Dim offset As Integeroffset = DateDiff("D", dtDay, dt
33、Day1) ' 計算時間差lblOutput.Text &= "dtDay-dtDay1為: " & _ offset & "天",9-5-2 字串處理函數(shù)-說明,「字串」(String)是撰寫程式時常用的資料型態(tài),不論文字、標籤控制項取得的資料或程式輸出內(nèi)容,都是一種字串資料。Visual Basic語言的字串是Str
34、ing資料型態(tài)的變數(shù)或字串字面值,字串是0或多個依序的Char資料型態(tài)的字元,以雙引號括起的文字內(nèi)容,如下所示:Dim Stmt As String = "Visual Basic程式設(shè)計"Dim Stmt1 As StringStmt1 = "ASP.NET網(wǎng)頁設(shè)計",9-5-2 字串處理函數(shù)-函數(shù),9-5-3 資料型態(tài)檢查函數(shù),資料型態(tài)檢查函數(shù)能夠檢查Visual Basic變數(shù)的資料型
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 老鼠零錢包
- 折疊零錢包
- 玫瑰零錢包
- diy自己做零錢包
- 零錢兌換裝置的設(shè)計
- 基于深度經(jīng)濟的移動“零錢易”服務(wù)策略研究.pdf
- 教你做櫻花錦囊化妝包零錢包的教材
- 4函數(shù)與子程序
- 方程與函數(shù)的零點
- 函數(shù)與導(dǎo)數(shù)—曲線的交點和函數(shù)的零點
- 函數(shù)的圖像與零點試題
- 作業(yè)5 程序設(shè)計_函數(shù)
- 函數(shù)零點
- 管錢_賺錢_生錢_護錢
- vfp命令、函數(shù)及程序語句大全
- c語言程序設(shè)計函數(shù)劉
- 實驗七函數(shù)程序設(shè)計(1)
- [學(xué)習(xí)]方程的與函數(shù)的零點
- 函數(shù)的零點
- 錢選與錢選的“戾家畫”說.pdf
評論
0/150
提交評論