赵凯
阅读,作为学习、生活中的重要组成部分有着重要的意义,学校和家庭都会积极鼓励学生进行阅读,同时努力为他们构建良好的阅读环境和氛围。编程学习同样也需要阅读,这里的阅读是指对程序的阅读。好的程序就如同一篇精美的文章,读起来令人陶醉,从中获益匪浅。阅读程序可以了解别人的优秀创意、技术的创新应用、一些编程的技巧等,能够激发学习者的灵感和创意。程序阅读能力可以理解为学生解读程序的思想、功能实现以及算法的能力,是学习编程的一种必不可少的能力。
编写程序和阅读程序也可以理解为两个互逆的过程,就如同“编码”和“解码”的关系。笔者发现很多学生在阅读自己编写的程序时比较轻松,但是阅读别人编写的程序或者稍微复杂的程序时就很困难,有时甚至在阅读一个没有超出其知识能力范围水平的程序时,也会表现得比较吃力。这就是平时程序阅读得少,导致程序阅读能力和水平相对较低。作为一个编程学习者,多阅读,多学习,多模仿,是提升编程能力的一个重要途径。
● 获得阅读资源的途径
1.Scratch网络社区平台
Scratch官方社区里有世界各地很多学生的作品,学生们乐于在社区里把自己优秀的作品展示出来。国内一些社区平台上也有很多优秀的作品,很多网络平台的作品甚至开放源程序,允许访问者在作者源程序的基础上进行二次创作。国内的一些网络编程平台在组织一些编程比赛时也会将一些优秀的作品放在平台上并开放源程序。这些源程序都是宝贵的资源,教师要鼓励学生定期访问这些资源平台,多阅读,多学习。
2.书籍配套光盘
现在,市面上出售的Scratch编程书籍大都配有光盘,里面会附上相应的源程序,或者在网络上提供相应的源程序,这些源程序都是很好的阅读资源。此外,不同类型和主题的书籍提供的程序也可以满足学习者的不同需求,如互动游戏设计、算法设计类的书籍所提供的源程序等。
3.学生间程序的分享
学生之间年龄相仿,更易于交流。彼此的作品,互相观摩、学习,更容易发挥榜样的效应。教师可以有意识地组织学生间的作品交流,还可以借助国内具有教学管理及展示交流功能的网络平台,以班级为单位组织学生进行交流展示及学习。
● 掌握程序阅读的一些技巧
1.从整体把握程序架构
Scratch可以添加很多角色,并在舞台上实现角色间的交互,因此深受学生们的喜爱。一个程序如果角色繁多,会给程序的阅读和理解带来困难,因此在阅读时,首先需要理清诸多角色之间的相互关系,以及各个角色的功能和作用,还要了解角色按时间先后出现的关系、隐藏与出现的控制、角色之间是如何进行联系的、通过广播进行交互或利用变量进行数值的传递与控制。在把握整体架构后按照角色进行分解,对于同一个角色下的程序,可以从功能或技术实现的层面再进行分解,从整体到局部,对一个个小的知识点进行理解和消化,最后再从局部到整体,从而读懂整个程序。
2.明白循环嵌套的作用
循环的嵌套在程序设计中占有非常重要的地位,利用循环的嵌套可以实现很多重要的效果,很多算法类的程序往往也会使用多重循环。在使用了循环嵌套的程序中,阅读时需要搞清楚外循环控制的是什么,内循环控制的是什么,内循环与外循环之间的相互关系是什么,哪些变量需要复位清零,在循环中的什么位置进行复位清零,内循环中的变量和外循环中的相关变量之间的关系是怎样的,这些都是阅读时需要注意和思考的方面。
3.理解逻辑判断及分支结构的作用
程序往往离不开逻辑判断,所以阅读时要明确判断条件的含义,对于与、或、非的组合运算要能够根据逻辑运算的优先级,理解其具体的作用。例如,闰年的判断条件是能被4整除但不能被100整除,或者能被400整除的年份,可以把逻辑运算组合为一个判断条件,使用一个分支结构就可以实现判断。程序中的分支结构有时也会嵌套使用,嵌套得越多,理解起来也会越复杂。这些都是学生阅读分支结构嵌套时需要关注的问题。
4.把握变量的功能
一个复杂的程序往往拥有很多的变量,看上去甚至眼花缭乱。拥有良好编程习惯的程序编写者往往会根据变量在程序中的作用进行命名,这一点十分重要,因此在教学中务必要使学生养成变量合理命名的良好习惯。阅读程序时,学生首先要看清变量的名称,根据名称就很容易判断出变量的作用,如“计时”“计次”等。此外,还需要关注变量控制了哪些角色,控制了角色哪些属性的变化,变量是如何在不同角色间进行数值传递的,有没有进行过转换,按照怎样的关系进行了转换。了解了某一个变量的功能,有时还需要了解这个变量和其他变量之间的相互关系,这样能使学生从整体上去把握变量的作用并利用它们更好地去读懂程序。
5.结合算法原理进行阅读
Scratch虽然是基于图形化的编程软件,但同样能够实现非常复杂的算法功能。算法是在程序之前就确定下来的一种解决问题的方法和策略,程序是算法实现的载体和具体体现。笔者发现学生往往在阅读一些算法类的程序时会有畏难情绪,容易放弃阅读,因此,阅读之前,最好再巩固一下算法的原理,然后再去阅读程序,这样阅读就会轻松一些。比如冒泡排序、选择排序,阅读程序时再把原理和程序结合起来。边阅读,边思考,边利用算法原理去促进理解,利用算法的特点、功能促进对一些命令作用的理解,这样阅读起来会提高效率,同时也能降低阅读和理解的难度。
6.阅读程序中的注释
注释可以体现程序编写者的想法、技巧的应用、一些命令的主要功能等,程序中的注释对阅读者有很大的帮助。阅读程序时,注释的内容如果直观具体,能让阅读者一目了然。因此,在编写程序的时候,教师要鼓励学生养成添加注释的好习惯,这样不仅方便自己阅读及调试,而且便于将程序与别人分享和交流。
● 从阅读、模仿到提升
临摹是学习书法的重要途径,通过临摹能够促进水平的提升。学习编程同样需要“临摹”,多阅读、多临摹实践,是提升编程能力的好方法。在日常的学习中,很多学生看了别人的程序后总感觉自己已经懂了,但真正写程序的时候又写不出来。一味地看而不练会造成学生眼高手低,实践能力低下。
对于优秀的程序,可以进行分解阅读和学习,即先从一小段程序、某个角色的程序或某个关键的技术点去读,去模仿编写,实现具体的功能,然后再去模仿编写下一个部分的程序。这样,从局部到整体,再到完整的架构,直至能编写出完整的程序,甚至融入自己的思想与创新。
● 结语
計算机科学是一门实践性非常强的科学,学习编程需要持之以恒地去实践,能力才能得以提升。信息技术教师在课堂教学中要有意识地去培养学生的程序阅读能力,鼓励学生利用课余时间多去阅读源程序,建立起自己的一套行之有效的源程序阅读以及学习、利用的方法,从中体会程序设计者的思想精髓,以及程序规范、技术创新应用等,获得学习编程的快乐,激发习编程的热情和动力,提升编程的能力和水平。