请输入您要查询的百科知识:

 

词条 qbasic
释义

QBASIC是BASIC(Beginner's All-purpose Symbolic Instruction Code,初学者通用指令代码)语言的一个变种,由美国微软公司开发,1991年随MS-DOS 5.0推出。它不能被编译成独立的可执行文件,源代码在集成开发环境(IDE)中先被编译成中间代码,然后中间代码在IDE中被解释执行。它被设计用来代替GW-BASIC,并被集成在MS-DOS 5.0及其更高版本(包括Windows 95)中。QBASIC基于微软稍早推出的QuickBASIC 4.5,但去掉了后者的编译和连接部分。

QBASIC的特点

Basic语言是计算机高级语言的一种,它简单、易学、好用,被广大计算机用户所青睐。Basic语言的表达式与数学中的表达式相似,语句与自然语言相仿,极容易被初学者掌握,而Basic语言的最新发展Visual Basic 6.0、7.0,其友好的可视化编程界面、强大的面向对象编程能力及其网上发行和网上查询的功能,不仅能使用户方便而轻松地编写出具有任何功能的应用程序,而且更好地适应了网络时代的到来。

QBASIC的现状

微软在较新版本的Windows中不再集成QBASIC。不过Windows 98的用户可以在光盘的\\TOOLS\\OLDMSDOS目录中找到它,在Windows 95的光盘中,它存放在\\OTHER\\OLDMSDOS目录中。微软网站对它的技术支持只对MS-DOS的授权用户有效。

QBASIC拥有一个值得称道的集成开发环境和一个功能强大的集成调试器,这一切在那个时代让人耳目一新。直到今天,QBASIC依然是许多面向初学者的编程书籍的主题。

语法

和Quick BASIC类似而又不同于微软其他BASIC的早期实现版本的是,QBASIC是一种结构化的编程语言。和GW-BASIC相比,QBASIC的主要改进是:

扩充了变量和常量的类型

变量名长度:40个字符

增加了长整型、定长字符型变量

可定义数值常量、字符串常量

提供了新的选择结构

条件语句

IF <条件> THEN <语句组1> ELSE <语句组2>

多分支语句SELECT

改进了循环结构

增加以下两个循环语句:

【WHILE循环】

WHILE <条件>

<循环体>

END

【DO循环 】

DO

WHILE <条件> <循环体>

LOOP

子程序和函数作为单独的模块

不需要行号

代码示例(赋值,求和运算,并显示结果)

LET A=10

LET B=20

LET C=A+B

PRINT C

在编写程序时为了节省时间,可以不用写LET;并且,PRINT在编写程序时直接用“?”代替。有一点非常重要,在参加竞赛时,程序第一行必须是CLS!

快捷键

QBASIC 7.1快捷键:

F5:运行程序及继续运行被中断的程序;

Ctrl+Break:中断正在运行的程序;

Shift+F5:从第一条语句开始重新运行程序;

F4:当程序中断运行时,查看运行结果屏幕,再按一次F4则切换回代码屏幕;

F1:获得帮助。

F2:切换主程序或SUB、FUNCTION。

F9:增加断点。

Alt+Enter:全屏。

Shift+F5:在程序终止时重新从头执行。

Ctrl+Insert:选定文字后复制到剪切板(Ctrl+C无效)

Shift+Insert:将剪贴板中的文字粘贴。(Ctrl+V无效)

范例

范例1:

菜场上一公斤香菇是7.5元,编一个程序,从键盘上输入重量,计算机自动算出其总价

INPUT X

SUM=7.5*X

PRINT SUM

END

范例2:

卖西瓜,10千克以下每千克1.4元,10千克以上每千克0.7元,输入要买多少千克(必须为自然数),输出需要多少钱。

INPUT X

IF X<>FIX(X) THEN ? "NO":GOTO 1

IF X>10 THEN SUM=10*1.4+(X-10)*0.7 ELSE SUM=X*1.4

PRINT SUM

END

范例3:

输入10个字母,比较大小,输出最大的一个

DIM A$(10)

FOR I=1 TO 10

INPUT A$(I)

NEXT I

B$=A$(1)

FOR I=2 TO 10

IF B$<A$(I) THEN B$=A$(I)

NEXT I

PRINT B$

END

范例4:一个游戏:

CLS '清屏

LOCATE 5, 38 '定位到5,38

PRINT "Game" '显示

LOCATE 16, 34 '定位到16,34

PRINT "Press Enter" '显示

DO

LOOP WHILE INKEY$ = "" '暂停

DIM Name1$, Name2$, HP1, HP2, Temp$

CLS '清屏

LOCATE 8 '定位至第8行

PRINT " Input 1st player's name"; '输入玩家1的名字

INPUT Name1$

PRINT " Input 2nd player's name"; '输入玩家2的名字

INPUT Name2$

RANDOMIZE TIMER

HP1 = INT(RND * 50) + 50 '随机决定玩家1的HP

HP2 = INT(RND * 50) + 50 '随机决定玩家2的HP

PRINT STRING$(12, " ") + Name1$ + "'s HP is " + STR$(HP1) '显示玩家1的HP

PRINT STRING$(12, " ") + Name2$ + "'s HP is " + STR$(HP2) '显示玩家2的HP

PRINT " Press any key to contiune"

DO

LOOP WHILE INKEY$ = "" '暂停

DIM Row, Text$, Attack, I

Text$ = "n"

Row = 0

CLS

DO '循环

PRINT

PRINT Name1$ + "'s HP:" + STRING$(16 - LEN(Name1$), " ");

PRINT STRING$(INT(HP1 / 2), 2)

PRINT

PRINT Name2$ + "'s HP:" + STRING$(16 - LEN(Name2$), " ");

PRINT STRING$(INT(HP2 / 2), 2) '以上这几句是用图形来表示HP

FOR I = 1 TO 4

PRINT

NEXT '显示空行

Row = Row + 1 '回合数+1

PRINT STRING$(11, " ") + STR$(Row) + "."

PRINT STRING$(12, " ") + Name1$ + " now has HP " + STR$(HP1)

PRINT STRING$(12, " ") + Name2$ + " now has HP " + STR$(HP2) '以上几句显示回合数和HP数

DO

LOOP WHILE INKEY$ = "" '暂停

Attack = INT(RND * 20) '随机决定攻击点数

Text$ = STRING$(12, " ") + Name1$

Text$ = Text$ + " attack " + Name2$ + " " + STR$(Attack) '先想好要显示的文字

HP2 = HP2 - Attack '用玩家2的HP减去攻击点数

PRINT Text$ '显示文字

DO

LOOP WHILE INKEY$ = "" '暂停

Attack = INT(RND * 20) '随机决定攻击点数

Text$ = STRING$(12, " ") + Name2$

Text$ = Text$ + " attack " + Name1$ + " " + STR$(Attack) '先想好要显示的文字

HP1 = HP1 - Attack '用玩家1的HP减去攻击点数

PRINT Text$ '显示文字

IF HP1 <= 0 OR HP2 <= 0 THEN EXIT DO 如果玩家1或2的HP小于等于0就退出循环

DO

LOOP WHILE INKEY$ = "" '暂停

CLS

LOOP

IF HP1 <= 0 THEN PRINT STRING$(12, " ") + Name2$ + " win"

IF HP2 <= 0 THEN PRINT STRING$(12, " ") + Name1$ + " win"

IF HP1 <= 0 AND HP2 <= 0 THEN PRINT STRING$(12, " ") + "Double win!"

这里有一个超长的画图程序:

DRAWTOOL.BAS

CLS

DO

SCREEN 1

SCREEN 0

PRINT TAB(16); "Draw tool"

PRINT STRING$(40, "*")

PRINT "Help:"

PRINT "Press highlighted letter."

FOR I = 1 TO 8

READ S$, S

GOTO PrintHLWord

PrintHLWordBack:

NEXT I

RESTORE

DATA "HorizontalBAR", 1, "UprightBAR", 1, "CrossBARs", 1, "BiasBAR1", 8

DATA "BiasBAR2", 8, "DiagonalBARs", 1, "DiffuseBARs", 2, "Exit", 1

ElseKey:

K$ = INPUT$(1)

SELECT CASE UCASE$(K$)

CASE "H"

GOTO HorizontalBAR

HorizontalBARBack:

CASE "U"

GOTO UprightBAR

UprightBARBack:

CASE "C"

GOTO CrossBARs

CrossBARsBack:

CASE "1"

GOTO BiasBAR1

BiasBAR1Back:

CASE "2"

GOTO BiasBAR2

BiasBAR2Back:

CASE "D"

GOTO DiagonalBARs

DiagonalBARsBack:

CASE "I"

GOTO DiffuseBARs

DiffuseBARsBack:

CASE "E"

END

CASE ELSE

GOTO ElseKey

END SELECT

LOOP

END

PrintHLWord:

IF S = 1 THEN

COLOR 15

PRINT LEFT$(S$, 1);

COLOR 7

PRINT MID$(S$, 2)

ELSE

COLOR 7

PRINT LEFT$(S$, S - 1);

COLOR 15

PRINT MID$(S$, S, 1);

COLOR 7

PRINT MID$(S$, S + 1)

END IF

GOTO PrintHLWordBack

HorizontalBAR:

SCREEN 1

FOR I = 1 TO 200

PSET (I, 100)

DO: LOOP WHILE INKEY$ = ""

NEXT I

SCREEN 0

GOTO HorizontalBARBack

UprightBAR:

SCREEN 1

FOR I = 1 TO 200

PSET (100, I)

DO: LOOP WHILE INKEY$ = ""

NEXT I

SCREEN 0

GOTO UprightBARBack

CrossBARs:

SCREEN 1

FOR I = 1 TO 200

PSET (I, 100)

PSET (100, I)

DO: LOOP WHILE INKEY$ = ""

NEXT I

SCREEN 0

GOTO CrossBARsBack

BiasBAR1:

SCREEN 1

FOR I = 1 TO 200

PSET (I, I)

DO: LOOP WHILE INKEY$ = ""

NEXT I

SCREEN 0

GOTO BiasBAR1Back

BiasBAR2:

SCREEN 1

FOR I = 1 TO 200

PSET (I, 200 - I)

DO: LOOP WHILE INKEY$ = ""

NEXT I

SCREEN 0

GOTO BiasBAR2Back

DiagonalBARs:

SCREEN 1

FOR I = 1 TO 200

PSET (I, I)

PSET (I, 200 - I)

DO: LOOP WHILE INKEY$ = ""

NEXT I

SCREEN 0

GOTO DiagonalBARsBack

DiffuseBARs:

SCREEN 1

FOR I = 1 TO 200

PSET (I, 100)

PSET (100, I)

PSET (I, I)

PSET (I, 200 - I)

DO: LOOP WHILE INKEY$ = ""

NEXT I

SCREEN 0

GOTO DiffuseBARsBack

路程图:

CLS

输入

计算

输出

END

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/22 15:41:50