1 / 24

第 7 章 程序與函數

第 7 章 程序與函數. Ren-Jie Wang, 王 仁 傑 , Ph.D. rjwang@nutc.edu.tw http://rjwang.myweb.hinet.net. 第 7 章 程序與函數. 7-1 模組化程式設計 7-2 程序與函數 7-3 程序與函數的變數範圍 7-4 常用的內建函數 7-5 遞迴函數. 7-1-2 程序與函數是一個黑盒子 - 圖例.

livana
Download Presentation

第 7 章 程序與函數

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第7章程序與函數 Ren-Jie Wang,王 仁 傑, Ph.D. rjwang@nutc.edu.tw http://rjwang.myweb.hinet.net

  2. 第7章 程序與函數 • 7-1 模組化程式設計 • 7-2 程序與函數 • 7-3 程序與函數的變數範圍 • 7-4 常用的內建函數 • 7-5 遞迴函數

  3. 7-1-2 程序與函數是一個黑盒子-圖例 • 程式碼只知道呼叫程序時,需要傳入的參數和取得傳回值。它是程序函數和外部溝通的使用介面,一個對外的邊界,實際程式碼內容是隱藏在使用介面後,我們將程序與函數實際內容的程式碼撰寫稱為「實作」(Implementation)。

  4. 7-2 程序與函數 • 程序與函數可以將程式中,一些常用的共同程式碼獨立成區塊,也就是建立結構化程式設計的模組。 • Visual Basic程序可以分為兩種,如下: • 事件處理程序:事件處理程序是處理指定事件的程序(一定是Sub,因為不會有傳回值)。 • 一般程序:將程式區塊使用一個程序或函數名稱來代替,以便呼叫程序與函數來執行特定功能。Visual Basic程序分為兩種: • Sub程序 • Function函數。

  5. 7-2-1 建立Sub程序-建立程序(說明) • Visual Basic語言的程序是使用Sub和End Sub包圍的程式區塊,在Sub關鍵字後是程序名稱,程序並沒有傳回值。 • 在Visual Basic程式建立程序的語法,如下所示: [Public | Private] Sub 名稱 程式區塊 End Sub • 上述Sub指令前的Public或Private是存取修飾子。

  6. 7-2-1 建立Sub程序-建立程序(範例) • 程序名稱的命名和變數名稱相同,在同一模組不能使用相同的程序名稱。例如:顯示課程名稱的程序,如下所示: Sub PrintCourseTitle() Dim title As String title = "Visual Basic程式設計" lblOutput.Text = title & vbNewLine End Sub

  7. 7-2-1 建立Sub程序-呼叫程序 • 在程式碼呼叫程序是使用Call指令,我們只需在其後加上程序名稱即可,如下所示: Call PrintCourseTitle() • 上述程序呼叫因為程序沒有參數,也可以省略括號,或不使用Call關鍵字也可以,如下所示: PrintCourseTitle

  8. 7-2-2 建立Function函數-建立函數(說明) • Function函數類似Sub程序只是改為使用Function和End Function包圍,其主要差異是函數有傳回值。 • 在Visual Basic程式的函數語法,如下所示: [Public | Private] Function 名稱 [As 資料型別] 程式區塊 Return 值 | 名稱 = 值 End Function • As之後是傳回值的資料型別。函數傳回值是使用Return關鍵字來傳回值,或將函數名稱指定成需要傳回的值。

  9. 7-2-2 建立Function函數-建立函數(範例) • 例如:計算體脂肪BMI值的BMI()函數,如下所示: Function BMI() Dim result, h, w As Double h = CDbl(txtHeight.Text) w = CDbl(txtWeight.Text) result = w / ( h * h ) Return result End Function • 上述函數使用Return傳回最後結果。

  10. 7-2-2 建立Function函數-呼叫函數 • 函數因為擁有傳回值,通常都是在指定敘述來執行函數呼叫,並且位在指定敘述的右邊,如下所示: lblOutput.Text = BMI() • 將上述lblOutput標籤控制項的Text屬性指定成函數的傳回值。

  11. 7-2-3 擁有參數的程序與函數-建立(說明) • 在Visual Basic程式建立擁有參數的程序與函數,其語法如下所示: [Public | Private] [Sub | Function] 名稱(參數1 ,參數2, …) 程式區塊 [Return 值 | 名稱 = 值] End [Sub | Function] • 上述括號的參數稱為「正式參數」(Formal Parameters)或「假的參數」(Dummy Parameters)。

  12. 7-2-3 擁有參數的程序與函數-建立(程序範例) • 例如:顯示提示文字和訊息的程序,如下所示: Sub PrintMessage(msg As String, prompt As String) lblOutput.Text &= prompt & ":" & msg & vbNewLine End Sub • 上述程序擁有2個參數,因為參數不只一個,所以使用","逗號分隔。

  13. 7-2-3 擁有參數的程序與函數-建立(函數範例) • 例如:溫度轉換函數,如下所示: Function ConvertTemperature(C As Integer) Dim F As Single F = ( 9.0 * C ) / 5.0 + 32.0 Return F End Function • 上例,BMI(h,w)函數如何實作?

  14. 7-2-3 擁有參數的程序與函數-呼叫 • 程序與函數如果有參數,在呼叫時可以指定不同的參數值,擁有參數的程序呼叫,如下所示: PrintMessage(txtMsg.Text, txtPrompt.Text) • 每一個正式參數都需對應同型別的實際參數。同樣的,擁有參數的函數呼叫,如下所示: output = "華氏溫度:" & ConvertTemperature(C) • 上述程式碼呼叫函數來轉換攝氏成為華氏溫度。

  15. 7-2-4 傳值或傳址呼叫程序與函數-說明 • 程序與函數不只能夠傳遞參數,不同的參數傳遞方式將影響傳入參數的變數值。Visual Basic語言提供兩種參數傳遞方式,如下表所示:

  16. 7-2-4 傳值或傳址呼叫程序與函數-範例 • Visual Basic程序與函數預設使用傳值呼叫,如果沒有指明,預設是ByVal(舊版Visual Studio會自動加上ByVal,新版並不會),如下所示: Sub SubByVal(C As Integer) ….. End Sub • 事實上,只有傳址的程序或函數才需要特別指名ByRef,如下所示: Sub SubByRef(ByRef C As Integer) …. End Sub

  17. 傳值或傳址呼叫程序 • 實作傳址呼叫程序 • 交換—swap(ByRefa,ByRefb)

  18. 7-2-5 強迫跳出程序與函數-跳出程序 • 在執行程序時如果需要中斷程序的執行,可以使用Exit Sub跳出程序,如下所示: Sub Counter(times As Integer) …… Exit Sub …… End Sub

  19. 7-2-5 強迫跳出程序與函數-跳出函數 • 如果執行函數時需要中斷函數的執行,請使用Exit Function跳出函數,如下所示: Function SumOne2N(n As Integer) …… Exit Function …… End Function 強迫跳出 Exit for Exit do Exit sub Exit Fucntion

  20. 7-3-1 變數範圍-說明 • 「變數範圍」(Scope)是當程式執行時,變數可以讓程序或函數內或其他程式區塊存取的範圍。 • 變數依宣告位置擁有三種範圍,如下所示: • 區塊範圍(Block Scope):變數只能在區塊內使用 • If/End if、Select Case/End Case、For/Next、Do/Loop • 區域範圍(Local Scope):在Sub和Fucntion內使用Dim宣告的變數,變數只能在程序或函數內使用,程序或函數外程式碼並無法存取此變數。 • 全域範圍(Global Scope):在Module/Class中,以Dim或Private宣告在程序和函數外,則該Module/Class的程序和函數都可以存取此變數。

  21. 7-3-2 全域變數的應用 • 實作人氣投票

  22. 7-3-2 全域變數的應用-Visual Basic專案 Visual Basic專案:Ch7-3-2 • 在Windows應用程式建立熱門手機品牌的票選系統,只需選取選項按鈕後,按下按鈕即可參與票選,程式會記錄總投票人數和各手機廠牌的票數,如右圖所示: • 與上例同義,自行練習。

  23. 7-4 常用的內建函數 • 請參見課程網頁的整理 • 常用內建函數 • VB2012內建函數一覽表(MSDN 線上)

  24. 7-5 遞迴函數 • 請參見課程網頁的整理

More Related