FreeBASIC學習筆記——6.1 過程

        過程(即子程序)是可以在程序的任何時候調用的代碼塊。該代碼可能需要執行多次,過程就是通過用單個子程序調用來代替這些代碼塊手段。過程還可以讓用戶擴展FreeBASIC語言以提供自定義命令。FreeBASIC內置的許多功能只是默認鏈接到的「運行庫」的子程序。

        Sub關鍵字標記過程的開始,其結尾必須使用標有End Sub。Identifier表示過程名。過程的代碼與模塊中其他程序的代碼分開執行,所以除了參數傳遞的變量外,只有是共享變量纔可以在過程中使用。

        在默認語言規則-lang fb中,參數必須具有實際類型的,且不允許輸入後綴。在-lang qb 和-lang fblite語言規則中,如果類型沒有通過名稱或類型後綴顯式給出,那麼它將被賦予一個默認類型。-lang qb語言規則中的默認類型爲Single,而-lang fblite語言規則中的默認類型爲Integer。

        過程可以指定如何傳遞參數,如「ByRef」或「ByVal」,如語法定義所示。如果參數爲「ByRef」,則參數將傳遞變量的地址,對該變量進行的任何更改都會改變過程外變量。但是,如果一個參數傳遞給「ByVal」,則參數傳遞變量的數值,將其值賦值到一個新的變量中,對它的任何更改都不會影響到原來的變量。這裏要注意的是String類型暫時不適用ByVal類型的參數傳遞。參數在設置一個默認值時即成爲可選參數,在調用時可以按默認值輸出,也可以賦值新的參數值。

        Static說明符表示在過程中定義的所有局部變量的值應在調用之後保留。Sub與Function本質上相同,Sub可以使用Return語句,但不可以有返回值。程序在遇到Return語句後馬上返回,不會再執行之後的任何代碼。

        第二種語法分別使用Constructor和Destructor關鍵字定義構造函數或析構函數。構造函數子程序在模塊中的第一行代碼之前執行,而析構函數在模塊退出時執行。請注意構造函數和析構函數的公共訪問說明符和空參數列表。

語法:

例如:自定義過程


過程調用:


運行結果: