谈“循环结构”教学,本文主要内容关键词为:结构论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
循环结构是程序的三种基本结构之一,也是《算法与程序设计》教学的重点与难点。在教学中发现,很多学生第一次接触循环结构,不要说是独立进行程序设计,就是阅读分析程序都有一定困难。这是因为循环结构虽然形式上比较简单明了,但每一个循环结构都表示了多次重复的运算活动,这对学生的理解造成了一定的困难。在教学中如何让学生能够准确领悟循环的思想,从而较好地掌握用循环结构解决问题的基本方法,这是值得我们去探索的问题。
一、创设有效的学习情境
学习情境是课堂教学设计的重要组成部分。学习情境的创设必须考虑多方面的因素,一个有效的教学活动,必然有一个能激发学生兴趣、培养学生思维和能力的学习情境。[1]信息技术课程是一门实践性很强的学科,为了培养学习兴趣和激发学习需求,考虑到所任教班级学生大部分来自农村,计算机操作不熟练,输入速度很慢,又没有足够的编程经验,在循环结构的第一节课——“FOR循环语句”的教学中,笔者从一个简单的例子引入,对学生说:
“请同学们在窗体上输出1行‘**********’(共10个*)。”
学生使用已有的知识完成。这个问题比较简单,学生很快就写出答案(print“**********”)。
笔者接着说:“请同学们在窗体上输出10行‘**********’。”
学生思考并完成任务。
在学生操作时,笔者观察发现,一部分学生直接写出10条语句;一部分学生,利用复制命令对刚才的语句进行复制……
接着,教师继续提出问题,如果要输出20行、50行、100行又该怎么办?学生一片哗然。
这时教师引导学生观察分析刚才的程序,程序中每个语句都是相同的,只是重复了10次,实现的方法虽然简单,但很烦琐,可操作性差。相同的语句能否只写一次,让计算机重复执行多次,从而达到要求呢?
教师展示用FOR循环解决上述问题的程序,并运行程序代码,请学生观察该程序的运行结果与同学们的程序是否相同;然后引出“循环结构程序”的概念,归纳出FOR循环语句的格式,画出流程图,分析执行过程;再引入教材中“袁隆平超级水稻试验的统计分析”的问题,引导学生经历分析问题、设计算法、编写程序、调试程序等用计算机解决问题的过程。
上述情境活动主要通过对一个简单的问题的设疑,让学生自身实践,与教师共同发现问题、提出问题,找出解决问题的方法,引导学生积极思考、主动探究,感受用循环结构程序解决问题的优势,让学生知道循环的必要性和重要性,又能够比较轻松地接受循环的基本思想,激发学习兴趣和学习需求。
二、循序渐进,切忌操之过急
在程序的三种基本结构中,对于初学者来说,循环结构是最难理解的。所以千万不可操之过急,需要的是一步一个脚印。
1.深化理解语句格式和执行过程
以往教师在展示并讲解循环语句的格式后,举一个例子,就让学生动手编程。这时学生连语句的格式和功能都还存在一知半解的现象,做起练习来自然就无从下手。在教学中,介绍循环语句的格式和执行过程后,可以通过改错的方式来让学生进一步巩固和深入理解语句的基本格式和执行过程。例如,在讲解FOR语句的格式后,让学生讨论完成以下练习:
要在窗体上按顺序输出自然数1到9或9到
1,有四名学生分别编写了以下程序段,请修改其中的错误:
程序1:
Private sub command 1_click()
For a =1 to 9
Print a
End sub
程序2:
Private sub command 1_click()
For a =1 to 9
Print a
Next n
End sub
程序3:
Private sub command 1_click()
For a=1 to 9 step-1
Print a
Next a
End sub
程序4:
Private sub command 1_click()
For a =9 to 1
Print a
Next a
End sub
以上练习通过设置陷阱,由学生找出错误并修改,练习虽然简单,但对初学者牢固掌握语句的基本形式和理解语句的执行过程是十分有效的,其效果胜过教师反复的口头强调,可以避免死记硬背。
2.透过形式,深入过程,把握规律
循环结构是程序三种基本结构中最难理解的,它究竟难在何处呢?顺序结构和选择结构的流程是从上至下、不再返回,只是选择结构中间存在若干的“分路”,需要根据条件判断后做出选择。这两种结构比较符合学生的认知特点,学生理解起来并不困难,而循环结构是一个重复执行的过程,而且每一次重复执行都不是简单的重复,而是内部结构有规律的更新,这种变化给学生的理解造成了一定的困难。教学中发现,在做循环结构的练习时,很多学生通常无法顺利完成,有的则是死记硬背、生搬硬套,知其然不知其所以然。在教学中可以让学生通过阅读程序,分析程序的执行过程,观察各变量的变化情况,写出程序运行结束后各变量的值及输出结果,从而深入理解。
例如:阅读以下程序段,跟踪程序的执行过程。
Private sub command 1_click()
s=0
For a=1 to 5
s=s+a
Next a
Print s
End sub
师生共同分析程序的执行过程,各变量的变化情况如表1所示。
通过分析得出结论:上述程序是计算s=0+1+2+3+4+5值,是一个累加问题,在此过程中各个变量的值是有规律变化的。让学生透过形式,深入过程,把握其中的规律,是从本质上掌握循环结构的关键,也是掌握算法思想的方法。由此再引导学生把算法延伸到“连乘”或其他算法,让学生真正理解循环结构的思想。
3.由易到难,尝试独立编程
通过前面的分析学习,学生对循环结构有了一定的理解,但不能仅局限于能阅读程序,真正的目标是要让学生能用循环结构来完成程序设计、解决问题。可以鼓励学生尝试用所学的知识去解决学习、生活中的问题,让学生尝试独立编程,但应当注意循序渐进,梯度上升。例如,布置以下任务:
任务1,求s=1+2+3+……+100的值:
任务2,求s=1*2+2*3+3*4+……+100*101的值:
任务3,求s=-1*2+2*3-3*4+……+100*101的值。
上面任务中,先让学生完成一个比较简单又适合用循环结构完成的题目,接着再逐步提高难度,让学生一步一步地深入体会并掌握用循环结构解决问题的思想和方法。[2]
三、归纳同类,举一反三
在学生基本掌握所学知识的基础上,教师可让学生自己列举适合用循环结构解决的问题,同时引导学生对同类的问题归纳,达到举一反三的目的,防止学生死记硬背、生搬硬套。例如,在学生独立完成求s=1+2+3+……+100的值的基础上,归纳出与之类似的其他累加问题,并要求学生对原有的程序进行修改,来解决这些问题,如“求100以内的偶数和”、“求100以内的奇数和”、“求100以内能被某个数整除的数的和或个数”、“求s=1+1/2+1/3+……+1/100的值”等问题。生活中也有很多适合用循环结构解决的问题,可以让学生自己举例、归纳。
四、一题多解,对比探究
循环结构主要有FOR/NEXT循环、DO/LOOP循环等,对于初学者来说,对各种循环语句的结构、循环条件、循环变量的控制都还比较模糊,为了能使学生的学习更深入,采用比较法进行教学,可以达到很好的效果。两种循环结构都学习以后,引导学生对两种循环结构进行对比,归纳出它们的相同和不同之处,比较它们分别适合用于解决哪些类型的问题:DO循环有四种格式,初学者很容易混淆,应注意引导学生通过对四种格式的比较来加深理解、加强记忆。此外,可以通过一题多解的方式,强化学生对各种不同的循环结构的理解。例如,“求s=1+2+3+……+100的值”的问题,要求学生先用FOR循环写出程序代码,然后用DO循环的四种格式改写程序。通过一题多解的练习,可以让学生从循环类型、继续循环的条件、如何控制好循环的次数等几个方面进行详细比较,这样会使学生对这几个循环语句有更明确、更深刻的理解和认识,从而牢固掌握它们。