循环结构中的条件能改吗
霍邱一中 张勇
摘要:计算机执行UNTIL语句时,先执行DO和LOOP UNTIL之间的循环体,然后判断“LOOP UNTIL”后面的条件是否成立,如果条件不成立,返回DO语句处重新执行循环体.这个过程反复执行,直到一次判断“LOOP UNTIL”后面的条件成立为止,这时不再返回执行循环体,而是跳出循环体执行“LOOP UNTIL条件”下面的语句
关键词:循环结构、循环体、条件
在算法中,经常出现从某处开始,按照一定的条件反复执行某些步骤的情况,这就是循环结构。反复执行的步骤称为循环体。
循环结构有两种不同的形式:直到型循环和当型循环。无论是直到型循环还是当型循环,是继续执行循环体还是终止循环,都要依照循环体里的条件而定,那么我们应该如何定条件呢?
例:设计一个计算1+2+3+…+100的值的算法,并画出程序框图。
算法(略)
框图:
图1 图2
图1的框图是我们熟悉的,经常画的,无论从那个角度来说,它是正确的.但在教学中有好奇的学生就问了,“老师,这框图我能否把它改下,把判断框里的改为‘i≤100?’然后把判断框出来的流程线上‘是’改‘否’,‘否’改‘是’?”具体改法如图2。
我们不看别的,就来观察图2的框图能否完成任务。显然,图2的框图可以计算从1到100的连续自然数之和。那么,在我们画该问题的框图中,能否用图2呢?
要解决上述问题,我们先来回顾下直到型循环的定义:在执行了一次循环体后,对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时终止循环。框图如图3:
再观察上面例子的程序语句(图4):
i=1
s=0
DO
s=s+i
i=i+1
LOOP UNTIL i>100
PRINT s
END
图3 图4
直到型(UNTIL型)语句的一般格式为:
DO
循环体
LOOP UNTIL 条件
其功能:计算机执行UNTIL语句时,先执行DO和LOOP UNTIL之间的循环体,然后判断“LOOP UNTIL”后面的条件是否成立,如果条件不成立,返回DO语句处重新执行循环体.这个过程反复执行,直到一次判断“LOOP UNTIL”后面的条件成立为止,这时不再返回执行循环体,而是跳出循环体执行“LOOP UNTIL条件”下面的语句.
到此,我们也可以看见了,对于框图,我们改后期功能和原来的没有差别,但改之后的框图写程序就麻烦了,因为语句中对“LOOP UNTIL”后面的条件要求非常严格,必须当条件满足时终止循环,而将改之后的框图的程序输入计算机,则计算机不会执行循环体,因为一开始它就判断条件是正确的,就直接输出结果。显然,这个结果不是我们想要的。
所以,对于程序框图,我们还是要按照定义来,不能随便改动条件,改动后,在框图中虽然没有问题,但写其程序语句时问题就出来了(当型循环亦是如此)。
参考文献:人教A版必修3教材