算法中循环结构教学的几点思考
算法中循环结构教学的几点思考
【摘 要】 高中数学新教材增加了《算法初步》,其中程序框图是算法中的教学重点。算法的逻辑结构主要有三种,相对于顺序结构和条件结构来说,循环结构的程序框图教学难度较大。这是因为,程序设计中的循环结构与学生熟悉的重复运算存在一定的区别,学生对循环体和终止条件的学习还是比较困难的。因此,加强对算法中循环结构的分析与研究很有必要。
【关键词】 算法 程序框图 循环结构 当型 直到型
随着社会的发展,计算机已经成为人们日常生活和工作不可缺少的工具,算法和计算机有着密切的联系,计算机解决任何问题都要依赖于算法。学生学好算法具有现实意义。教师在新增内容教学中要不断地加以深入研究和及时总结,对于把握新课标的要求与提高教学水平是非常的必要的。
1对教材中给出的两种循环结构的思考
在《算法初步》中,循环结构有下面两种形式:①直到型循环结构,在执行了一次循环体之后,对控制循环条件进行判断,当条件不满足时继续执行循环体,直到条件满足时终止循环;②当型循环结构,在每次执行循环体前对循环条件进行判断,当条件满足时执行循环体,不满足时终止循环。这两种结构对应的循环语句分别是:
这里就提出了一个问题:如果设计的算法(含循环结构)不是上述形式,哪怎么办?由于教材中循环结构只给了上述两种形式,所以基本的办法就是:改进这类结构,使其成为标准的当型循环结构和直到型循环结构。教材中提出探究:你能写出“判断整数n(n>2)是否为质数”的算法吗?然后给出了下面的算法:
第一步:给定大于2的整数n。
第二步:令i=2。
第三步:用i除n,得到余数r。
第四步:判断“r=0”是否成立。若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示。
第五步:判断“i>(n-1)”是否成立。若是,则n是质数,结束算法;否则,返回第三步。如果按照这一算法,相应的程序框图如图1。
这个算法就很难用WHILE……WEND语句和DO……LOOP UNTIL语句来写(不能用GOTO语句或EXIT语句)。在教材中给出了“这个算法”的程序框图(如图2)。很明显,这已经是改进了的。容易看到,这个结构是严格按照两种循环结构
之一的直到型来设计的,因此利用这个框图是很容易写出相应的程序的。所以在平时教学中,提醒学生算法的循环结构应严格按照当型或直到型结构来写,养成习惯。
2对循环结构中常见错误的思考
本人在教学中发现,学生在解决算法问题时常犯一些共性的错误,现作分析论述如下。
2.1循环结构始端错误或末端错误。例:设计程序框图求1+2+3+……+100的值。
错解(如图3)。
错因分析:这里先执行i=i+1使i=2变为i=3,从而再执行s=s+i时得s=1+3,“跳过”了数2,即所谓始端错误,最终求得的和是s=1+3+4+……+100。
解决方案:为了不遗漏数2,通常需要改变始端赋值的数据或调整操作程序及末端输出条件。
解法一:将第二步的i=2改为i=1其它步骤和数据都不变。
解法二:将第三步与第四步互换,即先执行s=s+i使s=1+2,再执行i=i+1,往下循环。需要特别注意的是此时判断框中i100改为i>99,循环体中i=i+1改为i=i+2即可实现。
变式2:设计求1×2×3×……×100的值的程序框图。又应作如何改动呢?
从“1+2+?+100”到“1×2×3×……×100”,只是“+”变为“×”,所以只要把“s=s+i“改为“s=s×程序框图的循环体,初始条件,或循环终止条件而得到。通过对以上这些变式的掌握,学生就会很快把握一些含有循环结构问题的程序框图的设计了。
《算法初步》是适应新时代的发展而新增的一章,需要引起数学教师的重视,为学生将来学习计算机编程打好基础。同时,教师在授课时必须注意语言的准确性,避免给学生造成一些错误观念,同时尽可能利用相关的术语,让学生了解计算机语言并乐于使用计算机语言。
在教学中,要注意不要把算法讲成算法语言课或程序设计课。在算法的教学中,应通过实例来说明由数学的算法到计算机使用的算法的过渡过程。在实例教学的层次上,让学生理解和初步掌握算法的基本思想和操作过程。
参考文献
1数学课程标准研制组.数学课程标准(实验)解读.江苏教育出版
社,2005
2李群等.“循环语句”主要教学环节设计.数学教学,2005.10:22~ 24
因篇幅问题不能全部显示,请点此查看更多更全内容