2.3.2
循环语句
教案
【课程标准】经历将具体问题的程序框图转化为程序语句的过程,理解几种基本算法语句——输入语句、输出语句、赋值语句、条件语句、循环语句,进一步体会算法的基本思想
【教学目标】1.理解、掌握循环语句;
2.能运用循环语句表达解决具体问题的过程;
3.培养学生逻辑思维能力与表达能力,进一步体会算法思想.
【教学重点】循环语句的表示方法、结构和用法
【教学难点】将具体问题的程序框图转化为程序语句的过程,当型循环和直到型循环的格式与逻辑的区别与联系.
【教学过程】
一、回顾知识
1.
什么是循环结构?画出其程序框图.
2.
引例:设计一个计算1+2+…+100的值的算法,并画出程序框图.
分析:由程序框图转化为程序语句,引入循环语句.
二、循环语句
1.
当型(WHILE型)语句的一般格式:
WHILE
条件
循环体
WEND
说明:当计算机遇到WHILE语句时,先判断条件的真假,如果条件符合,就执行WHILE与WEND之间的循环体;然后再检查上述条件,如果条件仍符合,再次执行循环体,这个过程反复进行,直到某一次条件不符合为止.这时,计算机将不执行循环体,直接跳到WEND语句后,接着执行WEND之后的语句.因此,当型循环有时也称为“前测试型”循环.
2.
直到型(UNTIL型)语句的一般格式:
DO
循环体
LOOP
UNTIL
条件
说明:当计算机遇到UNTIL语句时,先执行DO和LOOP
UNTIL之间的循环体,然后判断条件是否成立,如果不成立,执行循环体.这个过程反复执行,直到某一次符合条件为止,这时不再执行循环体,跳出循环体执行LOOP
UNTIL后面的语句.
因此,直到型循环有时也称为“后测试型”循环.
3.当型循环与直到型循环的区别:
①当型循环先判断后执行,直到型循环先执行后判断.
②当型循环用WHILE语句,直到型循环用UNTIL语句.
③对同一算法来说,当型循环和直到循环的条件互为反条件.
三、知识应用
〖例1〗:编写程序,计算自然数1+2+3+……+99+100的和。
分析:这是一个累加问题。我们可以用WHILE型语句,也可以用UNTIL型语句。由此看来,解决问题的方法不是惟一的,当然程序的设计也是有多种的,只是程序简单与复杂的问题。
程序:
WHILE型:
UNTIL型:
〖例2〗:根据1.1.2中的图1.1-2,将程序框图转化为程序语句。
分析:仔细观察,该程序框图中既有条件结构,又有循环结构。
程序:
〖思考〗:上述判定质数的算法是否还能有所改进?(让学生课后思考。)
〖补例〗:某纺织厂1997年的生产总值为300万元,如果年生产增产率为5﹪,计算最早在哪一年生产总值超过400万元。
分析:从1997年底开始,经过x年后生产总值为300×(1+5﹪)x,可将1997年生产总值赋给变量a,然后对其进行累乘,用n作为计数变量进行循环,直到a的值超过400万元为止。
解:程序框图为:
程序:
四、课堂小结
1.
理解、掌握当型循环和直到型循环的逻辑与格式的区别与联系.
2.
当型、直到型循环条件的构造,循环体的确定.
3.由程序框图转化为程序语句时,条件结构和循环结构的区别.
4.
编写一个程序的步骤:首先用自然语言描述问题的一个算法,然后把自然语言转化为程序框图,最后把程序框图转化为程序语句.
五、课堂练习
1.下面语句执行后输出的结果P的值为__64__.
P=1;
For
i=1
to
6
p=p2;
Next
输出P
2.下列语句运行后的输出结果为
(
A
)
i=1
;
Do
i=i+2;
s=2i+3;
Loop
While
i>6
输出s.
A.17
B.19
C.21
D.23
3.
编写程序,计算自然数1+2+3+……+99+100的和.
解:
4.执行右边的程序框图,若p=0.
8,则输出的
满足条件?
否
循环体
是
满足条件?
是
否
循环体
i=1
sum=0
DO
sum=sum+i
i=i+1
LOOP
UNTIL
i>100
PRINT
sum
END
i=1
sum=0
WHLIE
i<=100
sum=sum+i
i=i+1
WEND
PRINT
sum
END
INPUT
“n=”;n
flag=1
IF
n>2
THEN
d=2
WHILE
d<=n-1
AND
flag=1
IF
n
MOD
d=0
THEN
flag=0
ELSE
d=d+1
END
IF
WEND
ELSE
IF
flag=1
THEN
PRINT
n;“是质数。”
ELSE
PRINT
n;“不是质数。”
END
IF
END
IF
END
开始
a>400
a=a
p
a=300,p=1.05,n=1997
n=n+1
输出n
结束
否
是
a=300
p=1.05
n=1997
DO
a=a
p
n=n+1
LOOP
UNTIL
a>400
PRINT
n
END
i=1
sum=0
DO
sum=sum+i
i=i+1
LOOP
While
i>100
PRINT
sum
END