qbasic详细资料大全
1个回答
展开全部
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 10 INPUT A$(I)NEXT IB$=A$(1)FOR I=2 TO 10 IF 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 '循环 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$ = "" '暂停 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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询