2.4程序的循环结构
[授课形式]
讲授课、实践课
[教学目的]
让学生掌握循环结构的DO—LOOP UNTIL语句的使用,然后举一反三地使用其他的三种DO循环语句, 掌握FOR—NEXT循环语句的使用和循环嵌套的使用。
[教学重点]
1、DO—LOOP UNTIL语句的格式、作用。
2、FOR—NEXT循环语句的格式,
3、在程序中如何用循环嵌套来实现穷举法。
[教学难点]
1、四种 DO循环语句的区别和联系。
2、FOR—NEXT循环嵌套的使用。
[教学方法]
讲授法、探究法、演练法
[教学课时]
3课时
[教学过程]
一、概述(引入)
(一)循环结构用于处理需要重复执行的某一组操作,例如:
1、将若干名学生的成绩依次出入及输出;
2、求S=1+2+3…+99+100;
3、求若干种商品的平均价格;
4、将1到100之间奇数顺序累加,等等。
(二)什么是循环结构?
在程序设计中,经常将某项任务转化为重复多次去执行的某一项操作,这种多次重复某项操作的程序结构叫做循环结构。
(三)VB提供多种实现循环结构的语句
1、DO循环结构
2、FOR循环结构
二、DO-LOOP UNTIL循环语句
(一)DO-LOOP UNTIL循环语句的一般形式:
DO
〈循环体〉
LOOP UNTIL〈循环终止条件〉
(二)功能:重复执行DO与LOOP UNTIL之间的循环体直至条件成立时退出循环。
(三)说明:每次进入循环体都是从DO命令开始,先执行一次循环体,然后判断是否满足循环体终止条件,若满足条件则退出循环,否则继续进行循环。
(四)实例研究
例1:求1+2+3+...+100
分析:用s表示累加变量,i表示累加数据,可以通过累加实现:i从0开始,每次加1,直到i的值为1为100,这时循环停止。而重复执行的操作就是i=i+1,s=s+I,这样可实现累加。
用DO-LOOP UNTIL编写程序如下:
Private Sub Command1_Click()
s = 0
i = 0
Do
i = i + 1: s = s + i '反复执行100次
Loop Until i >= 100
Print "1+2+3+...+100="; s
End Sub
用DO-LOOP WHILE编写程序如下:
s = 0
i = 0
Do
i = i + 1: s = s + i '反复执行100次
Loop While i < 100
Print "1+2+3+...+100="; s
(五)探究:求累乘1×2×3×……×100
[指导学生练习交流]
三、DO-LOOP WHILE循环语句的格式以及功能。
(一)DO-LOOP WHILE循环语句的一般形式:
DO
〈循环体〉
LOOP WHILE 〈循环条件〉
(二)功能:当条件成立时,重复执行DO与LOOP WHILE之间的循环体直至条件不成立时退出循环。
(三)实例研究
例:求满足1+2+…+n>10000的最小的自然数n。
分析:可以通过累加实现求各。累加变量为t,累加数用i表示。i从0开始,每次加1并累加到t中,直至t的值超过10000。
(四)举一反三
1、用DO-LOOP UNTIL编写的程序如下:
t = 0: i = 0
Do
i = i + 1: t = t + i
Loop Until t > 10000
n = i
Print "n="; n
2、用DO WHILE-LOOP编写的程序如下:
t = 0: i = 0
Do While t < 10000
i = i + 1: t = t + i
Loop
n = i
Print "n="; n
3、用DO UNTIL-LOOP编写的程序如下:
t = 0: i = 0
Do Until t > 10000
i = i + 1: t = t + i
Loop
n = i
Print "n="; n
四、思考:四种DO循环语句有什么区别和联系?
|
|
判断条件所在位置 |
退出循环时条件的值 |
循环体至少可执行的次数 |
|
Do-loop until |
语句的结尾部分 |
真 |
1 |
|
Do-loop while |
语句的结尾部分 |
假 |
1 |
|
Do until-loop |
语句的开头部分 |
真 |
0 |
|
Do while-loop |
语句的开头部分 |
假 |
0 |
联系:凡是用WHILE语句可以解决的问题,全部UNTIL解决。
五、学生练习
当t<=10执行“i=i+1: t=t×i”直至条件不成立。
Cls
i = 0: t = 1
Do While t <= 10
i = i + 1: t = t * i
Loop
Print i, t
重复执行“i=i+1 : t=t×i”直到条件t>10成立。
Cls
i = 0: t = 1
Do
i = i + 1: t = t * i
Loop Until t>10
Print i, t
六、FOR循环语句
在循环结构中,循环变量的变化范围是已知的,这种循环称为计数型循环,可用FOR循环来实现。
(一)FOR-NEXT循环语句的一般形式:
FOR <变量>=<初值> TO <终值> STEP <步长>
循环体
NEXT <变量>
(二)功能:循环变量从初值开始,执行其中的循环体,然后循环变量每次增加一个步长值,继续执行循环体,直至循环变量的值超过终值。
(三)说明:
1、FOR与NEXT必须配对,FOR语句称为“循环起始语句”,它的作用是确定循环变量的值如何变化,从而控制循环的次数;NEXT语句称为“循环终断语句”。
2、FOR必须在NEXT的前面;
3、FOR中的循环变量与NEXT的变量一致;
4、步长为1时“ STEP 1”可省略即循环语句中没有写出步长,则默认步长值为1;
5、循环终止的条件是循环变量赋值超过终值,而不是等于终值。
6、循环次数的计算: 次数=(终值一初值)/步长+1
7、循环变量尽量用整型变量;
8、循环变量初值和终值、步长值均可以是正值、负值或零,也可是整数或小数,也可是变量或表达式;
终止条件: 当步长>0时,循环变量>终值
当步长<0时,循环变量<终值
当步长=0时,永不终止
9、循环变量主要用来控制循环,可在循环体内引用,也可不在循环体出现。
如:
for i=1 to 100
print "a"
next i
for i=1 to 100
print i
next i
注意:在循环体内可对循环变量赋值,但这将改变循环次数。如:
for i=1 to 100
print i
i=i+1
next i
(四)exit for 语句:提前终止语句
如: for i=1 to 100
s = s + i * i
if s > = 100 then exit for
next i
print s
(五)例1:顺序将10们学生的成绩输入及输出。
程序如下:
for i=1 to 10
s=inputbox(“输入成绩”,”提示”,””)
print s
next i
七、循环的嵌套
循环嵌套:在一个循环体内完整地包含另一个循环,称为循环的嵌套。
使用嵌套要注意的问题:
(一)内外循环不应交叉。
for i
for k
next i
next k
不正确
|
for i
for k
next k
next i
正确 |
如:
(二)内外循环的循环变量名不应相同。如下例是错误的:
for k=1 to 9
for k=1 to 9
print “$”
next k
next k
(三)例:打印乘法九九表
分析:用a,b分别表示被乘数与乘数,它们分别从1变化到9,对于每个a,b的取值,输出相应的乘法式子。
程序如下:
For a = 1 To 9
For b = 1 To 9
Print Tab(12 * b - 12); a; "*"; b; "="; a * b;
Next b
Print ‘换行
Next a
或如下:
For a = 1 To 9
For b = 1 To 9
Print Tab(9 * b - 9); a & "*" & b & "=" & a * b;
Next b
Print '换行
Next a
八、综合例子:
当一个三位数其各位数字的立方和刚好等于它本身,如:13+53+33=153,我们就称这样的三位数为“水仙花数”。编一程序,求出所有的“水位花数。
分析:采用穷举法解决问题。用a、b、c分别表示三位的百、十、个位。这样,a从1到9,b、c分别从0到9,步长都是1。对a、b、c每个取值,用x表示各位数字的立方和,y表示数本身,然后判断是否满足条件x=y,如果满足那y就是所求的数。
程序如下:
For a = 1 To 9
For b = 0 To 9
For c = 0 To 9
x = a ^ 3 + b ^ 3 + c ^ 3
y = 100 * a + 10 * b + c
If x = y Then Print y; "="; a; "^3+"; b; "^3+"; c; "^3"
Next c
Next b
Next a
九、练习:猴子吃桃:每次吃掉一半多一个,直到第10天只剩一个,第一天共摘了多少个桃子?
程序如下:
x = 1
For n = 10 To 1 Step -1
x = (x + 1) * 2
Next n
Print "第一天猴子共摘了:"; x; "个桃子。"
十、小结
1、DO—LOOP UNTIL语句的格式、作用。
2、FOR—NEXT循环语句的格式,
3、在程序中如何用循环嵌套来实现穷举法。