公告

Collapse
No announcement yet.

Visual Basic 6 ›副程式與程序

Collapse
X
Collapse
Who has read this thread:
 
  • Filter
  • Time
  • Show
全部清除
新帖子

  • Visual Basic 6 ›副程式與程序

    「事件程序」在前面章節中,已經介紹了很多的事件程序,例如:Command的Click事件程序。而在「 事件程序」中凡是事件程序皆附屬於某些物件(Object)之上,如Form、Command Button等。至於事件程序被執行的時機,則是依照物件所發生的事件來決定。
    「一般程序」(General Procedure) 並沒有跟事件直接產生關連,事件程序由事件來引發執行,一般程序則必須由自己寫程式來引發或執行。當寫程式 時,將一段具有某種特定功能的敘述區段或是重複出現的程式區段單獨抽出來,編寫成一個獨立的一般程序,並給 予特定名稱,以方便其他程式呼叫使用,我們將這類的程式單元稱為「副程式」(Subprogram)。 [hr] ◆ 次常式(Subroutine) ◆
      為解決在程式中不同的位置重覆撰寫某些程式敘述之缺失,可將程式分成「主程式」(Main Program)及「次常式」( Subroutine),將重覆之程式敘述抽出成為一個獨立的敘述區段,稱為次常式。原來程式的主要部份, 即為主程式,主程式具有呼叫次常式(Call Subroutine)的功能,又稱為呼叫程式(Calling program)次常式又稱為被呼叫程式(Called Program)。主程式要使用次常式,即將控制權轉移至次常式執行,執行完畢後,需回到主程式呼叫之處繼 續執行。
    次常式為次要的程式(Subordinate routine)之意義,使用次常式除可簡化程式之撰寫,方便閱讀程式,簡化日後程式之維護並可節省儲存空 間。
    次常式主體
     標記或行號
      [ 敘述區段]
     Return
    【說明】
    1. 標記或行號後面必須加上冒號(:)。
    2. Return在程序中,指定從次常式中傳回GoSub的下一個敘述繼續執行。 ▂GoSub標記或行號
      【說明】
      1. GoSub在程序中,指定跳到某個副程式位置。GoSub與GoTo的動作類似,但GoSub敘述會記錄下 一敘述的位置,以提供Return敘述的返回位置。
      2. 標記或行號指示GoSub敘述所要轉移的目的位置,此標記或行號必須與GoSub敘述存在同一個程序中。
    [hr] ◆ 定義程序函數(Function) ◆
    敘述
    [Public | Private] [Static] Function 函數名稱[(傳遞參數)][As 資料形態]
      [敘述區]
      [函數名稱=運算式]
      [Exit Function]
      [敘述區]
      [函數名稱=運算式]
    End Function
    【說明】
    1. Public指定Function為公用程序,可用於所有的模組。
    2. Private指定Function為私有程序,只能用於宣告的模組內。
    3. Static指定Function程序中宣告的私有變數,為靜態變數,在每次呼叫後,其值都會保留下來。S tatic並不會影響在Function程序外宣告的變數,即使在程序中使用到程序外的變數。
    4. Function宣告Function程序的名稱、參數和構成主體的程式碼。
    5. End Function是結束Function程序。
    6. Exit Function是立即離開Function程序,返回呼叫Function的下一個敘述繼續執行。
    7. 函數名稱為Function的函數名稱與敘述區的函數名稱;必須遵循標準變數的命名規則。運算式是Func tion的傳回值。
    8. 敘述區是Function程序主體中要執行的敘述。
    [hr] ◆ 程序 ◆   當你使用Visual Basic來設計程式時,可以將較複雜的程式分成較小的邏輯單元,能簡化程式設計,我們將這些單元稱為「程 序」(Procedure)。Visual Basic是採用觸動事件方式,產生執行該事件程序來控制整個程式的流程,但有時候事件程序很長,為提高可 讀性及容易偵錯和維護,可以將程式中具有獨立功能的部份,個別編輯成Sub程序或是Function程序, 以供「事件程序」或「一般程序」使用。

    ▂定義程序副程式(Sub)
    【語法】 [Private | Public] [Static] Sub程序名稱[(引數串列)]
          [程式區]
          [Exit Sub]
         End Sub
    【說明】
    1. Public指定Sub為公用程序,可用於所有的模組。
    2. Private指定Sub為私有程序,只能用於宣告的模組內。
    3. Static指定Sub程序中宣告的私有變數,為靜態變數,在每次呼叫後,其值都會保留下來。Static 並不會影響在 Sub程序外宣告的變數,即使在程序中使用到程序外的變數。Sub-End Sub宣告Sub程序的啟始與結束。
    4. Exit Sub是立即離開Sub程序,返回呼叫敘述的下一個敘述繼續執行。
    5. 程序名稱是Sub的名稱;命名方式與變數名稱相同。
    6. 敘述區是Sub程序主體中要執行的敘述。
      一般當你打開「程式碼視窗」後,在視窗內大部份是出現某個物件的事件程序。到底要怎樣才能加入自己編寫的一 般程序呢?我們以一個求某整數立方根的Sub程序來說明,其Sub程序的內容如下:
    Public Sub curt (a As Integer, b As Single)
    b = a ^ ( 1 / 3 )
    End Sub
    [hr] ◆ 建立新的一般程序 ◆
    在程式碼視窗,建立新的一般程序,其步驟:
    一、 執行功能表【工具\新增程序】,出現「新增程序」對話方塊。
    a. 在「名稱」欄輸入新名稱「fac」
    b. 「型態」點選
    c. 「有效範圍」點選
    d. 按「確定」
    二、回到程式碼視窗,即可輸入程式。
    ▂ 呼叫程序副程式(Call)
      在Visual Basic中呼叫Sub程序式的語法有下列二種:
    【語法1】Call程序名稱 [ ( 引數串列 ) ]
    【語法2】程序名稱 [(引數串列)]
    【說明】
    1. 呼叫程式與被程式之間若無資料傳遞,引數串列可以省略(即不傳任何引數);若不省略,引數串列的數目可以一 個或一個以上的引數。
    2. Call敘述須寫在呼叫程式(Calling program)中,我們將接在Call敘述後面的引數串列稱為「實引數」(Actual Argument)。被呼叫程式(called program)Sub程序所參用的引數串列稱為「虛引數」(Dummy Argument)。
    3. 「實引數」可以為常數、變數、運算式、陣列或記錄、物件,但是「虛引數」不可以為常數與運算式。
    4. Call敘述與Sub程序二者的程序名稱必須相同,但是兩者的引數名稱可以不相同。兩者之間若有資料要傳遞 時,必須藉由實引數將資料傳給虛引數,要記得實引數與虛引數的數目不但要相同,而且資料型態必須要一致。
    5. Call可以省略,但寫法不同,必須將引數串列外面的括號去掉。例如:Call Swap(a,b)可改為Swap a,b。
    [hr] ◆ 程序間傳遞參數 ◆ 傳遞參數指示呼叫Function程序時,須傳給Function程序的參數列,格式如下:
      [Optional] [ByVal | ByRef] [ParamArray] 變數名稱[( )][As型態]
    ▂ 傳值與傳址
    ▂▂傳值呼叫(ByVal)
     宣告Sub或Function程序時,在參數前面加上ByVal關鍵字;則呼叫Sub或Function時 ,只傳遞變數的複本。ByVal是Visual Basic的預設方式,所以若省略則表示傳遞變數的值。因此,若在Sub或Function程序中更改了變 數複本的值,將不影響該變數傳遞前的值。
    ▂▂傳址呼叫(ByRef)
     宣告Sub或Function程序時,在參數前面加上ByRef關鍵字;則呼叫Sub或 Function時,將傳遞該變數的位址。因此,在Sub或Function程序中可以更改 被傳遞變數的值。Visual Basic預設是以傳址方式來傳遞參數。
    ▂ 使用選擇性參數
     宣告Sub或Function程序時,在參數前面加上Optional關鍵字,表示Optional以後的 參數皆為選擇性參數。選擇性參數必須宣告為Variant型態的資料。
    ▂ 傳遞常數參數
     當呼叫程序式副程式或程序式函數時,直接使用常數型態資料當作參數傳給副程式、函數,或從副程式、函數傳回 給呼叫程式。常數型態資料包括數值、字串值或以Const宣告的常數符號。

    ▂ 傳遞變數參數
     呼叫程序式副程式或程序式函數時,最常用變數作為傳遞的參數。
    ▂ 傳遞陣列參數
    當呼叫程序式副程式或程序式函數時,可以使用陣列變數當作參數傳給副程式、函數,或從副程式、函數傳回給呼 叫程式。
    [hr] ◆ 遞迴 ◆
      所謂遞迴就是程序自己呼叫自己。在程式設計的領域裏,有許多情況使用遞迴可以減輕程式設計的負擔,並增加程 式的可讀性;就如同人類日常思考模式常有重覆某一件事直到什麼條件時結束。所以遞迴也是一種特殊的迴路,尤 其數值分析的問題用得最多。
    有一種漂亮是為自己堅強
Working...
X