QBASIC培训教程
作者:admin 文章来源:本站原创 点击数: 更新时间:2004-10-21
(书本以《信息学奥林匹克竞赛辅导》(湖北教育出版社出版) 为
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
教材)
第一课时
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
P92—P93
过程:1、QB的初步认识
练习:尝试模仿写出一个求长方形的周长的程序。长为12,宽为6
REM 求长方形的周长
CLS
LET A=12
LET B=6
LET C=(A+B)*2
PRINT C
END
2、字符集
3、常量。重点讲了一下科学计数法的表示。
练习:把下列各数写成科学计数法表示的形式。
例:136000000000——1.36*1011——1.36E+11
—356000000000 0.00000000000000132
-0.000000000000000000001
第二课时
内容:P95-P96
过程:1、变量。构成、规定等,重点讲一下变量名的命名,如哪些不能做为变量名等。
练习:下面哪些可作变量,哪些不能,
7*B aBC x2y x-y Print K=6
其中的Print可说明是保留字,同PRINT
2、标准函数:讲解四个标准函数:ABS(X) SQR(X) INT(X) SGN(X)
练习:已知A=7 B=-3.14 C=0.92 D=18,求:
ABS(B+C) INT(A+B) INT(A)+INT(B) INT(SQR(A+D))
INT(SQR(A+B+C+D)) SGN(C-D)
讲解:INT(SQR(A+B+C+D))=INT(SQR(7-3.14+0.92+18))=INT(SQR(22.78))=4
是因为22.78在16与25之间,取整的话只能取4。
第三课时
1、 复习上一天所学,用时20分钟。
2、 讲解最后一个标准函数RND(X)。功能及说明。
3、 例:输出二个0到100之间的随机整数。
可用RND*100取0到100之间的数。
PRINT INT(RND*100), INT(RND*100)
练习:输出一个5—10之间的随机整数。
提示:0—5与5—10之间的联系。
可用下面的语句: INT(RND*5)+5 INT(RND*5+5)
练习2、 A/B的商、余数的表示。
商:INT(A/B) 余数=被除数—除数*商 A-B*INT(A/B)
第四课时
1、 表达式。 组成、算术运算符和表达式。
2、 练习:用QB语言表示下列表达式:
5×[3×(200-2)?(20+1)]+5 5×[(16-2/15)×(12?4)] ?7
3、 运算顺序的讲解。
4、 练习:
(1) 写出下列式子的QB表达式:
(X2+1)3 (A-B)(X-Y) 36?[70+(12+5/12)?3]
(2) 求下列表达式的值:
5^2 MOD 130/4\5 (ABS(-6)/4)*SQR(81)
第五课时
1、复习上一天所学,解决学生提出的问题。
2、关系运算
格式:<表达式1><关系运算符><表达式2>
值只有两种:真用“-1”表示,假用“0”表示。
举几个例子进行说明。
4、 逻辑运算的适当讲解,并加以总结
AND:全真为真,有假为假 OR:全假为假,有真为真。
练习:?下面4个关系表达式中结果为真的是:( )
A. ―A‖>―a‖ B. ―THAT‖ >―THE‖ C. 9>‖H‖
?写出下列表达式的值:
x>y AND y>z x
y and z
?当E=1,F=3,G=5,求下面表达式的值
NOT(3*E>G MOD 2*5+3) AND G\F+4G-F-E
=NOT(3>5 MOD 10+3) AND 5\3+4<3 OR 6 MOD 3>1
=NOT (3>5+3) AND 5<3 OR 0>1
=NOT 0 AND 0 OR 0
= —1 AND 0 OR 0
=0
? 9^2 MOD 25\2^2
第六课时
1、上节课的练习进行核对。
2、赋值语句(LET)的讲解。见教材P102—P104
练习:(1)、找错误,并改正。
?LET A+B=C ?LET A=1,B=3 , C=5 ?LET A,B=2,3
(2)、写出程序的运行结果。
? LET A=345
LET B=456
LET X=A+B
PRINT A,B,X,X,B,A
? LET A=5
LET B=10
LET A=A+B
LET B=B+A
PRINT A,B
LET A=A+B
LET B=B+A
PRINT A;B
END
第七课时
1、 复习。继续LET语句未讲完、有问题的地方。
2、 输出语句(PRINT)的讲解。教材P104—P105
3、 语句的格式、功能分别进行讲解,举书上的例题。
4、 练习:
写出下列程序的运行结果:
(1) LET Y=7.8
PRINT ―Y=‖;Y
(2) PRINT ―X*Y=‖;24*2
PRINT
PRINT ―*************‖
(3) PRINT A,B,C 没赋值的话均为0
(4) LET A=8
LET B=A+18
LET C=A
LET D=B
PRINT A,B
END
(5) PRINT ―ABC‖, ―1234‖, ―&&&&‖, ―XYZ‖
PRINT 1^1,2^2,3^3,4^4, 5^5
END
以上例题分开出,出1题讲一题
第八课时
1、 上节课的练习进行核对。
2、 重点讲解TAB(X)函数的应用。见教材P106—107
3、 练习:
) 如果后一个TAB(X)的值小于前一个TAB(X)的值,其输出结果会 (1
怎样,
如: PRINT TAB(3);“ABCDEFG”;TAB(40);“12345678”;TAB(25);“*****”
运行结果:
ABCDEFG 12345678
******
(2) 如果输出项之间用逗号“,”分隔,输出结果会怎样,
如:PRINT TAB(3);24,TAB(10);“ABC”,TAB(40);12/4
运行结果:
24
ABC 3
4、 课堂练习:写运行结果:
(1) PRINT
TAB(5);“****”;TAB(20);“***”;TAB(4);“******”;TAB(14);“******”
) PRINT TAB(18);“通讯录” (2
PRINT TAB(17);“______________”
PRINT “学校,班级”,“姓 名”;“性别”;“任课老师”
END
第九课时
1、 键盘输入语句(INPUT)的格式、功能说明。
2、 例:输入四科成绩求总分和平均分
INPU Y,S, W, Z
LET ZF=Y+S+W+Z
LET PJF=ZF/4
PRINT ―ZF=‖;ZF, ―PJF=‖;PJF
END
3. INPUT语句的执行过程.
4. INPUT语句的应用1.
例:为某商场设计一个购物付款结算的程序.
(1) 先设变量 HW$、DJ、SL分别表示货物的名称、单价、数量。
(2) 付款=单价*数量 即FK=DJ*SL
(3) 程序:
INPUT “货物名称、单价、数量:”;HW$,DJ,SL
LET FK=DJ*SL
PRINT HW$,DJ,SL
PRINT FK:“元”
END
(4)运行程序:
RUN
货物名称、单价、数量,苹果,8.5,2 (划线为键盘输入)
苹果 8.5 2
17元
练习:用INPUT语句设计一个程序,帮家里计算每月的用电费用。
提示:如每月用电120度,电费为0.5元/度。
写出下面程序的运行结果:
INPUT “A,B,C,D=:” A,B,C,D
LET PJ=(A+B+C+D)/4
PRINT“PINGJUN=”;PJ
END
输入12,34,56,18
第十课时
1、 上节课的练习进行讲解。
、 讲解教材P109例2。 2
3、 使用INPUT语句的几点说明,分三点说明,具体见教材。
4、 练习:
(1) 找出错误,并改正:
?INPUT A,B,C,
?INPUT S;Q;Z
?INPUT “A,B=”A,B,“C,D=”;A,B
?INPUT S=30,H=50
(2) 写出下面程序的运行结果:
? INPUT “X,Y=”;X,Y
PRINT “X=”;X,“Y=”;Y
LET X=X+Y :Y=X-Y:X=X-Y
PRINT “X=”;X,“Y=”;Y
? INPUT B,C
LET D=(B*C)/2
PRINT B,C,D
? INPUT A$, X, Y,B$
PRINT A$, B$
PRINT X,Y
(以上的数据由学生课堂上随机给出,还可互相出题。)
第十一课时
1、 上节课内容复习
2、 读数/置数语句(READ/DATA)的简短说明。
3、 READ/DATA语句的格式、功能说明、执行过程。(教材P111)
4、 练习:找出错误、并改正。
? READ A,B;C;D
DATA 2,3,5,33
? READ B$, C$, X, Y
DATA ABC, ―101‖,25,3/5
? READ A1,A2,A3,A4
DATA 2,4,6
? READ B1,B2,B3,B4
DATA 3,0.245,23,14,20
5、 写程序运行结果:
DATA 1,2
READ A,B,C
RESTORE
READ E,F,G
DATA 3,4,5,6
READ X,Y,Z
D,E,F,G,X,Y,Z PRINT A,B,C,
END
第十二课时
1、程序设计初步。出示P114的例1。分析:设六年级植树棵数为A,五年级植树棵
数为B,四年级棵数为C,一、二、三年级共植树棵数为D,全校学生总共植树的棵数为S
。
A=300 B=A*2/3 C=B-90 D=(A+B+C)/2 S=A+B+C+D
通过分析、列表达理清了解题思路,就可以着手编写程序,让计算机算出本题的结果。
程序编写如下:
LET A=300
LET B=A*2/3
LET C=B-90
LET D=(A+B+C)/2
LET S=A+B+C+D
PRINT “S=”;S
END
运行程序:
S=915
2、程序设计的一般步骤是:
(1) 分析问题,明确任务;
(2) 建立数学模型,确定解题
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
;
(3) 画出流程图;
(4) 编写程序;
(5) 上机调试程序。
3、 鸡兔同笼,已知中共有头35个,脚94只,求鸡、兔各几只,
,,, 鸡.兔同笼问题
,,,,, ,,
,,, ,,(,,,,,),,
,,, ,,(,,,,,),,
,,,,, :鸡,:;,,:兔,:;,
,,,
4、 学生练习:用INPUT和READ/DATA语句为变量赋值,分别编写程序。
第十三课时
1、流程图简介
让学生了解常用的流程图编制符号及含义。P117
2、三种基本结构。
)顺序结构 (2)选择结构 (3)循环结构 (1
对以上的三种结构进行适当的了解,用流程图的形式进行表示,争取让学生掌握。
3、练习:林中有鹤X只,有鹿Y只,已知鹤和鹿总头数为H,总脚数为F,问林中的鹤和鹿共有多少只,
提示:常识告诉我们,鹤有2只脚,鹿有4知脚。根据数学知识可以列出以下算式:
X+Y=H
2X+4Y=F
由2式—1式: 有 2Y=F—2H 则 Y=F—2×H?2
4×1—2式: 有 2X=4H—F 则 X=4×H--F?2
设H=71,F=158
请用语句LET,键盘输入语句INPUT,读数语句READ、DATA为变量赋值个分别编写程序求解。
第十四课时
1、 路选择结构(IF语句)的初步介绍。
一般格式: IF<关系表达式> THEN <语句1> [ELSE<语句2>]
注意:编程时该语句只准在一行上写完。
2、 举例:(1)将Y和X中较大的数送到Z中,用单行IF语句描述为:
IF X>Y THEN z=x ELSE z=y
(2)求A的绝对值:IF A<0 THEN A=-A
(3)判断一个数是否为整数,并打印出相应信息。
程序如下:
INPUT B
IF B=INT(B) THEN PRINT B;“shi zheng shu” ELSE PRINT B;”bu shi zheng
shu‖
END
运行结果zhi
RUN
?8.4
8.4 bu shi zheng shu
RUN
?8
8 shi zheng shu
3、练习:找错误,并改正:
(1)LET X= IF X>THEN X+1 ELSE X-1
(2)IF A>100 THEN LET A=A+A; PRINT A ELSE PRINT X^2
4、某校学生进行计算机知识竞赛,成绩在80分以上的可以获奖 ,并打印“获奖了”,小于80分的,给 予鼓励打印“再加把劲”。
第十五课时
1、 单行IF语句的复习,引入多行IF语句
2、多行IF语句的一般格式:(要求学生注意书写格式)
IF <关系表达式> THEN
<语句块1>
[ELSE
<语句块2>]
END IF
多行IF语句的含义是:计算关系表达式的值,当其值为真时,执行THEN后面的语句块1;否则(条件为假),执行ELSE后面的语句块2.若没有ELSE部分,则关系表达式的值为假时,便退出本多行IF语句。
3、举例: 输入三个整数a.b.c,要求输出三个数中大小居中的数.
分析: (1) 先将a.b两数进行比较,如果a>b,再比较b.c,如果b>c,则输出b.
否则,bb的条件不成立,既ac,输出a.
否则,比较b.c,如果b>c,则输出c,否则,输出b.
程序如下:
INPUT “输入a,b,c”;a,b,c
IF a>b THEN
IF b>c THEN
PRINT b
ELSE
IF a>c THEN PRINT c ELSE PRINT a
END IF
ELSE
IF a>c THEN
PRINT a
ELSE
IF b>c THEN PRINT c ELSE PRINT b
END IF
END IF
END
运行结果
输入 a,b,c? 35,29,30
30
学生练习:输入A,B,C三个数,输出其中最大的数。
第十六课时
1、 IF语句的复习。
2、 练习:(1)指出下列语句中的错误,并加以改正。
(1) IF X<0
THEN X=X+1
ELSE X=X-1
(2) IF Y=Y$ THEN
LET E=E^2
ELSE
LET E=E*E*E
(3)IF S=0 THEN LET X=0
ELSE
IF A<0 THEN
LET X=-1
ELSE
LET X=1
END IF
(2).写出下列程序的运行结果。
1(INPUT “X=”:X
IF X>=5 THEN Y=2*X+1 ELSE Y=2*X=1
PRINT “Y=”:Y
END
2(READ A,B
IF A>B THEN
LET MAX=A
LET MIN=B
ELSE
LET MAX=B
LET MIN=A
END IF
PRINT MAX,MIN
DATA 8,10
END
3、 某运输部门为旅客托行李,从甲站到乙站其收标准为:20公斤(包括20公斤)
以内,每公斤收托运费1。5元;如果超过20公斤,则超过部分每公斤加
0。8元,请你为部门设计一个符合以上规定的收费程序。
第十七课时
1、 嵌套IF语句的一般格式及语句的含义。
2、 举例:用IF-THEN-ELSE语句实现符号函数:SGN(X)
程序如下:
INPUT X
IF X=0 THEN
LET S=0
ELSE IF X<0 THEN
LET S=-1
ELSE
LET S=1
END IF
PRINT ―S=‖;S
END
3、 举例书上P128的例子进行进一步的说明。
两个程序的运行结果相同,从可读性方面考虑程序2更具可读性。
第十八课时
写出下列程序的运行结果。
(1)INPUT “W=”:W
IF W>20 THEN
P=20*0.13+(W-20)*0.22
ELSE
P=W*0.13
END IF
PRINT “P=”:P
END
输入:(1)12 (2)36
(2) A=3: B=A:C=4
IF A<=B THEN PRINT A, B
END IF
IF C>=A THEN PRINT C
END
运行结果:3 3
4
(3)X=3: Y=1: Z=11
IF Z>Y THEN SWAP Y, Z
IF Z>X THEN SWAP X, Z
IF Y>X THEN SWAP X,Y
PRINT X, Y, Z
END
11,3,1
(4) INPU ―A,B,C‖;A,B,C
IF B
CASE <情况表1>
<语句块1>
CASE <,情况表2>
<语句块2>
.
.
.
CASE <情况表N>
<语句块N>
CASE ELSE
<语句块N+1>
END SELECT
2、 <表达式>是数值表达式或字符串表达式。<情况表>是由一组情况构成的,情况
之间用逗号分隔。三种情况说明。
3、 五点注意。P130
4、 举例:讲解书上例题(P130)
5、编写一个计税程序。
假定计税有如下规定:
(1) 货价〈=2000元,免税。
(2) 2000元〈货价〈=5000元,按2%纳税。
(3) 货价〉5000元,5000元以内部分按2%纳税,超出部分按5%纳税。
程序如下:
REM 计税程序
INPUT “货价,”;HUO
SELECT CASE HUO
CASE IS〈=2000
LET tax=0
CASE 2000.10 TO 5000
LET tax=HUO*0.02
CASE ELSE
LET tax=5000*0.02+(HUO-5000)*0.05
END SELECT
PRINT “货价 =”;HUUO, “税=”;tax
END
程序运行结果如下:
RUN
货价,6865
货价=6865 税=193.25
第二十课时
练习:1、指出下列语句中的错误,并加以改正。
(1)SELECT CASE X=2*A-3*B
CASE 4 OR 5
PRINT X=4 OR X=5
CASE 12 TO 15
PRINT ―X=12‖TO ―X=15‖
CASE ELSE
PRINT OUT OF RSNGE
(2)SELECT CASE X
CASE >=80
PRINT PASS
CASE >=75
PRINT GOOD
CASE >=90
PRINT VERY GOOD
CASE ELSE
PRINT POOR
(3)SELECT CASE S=A*B+C*D
CASE S=-5 OR 5
PRINT A
CASE S=6 TO 6
PRINT B
CASE S=‖-6‖TO-10
PRINT C
ELSE CASE
3、 编程:用SELECT CASE 语句实现
某运输部门为旅客托行李,从甲站到乙站其收标准为:20公斤(包括20公斤)以内,
每公斤收托运费1.5元;雨果超过20公斤,则超过部分每公斤加
0.8元,请你为部门设计一个符合以上规定的收费程序。
4、作业:学期结束,给出学习优良 的条件如下:
1( 所考5门功课的成绩总分超过44450分;
2( 每门功课成绩都在88分以上;
3( 前3门功课(语、数、外 )的成绩都在95分以上,其他两门在80分以上。
用A1,A2,A3,A4,A5分别表示5门功课,请输入某学生的5门功课成绩,判
断该生是否获学习优良奖。
第二十一课时
1、 由一个实例看循环。
FOR K=1 TO 10 SETP 2
PRINT K
NEXT K
2、 计数型循环的一般格式和功能。
一般格式: FOR 循环变量=初值 TO 终值 SETP 步长值
循环体
NEXT 循环变量
各部分含义:P136
3、 执行过程。
S=0
FOR K=1 TO 10
S=S+K
NEXT K
PRINT S,K
END
4、练习:指出下面各程序段中的错误。
(1)FOR l TO 20
PRINT T
NEXT T
(2)FOR N=l TO 100
LET S=S+N
PRINT ―S=‖ ; S
END
(3)FOR C=5 TO l
PRINT C,
NEXT C
第二十二课时
、循环的次数一般说来,循环的次数由初值,终值和步长三个因素来决定: 1
循环次数=INT(终值—初值)/步长+1)
例如,单初值为1、终值为10、步长为2时,循环的次数应为INT(10—1)/2+1)
=5
次。
2、 写出下面程序的执行次数:
(1) FOR j=15 TO 100
PRINT j;
NEXT j
END
(2)FOR H=1 TO 10
LET J=J+2
PRINT J,
NEXT J
END
运行结果:3 6 9 12
3、 写运行结果:
(1) FOR I=2 TO 25 STEP 3
PRINT I+1;
NEXT I
(2) FOR j=1 TO 5
K=j*j : PRINT j , k
Next j
END
4、 试编写一个程序,计算1+3+5+„+97+99
第二十三课时
1计数型循环的应用.
设计循环结构时,第一步,要弄清循环体的内容,既哪些内容是被重复执行的;第二
步,要确定循环次数,如果能够先确定循环次数,就用记数型循环结构,否则就用后面将要
学习的结构:第三步,把循环体中的具体步骤转化为程序段。
2、例1、计算1+2+3+„+100的值。
4、 P139例2 假设DATA语句中存放了某班30名学生数学考试成绩,试编程计
算该班数学考试平均分。
5、FOR I=1 TO 4 STEP 1
PRINT I
NEXT I
PRINT
FOR j=4 TO 1 STEP -1
PRINT j;
NEXT j
END
6、试用计数型循环编写一个程序,计算1-2+3-4+5+„+99-100
提示:用一IF语句控制运算符号
第二十四课时
1、 条件型循环(WHILE-WEND语句)的简介。
2、 一般格式与执行过程讲解。P139
3、 关于条件型循环的几点说明。P140
4、指出下面程序段出错的原因。
(1) N=0
WHILE N>0
INPUT ―A=‖;A
PRINT A*A
N=N+1
WEND
(2)WHILE K>10
T=T*K
K=K-1
WEND
PRINT K
END
第二十五课时
1、 条件型循环应用举例
P140例1
注意要有程序进入与退出的条件,否则会形成的死循环。
2、 用WHILE-WEND语句实现数的累加。
CLS
SUM=0
INPUT “输入一个数X”;X
WHILE X>0
SUM=SUM+X
INPUT “输入一个数X”;X
WEND
PRINT ―SUM=‖;SUM
END
3、 试将下面的两个程序段写成条件型循环,并写出执行后的输出结果。
(1) FOR X=3 TO 7
PRINT X,
NEXT X
PRINT X
(2) FOR X=3.5 TO 6 STEP 1.5
PRINT X+0.5
NEXT
第26课时
1、 多重循环。循环结构的嵌套P142。
FOR I=1 TI 2
FOR J=1 TO 3
PRINT “I=”;I,“J=”;J
NEXT J
NEXTI
2、 举例说明:P142例1
3、 使用说明:
1( 只要是循环,就允许互相嵌套,而且其层数及行式都没有具体的限制。但基本
要求是:每个循环结构必须有一个唯一的变量名作为其控制变量。
2( 不管使用哪种形式的嵌套,其内外循环不得互相交叉。
3.循环次数的确定。
由于循环体的本身也是一个循环结构,所以循环的次数的次数是由嵌套着的循环共同决定的。
4。了要弄清循环的嵌套的层次关系,还必须弄清整个程序的层次结构。
、看懂程序,写处输出结果,然后上机加以验证。 4
FOR I=1 TO 4
FOR j=I TO 4
READ X
IF X=0 THEN RESTORE
NEXT j
PRINT X
NEXT I
END
DATA 3,2,1,0
运行结果:
第27课时
1、打印一个九九乘法表。
这个九九乘法表由1*1=1,1*2=2„„1*9=9为第一组,2*1=2,2*2=4„„2*9=18为第二组,„„,9*9=81为第九组共9组,每组9项,共9*9=81项组成。
源程序如下:
FOR A=1 TO 9
FOR B=1 TO 9
PRINT A;“*“; B; “=”; A*B
NEXT B
PRINT
NEXT A
END
2、用字符“*”打印出如右图中的长方体形。 ***********
要求自左到右逐个*号打印。源程序如下: ***********
FOR j=1 TO 12 ***********
PRINT ―*‖; ***********
NEXT j
PRINT
NEXT i
END
3、用1、2、3、4
这四个数字可以组成一个四位数,例如2143、4331等。编写程序,打印出所有可能
组成的四位数(四位数字可以相同),并统计出四位数的个数。
本题用四重循环
SUM=O
FOR A=1 TO 4
FOR B=1 TO 4
FOR C=1 TO 4
FOR D=1 TO 4
X=A*1000+B*100+C*10+D
PRINT X
SUM=SUM+1
NEXT D
NEXT C
NEXT B
NEXT A
PRINT
PRINT “SUM IS:”;SUM
END
第28课时
1、指出下面各程序段中的错误,并改正
(1)CLS
FOR i=1 TO 2
FOR j=4 TO 2
PRINT i,j
NEXT i
NEXT j(NEXT后i,j)
(2)FOR a=1 TO 2
FOR b=1 TO 3
READ x
LET s=s+x
NEXT b
PRINT ‖s=‖;s
NEXT a
END
DATA 1,2,3,4(DATA语句中数据不够)
2、指出下面程序段出错的原因。
(3)
a=1
b=5
FOR a=1 TO b
FOR b=1 TO a
PRINT a,b
NEXT b
NEXT a (B的值执行一次后改变)
(4) A=1
B=1
FOR I=B TO A STEP C
K=A+B
NEXT K
NEXT K
3、写出下列程序的运行结果
(1)FOR I=1 TO 4 STEP 1
PRINT I
NEXT I
PRINT
FOR J=4 TO 1 STEP -1
PRINT J
NEXT J
END
)I=0 (2
S=O
WHILE I<10
I=I+1
S=S+I
WEND
PRINT S
END
RUN 55
第29课时
1、
大、中、
小学
小学生如何制作手抄报课件柳垭小学关于三违自查自纠报告小学英语获奖优质说课课件小学足球课教案全集小学语文新课程标准测试题
生100人到山上植树,一共植树100棵。其中大学生每人种3棵,中学生每人
种2棵,小学生每人种1棵。编程求出大、中、小学生各有多少人,
本题可以用多种方法来做。程序一:
FOR X=1 TO 100
FOR Y=1 TO 100
FOR Z=1 TO 100
IF X+Y+Z=100 AND 3*X+2*Y+Z/2=100 THEN PRINT X,Y,Z
NEXT Z
NEXT Y
NEXT X
修改后的程序二:
FOR X=1 TO 33
FOR Y=1 TO 50
Z=100-X-Y
TF 3*X+2*Y+Z/2=100 THEN PRINT X,Y,Z
NEXT Y
NEXT X
优化后的程序三:
FOR X=1 TO 33
FOR Y=1 TO 50
Z=100-X-Y
IF 3*X+2*Y+Z/2=100 THEN PRINT X,Y,Z
NEXT Y
NEXT X
2、求1~ +2~ +3~ +„„+10~的值。
方法一:用双重循环
CTS
S=0
FOR N=1 TO 10
T=1
FOR K+! TO N
T=T*K
NEXT K
REM 现在变量T中存放的是第N项阶乘的值
S=S+T 累加求和
NEXT N
PRINT ―S=‖;S
END
方法二:只用一个循环
CLS
T=1:s=0
FOR N=I TO 10
T=T*N
S=S+T
NEXT N
PRINT S
END
显然,用第二种方法编写的程序比第一种方法要好很多。从这个例子可以看出,要充
分利用实际问题本身具有的规律性,只有找到了最优的解题步骤,才能编写出最优的程序。
学生练习:编程求下列各表达式的值:
(1) 1*2+2*3+3*4+„+19*20
(2) (1+2)+(1+2+3)+„+(1+2+„+20)
(3) (1+2)-(1+2+3)+„-(1+2+„+20)
第30课时
、换硬币。把一元钱全部兑换成以分为单位的硬币,共有多少种兑换方法, 1
设一元钱兑换成硬币时,5分、2分、1分各x、y、z、个,得到5x+2y+z
=100。因此,本例实际上是求这个不定方程有多少组正整数解的问题。程序如下:
S=0
FOR X=20 TO 0 STEP -1
K=100-5*X
FOR Y=INT(K/2) TO 0 STEP -1
S=S+1
NEXT Y
NEXT X
PRINT ―S=‖ ; S
END
2、编一个做100以内整数加法的程序。要求机算机出一道加法题,学生从键盘输入答案。如果答案不对,就显示“对不起,重做一遍~”,并重就显示原题,让学生重做。如果答案正确,机算机就再出一道新题。只要做了三道题,程序才停止运动。
经过分析后 写出的程序如下:
RANDOMIZE TIMER 重新播种随机数发生器
FOR I=1 TO 3
x=INT(RND*100)
y=INT(RND*100) 得到两个100以内的随机正数
PRINT x; “+”;y; “=”; 显示新题目
INPUT c 输入答案
WHILE x+y<>c 答案不对就循环
PRINT “对不起,重做一遍~”
PRINT x; “+”;y; “=” 仍然显示原题
INPUT c
WEND
NEXT i
PRINT “好~全做对了~” 做对了三道题就停止
END
学生练习:
1、
产生20个随机小数,编程统计其中大于0.5和小于0.5的数的出现的次数,并上机加以验证.从程序多次运行的结果来看,这两个统计数据有什么相同之处?
2、 试编写一个程序,判断从键盘输入的一个整数是否能被19整除.如果不能被19整除就要求重新输入一个数;如果能够19整除就显示出此数与19的关系.
例如:若输入38,就显示:38=2*19.
上机进行调试.
第31课时
1、[例7] 编写一个程序,使计算机能够在屏幕中间显示出下面 “*”(星号)组成的图形。
*
***
*****
*******
*********
***********
*************
***************
程序的总体结构可以考虑写成下面的形式:
FOR I=1 TO 9
1. 使用确定第I行显示的起始位置, 用定位函数TAB[41-I]
2. 在第I行内连续显示干个星号[使用内循环 从1到2*I - 1 ]
3. 以后的显示另起一行,使用空打印语句。
NEXT
请同学们自已写出完整的程序,并上机调拭运行。
如果要打印出下面的这个菱形,应怎么编写程序呢,
*
***
*****
*******
*********
***********
*********
*******
*****
***
*
请学生完成.注意以上的三点.
练习:有任意的10个数存放在数据区中,试编程求出最大数和最小数.并上要机调试.
第32课时
1、 数组的基本概念。可用书上P153的求学生的平均分的例题引入。
2、 数组是一群有序变量的集合,它们在内存中连续存放。
3、 下标变量的介绍及注意问题。
4、 数组的应用。
5、 可用如下的程序求出学生的五科平均分。
DIM S(5)
FOR I=1 TO 5
READ S(I)
I) LET T=T+S(
NEXT I
LET A=T/5
PRINT “A=”;A
DATA 98,85,96,78,69
END。
对以上程序进行说明。
定义数组的格式: DIM 数组名(最大下标值)
定义数组要注意的问题。
6、学生练习:(1)指出下列各小题中哪些写法可作为合法的数组元素。
(1)X (2)X2 (3)X(2) (4)X,2, (5)X(A+B) (6)X(I)
(7)2(X) (8)XY(i+j) (9)X(X(i) (10)2Y(A+B)
(2)判断以下程序执行后会出现什么结果。
(1) FOR i=1 TO 4 (2)DIM C(20)
i) FOR i=10 TO 30 DIM T(
LET T(i)=1 LET C(I)=1
PRINT T(I) PRINT C(I)
NEXT I NEXT I
END END
第33课时
1、 一维数组应用举例一:
产生10个10—30之间的随机整数,打印结果,并找出其中最大的一个。
分析:在程序中,我们可以利用数组来存放10个随机数。产生随机数要用到RND函数。
程序如下:
DIM A(10)
FOR i=1 TO 10
LET A( i )=INT(RND*21+10)
PRINT A( i );
NEXT i
PRINT
LET M=A( i )
FOR i=2 TO 10
IF A( i ),M THEN M=A( i )
NEXT i
PRINT ―MAX=‖;M
END
程序运行如下:
24 21 22 16 16 10 25 27 24
MAX=27
2、读入学生成绩,统计各分数段学生的人数,要求统计得100的有几个学生,得90—99分之间的有几个学生,得80—89分之间的有几个学生,依次类推。用-1作为输入结束标志。
分析:用数组S存放各类得分的人数。S(O)
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
0—9分的学生数,S(1)记录10—19分的学生数,S(2)记录20—29分的学生数,„„,S(10)记录100分的学生数。
输入一个学生成绩后,除10取整,可知该学生成绩应归入哪个分数段。假设除10取整后的值是R,则统计R分数段的学生人数,只需执行累加操作S( R
)=S( R )+1.
程序如下:
DIM S( 10 )
FOR i=0 TO 10
LET S( i )=0
NEXT i
READ Q
WHILE Q,,-1
LET R=INT( Q/10 )
LET S( R )=S( R )+1
READ Q
WEND
FOR i=0 TO 10
IF i,10 THEN
PRINT 10*i;“——”;i*10+9,S( i )
ELSE
PRINT “100”,S( i )
END IF
NEXT i
DATA 87,95,64,75,80,90,86,62,55,36
DATA 51,46,88,99,100,25,68,79,70,12,96,-1
END
程序运行如下:
0——9 0
10——19 1
20——29 1
30——39 1
40——49 1
50——59 2
60——69 3
70——79 3
80——89 4
90——99 4
100 1
2、学生练习:某数组A中有40个数组元素统计该数组中大于100的数组元素的个
数。
第34课时
内容:排序算法
【例3】有一组数;44,45,12,42,94,18,6,67
请你按从小到达的顺序排列这组数。
对数组进行排序的方法有很多种,这里介绍二种方法。
选择排序
分析:先将这些数存入A(1),(8)中,然后进行7次选择操作:
第1次,再A(1),(8)中选出数值最小的元素A(K),如果K?1,则交换A
(和A(K)的值;
第2次,在A(1),A(8)中选出值最小的元素A(k),如果k?2,则交换A(2)和A(K)
的值
„(一共进行7次排序)
源程序如下
n=8
FOR I=1 TO n
READ A(i)
NEXT I
FOR I=1 TO N-1
K=I
FOR j=I+1 TO n
IF A(j)”DOOR”
(2) ―man‖<‖MEN‖
(3) ―WHAT‖<‖WHERE‖
(4) ―bad‖>=‖12%‖
(5) ―WHOSE‖<‖HO‖
(6) ―IT S‖>‖ITS‖
(7) ―BALL‖>‖123456‖
第41课时
1、字符串数组
定义格式: DIM 字符串数组名(最大下标值)
字符串数组名的最后一个字符必须是$。
2、字符串数组的使用。
已知英文表示的一批国家名,要求按字母顺序将这些国家名打印出来。
LET N=10
DIM NAME $(N)
FOR K=1 TO N
READ NAME $ (K)
NEXT K
FOR J=1 TO N
LET K=J
FOR I=J+1 TO N
IF NAME$(K)>NAME$(I) THENE K=I
NEXT I
IF J<>K THEN
LET T$=NAME$(J)
LET NAME$(J)=NAME$(K)
LET NAME$(K)=T$
ENDIF
PRINT NAME$(J),
NEXT J
DATA ―CHINA‖,‖CANADA‖,‖JAPAN‖,‖GER‖,‖TANCE‖
DATA ―ENGLAND‖,‖FRANCE‖,‖AMERICA‖,‖INDIA‖
END
5、 学生练习
编一程序,将下列英文单词按字母顺序排列。
PEN,MEN,BOOK,CLOCK,AIR,COCK,PEOPLE,TEA,ARMY,BOSS
第42课时
1、测串长: LEN(X$) 如: LEN(“BOOK”)的值是4
2、数值转换成字符串 :STR$(X) 如:STR$(123)的值是“123”
3、字符串转换成数值:VAL(X$)
4、取子字符串: MID$(X$,M,N)
5、举例:取源字符串中长度为X的所有子串,X从键盘输入。
程序如下:
INPUT A$
INPUT ―X=‖;X
LET L=LEN(A$)
FOR I=1 TO L+1-X
PRINT MID$(A$,I,X)
NEXT I
END
第43课时
1、巧破奇案
三位数学系的大学生走在马路上,发现一个汽车司机违犯交通规则出事后逃走了。他们没记下汽车的号码,不过每个人都注意到这是个四位数。甲记得这个号码的前两位数字相同,乙记得这个号码的后两个数字相同,丙记得整个四位数恰好是一个完全平方数。请你根
据这些调件编程确定汽车的号码。
程序如下:
FOR I=32 TO 99
LET N=I*I
LET A$=STR$(N)
IF (MID$,1,1)=MID$(A$,2,1) AND (MID$(A$,3,1))=MID$(A$,4,1)) THEN
PRINT N
NEXT I
END
?RUN 7744
2、 请你编程统计一个英文句子中单词的平均长度。
3、 任意输入两个字符串A$和B$,试编程从A$中删除在B$中出现过的字符。
第44课时
1、 子程序的介绍
2、 子程序的定义:
格式: SUB 子程序名(参数1,参数2,„„)
语句1
语句2
……
END SUB
3、 有参子程序与无参子程序的比较。
4、 举例:
编写求N的阶乘的子程序,并将结果放于S中。
SUB JIECHENG(N,S)
LET S=1
FOR j=1 TO N
LET S=S*j
NEXT j
END SUB
5、 子程序的调用方法。
CALL 子程序名(参数1,参数2„„)
例如:要求5的阶乘,可以调用例1的求阶乘的子程序,其主程序为:
CALL JIECHENG(5,N)
PRINT S
END
第45课时
1、学生练习:比较下面的程序,写出运行结果。
(1) Sub h(a) (2)let x=5 (3)let x=5
let x=x+x let n=2 let n=2
let y=10*a call h(n,x,y) call
h(n,x,y)
end sub print ―x=‖;x print ―x=‖;x
print ―y=‖;y print ―y=‖;y
let x=5 end end
let n=2
call h(n) sub h(a) sub h(a,x,y)
print ―x=‖;x let x=x+x let x=x+x
print ―y=‖;y let y=10*a y=10*a
end end sub end sub
3、 举例
求M=A~+B~+C~。A B C的值由键盘输入。
程序如下:
INPUT “INPUT A,B,C”;A,B,C
CALL JIECHENG(A,T)
LET M=M+T
CALL JIECHENG(B,T)
LET M=M+T
CALL JIECHENG(C,T)
LET M=M+T
PRINT “M=”;M
END
SUB JIECHENG(N,S)
LET S=1
FOR j=1 TO N
LET S=S*j
NEXT j
END SUB
程序运行如下:
INPUT A,B,C ,2,3,4
M= 32
第46课时
1、 举例:
编一程序,将十进制整数A,B,C转化为二进制整数。
源程序如下:
INPUT A,B,C
CALL SJZZEJZ(A)
CALL SJZZEJZ (B)
CALL SJZZEJZ (C)
END
SUB SJZZEJZ(A)
LET n=a
LET i=0
LET s=1
FOR k=1 TO n STEP
IF s<=n AND s*2> n THEN EXIT F=OR
LET i=i+1
LET s=s*2
NEXT k
DIM m(i+1)
FOR j=1 TO i+1
IF INT(n/2)=n/2 THEN m(j)=0 ELSE m(j)=1
LET n=INT(n/2)
NEXT j
PRINT a; ―=‖;
FOR j=i+1 TO 1 STEP -1
PRINT STR$(m(j));
NEXT j
PRINT
END SUB
程序运结果:
,10,15,128
10=1010
15=1111
128=10000000
+1
2、 学生练习:
(1) 编写一个子程序,求1—50之间能被3整除或能被5整除的数,再用主
程序调用它。
(2) 编写一个子程序,打印下面的图形。
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
第47课时
1、 对所学知识进行整体的回顾。
2、 综合举例1
例1:已知一个正整数的个数是7,将7移到该数的首位,其他数字顺序不变,则所
得到的新数恰好是原数的7倍。编程找出满足上述要求的最小的自然数。
程序如下:
X=7
DIM=A(100)
FOR i=I TO 100
A(I)=INT(X/7)
IF (A(i)<>7 OR (INT(X/7)<>7) THEN
X=(X-INT(X/7)*7)*10+A(i)
ELSE
FOR j=1 TO I
PRINT A(j);
NEXT j
END IF
EXIT FOR
NEXT I
END
3、 学生上机进行调试。
第48课时
1、例2:如果一个数从左边和从右边读都是同一个数,我们就称它为回文数。如686便是一个回文数。编程求出所有既是回文数又是素数的三位自然数。
编程如下:
FOR I=I TO 4
READ A
FOR B=0 TO 9
X=A*100+B*10+A
Y=1
FOR J=2 TO INT(SOR(X))
IF X/J=INT(X/J) THEN Y=0
NEXT J
IF Y=1 THEN PRINT X,
NEXT B
NEXTI
DATA 1,3,7,9
END
学生练习:
1一个四位数是一个完全平方数,它减去一个每位数字都想同的四位数(如1111)后, 是一个四位完全平方数。打印出所有这样的四位数。
2、将1,2,3,4,5,6,7,8,9这九个数字只能用一次,也就是每组三个数既不许重复,也不许与另外各组的三个数字重复,每组中的三个数均为完全平方数。编程找出所有分法。
第49课时
1、 以下算式:
A B C D
-- C D C
A B C
其中:ABCD均为一位非负整数,要求编程找出A、B、C、D的值。
程序如下:
FOR A=1 TO 9
FOR B=1 TO 9
FOR C=1 TO 9
FOR D=1 TO 9
I=A*1000+B*100+C*10+D
J=C*100+D*10+C
K=A*100+B*10+C
IF I-J=K THEN
PRINT ―A=‖;A, ―B=‖;B, ―C=‖;C, ―D=‖;D
ENDIF
NEXT D
NEXT C
NEXT B
NEXT A
END
运行结果如下:
A=1 B=0 C=9 D=8
学生练习:
下面的乘法竖式可实现一个简单的乘法(乘法为一位数)运算,竖式中有星号“?”
的位置上代表一个一位素数。
? ? ? ?
× ?
? ? ? ? ?
编程找出所有的这样的竖式乘法并打印。
第50课时
1、 递推算法
菲波那契数列问题。有一数列:1,2,3,5,8,„求前7项。
程序如下:
X=1
Y=1
PRINT X;Y;
FOR P=3 TO 7
LET X=X+Y
LET Y=Y+X
PRINT X;Y;
NEXT P
END
2、 已知某球从100M的高度自由弹起,每次弹起的高度都是上次的一半。求此球
第10次落地后反弹起的高度和球所经过的路程总和。
程序如下:
LET H=100
LET S=0
FOR I=1 TO 10
LET R=H/2
LET S=S+H+R
LET H=R
NEXT I
PRINT “H=”;H, “S=”;S
END
3、学生练习:能输出菲波那契数列的前23个数吗,并上机调试。
第51课时
1、枚举算法
【例3】编程寻找100~999之间的所有“水仙花数”,并统计个数。“水仙花数”是一
个三位数,其中各位数字的立方和就等于该数本身。
例如:153就是一个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3
程序如下:
LET n=0
FOR x=100 TO 999
LET a=INT(x/100)
LET b=INT(x/10)-a*10
LET c=x-INT(x/10)*10
IF x=a*a*a+b*b*b+c*c*c THEN
n=n+1
PRINT ―n=‖;n,x
END IF
NEXT x
学生练习:
还可采用另外一种方法,设三个变量A,B,C分别代表百、十、个位,则A的取值
范围是1—9,B,C的取值范围是0—9之间,运用多重循环进行枚举,从而得出答案。并
上面调试。
LET N=0
FOR A=1 TO 9
FOR B=0 TO 9
FOR C=0 TO 9
X=100*A+10*B+C
Y=A*A*A+B*B*B+C*C*C
IF X=Y THEN
N=N+1
PRINT “N=”;N,X
ENDIF
NEXT C
NEXT B
NEXT A
END
第52课时
【例4】我国古代数学家张丘建在《算经》中提出了“百钱买百鸡”的问题。即“鸡翁一,值钱五;鸡母一,值钱三;鸡雏一,值钱一。今百钱买百鸡,问鸡翁.鸡母.鸡雏各几何,”。其意可理解为:“每只公鸡值5元,每只母鸡值3元,每三只小鸡值1元。现用一百元钱买一百只鸡,问公鸡.母鸡.小鸡各为多少只,”。
程序如下:
FOR a=0 TO 20
FOR b=0 TO 33
FOR c=0 TO 100
IF a+b+c=100 AND 5*a+3*b+c/3=100 THEN PRINT a, b, c
NEXT c
NEXT b
NEXT a
END
学生练习:搬砖:36块砖,36人搬,男搬4,女搬3,两个小儿抬一块。如果一次搬完,问男、女、小儿各多少,试编程计算。
第53课时
1、排序法介绍。
【例1】 用直接插入排序法将数值序列9,8,3,5,6,2,7,1,4按升序排序。
按照直接插入排序思想,具体排序过程如下:
初始序列:9,8,3,5,6,2,7,1,4
第一次插入:8,9,2,5,6,2,7,1,4
第二次插入:3,8,9,5,6,2,7,1,4
第三次插入:3,5,8,9,6,2,7,1,4
。。。。。。
第八次插入:1,2,3,4,5,6,7,8,9
在程序中,我们可以先将待排序序列数组A,使用二重循环,每一次循环完成一个记录的插入操作;内循环确定某一记录的插入位置,然后进行插入,其主要操作由比较和移动位置完成。
程序如下:
DIM A(9)
FOR I=1 TO 9
READ A(I)
NEXT I
FOR I=2 TO 9
A(0)=A(I)
J=I-1
WHILE A(0)B THEN
IF A>C THEN PRINT A ELSE PRINT C
ELSE
IF BB THEN MAX=A ELSE MAX=B
IF MAX>C THEN PRINT MAX ELSE PRINT C
END
INPUT ―A,B,C=‖;A,B,C
IF B>A THEN A=B
IF A>C THEN PRINT A ELSE PRINT C
END
比较三种方法,清楚程序的优化。
、看看你有多少种方法可以解决“百钱买百鸡”问题。 3
方法2:
FOR A=0 TO 20
FOR B=0 TO 33
C=100-A-B
IF 5*A+3*B+C/3=100 THEN PRINT A,B,C
NEXT B
NEXT A
END
方法3:
FOR A=0 TO 14
FOR B=0 TO 25
C=100-A-B
IF 5*A+3*B+C/3=100 THEN PRINT A,B,C
NEXT B
NEXT A
学生练习:已知一元一次方程5X2 +BX+2=0中系数B是不超过10的整数,并且肯
定有两根,试编程找出所有的解。
第56课时
编程求
方法1:
LET SUM=0
FOR i=1 TO 20
FOR j=1 TO 3
LET SUM=SUM+(I+1)*(I+1)*(j+2)
NEXT j
NEXT i
PRINT ―SUM=‖;SUM
END
方法2:
LET SUM=0
FOR j=1 TO 3
FOR I=1 TO 20
LET SUM=SUM+(I+1)*(I+1)*(j+2)
NEXT I
NEXT j
PRINT ―SUM=‖;SUM
END
方法3:
LET SUM=0
FOR j=1 TO 3
K=(j+2)
FOR I=1 TO 20
LET SUM=SUM+(I+1)*(I+1)*K
NEXT I
NEXT j
PRINT ―SUM=‖;SUM
END
方法4:
LET SUM=0
FOR j=1 TO 3
K=(j+2)
FOR I=1 TO 20
LET M=I+1
LET SUM=SUM+M*M*K
NEXT I
NEXT j
PRINT ―SUM=‖;SUM
END
文章录入:admin 责任编辑:admin
上一篇文章: 没有了
下一篇文章: 数据结构和算法培训
【发表评论】【告诉好友】【打印此文】【关闭窗口】
最新热点 最新推荐 相关文章
没有热门文章
没有推荐文章
pascal培训
数据结构和算法培训
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关~)
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |
站长:lixluelai