编程小博士(21):循环的分类
软件世界
问:小博士,我在上期看了循环的用法后,还想问问循环语句只有一种吗?
小博士:当然不只一种了,按执行前循环次数能否确定,循环可分为次数确定的循环和次数不确定的循环。
而次数不确定的循环里又分为两种:先判断循环条件再执行和先执行一次循环再判断。
这两种方式的区别就在于后一种无论是否满足循环条件都会先做一次循环。”
了解两种循环
循环语句主要有两大类,下面的两个示例就说明了这样的问题,简短的几句话就介绍了循环的两大类型。
示例1:40个小同学,相聚在一堂,相互击一掌,总计多少响?
示例2:一班小同学,相聚在一堂,相互击一掌,总计780响,问多少小朋友,相聚在一堂?
上面的两个问题大体相同,但仔细观察,它们的已知未知正好截然相反。由此我们得知其处理方法应该是相似的,但又不是完全相同的。
对于这两个问题,前者我们可用循环次数确定的循环解决,因为我们可找出人数和响数上的规律,有多少(n)个小同学,响数就为1+2+3+……+(n-1)的和,所以第一个示例事实上就是让我们求1+2+……+39的和。
后面的问题怎么解决呢?自然我们可以从1个人的情况一直向下寻找,但向下找不能是无限制的,需要有一个截止的条件,这就是780响。所以它的处理过程也是个循环,循环执行多少次我们不知道,但只要数量满足不超过780响。
从上面分析中不难看出,问题1适合用次数确定的循环,而问题2则更适合用次数不确定的循环。
看看两种循环程序
示例1是求和程序:
s=0
FOR i=1 TO 39 step 1
s=s+i
NEXT i
Print i ‘输出答案
而示例2的代码如下:
s = 0
i = 0
While s <= 780
s = s + i
i = i + 1
Wend
Print i ‘输出答案
次数不确定的循环语句又可分为两种,一种是先对循环条件判断后再执行,另一种是先执行一次循环体后再判断循环条件,代码如下:
s = 0
i = 0
Do
i = i + 1
s = s + i
Loop While s <= 780
Print i
小结
循环的各种形式有各自最适合的情况,也是可以替换的,替换的过程中无疑循环语句的三个特点(开始循环条件,结束条件、步长)是需要尤其注意的,特别是次数不定的循环,如果结束条件和步长不相适应,可能出现假死机的现象。另外,在不确定循环次数的两类循环里,如果希望循环体至少运行一次,就用先执行再判断循环条件的循环,反之,则用先判断循环条件再执行的循环。