算法人教版老师版2.docx
- 文档编号:26412856
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:55
- 大小:329.83KB
算法人教版老师版2.docx
《算法人教版老师版2.docx》由会员分享,可在线阅读,更多相关《算法人教版老师版2.docx(55页珍藏版)》请在冰豆网上搜索。
算法人教版老师版2
第7课时 基本算法语句(循环语句)
【教法建议】
1.循环语句的教学也应通过实例,结合循环结构的程序框图进行。
2.教材中介绍了DO语句和WHILE语句两种循环语句,前者是在循环次数已知时使用
的循环,后者是前测试的当型循环.教学过程中要通过程序框图将两者区别讲清。
具体处理时,要通过实例的对比加以说明。
【问题情境】
用算法求3+6+9+……+99时,可以按逐个相加的方式进行,但这样的算法程序太长,操作不方便。
按怎样的算法结构可以简单算法过程呢?
如何表示这种算法程序?
解 借助循环语句。
I=3
SUM=0
WHILE I<100
SUM=SUM+I
I=I+3
WEND
PRINT SUM
END
【范例解读】
例1.将5名学生的一门功课的成绩依次输入并计算输出平均成绩。
解 i=1
SUM=0
DO
INPUT “请输入成绩:
”;ai
SUM=SUM+ai
i=i+1
LOOPUNTILi>5
A=SUM/5
PRINTA
END
例2.1990年我国人口为11亿。
如果每年的人口增长率为1.5%,多少年后人口达到或超过15亿?
设计一个算法解决上面的问题。
画出程序框图,写出算法程序。
解 根据题意,n年后人口为11(1+1.5%)n,现在就是找使11(1+1.5%)n>15的最小正整数n的值。
为此可考虑用循环语句,从n=1开始检验。
此算法的程序框图是
此算法程序为
M=11
N=1
WHILEM<15
M=M(1+0.015)^n
n=n+1
WEND
PRINTn
END
【归纳点拔】
1.对含有循环结构的算法,在表示这个算法程序时用循环语句;
2.本书介绍了两种类型的循环语句:
DO语句和WHILE语句,这两种循环语句分别对应于直到型循环结构和当型循环结构的算法结构,即DO语句在执行过程中先操作,后判断,WHILE语句在执行过程中先判断后操作
3.循环语句也可以嵌套,嵌套的形式类似于条件语句。
如UNTIL语句的嵌套可表示为
I=1
DO
A
J=1
DO
B
J=J+1
LOOPUNTILJ>m
I=I+1
LOOPUNTILI>n
END
其中A和B是两个循环操作的步骤。
【测试反馈】
1.下列程序运行次数是A、B、C、D中的哪一种?
………………………………(D)
I=7
DO
PRINT I
I=I+5
LOOPUNTILI>90
END
A 14 B 15 C 16 D 17
提示:
I从7开始,每操作一次后加5,接着再操作一次,直至I>90为止,而7+5×17>90,故操作了17次。
2.下面的程序运行后输出的结果是………………………………………………(C)
I=1
WHILE I<8
I=I+2
S=2*I+3
WEND
PRINTS
END
A17 B 19 C 21 D 23
提示:
对S来说,只有最后一次操作是有效的,而根据程序,I最后一次操作时的先取7,加2后取9,故S=2×9+3=21,应选C。
3.要使以下UNTIL循环执行20次,循环变量的初值应当是(初始值是14)
K=
DO
K=K-1
LOOPUNTILK<-5
END
提示:
根据程序知,每循环操作一次,K值减小1,而最后一次操作时K的值为-5,注意到先操作后判断的特点,要循环操作20次,初始的K值应为14。
4.下列程序的功能为输出如下的图形,请将程序补充完整
********
********
********
********
I=1
DO
PRINT TAB(10+I)
J=1
DO
PRINT “*”;
J=J+1
LOOPUNTILJ> (8)
I=I+1
LOOPUNTILI>4
END
(说明:
其中的“TAB(n)”的功能是行前空n个字符)
提示:
每行打印8个*,故应填8。
5.已知函数f(x)=
实数a1=f
(1),a2=f(a1),an+1=f(an)。
试写出用循环语句表示的求a8的算法,画出程序框图,并写出算法程序。
解程序框图:
程序
A=1
n=1
WHILE n<=8
A=A/(1+A)
n=n+1
WEND
PRINTA
END
6.将1开始的奇数按顺序累加,直到其和等于或大于100为止。
要求输出表示这些奇数相加并得到运算结果的算式。
解程序框图
此算法程序为:
i=1
PRINTi
n=1
sum=0
WHILEsum<100
Sum=sum+i
i=i+2
n=n+1
PRINT“+”;i
WEND
PRINT“=”;sum
PRINTsun,n
END
7.用循环语句设计一个算法,在有限个实数a1,a2,……an中找到最大的一个数。
解 i=1
S=a1
DO
i=i+1
INPUT ai
IF ai>STHEN
S=ai
END IF
LOOP UNTIL i>n
PRINT S
END
8.有一个三位数,当把百位数作十位数,十位数作个位数,而个位数作百位数时,则得到一个新的三位数。
原来的三位数是新三位数的2倍还多3。
试编制适当的程序找出符合要求的三位数。
解 算法分析:
一个三位数,百位数在19之间变化,十位数、个位数可在09之间变化,但由于个位数要变换到新三位数中的百位数上去,故只能在19之间变化。
要求出这些三位数,可用“穷举法”。
采用三重循环,由外、中、内三层循环分别控制百位、十位和个位的变化。
程序如下:
I=1
DO
J=0
DO
K=1
DO
M=I*100+J*10+K
N=K*100+I*10+J
IF M=2*N+3 THEN
PRINT M
K=K+1
LOOP UNTIL K>9
J=J+1
LOOP UNTIL J>9
I=I+1
LOOP UNTIL I>9
END
第8课时 习题课
【双基演练】
1.下面四个语句中不正确的打印语句是 …………………………………………(D)
A PRINT A=B+C B PRINT “A=”;B+C
C PRINT “A=B+C” D PRINT A=;B+C
提示:
A=与B+C之间不是字符与数值的连接,不应用“;”。
2.下面的程序运行的结果是………………………………………………………(C)
N=0
I=0
WHILE I<30
I=(I+1)*(I+1)
N=N+1
WEND
PRINT N
END
A 0 B 3 C 4 D 29
提示:
将初始值I=0代入,求得新I=1,N变成1,这是第1次循环;1<30,符合循环条件,第2次循环时,I变为4,N取值为2;4<30,可进行第3次循环,I新值为25,N取3;照此下去,可再循环一次,N取值为4。
说明:
初值与终都相同,循环过程一样时,DO语句与WHILE语句相比循环次数多1。
3.完善下列程序
INPUT “X=”;X
IF X>=0THEN
Y=6
ELSE
Y=5
(ENDIF)
PRINTY
END
提示:
条件语句的终止需要说明。
4.按下面的程序运行后输出的S的值是 。
(120)
I=1
DO
S=0
K=1
J=1
DO
J=J*K
K=K+1
LOOPUNTILK>I
S=S+J
I=I+1
LOOPUNTILI>5
PRINTS
END
提示:
此程序分内、外两层两个循环,由于外循环每一次都使J=1,S=0,故只要考虑最后一次循环,即I=5时,分别计算了J=1×2×3×4×5=120,故S=0+J=120。
【范例解读】
1.输入三角形的三边长,判断能否构成一个三角形。
试给出表示这个算法的程序。
解 程序框图
程序:
INPUT a,b,c
IFa+b<=cTHEN
PRINT“不能构成三角形”
ELSE
IFb+c<=aTHEN
PRINT“不能构成三角形”
ELSE
IF a+c<=bTHEN
PRINT“不能构成三角形”
ELSE
PRINT “能构成三角形”
END IF
END IF
END IF
END
2.用While语句描述求使1+2+3+……+n>2004成立的最小正整数n的算法过程。
解 程序框图
程序:
n=1
sum=0
WHILEsum<=2004
n=n+1
sum=sum+n
WEND
PRINTn
END
3.读入50个自然数,统计出其中奇数的个数。
表示解决这个问题的算法程序。
解程序框图:
程序:
k=0
i=1
DO
INPUTai
IFaiMOD2≠0THEN
k=k+1
ENDIF
i=i+1
LOOPUNTILi>50
PRINTk
END
【测试反馈】
1.下列程序的运行结果是……………………………………………………(C)
A=5
B=4
IF B>=A THEN
B=A+B
ELSE
B=A-B
PRINT B
END
A 9 B 4 C 1 D 0
提示:
条件不成立,执行ELSE分支,B被赋值为A-B=1,选C。
2.下面的程序运行时输出的结果是…………………………………………………(D)
I=1
S=0
WhileI<5
I=I+1
S=S+I*I
Wend
PrintS
End
A5B16C29D54
提示:
第一次循环时,I被赋于2,S被赋于4;第二次循环时,I被赋于3,S被赋于4+32=13;第三次循环时,I被赋于4,S被赋于13+42=29;第四次循环时,I被赋于5,S被赋于29+52=54。
由于此时I=5,故循环终止,输出S为54。
3.下列程序运行后输出的结果是 。
(6)
A=1
Y=1
DO
Y=Y+1
A=A+1
LOOPUNTILA>5
PRINT Y
END
提示:
DO语句是先执行后判断。
每一次循环时Y与A均增加1,直到A>5时为止,于是,共循环5次,Y输出结果为6。
4.下列程序的运行结果是 。
(-1+3i -1-i)
A=1
B=2
C=10
D=B*B-4*A*C
IF D>=0THEN
X1=(-B+SQR(D))/(2*A)
X2=(-B-SQR(D))/(2*A)
PRINT“X1=”;X1,“X2=”;X2
ELSE
PRINT “X1=”;-B/(2*A);“+”;SQR(-D)/(2*A);“i”,
PRINT “X2=”;-B/(2*A);“-”;SQR(-D)/(2*A);“i”
END IF
END
提示:
这个程序是求方程x2+2x+10=0的根,由于判别式小于0,此方程无实数根,这里输出的是这个方程的虚数根(感兴趣的同学以后可以选修“复数”的有关内容)。
注意:
其中SQR(X)为取X的平方根。
5.按下列程序运行后的结果是 。
(4)
A=0
XY=10
IFXY>100THEN
A=A+1
ELSE
IFXY>50THEN
A=A+2
ELSE
A=A+4
ENDIF
ENDIF
PRINTA
END
提示:
由于不符合循环的条件,应执行ELSE分支,而此分支中的条件也不满足,又应执行它的ELSE分支,故A被赋值为4。
6.求出所有能被7整除的两位数。
写出这个算法程序 。
解I=10
DO
IFIMOD7=0THEN
PRINTI
ENDIF
I=I+1
LOOPUNTILI>=100
END
7.火车站对乘客退票要收取一定的费用,收费办法是:
按票价每10元(不足10元按10元计算)核收2元,票价在2元以下的不退。
试分步写出将票价为x元的车票退掉后,返还的金额y元的算法,画出程序框图,并写出这个算法程序(可用取整函数[x]表示,不超过x的最大整数在算法程序中可用ENT(x)表示)。
解程序框图:
程序:
INPUT x
IF X<=2 THEN
y=0
ELSE
IFxMOD10=0THEN
y=x-2ENT(x/10)
ELSE
y=x-2(ENT(x/10)+1)
ENDIF
ENDIF
PRINTy
END
第9课时 算法案例(辗转相除法与更相减损)
【教法建议】
1.教学中重点在算法本身,对其理论依据可作为课后活动的材料。
2.适当介绍本案例的背景,特别是对更相减损法必须加以介绍,体现教材
的文化价值。
3.教学重心应放在算法过程的设计上,引导学生画出程序框图,并根据算法的结构特点选择恰当的算法语句,对辗转相除法进行描述。
4.在提出问题时,也可以先让学生独立设计求两个正整数的最大公约数的算法(完全可以从较小数开始,逐次减1地对正整数进行检验)。
5.通过实例让学生了解到更相减损与辗转相除法各有优点,如对于求不止两个数的最大公约数,我国的更相减损法就更显出其优越性.例如,求623,1424,801,1513四个数的最大公约数,可以不拘次序地挑选最方便的,从较大数中减去较小数,求其等数即可:
(623,1424,801,1513)
=(623,1424801,801623,15131424)
=(623,623,178,89)
=(623896,623896,17889,89)
=(89,89,89,89)
=89.
【问题情境】
1.小李问老师怎样求两个正整数的最大公约数,老师画了一个程序框图(如下):
“你按这个框图进行吧”。
(1)用12和15两个数试一下;
(2)用198与72两个数试一下
(3)你能由此发现一种求两个正整数的最大公约数的方法吗?
解
(1)15-12=3,
12-3=9
9-3=6
6-3=3
3是12和15的最大公约数。
(2)198-72=126,
126-72=54,
72-54=18,
54-18=36,
36-18=18
18是198和72的最大公约数。
(3)这就是教材中所介绍的求两个正整数的最大公约数的“更相减损术”。
【范例解读】
例1.分别用辗转相除法、更相减损法求204与85的最大公约数。
解 方法1(辗转相除法)
第一步 20485=2…………34;
第二步 8534=2…………17;
第三步 3417=2…………0
17是204与85的最大公约数。
方法2(更相减损法):
第一步 204-85=119;
第二步 119-85=34;
第三步 85-34=51;
第四步 51-34=17;
第五步 34-17=17。
17是204与85的最大公约数。
例2.根据辗转相除法的思想,设计求两个正整数a,b(a>b)的最大公约数的算法过程,并画出程序框图,写出算法程序。
解
程序
INPUT a,b
DO
r=aMODb
a=b
b=r
LOOPUNTILr=0
PRINTa
END
【归纳点拔】
1.运用辗转相除法找出两个正整数a,b的最大公约数的步骤是
S1 输入两个正整数a,b(a>b);
S2 r←ab的余数;
S3 如果r不等于零,那么a←b,b←r,转S2
S4 输出最大公约数a。
【测试反馈】
1.396和480的最大公约数是……………………………………………………(C)
A 4 B 6 C 12 D 24
2.如果a,b是整数,且a>b>0,r=amodb,则a与b的最大公约数是………(D)
A rB b C b-rD b与r的最大公约数
3.已知a=333,b=24,则使得a=bq+r,(q,r均为自然数,且0≤r<b)成立的q和r的值分别为 。
(q=13,r=21)
4.用辗转相除法与更相减损法求333与24的最大公约数时的循环次数分别为 。
提示:
辗转相除法需要3次循环,更相减损法需要21次循环。
5.设计一个算法,计算两个正整数a,b的最小公倍数。
解 算法设计思想:
对正整数逐一进行检验。
可用程序框图表示
6.根据更相减损法的思想,设计求两个正整数a,b的最大公约数的算法过程,并画出程序框图。
解 不妨设a≥b.
7.设计求出前100个正整数中的所有素数的一个算法,并用程序框图表示。
解 算法设计思想:
因为1和100都不是素数,故可从2开始,对299这98个自然数逐一进行检验。
在对某个正整数k进行检验时,可对从2到k-1逐一检验其是否为的约数。
程序框图
8.编程输出十位数字与个位数字的和能被7整除,百位数字与十位数字的和能被3整除的所有3位数。
解 程序:
I=1
Do
J=0
DO
K=0
DO
IF(J+K)MOD7=0,(I+J)MOD3=0THEN
PRINTI*100+J*10+K
ENDIF
K=K+1
LOOPUNTILK>9
J=J+1
LOOPUNTILJ>9
I=I+1
LOOPUNTILI>9
END
第10课时 算法案例(秦九韶法)
【教法建议】
1.先通过具体实例介绍并说明,计算机中实施乘法运算比实施加减运算复杂,因此,“好”算法的一个标准是“尽量减少使用乘法运算次数”。
2.通过实例(求一元多项式的值),让学生自主设计算法,以使用乘法次数最少为“好”的标准。
最好在学生探索的基础上发现“秦九韶算法”。
3.在运用秦九韶算法求多项式的值时,可采取从特殊到一般方式,既使学生能够具体问题具体分析,又可降低学习难度,并且特殊情形的算法设计以一般情况下问题的处理有一定的启发。
4.算法程序的设计根据学生状况安排,不一定介绍。
程序框图必须建立。
【问题情境】
设计算法计算下列各式的值,使只使用加法、乘法进行计算的过程中使用乘法的次数最少
(1)x2+2x+3;
(2)x4+x3+x2+x+1。
解
(1)x2+2x+3=x(x+2)+3,按此式的运算步骤计算时,只要使用1次乘法运算。
(2)x4+x3+x2+x+1=x(x(x(x+1)+1)+1)+1,按此式的运算步骤计算时,只要使用3次乘法运算。
【范例解读】
例1设计求x=2时,x8+x7+…+x2+x+1的值的算法,并给出描述这个算法的程序。
解 根据秦九韶算法,可以运用循环语句描述算法过程。
x=2
S=1
I=1
DO
S=xS+1
I=I+1
LOOPUNTILI>8
PRINTS
END
例2用秦九韶算法设计求多项式
f(x)=x3+2x2-3x+8
的值的算法,画出程序框图。
解:
f(x)=x(x(x+2)-3)+8
设a1=2,a2=-3,a3=8,则求f(x)值的程序框图为
【归纳点拔】
1.根据教材P28中对秦九韶算法求多项式的值的方法,可得其算法设计思想:
构造递推关系式,并重复运用这种一次的递推关系式进行操作,故可用循环语句表示这个算法。
2.注意:
在操作过程中,递推关系式中的系数一般是变化的,故在循环体中应包含不断输入系数的操作过程。
【测试反馈】
1.计算多项式x2-2x+9的值时,最少需要进行乘法运算的次数是 ………………(A)
A 1 B 2 C 3 D 4
提示:
x2-2x+9=x(x-2)+9.
2.当x=5时,求(x2+x+1)(x2-x+1)的值,如果以使用乘法次数少为好的算法的标准,那么,
对于下列算法
(1)分别直接计算x2+x+1和x2-x+1的值,再求所得结果的积
(2)将原式化为x4+x2+1,再分别求出x4,x2的值,最后求它们与1的代数和
(3)分别对x2+x+1和x2-x+1用秦九韶算法求出它们的值,再求所得结果的积
(4)对化简的结果x4+x2+1用秦九韶算法
最好的算法是…………………………………………………………………………(C)
A
(1)(3) B
(2)(3) C
(1)(3)(4) D (3)(4)
提示:
用秦九韶算法计算乘法次数。
3.下面的程序是计算多项式f(x)=在x=-3时的值。
(f(x)=x3+x2+2x+3)
i=1
F=1
DO
F=F*(-3)+i
i=i+1
LOOPUNTILi>3
PRINT “F=”;F
END
提示:
第一次循环:
F=1×(-3)+1;第二次循环:
F=[(-3)+1](-3)+2=(-3)2+(-3)+2;第三次循环:
F=(-3)3+(-3)2+2(-3)+3。
4.补全下面的程序,以计算当x=2时,多项式f(x)=x3+x2+x+1的值。
i=1
S=1
DO
S= (答案:
(2S+1))
i=i+1
LOOPUNTILi>3
PRINT S
END
提示:
f(x)=x(x(x+1)+1)+1,x=2时,f
(2)=2(2(2+1)+1)+1。
5.用程序框图表示用秦九韶算法求x=3时,2x3-x2+x+5的值的算法过程。
解 f(x)=2x3-x2+x+5=2(x(x(x-
)+
)+
),
设a1=-
a2=
a3=
.
程序框图为
6.将第4题中的伪代码改写成用“WHILE”语句表示的形式。
解 I=1
S=1
WHILE I<=3
S=2S+1
I=I+1
WEND
PRINTS
END
7.某人40足岁时参加养老保险,保险公司规定:
40足岁起每年缴费437元,一直缴到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 人教版 老师