跳轉到內容

軟體工程師手冊/語言詞典/BASIC

來自華夏公益教科書

這是 維基百科條目

在閱讀此頁面之前,請注意,此處的一些語言特性只適用於某些 BASIC 變體。

BASIC 是一種完整的過程式語言,或者根據您使用的 BASIC,是一種面向物件的語言。BASIC 是 Beginner's All-purpose Symbolic Instruction Code 的縮寫

執行入口點

[編輯 | 編輯原始碼]

現代 BASIC 通常整合到視覺化的、事件驅動的環境中;在這些應用程式中,從開發者的角度來看,沒有程式入口點。在命令列 REALbasic 程式的情況下,有一個 ConsoleApplication 類別的 Run 事件在程式開始時被呼叫,並且接收命令列引數作為字串陣列。

通用語法

[編輯 | 編輯原始碼]

BASIC 語法使用很少的特殊標點符號,除了代數和大多數其他語言中常見的標點符號,如“+”用於加法。等號(“=”)用於賦值和相等性測試,這不會產生歧義,因為(與 C 不同)賦值語句不能用作另一個表示式的部分。圓括號用於對術語進行分組,就像在代數中一樣,以及用於索引陣列。句點(或點)用於訪問物件屬性或方法。方括號、花括號和其他奇特的標點符號不會使用。

程式碼塊由語句分隔;例如,一個“if”塊以一個“if”語句開始,並以“end if”結束。語句由換行符分隔,雖然需要跨多行的一條語句可以透過特殊的行延續字元(“_”,空格後跟下劃線)來跨多行,並且可以透過使用冒號(“:”)字元將多個語句保留在一行中,儘管這通常不被認為是良好的程式設計實踐。

這是一個典型的 BASIC 程式碼示例

 Dim i As Integer
 Dim s As String
 for i = 1 to 4
   s = s + "spam, "
 next
 MsgBox s + "baked beans, and spam!"

VisualBasic 和 REALbasic 都使用單引號來表示註釋,該註釋一直持續到行尾。舊的 REM 語句也可以使用,儘管它不再流行。REALbasic 也可能使用 C++ 風格的“//”註釋。BASIC 不支援任何塊註釋機制,儘管 IDE 可能支援快速註釋或取消註釋程式碼塊。示例

 meaning = 6*7   ' This is a comment
 REM So's this, but nobody writes comments this way anymore.
 // This comment will work only in REALbasic.
 ‘‘‘ In VB.NET, three apostrophes mean an XML comment.

變數宣告

[編輯 | 編輯原始碼]

REALbasic 是一種強型別語言;Visual Basic 是一種型別更寬鬆的語言,一個無型別變數會自動被型別化為 Variant 型別(VB 6 及更低版本)或 Object 型別(VB .NET),它們都意味著變數可以根據變數的內容切換型別,模擬一個無型別變數。在 VB.NET 中,可以選擇強制宣告型別。區域性變數使用 Dim 語句宣告

 Dim i As Integer

變數可以在宣告時被賦予初始值。雖然不適用於 VB6。

 Dim transplant As String = "liver"

可以在一行中宣告多個變數,並且可以在宣告時賦予它們初始值,如下所示

 Dim x As Integer, xstr As String

請注意,REALbasic 和 VisualBasic 之間存在一個重要區別,即當兩個變數僅使用一個型別宣告時

 Dim a, b As Double

在 REALbasic 和 VB.NET 中,a 和 b 都是 Double 型別的變數。在 VB 6 中,b 是一個 Double,但 a 是一個 Variant(本質上,一個無型別變數)。

請注意,在物件宣告的情況下,還有一個更簡便的方法可以將變數初始化為一個新的物件例項

 Dim d1 as New Date        ' this...
 Dim d2 as Date = New Date ' does the same as this, except this is not allowed in VB6

變數也可以宣告為類、視窗或模組的屬性。它們使用相同的語法,或者直接由 IDE 編輯。

方法宣告/實現

[編輯 | 編輯原始碼]

方法由 Function 或 Sub 關鍵字定義。以下是一個示例。

 Function Factorial( num As Integer ) As Integer
   Dim out As Integer = 1
   Dim i As Integer
   For i = 2 to Num
     out = out * i
   Next i
   Return out
 End Function

REALbasic 在方法內使用塊範圍;也就是說,在(例如)If 塊內的一個 Dim 語句建立一個在該塊結束時超出範圍的變數。在方法頂部宣告的區域性變數在方法結束時超出範圍。在方法內宣告的所有變數在該方法之外都不可訪問,除了靜態變數之外,它們使用堆疊儲存。

類、模組和視窗的屬性儲存在堆上。模組屬性可以是私有的(只能在模組內訪問)、公有的(可以在任何地方使用模組名稱作為字首訪問)或全域性的(可以在任何地方使用沒有字首訪問)。類屬性可以是私有的(只能在該類內訪問)、受保護的(可以在該類或其子類內訪問)或公有的(可以在任何地方透過物件引用訪問)。視窗實際上只是類,並且具有相同的範圍規則。

條件語句

[編輯 | 編輯原始碼]

BASIC 支援 If/ElseIf/Else 塊

If fullness < 10 Then
  result = "Bring me more food!"
ElseIf fullness = 10 Then
  result = "I couldn't eat another bite."
Else
  Explode
End If

還有一種單行格式,用於快速測試

If not haveShrubbery Then Say "Ni"

對於較大的測試塊,可以使用 Select Case

Select Case healthStage
Case 0
  x = "I'm not quite dead yet"
Case 1
  x = "I'm feeling better"
Case 2
  x = "Think I'll go for a walk now"
Else
  x = "I feel happy..."
End Select

迴圈語句

[編輯 | 編輯原始碼]

BASIC 支援多種迴圈結構,包括 For/Next、Do/Loop 和 While/Wend。For 語句可以使用數值計數器,或者可以使用 For Each 迭代陣列的元素。

For i = 1 To 100
  i = i + 1
Next i
For Each knight in Knights
  results.Append knight.Name + " says Ni!"
Next

輸出語句

[編輯 | 編輯原始碼]

大多數 BASIC 應用程式都是視覺化的(GUI)應用程式,並且沒有標準輸出。但是,如果只需要顯示一條簡短的訊息,可以使用 MsgBox 語句

 MsgBox "Hello world!"

出於除錯目的,在 REALbasic 中,您也可以使用 System.DebugLog,它會將它的引數傳送到您所在的平臺的標準除錯控制檯。在 VB6 中,您可以使用 Debug.Print 在立即視窗中列印語句。在 VB.NET 中,您可以使用 Debug 物件進行各種除錯選項。

BASIC 包含對陣列的支援,陣列可以作為引數傳遞、從函式返回、賦值給變數等。還存在一個 Collection 類,以及在 REALbasic 中,一個 Dictionary 類,它儲存任意鍵值對。

在沒有合適的內建容器的情況下,可以使用最合適的內部儲存輕鬆地定義一個自定義容器類。

演算法

[編輯 | 編輯原始碼]

大多數原始資料型別(例如數字和字串)的陣列可以排序(在 VB.NET 和 REALbasic 中)或洗牌(REALbasic),例如:

Function Choose5( cards() as String ) as String()
  ' shuffle the given cards, choose 5 at random,
  ' and return them in sorted order
  cards.Shuffle
  Dim out() as String
  For i As Integer = 1 to 5
    out.Append cards(i)
  Next
  out.Sort
  return out
End Function

Dictionary 類(在 REALbasic 中)提供了可調整大小的雜湊表的內建實現。當然,使用者可以根據需要編寫其他演算法。

垃圾回收

[編輯 | 編輯原始碼]

BASIC 使用引用計數而不是垃圾回收。當沒有更多對某個物件或字串的引用時,它的記憶體會自動(並且立即)釋放。

物理結構

[編輯 | 編輯原始碼]

Visual Basic 專案由多種檔案組成,其中大多數是純文字檔案。REALbasic 專案通常儲存在單個專有二進位制格式的檔案中,不過也可以將專案項儲存在外部,以二進位制或 XML 格式。

不要將 Visual Basic 與 REALbasic 和經典 BASIC(主要由 Microsoft QuickBasic 和 QBASIC 代表)混淆。它們有共同的根源和類似的語法,但語義卻截然不同。REALbasic 的語義更接近於 Java 或 VB.NET,而不是 Visual Basic,後者比面向物件更面向過程。

Web 參考資料

[編輯 | 編輯原始碼]

REALbasic 主頁 REALbasic 車庫 VB 參考資料

在軟體開發概念中,列印非常重要,尤其是針對商業目的的軟體開發。

列印有兩種型別:

1) Windows 列印 2) Dos 列印

書籍和文章

[編輯 | 編輯原始碼]

REALbasic 開發人員應該考慮 REALbasic 開發者 雜誌。

可以透過 Amazon.com 找到關於 REALbasic 和 Visual Basic 的大量書籍。

華夏公益教科書