注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

挽幕斋

小楼东小楼西 旧时梦 触目凝望花丛花是哪年红

 
 
 

日志

 
 

qbasic  

2012-01-11 10:06:04|  分类: 名词解释 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

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

  评论这张
 
阅读(107)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017