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,但去掉了后者的编译和连线部分。

基本介绍 外文名 :Beginner's All-purpose Symbolic Instruction Code 简称 :QBasic 类型 :计算机语言 开发公司 :美国微软 特点,现状,语法,快捷键,范例, 特点 Basic语言是计算机高级语言的一种,它简单、易学、好用,被广大计算机用户所青睐。Basic语言的表达式与数学中的表达式相似,语句与自然语言相仿,极容易被初学者掌握,而Basic语言的最新发展Visual Basic 6.0、7.0,其友好的可视化编程界面、强大的面向对象编程能力及其网上发行和网上查询的功能,不仅能使用户方便而轻松地编写出具有任何功能的应用程式,而且更好地适应了网路时代的到来。 在windows 8中运行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 <条件> <循环体> WEND DO循环 DO WHILE <条件> <循环体> LOOP 子程式和函式作为单独的模组 不需要行号 代码示例(赋值,求和运算,并显示结果) LET?A=10LET?B=20LET?C=A+BPRINT?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?XSUM=7.5*XPRINT?SUMEND 范例2: 卖西瓜,10千克以下每千克1.4元,10千克以上每千克0.7元,输入要买多少千克(必须为自然数),输出需要多少钱。 INPUT?XIF?X<>FIX(X)?THEN"NO":GOTO?1IF?X>10?THEN?SUM=10*1.4+(X-10)*0.7?ELSE?SUM=X*1.4PRINT?SUMEND 范例3: 输入10个字母,比较大小,输出最大的一个 DIM?A$(10)FOR?I=1?TO?10INPUT?A$(I)NEXT?IB$=A$(1)FOR?I=2?TO?10IF?B$<A$(I)?THEN?B$=A$(I)NEXT?IPRINT?B$END 范例4: 一个游戏: CLS?'清屏LOCATE?5,?38?'定位到5,38PRINT?"Game"?'显示LOCATE?16,?34?'定位到16,34PRINT?"Press?Enter"?'显示DOLOOP?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?TIMERHP1?=?INT(RND?*?50)?+?50?'随机决定玩家1的HPHP2?=?INT(RND?*?50)?+?50?'随机决定玩家2的HPPRINT?STRING$(12,?"?")?+?Name1$?+?"'s?HP?is?"?+?STR$(HP1)?'显示玩家1的HPPRINT?STRING$(12,?"?")?+?Name2$?+?"'s?HP?is?"?+?STR$(HP2)?'显示玩家2的HPPRINT?"?Press?any?key?to?contiune"DOLOOP?WHILE?INKEY$?=?""?'暂停DIM?Row,?Text$,?Attack,?IText$?=?"n"Row?=?0CLSDO?'循环PRINTPRINT?Name1$?+?"'s?HP:"?+?STRING$(16?-?LEN(Name1$),?"?");PRINT?STRING$(INT(HP1?/?2),?2)PRINTPRINT?Name2$?+?"'s?HP:"?+?STRING$(16?-?LEN(Name2$),?"?");PRINT?STRING$(INT(HP2?/?2),?2)?'以上这几句是用图形来表示HPFOR?I?=?1?TO?4PRINTNEXT?'显示空行Row?=?Row?+?1?'回合数+1PRINT?STRING$(11,?"?")?+?STR$(Row)?+?"."PRINT?STRING$(12,?"?")?+?Name1$?+?"?now?has?HP?"?+?STR$(HP1)PRINT?STRING$(12,?"?")?+?Name2$?+?"?now?has?HP?"?+?STR$(HP2)?'以上几句显示回合数和HP数DOLOOP?WHILE?INKEY$?=?""?'暂停Attack?=?INT(RND?*?20)?'随机决定攻击点数Text$?=?STRING$(12,?"?")?+?Name1$Text$?=?Text$?+?"?attack?"?+?Name2$?+?"?"?+?STR$(Attack)?'先想好要显示的文字HP2?=?HP2?-?Attack?'用玩家2的HP减去攻击点数PRINT?Text$?'显示文字DOLOOP?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就退出循环DOLOOP?WHILE?INKEY$?=?""?'暂停CLSLOOPIF?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