跳轉至內容

Visual Basic/語言

來自華夏公益教科書,自由的教科書

許多計算機語言共享一組核心功能。有時它們在不同的語言中非常相似,有時則截然不同。一種語言的使用者認為不可或缺的功能,在其他完全可用的語言中可能完全缺失。

Visual Basic 中的語句就像給計算機發出命令一樣。函式和子例程是由語句組成的。

語句通常由一個子例程的名稱後跟一個引數列表組成

Debug.Print "Hello World"

第一個詞 (Debug) 是 Visual Basic 中內建物件的名稱。第二個詞 (Print) 是該物件方法的名稱。“Hello World” 是該方法的引數。結果是

 Hello World

列印到立即視窗

在 Visual Basic Classic 中,子例程呼叫語句可以用兩種方式編寫

  x "Hello", "World"
  Call x("Hello", "World")

x 是一個接受兩個字串引數的子例程。關鍵字Call 是 Basic 較早版本遺留下來的。如果您使用這種形式,則必須將整個引數列表括在圓括號中。有時程式設計師想要呼叫一個函式,但對返回值不感興趣,只對副作用感興趣。在這種情況下,他會像呼叫子例程一樣呼叫該函式,但只能使用上面的第一種形式。

還有其他更復雜的語句,它們可以跨越多行程式碼

  • If..Else..End If
  • Do While..Loop

這些複合語句包括其他語句和表示式。

與大多數程式語言一樣,Visual Basic 能夠使用和處理命名變數及其內容。變數最簡單的描述是,我們用來引用記憶體中某個位置的名稱——一個儲存我們正在處理的值的位置。

將變數想象成“鴿籠”或值的佔位符通常會有所幫助。您可以將變數視為與其值等效。因此,如果您有一個初始化為 4 的變數i,則i+1 將等於5

在 Visual Basic 中,變數可以在使用前宣告,也可以讓編譯器為它們分配空間。對於除最簡單的程式之外的所有程式,最好宣告所有變數。這有幾個好處

  • 您可以獲得所需的型別,而不是Variant
  • 編譯器有時可以檢查您是否使用了正確的型別。

Visual Basic 中所有變數都是型別化的,即使那些宣告為Variant 的變數也是如此。如果您沒有指定型別,則編譯器將使用 Variant。Variant 變數是可以儲存任何型別資料的變數。

變數宣告

[編輯 | 編輯原始碼]

以下是如何宣告一個整數的示例,我們將其命名為some_number

 Dim some_number As Integer

您也可以使用一個語句宣告多個變數

Dim anumber, anothernumber, yetanothernumber As Integer

這不是一個好主意,因為很容易忘記在 Visual Basic 中,型別名稱只適用於緊鄰其前的變數名。該示例聲明瞭兩個Variants 和一個Integer

您可以透過這個小程式來演示實際情況

  Option Explicit
  
  Public Sub main()
    
    Dim anumber, anothernumber, yetanothernumber As Integer
    Dim v As Variant
    
    Debug.Print TypeName(anumber), VarType(anumber), _
         TypeName(anothernumber), VarType(anothernumber), _
         TypeName(yetanothernumber), VarType(yetanothernumber)
    
    Debug.Print TypeName(anumber), VarType(v)
    
    Debug.Print "Assign a number to anumber"
    anumber = 1
    Debug.Print TypeName(anumber), VarType(anumber)
    
    Debug.Print "Assign a string to anumber"
    anumber = "a string"
    Debug.Print TypeName(anumber), VarType(anumber)
    
  End Sub

結果是

 Empty          0            Empty          0            Integer        2 
 Empty          0 
 Assign a number to anumber
 Integer        2 
 Assign a string to anumber
 String         8

請注意,VarType 和 TypeName 都返回有關儲存在 Variant 內部的變數的資訊,而不是有關 Variant 本身的資訊。

因此,要依次宣告三個整數,請使用

Dim anumber As Integer, anothernumber As Integer, yetanothernumber As Integer

在 Visual Basic 中,無法將宣告初始化與變數結合起來(因為 VB 不支援建構函式——儘管請參閱物件和初始化),以下語句是非法的

Dim some_number As Integer = 3

只有常量宣告允許您這樣做

Const some_number As Integer = 3

在 Visual Basic 中,變數可以在子例程、函式或屬性的內部任何地方宣告,它們的範圍限於該例程。它們也可以在模組的宣告部分宣告,該部分位於任何子例程、函式或屬性之前,它們具有模組級範圍。

預設情況下,變數無需在使用前宣告。以這種方式建立的任何變數都將是Variant 型別。這種行為可以透過在模組頂部使用 Option Explicit 語句來覆蓋,這將強制程式設計師在使用前宣告所有變數。

宣告變數後,您可以使用以下語句稍後為變數賦值

Let some_number = 3

Let 關鍵字是可選的,因此

some_number = 3

也是一個有效的語句。

您還可以將一個變數賦值給另一個變數,如下所示

anumber = anothernumber

在 Visual Basic 中,您無法使用一個語句為多個變數賦相同的值。以下語句不會像 C 程式設計師期望的那樣工作

anumber = anothernumber = yetanothernumber = 3

相反,它將除第一個= 符號之外的所有= 符號視為等式測試運算子,然後根據anothernumberyetanotherniumber 的值,將TrueFalse 分配給anumber

變數命名

[編輯 | 編輯原始碼]

Visual Basic 中的變數名由字母(大寫和小寫)和數字組成。下劃線字元“_”也被允許。名稱不能以數字開頭。名稱可以任意長。

一些有效的(但不太描述性的)Visual Basic 變數名的示例

 foo
 Bar
 BAZ
 foo_bar
 a_foo42_
 QuUx

一些無效的 Visual Basic 變數名的示例

2foo
不能以數字開頭
my foo
名稱中不允許使用空格
$foo
$ 不允許——只能使用字母、數字和 _
while
語言關鍵字不能用作名稱
_xxx
不允許使用前導下劃線。

某些詞是語言中的保留關鍵字,這些詞不能用作變數名,也不能用作其他任何事物的名稱。

此外,還有一些名稱集,雖然不是語言關鍵字,但出於某種原因被保留。

變數的命名規則也適用於其他語言結構,例如函式名和模組名。

養成使用描述性變數名的習慣是一個好習慣。如果您在建立程式碼的幾個月後檢視一段程式碼,並看到變數var1var2 等,您很可能不知道它們控制什麼。諸如textinputtime_start 之類的變數名更具描述性——您確切地知道它們的作用。如果您的變數名包含多個單詞,則習慣上用大寫字母開始下一個單詞。請記住,您不能在變數名中使用空格,合理的首字母大寫更易於區分單詞。稍後在程式碼中鍵入變數名時,您可以全部使用小寫——一旦您離開相關行,如果變數名是有效的 VB,它將根據需要大寫。

字面量

[編輯 | 編輯原始碼]

在程式中,您顯式指定值而不是引用變數或其他形式的資料,該值被稱為字面量。在上面的初始化示例中,3 是一個字面量。數字可以寫成整數、小數、“科學”表示法或十六進位制。要識別十六進位制數,只需在數字前面加上 &H。

條件子句是僅在特定表示式(條件)為真時才會執行的程式碼塊。

If 語句

[編輯 | 編輯原始碼]

If 語句是最靈活的條件語句:請參閱 分支

Select Case

[編輯 | 編輯原始碼]

通常,需要將一個特定變數與多個值進行比較。對於這種條件表示式,使用Select Case 語句。

無條件語句

[編輯 | 編輯原始碼]

無條件語句 允許您在沒有條件的情況下更改程式的流程。這些語句包括 Exit、End 和 Goto 語句。

迴圈 允許您將一組語句重複執行多次。

要重複執行一段程式碼一定的次數,或者對列表中的每個元素執行一次,請參閱 For..Next 迴圈


上一節:案例研究 目錄 下一節:編碼規範
華夏公益教科書