摘要:循环结构是算法中的重要内容,也是最易混淆的结构,学习的关键是掌握循环结构的最基本类型和结构形式。
关键词:算法 循环结构
算法是
计算机理论和技术的核心,也是
数学的最基本的内容之一。随着现代信息技术飞速发展,算法在科学技术,社会发展中发挥着越来越大的作用,算法的基本知识、基本思想、基本方法日益融入社会生活的许多方面,已成为现化人应具备的一种基本素养。算法作为
高中数学必修内容的一部分,反映了数学与其他学科知识之间的广泛联系,反映了现代社会人们对数学的重视。算法在数学中的地位得以提高,算法进入中学数学是时代的要求。
算法初步是中学数学的新增内容,大部分数学
教师初步接触这部分内容,计算机基础薄弱,没程序设计基础,对新知识不易理解。算法是广大数学教师教学中普遍感到比较困难的一章,特别是循环结构,是广大师生学习中感到最困难的地方,也是最容易出错的地方,在教学、学习中难免出现这样那样的错误。下面以我教学中体会谈谈算法学习中的几点容易出错的地方。
一、认识上错误
在算法初步第一章第2节《流程图》这节中我们学习了两种循环结构:当型循环结构和直到型循环结构。
当型循环结构:先判断所给条件 是否成立,若 成立,则执行A,再判断条件 是否成立,若 仍成立,则又执行A,如此反复,直到某一次条件 不成立时为止。如图(3)
直到型循环结构:先执行A即循环体,再判断所给条件 是否成立,若 不成立,则再执行循环体,如此反复,直到 成立,该循环过程结束。如图(2)
这两种循环结构的相同点是:都对一定条件去判断,都有重复执行的循环体。
它们的区别是:1、判断与执行循环体的先后顺序不同。
2、控制循环条件的不同
如果判断与执行循环体的先后顺序改变就由当型循环变成直到循环或由直到型转变成当型循环。
如果只改变判断条件,则循环结构就会由上两种形式分别转变成如下形式:
形式①:先判断所给条件 是否成立,若 不成立,则执行A,再判断条件 是否成立,若 仍不成立,则又执行A,如此反复,直到某一次条件 成立时为止。如图(4)
形式②:先执行A即循环体,再判断所给条件 是否成立,若 成立,则再执行循环体,如此反复,直到 不成立,该循环过程结束。如图(1)
许多教师认为这两种结构既不是当型也不是直到型循环,从而把它否定,这种看法是片面的。虽然上述两种结构的形式不是教材中当型循环和直到型循环,但在执行后同当型、直到型一样能得到正确结果。由前面学习的算法概念,一个算法只要在执行有限个步骤后结束,并能得到正确的结果,就是正确的算法。就此我向计算机专业教师请教,并查阅了大量资料。在VB语言中循环语句分两大类型:一类计数循环语句,指的是循环次数已知的循环结构即是我们教材中“For…”循环结构。另一类是条件型循环语句,条件型语句分两种格式:格式一“Do…While(Until)”语句其流程图如下:
格式二“Do[While]e(Until)]”其流程图如下:
图⑵即教材中的直型循环,图⑶即教材中的当型循环,图⑴、图⑷这两种教材中没有介绍。不能因为我们教材中没有就说它是错误的。在
高考题中2007年山东高考试题考察算法流程图的题目就是图⑷类型,其它各种资料的循环结构中也常见这两种类型,我们要改变认识上的错误。这两种类型的循环结构也是正确的。
二、控制循环易错
在循环结构教学中要加深学生对循环的形成与控制的理解。在循环结构中控制循环有以下几个环节:变量的初始值,计数变量,累积变量,判断条件。其中一个环节出错将会影响循环的正常进行。设计时容易出现下列错误。
(一)学生容易遗漏计数变量或累积变量
在循环结构学习中,如何能够有效的保证循环,关键要设计累积变量,记数变量。在表示时利用计算机特有的替代方式,如:I←I+1,S←S+I,T←T×N等等。开始学习时学生理解很困难,在教学中我们可从数列的迭代,递推角度让学生理解,再让学生明白因为计算机的替代功能,理解I←I+1,S←S+I的实际意义。通过简单的例子来弄清楚,最后再解决复杂的问题。对于累积变量、计数变量学生开始学习时易遗漏,造成不循环、死循环。
(二)计数变量或累积变量的设置易错
计数变量累积变量的初始值学生设置的时候容易遗漏,造成不能正确循环,所以在设计算法时要准确设置初始值。
(三)对循环开始和结束控制上易错。对循环的开始与结束的控制上学生设计时易遗漏一些运算
数值。
例如:求2+4+6+…+100的和时,个别学生所画的流程图如下图⑸,这种画法是错误的。流程图中计算是从4开始漏掉了数字2。要控制从2开始I应赋值0或调整I←I+2与S←S+I这两个运算步骤的先后顺序。
(四)判断条件易错,不同的结构形式判断条件不同。解决的关键是看清:是在满足条件下执行循环,还是在需要的条件下结束循环。
(五)输出结果易错。例:求使不等式2+6+10+…+(4n-2)<2008成立的最大正整数n?流程图如图⑹输出结果很多同学认为是n,这是错误的,在本题中最后一次加法不是使得S<2008,而是和S已经大于2008故不是最后一次的n,而是它前面的一个n,大多数人认为应该是n-1,也不对,因为计算机最后保存的是最后一次加法中的n加上1,所以正确结果是n-2。要确定输出结果关键看循环运算的最后一次循环。
我们在学习循环结构时,要注意抓住循环结构的关键点:确定循环变量和初始值、循环体、循环的终止条件,保证每个环节正确才能不出错误,才能写出正确的流程图和算法语句,保证循环正常进行。
参考资料:《算法与程序设计》普通高中课程标准实验教科
书 教育科