资源简介 黑客 QBASIC程序设计基础 模块二 QBASIC程序设计 人们是通过自然语言进行相互交流的。 计算机要按照人的想法进行工作,就必须能理解和执行人们给它的指令,也就是说,人与计算机要有一种共同的语言,俗称“计算机语言”。QBASIC就是一种计算机语言。我们用QBASIC编写计算机程序来使计算机完成预定任务。它的神奇力量来自于人们设计好的一系列语句和指令。计算机语言是程序设计的工具,解决问题的具体方法和步骤是程序设计的关键。 从涉及解决问题的方案、编写程序到上机调试运行程序的过程,被称为程序设计。 解决问题的具体方法和步骤(算法)是程序设计的关键 学习内容 QBASIC程序的实现 QBASIC语言基础知识 顺序结构的QBASIC程序 选择结构的QBASIC程序 循环结构的QBASIC程序 第一节 QBASIC程序的实现 学习目标: 熟悉QBASIC的工作窗口 学会程序的输入、运行和保存 启动QBASIC QBASIC系统窗口 菜单栏:单击每个菜单项都可以看到一个下拉式菜单的菜单名,它们是QBASIC的操作命令。 文件名:显示正在编写的程序文件名。如果新的程序文件还没有存盘,则显示“Untitled”(无名)。 提示栏:显示一些按键的提示信息,如按F5是运行程序。 QBASIC程序编辑窗口 自主探索 1、输入QBASIC程序 REM program A1.BAS ‘ 说明语句 CLS ‘清除屏幕 LET a=10 ‘将10赋值给变量a LET b=20 ‘将20赋值给变量b LET c=a+b ‘将a+b的值赋值给变量c PRINT a;”+”;b;”=”;c ‘显示运行结果 END ‘结束 2、运行QBASIC程序 可以单击菜单栏中的“RUN”菜单项,单击”START”命令。 也可以直接按“F5”键,即可运行程序。 3、保存程序文件 注意文件的保存位置 注意文件名的合法性 文件名的合法性:程序保存时,文件名是以字母开头的字母、数字和部分标点符号的组合,但不能有空格和☆=+[]∶()/\等字符。QBASIC程序以文件形式保存后会自动生成扩展名“.bas”,表示文件的性质是QBASIC程序。 4、退出QBASIC 使用“FILE”菜单项下的”Exit”命令,退出QBASIC系统 注意将未保存的已编号的程序存盘。 例程1: REM circle ‘关于圆的周长的计算程序 CLS ‘清屏 LET R=5 ‘R为半径radiu LET PI=3.14 ‘PI为π LET C=2*R*PI ‘C为圆的周长 PRINT “C=“;C ‘打印出C的值 END ‘程序结束 第二节 QBASIC语言基础知识 学习目标: 理解QBASIC语言中常量、变量的概念 了解QBASIC的标准函数及表达式 QBASIC程序是由什么构成的? 一个QBASIC程序是由若干语句组成的。语句一般由语句定义符(关键字)和语句体两部分组成。 LET a=10 一、QBASIC程序 QBASIC程序:一个 QBASIC程序是由一定序列的若干条QBASIC语句组成的。语句的排列顺序是程序解决问题的步骤体现。程序以rem语句开始以end语句结束。 语句:是计算机执行的一个操作。大部分语句包括语句定义符和语句体两部分。 REM program A1.BAS CLS LET a=10 LET b=20 LET c=a+b PRINT a;”+”;b;”=”;c END QBASIC程序处理的数据主要有那些? REM circle ‘关于圆的周长的计算程序 CLS ‘清屏 LET R=5 ‘R为半径radiu LET C=2*R*3.14 ‘C为圆的周长 PRINT “C=“;C ‘打印出C的值 END ‘程序结束 3×x+y(x-y)/3 3+4*8*sqr(16)/2 程序中参加运算的数据称为计算对象,也称“运算 量”。QBASIC中的运算量有常量、变量和标准函数等。一个表达式是由运算量和运算符号组成的。 1、常量 在程序中,有一些量的值始终保持不变,我们把它称作常量。QBASIC语言中常量可分为数值型常量和字符型常量。 数值型常量:就是数学中所用到的常数 125、-100、1.6、-3.02等 字符型常量:是用双引号引起来的一串字符。双引号是字符串的界定符,字符串常量指的是双引号中的字符,不包括双引号,如“+”、“1-2-3”和“china”等 2、变量 变量:程序在运行过程中其值能改变的量。 LET x=3 LET x=100 变量名:程序中所用道的每个变量都有唯一标识的名字,即变量名。QBASIC对变量名有规定: 变量名的第一位必须是字母,即变量名必须是以字母开头。 变量名由英文字母、数字和小数点组成,不允许有空格。 不能用QBASIC的语句定义符、函数名等关键字作为变量名 变量名不区分大小写 定义变量名时,应遵循“见名知义”和“简单明了”的原则。如:num代表“数量”、age代表“年龄”。 看下列变量名,是否合法? Sum b28 2b wang li 变量的值:存放在变量中的数据 变量名与变量的值的关系 变量的类型 3、标准函数 计算机处理数据时,有一些计算方法是经常使用的,如求平方、绝对值、开方等。 常用计算的小程序被称为标准函数 标准函数列表 练一练 LET a=ABS(-19.05) LET c=INT(-4.9) LET e=INT(4.15) LET b=SQR(16) LET d$=“123” LET f=123 QBASIC程序中的算术表达式 用QBASIC的运算符和括号将若干个运算量(常量、变量和标准函数等)连接起来的式子,成为QBASIC的表达式。 QBASIC有算术运算符、关系运算符和逻辑运算符 QBASIC有算术表达式、关系表达式和逻辑表达式 3+4*8*SQR(16)/2^3 算术表达式的运算次序遵循规则 从左到右的次序 乘除优于加减 整除优于加减,但次于乘除;MOD优于加减,但次于整除 乘方优于乘除 函数运算优先于乘方 括号优先,可以使用括号改变以上优先次序 练一练 例程2 已知数学参考书的单价(price)为9.8,需购进90本,书店给予9.5折扣(discount)优惠,编程计算实际应付款数(amount)。上机运行编写的程序,记录结果。 REM FKJE cls LET PRICE=9.8 LET NUM=90 ‘ input num LET DISCOUNT=0.95 LET SUM=PRICE*NUM*DISCOUNT PRINT “FKZE”;SUM end 1、LET赋值语句 赋值语句是讲一个表达式的值赋值给一个变量,具有计算和赋值双重功能。 LET a=10 、LET c=a+b 赋值语句中的表达式可以是常量、变量和表达式。赋值语句中的“=”是赋值号,不等同于数学中的等号。“n=n+1”在数学上是矛盾等式。在QBASIC语言中,它是先计算“=”右边的表达式的值,然后将表达式的值赋值给“=”左边的变量。 2、INPUT输入语句 Input输入语句是用于给变量赋值,不过它与LET语句不同,INPUT语句是在程序运行之后才进行输入。 INPUT输入语句可以给一个或多个变量赋值,有多个变量时,变量之间用“,”号隔开,输入的数据也用“,”隔开。 REM program Cls Input “a,b”;a,b Let c=a+b Print a; “+”b; “=“;c end 3、PRINT输出语句 PRINT输出语句时将数据输出到屏幕上,输出对象可以是常量、变量和表达式。也具有输出和计算双重功能。 注意: 输出项之间“,”与“;”的区别 自主探索 试着为下列语句添加语句定义符 a=5 b$=“5*6=“ s=a*6 Print b$;s a=3 b=6 a=b+1 Print “a=“; a;”b=“;b 学会利用流程图 利用计算机完成工作时从问题开始的,设计解决问题的方法和步骤(即算法)是关键!设计出的算法可以用自然语言或流程图两种方法描述。下面就是一个小学生心算练习程序的算法流程图。 流程图 REM program CLS LET data1=INT(RND*100) LET data2=INT(RND*100) LET sum=data1+data2 PRINT data1;”+”;data2;”=“; INPUT answer PRINT “the answer is”;sum END 第四节 选择结构的qbasic程序 理解IF语句的用法 看懂选择结构的程序 理解选择结构在程序中的作用 关系表达式和逻辑表达式 关系运算符和关系表达式 =、>、<、<>、>=、<=六种 逻辑运算符和逻辑表达式 AND 所连接的两个条件都成立时,表达式值为真,否则为假。 OR 所连接的两个条件只要有一个成立时,或者两个条件都成立时,表达式的值为真,否则为假。 NOT 对一个逻辑量或一个条件的值取反。 选择结构语句----IF语句 IF语句的格式 IF 条件 THEN 语句组A [ELSE 语句组B] ENDIF 例程: REM A3.bas INPUT “A,B”;A,B IF A>B THEN PRINT A ELSE PRINT “sorry” ENDIF END 自主探索 学校要选拔篮球运动员,下面是一个输出身高1.70米以上的学生学号和身高的程序,程序输入后不能正常运行,请找出程序中的错误。改正并运行程序,观察输出结果。 Cls Input “your number:”;no Input “your height:”;height If height<1.70 then Print “sorry for you” Else print no ,height End IF语句的应用实例 1、根据下面的函数编写一程序,从键盘上输入X的值,要求输出Y的值 CLS INPUT “X=“;X IF X>O THEN Y=1 IF X=0 THEN Y=0 IF X<0 THEN Y=-1 PRINT “X”;X,”Y=“;Y END 2、从键盘上输入三个整数,编写输出最大值的程序 算法分析: 做中学 REM the biggest data CLS INPUT “INPUT a,b,c”;a,b,c LET max=a IF b>max THEN max=b IF c>max THEN max=c PRINT “max=”;max END 程序分析: 小学生两位数加法练习程序。 程序设计思路是使用if语句,先判断小学生的答案是否相同,即判断answer=sum关系表达式是否成立。如果成立(答案正确),就执行输出“right”语句;如果不成立(答案不正确),则执行else部分输出“wrong”的语句。最后输出正确答案。 REM program CLS RANDOMIZE TIMER LET data1=INT(RND*100) LET data2=INT(RND*100) LET sum=data1+data2 PRINT data1;“+”data2;“=” INPUT answer IF answer=sum THEN PRINT “right!” ELSE PRINT “wrong” ENDIF PRINT “the answer is”;sum End 第五节 循环结构的qbasic 学习目标: 理解循环结构语句的用法 看懂循环结构的程序 理解循环结构在程序中的作用 计数循环语句---FOR—NEXT语句 1、 FOR—NEXT语句的格式 FOR 循环变量=初值 TO 终值 STEP 增值 循环体 NEXT 循环变量 2、执行过程 循环变量赋初值 将循环变量与终值比较,如果未超过终值,则执行步骤(3);否则跳过步骤(3)--(5)而执行步骤(6)。 执行循环体 与next语句,循环变量取新值,即循环变量=循环变量+循环变量增量。 返回步骤(2)。 循环执行终止,继续执行next语句的下一条语句。 例程2: 打印出10—1十个自然数。 CLS FOR I=10 TO 1 STEP -1 PRINT i, NEXT I END 自主探索: CLS FOR x=2 TO 7 STEP 2 PRINT X; NEXT X END 应用示例: 1、编写程序计算s=1+2+3+4+……+100的值 算法分析: 这是一个累加求和问题,加法需进行100次。程序现将存放累加结果的变量s赋初值0(又称累加器清零),设循环变量的初值为1.循环变量同时作为累加项,每执行一次循环体,累加项的值增1,循环变量i递增到101时,循环体不再被执行,变量s的值就是计算结果。 REM sum CLS S=0 FOR i=1 TO 100 STEP 1 S=S+i NEXT I PRINT S END 自主探索: 1、编写程序计算100以内所有奇数的和;在QBASIC环境下输入并保存程序;运行程序,记录结果。 2、编写程序从键盘上任意输入10个数,求其中正数之和。 REM SUM(X>0) CLS S=0 FOR i=1 TO 10 STEP 1 INPUT “X”;X IF X>0 THEN S=S+X NEXT I RPINT “S=“;S END 条件循环语句——WHILE_WEND语句 1、WHILE-WEND语句的格式 WHILE条件 循环体 WEND 2、执行过程 1、判断条件是否成立,即判断条件表达式的之是否为真。 2、如果判断条件结果为是(真),则执行循环体中的语句,执行完返回WHILE行,在对条件进行判断;如果判断条件结果仍为是(真),则重复执行循环体。 3、判断条件结果为否,则不执行循环体,直接执行WEND语句后的语句。 做中学: CLS LET i=1 WHILE i<=10 PRINT “**********” i=i+1 WEND WHILE-WEND语句的应用实例 1、计算从键盘上输入N个整数的和。设输入-1表示程序结束。 算法分析: 由于输入的数据个数不确定,加法重复计算的次数也不确定,因此,条件循环语句WHILE-WEND实现加法重复操作。当输入的数据不是-1,即条件判断X<>-1为真时,执行循环体;当输入数据时-1时,即条件判断x<>-1为假,停止执行循环。 REM sum(n) CLS S=0 INPUT “X=“;X WHILE X<>-1 s=s+x INPUT “X=“;X WEND PRINT “s=“;s END 2、求1+2+3+4+……+n的和不大于1000的最大n的值。 算法分析: 这是循环执行的次数不确定的累加求和问题。程序现将存放累加结果的变量s赋初值0,累加项变量i赋初值为0.循环执行条件为S<=1000,每次累加计算后,累加项递增1。最后一次满足条件s<=1000的累加项的值就是1+2+3+4+……+n的和不大于1000的最大n的值。 S=0 i=0 WHILE S<=1000 i=i+1 S=s+I WEND PRINT “n=“;i-1 END 循环结构程序示例 1、如何使小学生心算练习程序运行一次,可以进行10道加法题的练习? 算法分析: 解决这个问题可以用计数型循环语句FOR-NEXT,将一道加法练习题的处理过程作为循环体,循环体的执行次数为10次即可。随机函数每次产生的随机数不同,程序运行一次产生的10道加法练习题也不同。 REM programA5 CLS RANDOMIZE TIMER FOR i=1 TO 10 STEP 1 LET data1=INT(RND*100) LET data2=INT(RND*100) LET sum=data1+data2 PRINT data1;”+”; data2;”+” INPUT answer IF answer=sum THEN PRINT “RIGHT!” ELSE PRINT “WRONG!” PRINT “the answer is “;sum Next I End 自主探索: 如果我国工农业生产总产值每年以8%的速度增长,问多少年后产值会翻一番(设基值为100)试编写程序并上机运行。 实践与提高: 1、阅读程序,说说下面两个程序的运行结果,并上机验证。 2、完善加法练习程序。要求程序给出完成10道练习题的得分情况,作对一题给10分,做错不给分。 hacker 按“ESC”键将进入工作窗口 按“回车键”将调用“帮助系统” QBASIC程序编辑区 菜单栏 文件名 提示栏 File Edit Run New Open Save Exit Cut Copy Paste Run 新建文件 打开文件 存储文件 退出 剪切 复制 粘贴 运行程序 注意:REM语句和每行的“’”之后的内容是对程序和语句的说明、注释,程序运行后不会产生任何操作,仅仅为了程序员便于阅读程序,也可被省略。 语句定义符:计算机做什么操作 语句体:具体内容是什么 清除屏幕 将20赋值给变量b 将10赋值给变量a 将a+b的值赋值给变量c 显示运行结果 结束 说明语句 m n 10 20 LET M=10 LET N=20 LET M=N 一个程序中的一个变量往往会多次进行赋值,但是,一个变量在任意时刻只能有一个值,不可能由两个或多个值,即一个变量在某一时刻的值是唯一的。 变量的类型: 数值型变量 字符型变量 在变量名后没有其它标识的变量,一般认为是数值型变量 在变量名后有“$”标识为是字符型型变量 试一试: REM BIANLIANG LET X=2.5 LET Y$=“COMPUTER” PRINT X,Y$ END ABS (-16.6) 自变量 函数名 SQR(9)=3 求x的平方根 SQR(x) REN=0.56324 得到一个在(0,1)区间的随机数 REN INT(-7.8)=-8 INT(7.6)=7 取不大于x的整数 INT(x) ABS(-16.6)=16.6 求x的绝对值 ABS(x) 举例 功能 标准函数 19.5 4 -5 123 4 123 2^3的结果8 乘方 ^ 5 mod 2 的结果1 求余数 MOD 5\2的结果2 整除 \ 除 / 乘 * 减 - 加 + 举例 表示含义 运算符 ABS(-a)*5*5/2 C+2*a*b^2 3*x+y/(x-y)^3 例程1 REM maths LET a=10.55 LET b=20 LET c=-30 PRINT ABS(c)+2* INT(a)*b^3 END 谁能最快的告诉我这个程序的运行结果? 第三节 顺序结构的QBASIC程序 顺序结构的程序就是按语句出现的先后次序执行的,程序中间没有引任何分支或循环重复操作。顺序结构是最简单的程序结构。 顺序结构的主要语句: 1、LET赋值语句 2、INPUT键盘输入语句 3、PRINT 输出语句 A,b:?10,20 10+20=30 5*6=30 a=3 b=6 练习者输入心算答案 打开随机数发生器 data1=INT(RND*100) data2=INT(RND*100) 计算机计算结果 输出正确答案 开始 结束 真 X>0 OR X<<>-10 真 NOT(7<5) 假 NOT(X=5) NOT 假 X<0 OR X=-10 真 X>0 OR X<-10 OR 假 X>10 AND X<20 真 X>0 AND X<10 AND 值(真/假) 举例(X=5) 逻辑运算符 条件成立? 语句组A 语句组B Y= +1 0 -1 算法分析: 输入的X需要进行条件的判断,如果x>0,y=+1;如果x=0,y=0;如果x<0,y=-1。程序需要三个if语句来判断三个条件之后,使y获得确定值。 运行结果: 第一次 X=?3 回车 X=3 y=1 第二次 x=? 0 回车 X=0 y=0 第三次 x=?-4 回车 X=-4 y=-1 将三个数分别赋值给a、b、c三个变量。变量max存放比较后的大数,将a的值先赋值给max中;b与max比较,把大者放入max中。三个数需要比较判定两次,用两个IF语句,最后最大的数在max中。 运行结果: Input a,b,c?12,4,26 回车 Max=26 在解决实际问题时,常常会遇到需要重复某些操作的情况。如:100道加法练习题,50名学生身高测量等问题。 例程1: REM print * CLS FOR i=1 TO 10 STEP 1 PRINT “**********” NEXT I END CLS FOR x=10 TO 9 STEP -2 PRINT X; NEXT X END REM JSSUM CLS S=0 FOR i=1 TO 100 STEP 2 S=S+I NEXT I RPINT S END 算法分析: 这仍然时一个累加求和问题。只是需要对输入的10个数依次进行判定,只有大于零的数据才进行累加计算,因此IF语句必须在循环体内。现将存放累加结果的变量s置0,循环变量i的初值为1.循环体每执行一次,输入一个数据给变量x,判定表达式x>0的结果是否为真,只讲输入的正数才作为累加项进行累加。当循环变量i递增到11时,输入累加结果。 条件成立? 循环体 注意:程序不能停止运行(死循环)时,可以在按住 CTRL键的同时按下BREAK键,程序将被强制终止。 请同学们议一议,什么情况下使用FOR-NEXT循环语句,什么情况下使用WHILE-WEND语句? CLS i=1 S=100 WHILE S<=200 i=i+0.08 S=s*I WEND PRINT “S=“;S END N=10 S=0 WHILE N>=0 S=S+N N=N-2 PRINT N WEND PRINT S END CLS INPUT N FOR i=1 TO N STEP 1 IF i/7=int(i/7) THEN PRINT i ENDIF PRINT N NEXT i END 开始 变量score=0 打开随机数发生器 i<=10 LET data1=INT(RND*100) LET data2=INT(RND*100) LET sum=data1+data2 键盘输入answer值 Answer=sum? 输出“right!” Score=score+1 输出“wrong!“ 输出正确答案 循环变量i增加步 输出得分 结束 展开更多...... 收起↑ 资源预览