windows programming n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Windows programming 視窗程式設計 PowerPoint Presentation
Download Presentation
Windows programming 視窗程式設計

Loading in 2 Seconds...

play fullscreen
1 / 38

Windows programming 視窗程式設計 - PowerPoint PPT Presentation


  • 120 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Windows programming 視窗程式設計' - nadine-pena


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
windows programming
Windows programming視窗程式設計

Yuan-Yu Tsai

蔡淵裕

yytsai@asia.edu.tw

辦公室:HB61

slide2

CHAPTER 4

副程式與模組

slide3
副程式
    • 藉由『副程式』或『函式』的建立,同樣一段程式碼,透過輸入不同『參數』,就能夠重複的被使用在各種專案和程式碼中
    • 成績處理程式
      • 傳入不同科目的分數,即可計算出平均值
  • .NET Framework本身內建了相當多豐富的系統函式(或是副程式)提供程式設計師使用
    • 開發人員不需親自撰寫所有的程式碼,透過簡單的指令即可達成需要的功能
slide4
範例-刪除檔案
  • 透過『System.IO.File.Delete』刪除硬碟中某個指定的檔案
    • 括號內之『C:\abc.txt』稱之為參數
slide5
範例-計算次方
  • 透過『System.Math.Pow』計算次方
    • 括號內之『a』及『b』稱之為參數
slide6
模組
  • 成績處理程式
      • 計算平均值
      • 找最高分及最低分
      • 計算標準差及變異數
  • 模組
    • 將相同類型的副程式或函式放在一起分類使用
    • 意味著程式可以分派給多人共同合作
subroutine
副程式結構 Subroutine

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

slide8

副程式

副程式需要有一個名字,

命名規則與變數相同

呼叫.NET本身提供的系統函式,來取得時間

主程式

顯示目前的時間

利用Call指令呼叫副程式

slide9

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

function
函式(Function)建立

函式名稱

函式所須參數由逗號隔開,且每個參數都要有型別

函式回傳之資料型態

Return指令用來結束Function並把值傳回函式名稱

  • 函式與副程式之差異在於函式是可以具有傳回值的,因此需要指定『回傳值的型別』
  • 參數是指當要呼叫這個函式時,需要傳入的運算用資料(副程式與函式皆可有參數)
slide11
呼叫函式

呼叫時需要傳入兩個參數,傳入的參數可以是變數或是常數的形式

由於Max函式會有回傳值,因此建立一個變數來『接收回傳值』

Max函式回傳之結果會被忽略

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

函式

副程式

exercise
Exercise
  • 參考CH02-12的範例,建立一個BMI函式,當傳入身高,體重,則傳回該人的BMI值
  • 如果函式的回傳值型別設為Single,但主程式接收參數的變數型別為Integer,則會發生什麼狀況?
  • 如果函式中參數的型別為String,但主程式傳遞給該函式的相對應變數為Integer型別,則會發生什麼狀況?
  • 如果函式中參數的型別為Integer,但主程式傳遞給該函式的相對應變數為String型別,則會發生什麼狀況?
example1
Example
  • 請撰寫一個函式,名稱為GetNumber,接收的參數為msg(String型別),並且回傳Integer型別的回傳值,必須具備顯示Msg並且要求使用者輸入數字的功能

n1=GetNumber("請輸入數字1:")

n2=GetNumber("請輸入數字2:")

byval
傳值呼叫(ByVal )

執行結果

變數a:10

變數b:20

當主程式呼叫副程式的時候,把自己變數內的值給副程式用,但原本主程式中的變數則不受副程式的影響

byref
傳址呼叫(ByRef )

執行結果

變數a:20

變數b:10

當主程式呼叫副程式的時候,把自己的變數本身一起傳過去給副程式使用

optional
Optional關鍵字
  • 以此關鍵字修飾的參數被定義後,主程式在呼叫該函數時,可以省略此參數

因為「Optional」修飾字的關係,就算在呼叫add函式沒有填入參數b值也不會有錯誤訊息

需指定預設值

exercise1
Exercise
  • 請建立一個函式,可以傳入兩個或三個整數型態的參數,並針對傳入的參數做相乘的動作,當參數只傳入兩個時,則將兩個參數相乘,並將結果回傳,若傳入三個參數,則將這三個參數相乘,並把結果回傳
slide22
變數的存留期與存取範圍
  • 變數的『存留期』,是指變數在記憶體當中佔有的時間,從什麼時候開始到什麼時候結束
  • 變數的『存取範圍』,則是指程式碼中可以存取特定變數的範圍
  • 全域變數指的是在程式的任何範圍都可存取到的變數

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

slide23

請注意這個變數宣告在主程式Sub Main( )的外面,稱之為全域變數

這個變數宣告在GetUserName()函式中,稱之為區域變數

這邊用到了第2行所定義的全域變數

slide24
靜態變數
  • 以Static關鍵字所宣告的變數
  • 靜態變數其數值會被保留,不會隨著所在的副程式的結束而消失
slide25
靜態變數
  • 靜態變數的生命週期與『全域變數』是一樣的
    • 在函式的最外層宣告全域變數之效果與靜態變數相同
  • 全域變數之缺點
    • 每個副程式或任何區域都可以存取該變數
      • 其他的副程式不小心用到這個全域變數,或是誤設該變數的值,導致難以察覺的錯誤,破壞函式間的獨立性
    • 全域變數中已用過的變數名稱,同樣的名稱不能再出現
  • 靜態變數之優點
    • 跟全域變數一樣的生命週期
    • 存取範圍被刻意侷限在某個副程式或是區域當中
      • 可以避免被程式設計師誤用,有些常用的變數名稱,也可以重複的使用在不同的副程式或函式當中
slide26
.NET函式庫的呼叫與使用
  • .NET Framework中有內建豐富的函式庫,並且依照不同的功能區分
net my class library
.NET My Class Library
  • 透過簡單的『My』關鍵字,讓程式設計師可以輕鬆的引用.NET Framework的功能
  • 只需要在程式碼撰寫時,鍵入『My.』系統就會跳出可供使用的功能
exercise2
Exercise
  • 請試著透過My Class,找到下載網際網路上檔案的方法
  • 請試著透過My Class,找到刪除一個本機電腦檔案(例如自己的C:\)的方法
  • 請試著透過My Class,找到讓電腦『叮』一聲的方法
  • 請試著透過My Class,偵測使用者是否按下鍵盤上的Number Lock,並顯示出來
module
模組 Module
  • 一群副程式的集合
  • 將主程式碼切割成副程式,並將功能相似的副程式歸類為一個模組
  • 使得開發人員方便管理,後續的維護也會更加便利,特別是在多人同時開發一個專案的時候,好處會更加明顯
slide30
建立模組之方式選單中的「專案」→「加入模組」建立模組之方式選單中的「專案」→「加入模組」
slide31
建立模組之方式在「方案總管」中,按下滑鼠右鍵→「加入」→「模組」建立模組之方式在「方案總管」中,按下滑鼠右鍵→「加入」→「模組」
slide32
模組的使用

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

名為NewModule的模組,內含一個Pause的副程式

slide35
函式自動註解功能

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

slide36
模組中函式的可用範圍
  • 『保護措施』的機制:避免呼叫到不該呼叫的函式而發生意料之外的錯誤,可讓模組的架構更佳的完善
  • 當函式未用Private關鍵字修飾時,預設可跨到模組之外
  • 當變數未用Public關鍵字修飾時,預設存取範圍為模組之內
exercise3
Exercise
  • 某班同學考試成績如右
  • 若要把分數分成三個級距
    • 100-80為優秀
    • 79-60為通過
    • 0-59為不通過
  • 請利用副程式撰寫程式,列出優秀、通過以及不通過的學生