1、 日志AJAX 技术汇总 1电脑除 C 盘外,其他盘都打不开,如何解决字号: 大大 中中 小小 Qbasic 教程 第一章 BASIC 语言概述一、程序设计语言的选择 程序是用来实现算法的。1、应用范围.数值计算(科学计算)FORTRAN 、True BASIC、QBasic.商业和管理COBOL、数据库系统(dBASE、FoxBASE、Foxpro).人工智能 Lisp、ProLog .系统设计 C 语言、C+、 .多媒体(图、声、文技术 ) Visual BASIC .计算机网络 分布处理数据库系统:SYBASE、ORACLEWWW 文件:HTML(Hyper Text Markup La
2、nguage)、Java 2、语言所提供的功能强弱3、语言提供的数据结构 数据类型4、语言的使用环境 DOS 、 WINDOWS、UNIX、NOVELL 5、程序设计环境集成环境(菜单功能) 、图形界面、软件开发工具 6、使用者的背景 熟练程度、使用环境二、BASIC 语言的发展 .BASIC 语言于 1964 年问世 作者:John.G.Kemeny 和 Thomos E.Kurtz .Beginners All-purpose Symbolic instruction Code“1、初期的 BASIC(第一代) .1417 个语句,Minimal BASIC .自己操作(输入、运行、修改、
3、输出2、微机 BASIC(第二代).Microsoft 总裁 Bill.Gates 编写只有 4k 字节的解释程序 .TRS-80 BASIC .Apple BASIC .MSBASIC(BASICA) .GWBASIC 3、结构化 BASIC(第三代) .限制 GOTO 语句,程序模块化 .True BASIC 真正的 BASIC .Quick BASIC .Turbo BASIC .QBasic(DOS5.0 以上)4、面向对象的 BASIC .windows 环境下的 Visual BASIC,图形界面,支持多媒体. 三、QBasic 的特点 QBasic 是结构化的程序设计语言,与第二
4、代 BASIC 相比有如下特点: 1、扩充了变量和常量的类型 .变量名长度:40 个字符 .增加了长整型、定长字符型变量 .可定义数值常量、字符串常量 2、提供了新的选择结构 .条件语句 IF THEN ELSE END IF .多分支语句 SELECT 3、改进了循环结构 增加以下两个循环语句: .WHILE 循环 WHILE WEND .DO 循环 DO WHILE LOOP 4、子程序和函数作为单独的模块5、不需要行号6、具有良好的编辑环境7、提供联机“Help”8、提供“分步执行”“跟踪”等调试9、采用先进的解释执行方式10、与 Visual BASIC 完全兼容 四、QBasic 使
5、用环境 1、启动 .在 DOS 状态下运行 QBASIC,如: F:QBASIC.在 WIN98 下双击 QBASIC 图标;.软盘启动 把 QBASIC 系统文件(QBASIC.EXE 、QBASIC.HLP) 复制到 A 盘,再执行:A:QBASIC2、工作窗口 .程序窗口(上) .命令窗口(下) .两窗口之间的切换 F63、基本操作 光标、行列位置、鼠标指针、菜单、窗口的缩放 五、运行程序 1、从键盘输入程序2、运行程序 .选择菜单 RUN 中的“Start“命令 .直接按 F5 键或 Shift+F5 .在命令窗口中输入 run 命令3、修改和编辑源程序 删除、插入、复制、粘贴4、程序
6、存盘和从磁盘读入程序5、退出 QBasic第二章 QBasic 程序设计初步一、概述 程序设计要掌握如下几点:1、语法规则 计算机是忠实的执行者2、根据算法写出程序 掌握算法,会画流程图3、数据结构数据的组织形式4、结构化程序设计方法 掌握三种基本结构的运用5、程序运行的环境了解计算机系统的硬件和软件配置 程序设计=算法+数据结构+程序设计方法+语言工具和计算机环境 二、源程序结构 1、一个程序由若干个语句行组成,每一行称为一个语句行,一行中可以包含多个语句(语句间用“:”号相隔) 。2、语句行可以没有行号,程序按语句排列的顺序依次执行,但也允许有行号,行号仅作为行标号(源程序转移的目标)而不
7、代表执行顺序。 3、语句结构 (关键字)4、程序以 END 语句结束可以有多个 END 语句,一般放在程序的最后。5、行标号 .行的标志 .只能在一行的开头 .可独占一行(即为空语句) 6、主程序与子程序 一个程序只包含一个主程序,但可包含若干个子程序或函数。 三、常量 常数不变的数 常量不能改变的数据1、数值常量(常数)1)整型常量(整数) 由若干个数字组成的序列 2)实型常量(实数).定点数(日常记数法) 小数位固定.浮点数(科学记数法) 用 E 代表以 10 为底的幂数,即把常量用指数形式来表示 例如:12.34E2 表示 1234 .单精度实数(普通型实数)7 位有效数字 .双精度实数
8、16 位有效数字(用 D 代替 E) 3)数的范围 类型 标记符 字节 有效位数 整数 % 2 长整数 X 显示: X= . 2、作用 (1)输出数值计算的结果(P92) (2)输出字符串(P93) (3)输出系统信息(P94) 3、输出格式 (1)标准格式输出项以逗号分隔 五区每区 14 列 (2)紧凑格式输出项以分号相隔 (3)TAB(X)第 X 列定位输出,但在同一行中、TAB(X )中的 X 应从左到右逐渐增大。还可利用 SPACE(X)插入空格 (4)PRINT , 不换行(光标到下一区) PRINT ; 不换行(光标在输出项后) PRINT 换行 PRINT 空行4、打印输出 LP
9、RINT 其使用方法与 PRINT 相同二、赋值语句1、一般格式 LET= LET a=100 LET a$=“BOOK“2、作用 计算右边的表达式,将其值赋给左边变量;主要作用:运算。 “=”的作用于是赋值,与等于的差别 如:X=Y 与 Y=X 不同( 例 P100) 3、对变量的赋值操作(1)变量的初值为 0 未赋值的变量 (2)一个变量只有一个值 变量的当前值由最后一次赋值决定 n=n+1 (3)变量值的传递 a=b b 的值不变 b=a a 的值不变 (4)关于赋值类型 以左边变量的类型为准 (5)两个变量交换值a=b c=a a=b c 为中间结果为?/font b=c 三、键盘输入
10、语句 1、一般格式: INPUT“提示信息”; 说明:(1)执行该语句从键盘输入数据的数目应与语句 中的变量个数相同 (2)从键盘输入的数据只能是常量 (3)输入时数据间用逗号分隔 例:求学生三门课的平均成绩 INPUT “a,b,c=“;a,b,c V=(a+b+c)/3 PRINT “average=“; v END 四、读入语句 1、格式: READ DATA 例:READ a,b,c, DATA 75,60,90 V=(a+b+c)/3 END 2、说明: (1) 中的数据个数不能少于 中的变量个数。 (2)DATA 语句可放在程序的任何位置,可使用 多个 DATA 语句来存放数据,这
11、时将按 DATA 语句的先后顺序,把数据放数据区。 (3)关于“数据指针”当指针移到数据区之外 时,屏幕给出错误信息:Out of DATA (例 P109) (4)DATA 语句中的数据只能是常量 五、恢复数据指针语句 RESTORE 将数据指针移至首位或指定的 DATA 语句标号。 六、结束语句和暂停语句 1、END 语句 结束程序运行。一个程序可有多个 END 语句,但运行程序时,只有一个起作用,即执行其中一个 END 语句都会使程序结束。 2、STOP 语句 使程序暂停,选择 RUN-CONTINUE 继续运行。 七、程序调试 1、分步执行 F9单步执行,STEP F6窗口转换,WIN
12、DOWS F5运行或继续运行。 2、设置断点 F9设置断点 F5运行或继续运行第四章 选择结构程序设计一、概述 分支结构: 二、关系式和逻辑表达式 1、关系运算符 、 =、 =、 、关系式 关系式是由一个关系运算符把两个表达式连起来的式子。结果(值)为逻辑值: 真 True 假 False QBASIC 用数值表示: 真: -1(非零值) 假: 0 if x0 then print x 和 if x then print x 相同 3、逻辑运算符及逻辑表达式(1)、not (非、逆、取反) 74 值为真 not (74) 值为假 (2)、and (与、交) 所连接的两个关系式为真时条件成立。x
13、0 and x 10 or X4 print x x=-1 a=5=3 =a=(5=3) a=0 三、行 IF 语句 、一般格式 if then else 2、嵌套关系 (1)ifthen ifthenelseelse 内层 外层 (2)ifthen ifthenelse if thenelse 四、块 if 语句 、一般格式 if then else end if 、应用举例例 6.5: 输入 3 个整数、按从大到小的顺序输出。 算法: (1)先将 a 与 b 比较,把小者放 b 中,大者放 a。 (2)再将 a 与 c 比较,把小者放 c 中,大者放 a 中,此时 a 已是三者最大的。 (
14、3)最后将 b 与 c 比较,大者放 b 中,小者放 c 中,此时 a、b、c 已按从大到小的顺序排例好。 程序: inpnt “a,b,c,=“;a,b,c if ba then t=a a=b 交换 a、b(swap a,b) b=t end if if ca then t=a a=c 交换 a、c(swap a,c) c=t end if if cb then t=b b=c 交换 b、c (swap b,c)c=t end ifprint a, b,c end 、块 if 的嵌套 if then if then else end if else end if 4、 块 IF 中的 EL
15、SEIF 格式 if then else if then else end if end if 写成: if then elseif then else end if P125 改写为: Input “m=“;mIf mcase case case case else end select 每一个 CASE 句中指定一个值条件,当 CASE 变量的值符合条件时,执行该子句下面的语名组,在执行完该语句组后,跳过其它 CASE 子句,从 END SELECT 转出。 c=int(s/250) 2、在 CASE 子句中使用 TO CASE TO 3、在 CASE 子句中使用 IS CASE IS 4
16、、在 CASE 子句中使用多个条件 允许在一个 CASE 子句中指定多个条件,各条件 之间用逗号分开。 条件=单值、值范围、单条件 5、SELECT CASE 语句的一般格式 select case case ,,case ,, case ,,case else end select 六、多分支转移语句 格式: , , 七、多分支选择结构小结 1、IF-THEN-ELSE(用 IF 的嵌套) 分支(条件)较少时使用。 2、SELECT CASE 分支(条件)较多时使用。 3、ON GOTO 非结构化程序设计,不宜使用。 第五章 循环结构程序设计一、概述 循环结构: (1) 、WHILE 循环
17、(2) 、FOR 循环 (3) 、DO 循环 循环体反复执行的一组语句 例:求 s=1+2+3+.+100 编写如下程序: s=0 for i=1 to 100 s=s+i 反复执行 100 次 next i print “1+2+3+.+100=“;s end 二、 WHILE 循环结构 WHILE WEND 注: 是终止循环的逻辑表达式,应随循环的执行而变化,最终退出循环。 如: s=0 i=1 WHILE im, r=n, 重复(1)。 程序及框图 : INPUT “m,n=“;m,nr=m MOD n WHILE r 0 m=n n=rr= m MOD n WENDPRINT “最大公
18、约数为: “,n END 例 3 (P153 例 7.7):给一个整数 n(2),判别它是否素数(质数) 。 算法:判别 n 是否素数,只要将 n 被 1(n-1)各数轮流作除数除,若都不被整除,则为素数。 若 n 不是素数,则 n=n1*n2,而 n1 和 n2 中必然有一个大于或等于 n 的开方根,另一个小于或等于 n 的开方根。即若 n 是非素数,则必然有一个因子小于或等于 n 开方根。 程序及框图: INPUT “n=“; nk=INT(SQR(n)i=2 flag=0 WHILE i= TO STEP 循环体WEXT 如: for i=1 to 10 step 2print i,ne
19、xt i 2、说明 (1)FOR 与 NEXT 必须配对; (2)FOR 必须在 NEXT 的前面; (3)FOR 中的循环变量与 NEXT 的变量一致; (4)步长为 1 时“ STEP 1”可省略; (5)循环终止的条件是循环变量赋值超过终值,而不是等于终值。 (6)循环次数的计算 次数=(终值一初值)/步长+1 (7)循环变量尽量用整型变量; (8)循环变量初值和终值、步长值均可以是正值、负值或零,也可是整数或小数; 终止条件:当步长0 时,循环变量 终值 当步长 = 100 then exit fornext i print s end 4、应用举例 判别 n 是否素数。 input
20、“n=“;nk = int(SQR(n)f = 0 for i% = 2 to kif n mod i% = 0 thenf = 1exit forendifnext i%if f = 0 thenprint n ; “ 是素数“else print n ; “ 不是素数“endif end 斐波那契数列 f(n)=1 (n2) f1=1 f2=1f3=f2+f1=2f4=f3+f2=3f5=f4+f3=5 程序如下: f1=1 f2=1 print f1,f2,for i% = 3 to 20f3 = f1+f2print f3,f1=f2 f2=f3 next i% print end 猴
21、子吃桃:每次吃掉一半多一个,直到第 10 天只剩一个,第一天共摘了多少个桃子? x10 =1 程序如下: x =1 for n%=10 to 2 step -1 x=(x+1)*2 next n% print “ 桃子的数量为: “;x end 思考:for n%=10 to 1 step -1 或 for n%=1 to 9 三、DO 循环语句 1、 简单 DO 循环 DOloop 终止循环可用: exit do 计算三门课程的平均成绩 do input“a,b,c, =“;a,b,c if a=0 and b=0 and c=o then exit dos=(a+b+c)/3print “
22、平均成绩 :;sloop end 2、带 while 子句的 DO 循环语句 格式一:do while loop 格式二:do loop while 作用:当指定条件为真是继续循环,否则结束循环。 格式一为前测试与 while.wend 相同。格式二为后测试,至少应执行循环体一次。 例:求 1+1/2+1/3+.1/n 直到前后两项之差小于是 1e-3 为止。s=0 n=1 t=1/ndo t1=ts=s+t1n=n+1t=1/nloop while t1-t=1e(-3) print send 思考:(1)用 do while.loop 改写程序; (2)两种格式 do 循环的区别? 3、带
23、 until 子句的 do 循环语句 格式一:do until loop 格式二:do . loop until 作用:当条件为真时终止循环 求 20002050 年之间的所有闰年。 闰年的条件是: (1)能被 4 整除,但不能被 100 整除的年份都是闰年; (2)能被 100 整除,又能被 400 整除的年份是闰年; 程序如下: y=2000 do while y2050 if y mod 4=0 and y mod 1000) or (y mod 100=0 and y mod 400=0) then l=1 else l=0 (2) if y mod 4=0 then if (y mo
24、d 100)=1.5e+0.9 p=p*(1+r) n=n+1 loop print n;“年“,“ 人口“;p end 问题(1)比较下面两例: f=1 f=1 n=6 n=6 do until n5 do f=f*n f=f*n n=n+1 n=n+1 loop loop until n5 print f print f end end (2)凡是用 do until 循环可以解决的问题,全部可用 do while 解决,只需把“”取成“” p=1.23e+0.9 r=0.015 n=0 do while p()= 例 1. 已知圆的半径 r,求圆的面积: S=r2 DEF fns(r)=
25、3.14159*r*r PRINT fns(3) END 例 2DEF fns$=”this is a string” PRINT fns$ 例 3. 求以下公式: DEF fnc(a,b)=SQR(a*a+b*b) Print fnc(3,4) (2).说明 函数名由两部分组成 fn s 自定义函数标志(fn),用户定义名(一个字母 s) ; 参数可有多个,但调用时的参数(实参)与定义时的 参数(形参)要一致。 2、多行自定义(DEF)函数 用多行语句来定义一个函数。 (1)、一般格式 DEF fn() fn= END DEF例 4、定义函数 f(n)=1+2+.+n DEF fns(n)
26、S=0 FOR i=1 to n S=S+i Next i fns=S END DEF For n=1 to 100 Print fns(n) NEXT n END (2)、说明 (i)形式参数定义函数的自变量 实际参数调用函数时的参数。 (ii)函数先定义后使用,即习惯把 DEF 语句 放在程序的开头。二、块内子程序 1、gosub-return 语句 子程序定义: : return子程序调用: GOSUB 例 5:求 4!+5!+6 ! S=0 n=4: gosub f:s=s+p n=5: gosub f:s=s+p n=6: gosub f:s=s+p print “4!+5!+6!=
27、”;s end f: p=1 for i=1 to n p=p*i next i return 2、on gosub-return 语句 (1).一般格式 子程序定义: : return子程序调用: ON gosub , 例:“小学生算术练习” 轮流出一个二位数和一个一位数的加法、减法和乘法的题目,共出十题,每题 10 分。 RANDOMIZE for i=1 to 10 a=int(90*RND)+10 b=int(9*RND)+1 p=i mod 3 + 1 ON p GOSOB a1,a2,a3 Next i Print “n=“;n*10 END a1: print a;“+“;b;“
28、=“; input c if c=a+b then n=n+1 return a2: print a;“-“;b;“=“; input c If c=a-b then n=n+1 Return a3: print a;“*“;b;“=“ Input c If c=a*b then n=n+1 Return. (2)、说明: 的值不是整数时,按四舍五入处理,值为 0 或大于 n 则不起作用,值为负时系统给出错误信息“不正确的函数调用”。 3、ON KEY(n) GOSUB-RETURN 语句 (1)、调用格式 ON KEY(n) GOSUB 其中 n 是数值表达式,代表一个“陷阱键”。n 的值与
29、 设定键的对应关系如下: n 值 键名110 功能键 F1F1011 方向键12 方向键13 方向键14 方向键例: 求和式:S=12+22+.+n2 n=100000 ON KEY(2) GOSUB pri KEY(2) ON S=0 For i=1 to 100000 S=S+i*i NEXT i pring “s=”;s end pri:print “now swm is”;s,”I=”;i return (2).说明 设置陷阱:ON key(n) GOSUB 打开陷阱:KEY (n) on 关闭陷阱:KEY (n) off 三、独立模块的子程序 1、建立子程序 格式:SUB () EN
30、D SUB 2、子程序的调用 (1).格式 DECLARE SUB () Call () 或 例:SUB stars(n) for i=1 to n PRINT “*”; Next i Print END SUB _ DECLARE SUB Stars(n) Call Stars(30) Call Stars(18) End (2). 说明 i)DECLARE 为外部子程序说明语句,主程序调用多少个子程序,就有多少个 DECLARE语句; ii)Call 语句的 “Call”可以省写,参数的括弧也 可不写; 如: Call stars(30) 可写成: stars 30 3、参数传递 (1).
31、值传递方式 Call stars (30) SUB stars (n)(2).地址传递方式 a=30 Call stars(a) SUB stars(n) 例:求 4!+5!+6!+7! 子程序:SUB Fact(n,f) f=1 for i=1 to n f=f*i next i END SUB 主程序:DECLARE SUB Fact(n,f) for i=4 to 7 Call Fact(i,f) S=S+f Next i Print “s=”;S End 注:地址传递方式是当实际参数为变量时发生,它将可能会改变原变量的值,若实际参数是变量时,又不想用地址传递(即用值传递方式)则可把变量
32、用括号括起来。 例:求两个整数的最大公约数和最小公倍数。(P208) 最小公倍数=(m*n)/最大公约数 求最大公约数子程序: SUB HCF(m,n,h) IF m0 m=n n=r r=m MOD n LOOP h=n END SUB 求最小公倍数子程序: SUB LCM(m,n,h) h=m*n/h END SUB 主程序: DECLARE SUB HCF(m!,n!,h!) DECLARE SUB LCM(m!,n!,h!) INPUT “m,n=“;m,n CALL HCF(m,n,h) PRINT “最大公约数为:“;h CALL LCM(m,n,h) PRINT “最小公倍数为:
33、“;h END 说明:程序在执行时,结果不正确;其原因是 CALL HCF 语句调用时修改了 m 和 n 的值,以至使 CALL LCM 运行不 正确。因此,CALL HCF 语句应为: CALL HCF(m),(n),h) 例:验证哥德巴赫猜想:一个不小于 6 的偶数可以表示为两个素数之和。(P209) 算法: n=10 n1 n2 2(T) 8(F) 3(T) 7(T) n=16 n1 n2 2(T) 14(F) 3(T) 13(T)四、模块化的函数 1、建立一个函数 FUNCTION () LET = END FUWSTION 2、函数的调用 与标准函数相同,只是在主程序开头加上 DEC
34、LARE FUNCTION (),无参数函数也要写上两个括号( ); 例:求 4 到 7 的阶乘之和 FUNCTION Fact(n) f=1 for i=1 to n f=f*i NEXT I Fact=f END FUNCTION _ DECLARE FUNCTION Fact(n) S=0 For i=4 to 7 S=S+Fact(i) Next i Print “S=“;S End注意函数的参数传递 3、STATIC 选项(静态) 外部函数中使用的变量,在函数调用结束后将全部被释放,其值不再保留。如要保留函数中的变量,可在建立函数时加写“STATIC”即 FUNTION 函数名()
35、STATIC 五、全局变量与局部变量 1、局部变量 每一个模块(子程序、主程序、函数)中的变量都只在本模块中有效,即是它们的作用域只限于模块,这种变量称为局部变量。 2、全局变量 在程序所有模块中都有效的变量,即作用域为整个程序变量称为全局变量。其定义格式为:COMMON SHARED 六、过程的嵌套调用 在一个过程里又调用另一个过程。 七、过程的递归调用 在一个过程里又调用该过程本身; 例如直接调用: FUNCTION f(x) C=f(x) f=2*C END FUNCTION 又如交叉调用: FUNCTION f1(x) C=f2(y) f1=2*C END FUNCTION FUNCTION f2(t