1、循环结构中“当型”与“直到型”判断的理解新课标的高考考试中,每年都有一道与算法初步有关的试题,而这些试题大多数与循环结构有关。我们知道,循环结构分“当型”与“直到型”,而对这两种结构的判断,数学必修3,人民教育出版社,A版(以下简称教材),在对这两种结构的特征描述上不够准确,仅各以一种形式加以表述,给部分老师在教学上带来困惑,以至于学生不能理解二者的区别。故作此文,期望能与同行商榷,以达到抛砖引玉之功效。在教材中,有如下描述(P12-13):循环结构可以用程序框图表示为(图1.1-12)这个循环结构有如下特征:在执行了一次循环后,对条件进行判断,如果条件不满足,就继续执行循环体,直到条件满足时
2、终止循环。因此,这种循环结构称为直到型循环结构。除直到型循环结构外,图1.1-13表示的也是常见的循环结构,它有如下特征:在每次执行循环体前,对条件进行判定,当条件满足时,执行循环体,否则终止循环。因此,这种循环结构称为当型循环结构。从以上两种不同形式的循环结构可以看出,循环结构中一定包含条件结构,用于确定何时终止循环体。无独有偶,在数学周报人教版3.2011-2012学年第27期第三版算法与程序框图检测题基础训练第4题:例1直到型循环结构的框图为( )其所提供的参考答案为(B)。这样的判断合理吗?让我们来看,教材第十五页例7:例2某工厂2005年的年生产总值为200万元,技术革新后,预计以后
3、每年的年生产总值都比上一年增长,设计程序框图,输出预计年生产总会超过300万元的最早年份。说明:图甲是教材原图,图乙是笔者作改动后的框图:很显然,两个框图执行结果完全一样,请仔细观察两框图中,虚线框住部分:图甲明显满足教材中对“直到型”循环的特征要求,而图乙却是先执行判断后执行循环体,那么图乙是“当型”循环?很显然不对,因为“当型”的另一个特征是跳出循环体的方式是“条件不满足”。据此,由“先判断条件是否满足,再执行循环”作为判断是否是“直到型”或“当型”循环结构是不恰当的。在谭浩强主编的QBASIC语文教程(电子工业出版社,1997年2月版)第七章循环结构中,详细介绍了循环结构及其特征:为了清
4、晰地找出循环的出口,人们希望循环的结束点发生在循环的开头或结束处,一般用带WHILE或UNTIL子句的循环。对于“当型”(WHILE子句)的作用是:当指定的条件为真时继续执行循环体,当条件为假时不再执行循环,即下图(图一)中的(A)格式,是在循环的入口处检查指定的条件是否满足,即“前测试”当型循环;(B)格式是在循环体的结束处检查指定的条件是否为真,它是“后测试”当型循环,因此使用这种结构,至少应执行一次循环体。对于“直到型”(带UNTIL子句)的作用是:当指定的条件为真时就终止循环的执行,这是与WHILE的主要区别。同样也分为两类:一类是“前测试”循环,即在循环开始时检查指定的条件是否满足,
5、格式如图一(C);另一类是“后测试”循环,即在循环体结束处测试条件,格式如图一(D)。这两类的区别是(C)中指定条件满足则一次也不执行循环体,而(D)是无条件执行一次循环体,然后再测试条件。在此我们可以认为,判定一个循环结构是否“当型”或“直到型”,与是否执行了一次循环体无关,只能是以跳出循环体的方式来确定,结论为: 以“是”来脱离循环体为“直到型”循环,“否”脱离循环体为“当型”循环。故而很显然,本文中提到的例1(D)选项也是直到型循环。另外,当将一个“直到型”循环改成“当型”循环的框图时,条件框中的条件不一定互为补集(在题目中所涵指的数集内)例3画出的程序框图解:两者的差异在于与执行与的先后顺序不同,判断框中的取值范围并不互补。这一点必须在教学中引起足够的重视。