2 1( ) sub 2( ) end sub 2cc.cust.edu.tw/~ccchen/doc/vb-ch08.pdf · 2011-03-03 · public class...
TRANSCRIPT
-
10-1
副程式
通常我們會將重複功能的程式碼,獨立形成一個固定的程式片段,讓主程式重複呼吸使用稱為副程式。
開 始
敘述1
敘述2
輸 出
結 束
主程式
副程式1
Sub 功能1( )::
End Sub
副程式2
Sub 功能2( )::
End Sub
主程式與副程式
-
10-2
副程式
副程式和函式最大的不同處在於:
(1) 副程式並不傳回值(2) 函式會傳回一個值
假設要讓副程式回傳值,可使用:
(1) 設定全域變數,進行傳值呼叫(Call by Value)(2) 傳址呼叫(Call by Address)
-
10-3
副程式
副程式的語法:
[Private][Public] Sub 副程式名稱(參數資料串列)程式敘述
:執行特定的功能
:End Sub
[說明]1.如果使用Private sub副程式名稱...,只能允許同一個模組來進行呼叫使用。2.如果使用Public sub副程式名稱...,它是可以讓目前應用程式的所有程序或是模組呼叫使用。
3.假設沒有特別指定時,預設值是Public。4.副程式宣告的地方,可在模組中宣告,也可以寫在表單開始與結束的位置。5.不可以在運算式中使用副程式。
-
10-4
副程式
副程式依其特性可分成:
1.內建函式所謂內函式是Visual Basic本身提供的,當我們在函式名稱後面加上參數,就可以馬上使用。
2.程序程序又分成事件與一般,事件程序通常配合物件來使用的,而一般程序則是根據程式需求來撰寫的程式區段。
-
10-5
副程式介紹[範例]設計一個簡單的副程式應用,計算結果可從「及時運算視窗」中顯示。
Step 1:建立Form1表單,然後增加一個Button1物件,請參考下圖所示。
副程式的簡單範例TextButton1
設定值屬性項目物件
建置副程式的範例表單
-
10-6
副程式介紹Step 2:撰寫圖示的程式,其中我們的主程式段是在Button1_Click的程序
內,而被呼叫的副程式段,我們撰寫在最上層的編輯區內,也就在Public Class Form1這一行程式碼下面。
副程式在程式編輯器內的畫面
[程式說明]1.主程式中,呼叫兩次副程式,每一呼叫副程式時,都有給予傳遞的參數。2.副程式的名稱為proc1,前面沒有Public或Private時,都當作Public。3.副程式內的ByVal是表示,採傳值方式傳遞參數。
-
10-7
副程式介紹
Step 3:執行程式開始,當我們按下副程式的簡單範例鈕後,即時運算視窗分別出現30與60的計算結果,如圖所示。
副程式計算結果正確
-
10-8
副程式介紹
[範例]設計一個參數傳遞陣列元素的副程式應用,並且計算出陣列元素個數與陣列元素總和。
Step 1:首先,建立一個Form1表單,在表單上放置一個Label1物件與一個Button1物件,然後設計Button1的Text屬性為 “參數傳遞陣列元素”,參考下圖所示。
(無更改)Label1
參數傳遞陣列元素TextButton1
設定值屬性項目物件
建置參數傳遞陣列元素Form1表單
-
10-9
副程式介紹Step 2:參考下列程式,分別在主程式宣告陣列並給予初值,以及在副程式
計算出陣列元素個數有幾個,和陣列元素的總和。
Public Class Form1Sub sum(ByVal A() As Integer)
Dim total As Integer = 0For Each value In A
total = total + valueNextLabel1.Text = "陣列元素個數:" & A.Length & vbCrLf & _
"陣列元素總和:" & totalEnd SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim score(3) As Integerscore(0) = "80"score(1) = "90"score(2) = "65"score(3) = "38"sum(score)
End SubEnd Class
[程式說明]1.使用sum(score)來呼叫副程式,並傳遞score( )陣列元素內容。2.副程式複製的陣列名稱為A( )。3.A.Length為計算陣列個數。4.
For Each value In陣列名稱total=total+value
Next為計算陣列所有元素總和。
[程式說明]1.使用sum(score)來呼叫副程式,並傳遞score( )陣列元素內容。2.副程式複製的陣列名稱為A( )。3.A.Length為計算陣列個數。4.
For Each value In陣列名稱total=total+value
Next為計算陣列所有元素總和。
-
10-10
副程式介紹
Step 3:圖示中的程式碼,為實際畫面的對照,請參考。
實際主程式與副程式的編輯情形
-
10-11
副程式介紹
Step 4:執行結果,請檢視圖示的計算數據。
順利計算陣列元素個數與元素總和
-
10-12
副程式介紹[範例]使用副程式的方法,設計一個可計算階乘N!的程式應用。Step 1:依照圖示的畫面,設計Form1表單的環境,然後放入一個Label1物件
與一個Button1的物件。
(無更改)Label1計算階乘N!的副程式練習TextButton1
設定值屬性項目物件
配置物件於Form1表單
-
10-13
副程式介紹
Step 2:參考下列程式,主程式是放入Button1_Click程序內,而副程式則緊接在Public Class Form1下一行撰寫。
Public Class Form1Sub factorial(ByVal f As Integer)
Dim total As Doubletotal = 1For i As Integer = 2 To f
total = total * iNextLabel1.Text = f & "!的計算值=" & total
End SubPrivate Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.ClickDim N As IntegerN = InputBox("請決定計算階乘N!的N值")factorial(N)
End SubEnd Class [程式說明]1.副程式factorial是使用ByVal方式,也就傳值呼叫方式。
2.在主程式內,使用InputBox方式,取得計算階乘的最大數N。3.主程式透過factorial(N)來呼叫副程式,並傳遞參數N。
[程式說明]1.副程式factorial是使用ByVal方式,也就傳值呼叫方式。2.在主程式內,使用InputBox方式,取得計算階乘的最大數N。3.主程式透過factorial(N)來呼叫副程式,並傳遞參數N。
-
10-14
副程式介紹
Step 3:實際程式編輯畫面對照,如圖所示。
實際程式撰寫畫面參考
-
10-15
副程式介紹
Step 4:執行程式開始,首先,當我們按下計算階乘N!的副程練習鈕,程式要我們決定計算階乘N!的N值,如圖所示。
要求輸入N值
-
10-16
副程式介紹
Step 5:假設,我們輸入 "6",也就是要計算 "6!",如圖所示。
Step 6:計算結果顯示在Form1上的Label1物件內,由圖中看出,「6!的計算值=720」是正確無誤的。
-
10-17
副程式介紹[討論]上個例子為6!,我們還可以驗算,即6!=6×5×4×3×2×1,萬一遇到數字大一點,要如何驗算,才能證明我們的程式是對的。首先,我們可以開放電腦內建的小算盤,開啟「工程用」模式,即可進行階乘驗算,如圖所示。
驗算6!的結果
-
10-18
副程式介紹
假設我們計算120!,也就N=120,則程式顯示出複雜的結果,參考圖所示。
回到小算盤去驗證120!,結果比我們的程式算的還精確,如圖所示。