跳转到内容

软件工程师手册/语言词典/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 的大量书籍。

华夏公益教科书