basic语法大全

ads

    Basic的名字——Beginner's All-purpose Symbolic Instruction Code(初学者通用的符号指令代码),原来被作者写做BASIC,只是后来被微软广泛的叫做Basic了。尽管初期的BASIC仅有几十条语句,但由于BASIC在当时比较容易学习,它很快从校园走向社会,成为初学者学习计算机程序设计的首选语言。

    随着计算机科学技术的迅速发展,特别是微型计算机的广泛使用,计算机厂商不断地在原由的BASIC基础上进行功能扩充,出现了多种BASIC版本,例如TRS-80 BASIC、Apple BASIC、GWBASIC、IBM BASICA(即BASICA)、True BASIC。此时BASIC已经由初期小型、简单的学习语言发展成为功能丰富的使用语言。它的许多功能已经能与其他优秀的计算机高级语言相媲美,而且有的功能(如绘图)甚至在当时超过其他语言。在单片机上亦可以使用BASIC编程(一般是行号类型的BASIC),不过多数情况下要安装BASIC的ROM。

    早期的BASIC语言:在大型机和小型机时代

    最原始的BASIC语言是在1964年由约翰·克米尼和Thomas E. Kurtz设计,并且在他们的指导下由Dartmouth的学生实现的。当时设计BASIC语言的目的是让学生能在Dartmouth的分时操作系统上写程序。这种语言是为了解决以前语言的复杂的问题,而设计的一种新的语言。它特别针对了那些新的要用到分时系统,但是却没有以往学生那样有很深厚的数学功底,又对学习这些数学知识不感兴趣的那些学生。能够使用一台电脑来帮助教学和研究在那个时候是非常新颖的一件事情。在那段时间中,随着其他形式的BASIC语言的出现,人们就把Kemeny和Kurtz的最原始的BASIC语言形式被人们称为Dartmouth BASIC。

    BASIC语言的8个设计原则是:

    让初学者容易使用。

    成为通用编程语言。

    允许为熟练者添加高级的功能(与此同时对初学者保持简单)。

    成为交互式语言。

    提供清楚的和友好的错误信息。

    对小型的程序反应迅速。

    不需要对硬件的了解。

    将用户和操作系统隔离。

    这种语言一部分基于FORTRAN II,一部分基于ALGOL 60,并且在此之上增加了一些东西使之适和于分时功能。最初,BASIC语言致力于简单的数学运算,在它最初的作为批处理语言的实现中就有对矩阵运算的支持,在1965年,完整的字符串处理功能被加入其中。BASIC语言最初在支持多个终端的GE-265大型机上实现。在它最初被引入的那段时间中,它是一种编译型语言,并且效率十分高,比如用辛普森法则进行数值积分的计算效率上击败了FORTRAN II和ALGOL 60。BASIC语言的设计者为了使这种语言广为传播,决定让人免费获得编译器。有关于BASIC语言的知识传播的非常广泛,并且被很多的制造商实现,逐渐在一些较新的小型机像DEC PDP系列和Data General Nova中盛行起来。BASIC语言同时也在20世纪60年代末70年代初成为了惠普分时BASIC系统的核心,另外也是Pick操作系统的核心。在以上这些例子中,BASIC语言趋向于以解释器的方式实现,而不是编译器。

    迅速增长:家用电脑时期

    尽管BASIC语言在一些小型机上使用了,但是它真正进入大学是在1975年的MITS Altair 8800 "kit"微型机的引入。大多数的编程语言需要一个适用的文本编辑器,大量的内存和磁盘空间。但是当时的情况则是,那个时候的微型机没有本地的编辑器,仅有有限的内存以及一般将录音磁带做为磁盘储存数据。所有的这些问题,使得像BASIC那样以解释形式运行以及拥有内置的代码编辑器的语言能够在这些限制下运行。

    BASIC语言同时还具有的优势就是它在那些对微型机感兴趣的年轻的设计师和计算机爱好者中相当出名,在那个时代的电子工业中BASIC语言被普遍的使用。另外Kemeny和Kurtz在早期在传播BASIC语言这一方面所花的努力也功不可没,在那个时候一些爱好者的杂志中几乎都被一段一段的提及BASIC语言的文章填满,或者差不多全部都在关注一个版本和其他版本的比较。

    1975年,MITS发布了Altair BASIC,由Bill Gates和Paul Allen作为一个叫做Micro-Soft的公司开发,后来Micro-Soft则发展成今天的企业巨头——微软(Microsoft)。Microsoft BASIC(随后大多被人称作M BASIC或者MBASIC)的一些版本马上被捆绑到最初的基于软盘的CP/M计算机中,这种计算机在小的商业环境中被广为使用。随着在CP/M中的BASIC语言知名度的扩张,新的计算机设计中同样也引入了他们自己的BASIC语言的版本,或者干脆叫Micro-Soft把BASIC版本移植到他们的平台中。

    当三种新的个人计算机在1977年问世的时候,也就是Byte Magazine后来称作"1977 Trinity"的那段时间,所有的这三种的计算机都用BASIC语言作为他们的编程语言和操作环境。Commodore Business Machines公司一次性的付费买下一个移植到他们PET计算机的6502芯片中Micro-Soft BASIC的一个无限授权版本,于此同时Apple II和TRS-80都引入了一个新的,与这种语言极大相似的语言。这种相似性是非常明显的因为它们最开始的50个记号(token)都是一样的。随着新的计算机进入到这个领域中来,其他的BASIC语言版本的加入,微妙的改变了BASIC语言的家族。Atari的8位机系列有他们自己的,专为烧入8kB的ROM芯片而修改过的Atari BASIC。BBC发布了BBC BASIC,由Acorn Computers为他们编写,加入了许多额外的结构体的关键字。大多数的二十世纪八十年代的家用计算机都有一个驻留在ROM中的BASIC解释器,以此能让计算机直接引导到BASIC环境。正因为这些原因,BASIC语言有着比其他任何语言都要多的方言(dialects)版本。

    因为在这一个时期的BASIC的知名度的上升,一些杂志(就比如美国的Creative Computing Magazine)刊登了用BASIC语言写的游戏、工具和一些其他程序的完整的代码。BASIC具有的一个天生的优势,就是将杂志上公布的代码输入计算机然后运行是一件非常简单的事情。不同的杂志针对不同的计算机刊登BASIC程序,但是有些BASIC程序是可以在不同的计算机的不同的BASIC运行环境中运行(有些时候只需要一些小小的修改)。在那个时候,检查纠正经常会在杂志的代码中出现的印刷错误也是杂志本身的一个作业。

    成熟的语言:个人电脑时期

    早在1979年微软公司就开始和IBM协商给IBM的PC机提供一个烧在BIOS里面的IBM Cassette BASIC(BASIC C)。微软公司后来出售了一些在MS-DOS和PC-DOS上的BASIC语言版本,包括IBM Disk BASIC(BASIC D)、IBM BASICA(BASIC A)、GW-BASIC(一个不需要IBM机器ROM以及与BASICA兼容的版本)和QuickBASIC。发布了Turbo Pascal的Borland公司在1985年发布了Turbo BASIC 1.0(即后来的PowerBASIC)。微软公司同样还编写了一个基于窗口的AmigaBASIC,支持一个在当时非常先进的多任务图形界面的计算机Amiga computers的1.1版本(1985年末,1986年初)。

    这些语言引入了许多对原始的家用电脑中BASIC的扩展,比如提供了更加好的字符串操作功能以及对图形的支持,另外还有对文件系统的访问以及一些额外的数据类型。其中更加重要的则是添加了结构化编程的功能,包括一些原始版本中不存在的流程控制语句和支持本地变量的子程序。新的图形功能同样为个人电脑中的电子游戏打下的基础,类似DONKEY.BAS的一些BASIC程序展示了个人电脑所具有的功能。

    随着微软公司Visual Basic的发布BASIC的语言的好运似乎又一次回归了过来。很难确切的说Visual Basic到底是不是BASIC语言,因为它较之前的版本有很大的改变——以基于对象以及事件驱动为的设计目标的语言。它唯一显著的与BASIC语言相关的地方就是相似的语法,但是语法本身也不能完全定义这种语言,因为大多数Visual Basic的开发都是使用“拖动-放置”的方法,开发者不需要为一些常用的对象比如按钮和滚动条去写所有的代码。这个可以看成是BASIC语言的一种进化,一些早期的Dartmouth BASIC的特有的功能被保留了下来,比如行号和INPUT关键字等

    有趣的是,BASIC语言最开始的时候是作为一种初学者的语言,微软最初依旧是将Visual Basic定位于向爱好者提供的一种语言,但是在VB 3.0(也是被认为第一个相对稳定的版本)发布之后不久就在小型商业程序的使用中迅速的传播开来。尽管有很多高级的程序员始终在嘲笑它,但是VB正是有效的符合了小型商用程序的要求,即重点是简单的开发,而运行的速度则是次要的因素。在那个时候, Windows 3.1已经是足够的快了,很多商业有关的程序只要不是牵涉到大量的数据,几乎是可以在一眨眼之间完成的,即使使用的是一种非常慢的语言。许多公司的老板发现他们通过很少的一些步骤就可以创建出一个小型的但是有用的程序来满足他们特定的需求。最终,在VB3的冗长的生命周期中,对于Visual Basic知识的掌握成为了一种非常有用的职业技能.这种语言,就像它的前辈QBASIC一样,同时也成为了业余游戏开发者喜爱的语言之一。

    以下是同样的运行结果,但用不同时期的BASIC的方式所写的示例。

    行号类型(非结构化)

    这是第一代的BASIC,例如早期BASICA、GW-BASIC……等,BASIC解释器。这类的BASIC程序的特征,就是每一行的代码前面都有一个数字作为“行号”。由于这种类型的BASIC程序的写法,很容易滥用GOTO的跳跃指令,以及代码没有办法使用到缩进去区分区段,因此很容易导致面条式代码。

10 INPUT "What is your name: ", U$

20 PRINT "Hello "; U$

30 INPUT "How many stars do you want: ", N

40 S$ = ""

50 FOR I = 1 TO N

60 S$ = S$ + "*"

70 NEXT I

80 PRINT S$

90 INPUT "Do you want more stars? ", A$

100 IF LEN(A$) = 0 THEN GOTO 90

110 A$ = LEFT$(A$, 1)

120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30

130 PRINT "Goodbye "; U$

140 END

    无行号类型(结构化)

    这是第二代的BASIC,例如QuickBASIC、PowerBASIC。这时期,同时有功能相近的解释器与编译器的版本出现。这类的BASIC程序的特征,是不使用行号,改使用标签作为跳跃点(仍有GOTO指令,但已可使用其他写法可完全避开使用GOTO),与使用函数或副程序的方式,以及可使用缩进,将程序结构化。

INPUT "What is your name: ", UserName$

PRINT "Hello "; UserName$

DO

  INPUT "How many stars do you want: ", NumStars

  Stars$ = STRING$(NumStars, "*") 

  PRINT Stars$

  DO

    INPUT "Do you want more stars? ", Answer$

  LOOP UNTIL Answer$ <> ""

  Answer$ = LEFT$(Answer$, 1)

LOOP WHILE UCASE$(Answer$) = "Y"

PRINT "Goodbye "; UserName$

    面向对象化

    这是第三代的BASIC,例如Visual Basic、REALbasic、StarOffice Basic。这类的BASIC程序的特征,是导入类别(Class)的应用,使用面向对象的继承与代码封装写法。通常也使用“事件驱动”的写法,虽然下面这个Visual Basic .NET的示例并不是用到事件驱动。

 Public Class StarsProgram

    Public Shared Sub Main()

        Dim UserName, Answer, stars As String, NumStars As Integer

        Console.Write("What is your name: ")

        UserName = Console.ReadLine()

        Console.WriteLine("Hello {0}", UserName)

        Do

            Console.Write("How many stars do you want: ")

            NumStars = CInt(Console.ReadLine())

            stars = New String("*", NumStars)

            Console.WriteLine(stars)

            Do

                Console.Write("Do you want more stars? ")

                Answer = Console.ReadLine()

            Loop Until Answer <> ""

            Answer = Answer.Substring(0, 1)

        Loop While Answer.ToUpper() = "Y"

        Console.WriteLine("Goodbye {0}", UserName)

    End Sub

End Class

Goto是一种程序运行无条件跳跃的指令,在有行号的BASIC里后面是接要跳跃目的的行号。在无行号的BASIC里后面则是接要跳跃目的的标记名称。

END指令

用于终止一个BASIC程序的运行。

    BASIC非常适合初学者,它的每一行代码都有编号,而且鼓励线性思维。虽然近年来已经逐渐失宠,但它早已成为数百万程序员的启蒙编程语言。

    在苹果II电脑上模仿Atari《Breakout》游戏开发的程序,随后被命名为《Brick Out》和《Little Brick Out》。这一程序的开发者是苹果联合创始人史蒂夫·沃兹尼亚克(Steve Wozniak)本人,使用Integer BASIC语言。这一只有1行代码的Commodore 64程序能打印永不结束、像迷宫一样的图形。

    对于无数的程序员来说,下面的这段代码或许令他们永生难忘,甚至开启了很多人一生的计算机事业:

    10 PRINT“HELLO WORLD

    20 GOTO 10


最后编辑于:2024/1/18 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com