2 1( ) sub 2( ) end sub 2cc.cust.edu.tw/~ccchen/doc/vb-ch08.pdf · 2011-03-03 · public class...

18
10-1 副程式 通常我們會將重複功能的程式碼,獨立形成一個固定的程式片段,讓主 程式重複呼吸使用稱為副程式。 敘述1 敘述2 主程式 副程式1 Sub 功能1( ) : : End Sub 副程式2 Sub 功能2( ) : : End Sub 主程式與副程式

Upload: others

Post on 05-Aug-2020

4 views

Category:

Documents


0 download

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!,結果比我們的程式算的還精確,如圖所示。