软件工程师手册/语言词典/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,后者比面向对象更面向过程。
REALbasic 主页 REALbasic 车库 VB 参考资料
在软件开发概念中,打印非常重要,尤其是针对商业目的的软件开发。
打印有两种类型:
1) Windows 打印 2) Dos 打印
REALbasic 开发人员应该考虑 REALbasic 开发者 杂志。
可以通过 Amazon.com 找到关于 REALbasic 和 Visual Basic 的大量书籍。