html5-img
1 / 38

Windows programming 視窗程式設計

Windows programming 視窗程式設計. Yuan-Yu Tsai 蔡淵裕 yytsai@asia.edu.tw 辦公室: HB61. CHAPTER 4 副程式與模組. 副程式. 藉由 『 副程式 』 或 『 函式 』 的建立, 同樣一段程式碼 ,透過 輸入不同 『 參數 』 ,就能夠 重複的 被 使用 在各種專案和程式碼中 成績處理程式 傳入不同科目的分數,即可計算出平均值 .NET Framework 本身內建了相當多豐富的系統函式 ( 或是副程式 ) 提供程式設計師使用 開發人員 不需親自撰寫所有的程式碼 ,透過簡單的指令即可達成需要的功能.

nadine-pena
Download Presentation

Windows programming 視窗程式設計

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. Windows programming視窗程式設計 Yuan-Yu Tsai 蔡淵裕 yytsai@asia.edu.tw 辦公室:HB61

  2. CHAPTER 4 副程式與模組

  3. 副程式 • 藉由『副程式』或『函式』的建立,同樣一段程式碼,透過輸入不同『參數』,就能夠重複的被使用在各種專案和程式碼中 • 成績處理程式 • 傳入不同科目的分數,即可計算出平均值 • .NET Framework本身內建了相當多豐富的系統函式(或是副程式)提供程式設計師使用 • 開發人員不需親自撰寫所有的程式碼,透過簡單的指令即可達成需要的功能

  4. 範例-刪除檔案 • 透過『System.IO.File.Delete』刪除硬碟中某個指定的檔案 • 括號內之『C:\abc.txt』稱之為參數

  5. 範例-計算次方 • 透過『System.Math.Pow』計算次方 • 括號內之『a』及『b』稱之為參數

  6. 模組 • 成績處理程式 • 計算平均值 • 找最高分及最低分 • 計算標準差及變異數 • 模組 • 將相同類型的副程式或函式放在一起分類使用 • 意味著程式可以分派給多人共同合作

  7. 副程式結構 Subroutine 這樣的一個程式區塊(從Sub…到End Sub),就被稱為『副程式』,且可在其他的程式碼當中被呼叫

  8. 副程式 副程式需要有一個名字, 命名規則與變數相同 呼叫.NET本身提供的系統函式,來取得時間 主程式 顯示目前的時間 利用Call指令呼叫副程式

  9. Sub Main( ) Dim i As Integer For i = 1 To 12 Console.WriteLine(i) Next Pause( ) End Sub Sub Pause( ) Console.WriteLine( ) Console.Write("...程式暫停中,請按任意鍵繼續…") Console.ReadKey( ) End Sub

  10. 函式(Function)建立 函式名稱 函式所須參數由逗號隔開,且每個參數都要有型別 函式回傳之資料型態 Return指令用來結束Function並把值傳回函式名稱 • 函式與副程式之差異在於函式是可以具有傳回值的,因此需要指定『回傳值的型別』 • 參數是指當要呼叫這個函式時,需要傳入的運算用資料(副程式與函式皆可有參數)

  11. 呼叫函式 呼叫時需要傳入兩個參數,傳入的參數可以是變數或是常數的形式 由於Max函式會有回傳值,因此建立一個變數來『接收回傳值』 Max函式回傳之結果會被忽略

  12. Example • 建立一個函式,讓使用者輸入圓的的半徑,該函式就傳回圓的面積

  13. 函式 副程式

  14. Exercise • 參考CH02-12的範例,建立一個BMI函式,當傳入身高,體重,則傳回該人的BMI值 • 如果函式的回傳值型別設為Single,但主程式接收參數的變數型別為Integer,則會發生什麼狀況? • 如果函式中參數的型別為String,但主程式傳遞給該函式的相對應變數為Integer型別,則會發生什麼狀況? • 如果函式中參數的型別為Integer,但主程式傳遞給該函式的相對應變數為String型別,則會發生什麼狀況?

  15. Example • 請撰寫一個函式,名稱為GetNumber,接收的參數為msg(String型別),並且回傳Integer型別的回傳值,必須具備顯示Msg並且要求使用者輸入數字的功能 n1=GetNumber("請輸入數字1:") n2=GetNumber("請輸入數字2:")

  16. 傳值呼叫(ByVal ) 執行結果 變數a:10 變數b:20 當主程式呼叫副程式的時候,把自己變數內的值給副程式用,但原本主程式中的變數則不受副程式的影響

  17. 傳址呼叫(ByRef ) 執行結果 變數a:20 變數b:10 當主程式呼叫副程式的時候,把自己的變數本身一起傳過去給副程式使用

  18. Optional關鍵字 • 以此關鍵字修飾的參數被定義後,主程式在呼叫該函數時,可以省略此參數 因為「Optional」修飾字的關係,就算在呼叫add函式沒有填入參數b值也不會有錯誤訊息 需指定預設值

  19. Exercise • 請建立一個函式,可以傳入兩個或三個整數型態的參數,並針對傳入的參數做相乘的動作,當參數只傳入兩個時,則將兩個參數相乘,並將結果回傳,若傳入三個參數,則將這三個參數相乘,並把結果回傳

  20. 變數的存留期與存取範圍 • 變數的『存留期』,是指變數在記憶體當中佔有的時間,從什麼時候開始到什麼時候結束 • 變數的『存取範圍』,則是指程式碼中可以存取特定變數的範圍 • 全域變數指的是在程式的任何範圍都可存取到的變數 Do…Loop、For Each…Next、If…End If、Select…End Select、SyncLock…End SyncLock、Try…End Try、While…End While、Sub…End Sub、Function…End Function

  21. 請注意這個變數宣告在主程式Sub Main( )的外面,稱之為全域變數 這個變數宣告在GetUserName()函式中,稱之為區域變數 這邊用到了第2行所定義的全域變數

  22. 靜態變數 • 以Static關鍵字所宣告的變數 • 靜態變數其數值會被保留,不會隨著所在的副程式的結束而消失

  23. 靜態變數 • 靜態變數的生命週期與『全域變數』是一樣的 • 在函式的最外層宣告全域變數之效果與靜態變數相同 • 全域變數之缺點 • 每個副程式或任何區域都可以存取該變數 • 其他的副程式不小心用到這個全域變數,或是誤設該變數的值,導致難以察覺的錯誤,破壞函式間的獨立性 • 全域變數中已用過的變數名稱,同樣的名稱不能再出現 • 靜態變數之優點 • 跟全域變數一樣的生命週期 • 存取範圍被刻意侷限在某個副程式或是區域當中 • 可以避免被程式設計師誤用,有些常用的變數名稱,也可以重複的使用在不同的副程式或函式當中

  24. .NET函式庫的呼叫與使用 • .NET Framework中有內建豐富的函式庫,並且依照不同的功能區分

  25. .NET My Class Library • 透過簡單的『My』關鍵字,讓程式設計師可以輕鬆的引用.NET Framework的功能 • 只需要在程式碼撰寫時,鍵入『My.』系統就會跳出可供使用的功能

  26. Exercise • 請試著透過My Class,找到下載網際網路上檔案的方法 • 請試著透過My Class,找到刪除一個本機電腦檔案(例如自己的C:\)的方法 • 請試著透過My Class,找到讓電腦『叮』一聲的方法 • 請試著透過My Class,偵測使用者是否按下鍵盤上的Number Lock,並顯示出來

  27. 模組 Module • 一群副程式的集合 • 將主程式碼切割成副程式,並將功能相似的副程式歸類為一個模組 • 使得開發人員方便管理,後續的維護也會更加便利,特別是在多人同時開發一個專案的時候,好處會更加明顯

  28. 建立模組之方式選單中的「專案」→「加入模組」建立模組之方式選單中的「專案」→「加入模組」

  29. 建立模組之方式在「方案總管」中,按下滑鼠右鍵→「加入」→「模組」建立模組之方式在「方案總管」中,按下滑鼠右鍵→「加入」→「模組」

  30. 模組的使用 只需要打入模組名稱『newmodule.』,就會帶出該模組中可用的函式(剛才我們建了一個Pause)出來給我們選擇 名為NewModule的模組,內含一個Pause的副程式

  31. 函式自動註解功能 在函式或副程式上頭,連續打三個『'』,就會自動出現這串文字,請在<summary>和</summary>中,手動入輸入註解

  32. 模組中函式的可用範圍 • 『保護措施』的機制:避免呼叫到不該呼叫的函式而發生意料之外的錯誤,可讓模組的架構更佳的完善 • 當函式未用Private關鍵字修飾時,預設可跨到模組之外 • 當變數未用Public關鍵字修飾時,預設存取範圍為模組之內

  33. Exercise • 某班同學考試成績如右 • 若要把分數分成三個級距 • 100-80為優秀 • 79-60為通過 • 0-59為不通過 • 請利用副程式撰寫程式,列出優秀、通過以及不通過的學生

  34. Q & A

More Related