“算法与程序设计”选修模块教学方法之七种武器
摘要: 《算法与程序设计》是公认的最难教、最难学的课程模块之一。通过长时间的实践探索,笔者对本模块的教学总结出了“单词翻译式”“句子翻译式”“程序寻错式”“完善程序式”“补充程序式”“阅读程序式”“调试/跟踪程序式”共七种教学方法,在教学实践中收到了令人较为满意的效果。
关键词: 算法与程序设计·教学方法
随着《普通高中技术课程标准(实验稿)》的颁布与实施,《算法与程序设计》作为一个独立的选修模块,成为高中信息技术课程不可或缺的重要组成部分。而在基础教育阶段,它却常被认为是最难教、最难学的课程之一。如何激发学生学习程序设计的积极性;如何让学生充分的体验程序设计的方法和过程;如何引领学生了解算法与程序设计的关系,对其形成正确的态度……,诸多问题无一避免的摆在了我们的面前。本文仅从“教学方法”这个角度谈谈如何较好的开展此模块的教学,权当抛砖引玉。
一、“单词翻译”式的教学方法
1.现实出发点:借鉴英语学科教学
高中阶段的学生对英语学科的教学方法与模式,已十分习惯,能够很好的适应;如英语教学中常采用的“单词翻译”——为了帮助学生记忆单词,英语教师常要求学生做“英汉词语”互译的练习。
2.最佳采用时机:函数级别/入门级别
当《算法与程序设计》课程进行到函数部分时,可借鉴此方法帮助学生记忆、理解VB中的常用函数。
3.教学案例片段
要求学生完成如下“单词翻译”:
平方根(X) → __________
→ Randomize
取左侧字串("ABCD",2) → Left( ______ , _____ )
二、“句子翻译”式的教学方法
1.现实出发点:借鉴英语学科教学
在英语学科教学中,当学生识记了一定量的词汇,初步了解英语的语法规则时,教师就开始要求学生“遣词造句”了;而且,学生唯有过了这一关,英语这门语言的学习才有可能上升到应用的层次。
2.最佳采用时机:程序级别/入门级别
当《算法与程序设计》课程刚进行到“程序的基本结构” ,要求学生能编写简单的VB程序时,可借鉴此方法帮助学生跨越初学编程的门槛。
3.教学案例片段
要求学生将程序中的汉语部分,翻译成符合语法规则的VB语句:
如果 Delta<0 那么 显示 “这个二次方程没有解!”
_________________________________________________
这是用VB编写的一元二次方程求根的程序片段,教师在实施教学时,将算法的核心语句部分用“类VB结构的汉语语句” 描述出来(以VB注释形式给出) ,让学生去翻译;学生对母语并不陌生,而且结构与VB语法规则相似,实践证明,绝大部分同学可以成功译出:
If Delta<0 then print "这个二次方程没有解!"
学生不知不觉中轻松的跨越了编写程序这道门槛,教学收到了良好的效果。
三、“程序寻错”式的教学方法
1.现实出发点:受启发于游戏中的“寻宝”情节
很多人都喜欢玩电脑游戏,且每每陶醉于寻到“宝物”时的欣喜,这是绝大部分人的心理倾向,当然高中生就更不例外了;作为教师,我们要善于抓住并利用学生的这种心态,因势利导,为教学服务。
2.最佳采用时机:程序级别/基础级别
当《算法与程序设计》课程进行到“程序设计”部分,学生对VB程序有了初步的认识,能够设计一些简单的程序的时候,我们可以考虑在程序中“埋伏”一些离奇的错误;通过体验“寻错”的过程,深化学生对基础知识的理解与掌握。
3.教学案例片段:
以下是“随机产生数判断其奇偶性”的程序片段,不过其执行结果永远是偶数!问题出在什么地方??请学生“寻错” 。
Dim a as Integer
a=Int(Rnd()*100)
If (X/2)=Int(X/2) then print "偶数!" else print "奇数!"
经历了“曲折漫长”的“寻错”过程,最终学生可能会发现问题出在“变量名”上,X≡0,电脑随机产生的数赋给了变量a,并没有赋给X!经历了这次的“寻宝” 过程,对学生养成“变量先声明后使用”的编程习惯是有着很好导向作用的,这可比教师的灌输与空洞的说教有效!当然在这种模式下,教师要注意设置“陷阱”,并“适度”的误导,以得到满意的教学效果。
四、“完善程序”式的教学方法
1.现实出发点:大家耳熟能详的一句广告词,“没有最好只有更好”
编程序也是如此,我们刚开始编写的程序可能比较粗糙的,有很多不尽如人意的地方,这就要求我们不断完善、不断改进;当然,这里的“完善”,既可以是“程序语言”级别的,也可以是“算法”级别的。
2.最佳采用时机:程序级别/中级级别
《算法与程序设计》课程进行到了初期以后,教师给出一些带有缺陷、不尽如人意的程序,由学生去完善、改进、升华、画龙点睛。
3.教学案例片段
以下是“电脑随机产生数判断奇偶性,多次产生、多次判断、多次显示结果”的程序片段,发现其中的不足,并设法改进。
X=Int(Rnd()*100)
If (X/2)=Int(X/2) then MsgBox "偶数!" else MsgBox "奇数!"
经过多次的执行程序探究,学生会发现:MsgBox总出弹出一个对话框,每次都要点确定,很麻烦;可改进为 Print,直接显示判定结果。
调整过以后,学生会发现,每次只是显示“奇数!”/“偶数!”的结果,到底谁是奇数,谁是偶数,还有改进的余地……
这种模式下,教师要注意缺陷程序的选取,并适时、适度的引导学生发现不足,完善程序。
五、“补充程序”式的教学方法
1.现实出发点:发展,源于继承、发扬前人的优秀成果
真正应用级别的软件,很难仅靠一人之力、几人之力就可以完成,微软的Office办公应用软件就是几千名优秀程序员的智慧结晶,而不是某个人单枪匹马的结果;我们要学会合作、善于合作,学会在别人的基础上成功。
2.最佳采用时机:程序级别/中高级级别
《算法与程序设计》课程进行到了中期以后,教师可以给出一些没有写完整的程序,由学生将其补充完整;通过经历这样的学习过程,提升学生的编程水平与对算法的理解能力。
3.教学案例片段:略
六、“阅读程序”式的教学方法
1.现实出发点:英语学科教学中“阅读理解”的训练方法
在英语学科教学中,为了进一步的提高学生对语言的综合应用能力,常采用“阅读理解” 这种方法来训练学生;程序设计,简单的来说,也是一种语言的学习——“计算机语言”的学习;因而,我们可以把此种方法借鉴到程序设计的教学中。
2.最佳采用时机:程序、模块级别/中高级别
《算法与程序设计》课程进行到了中期以后,学生编写程序的问题不大,但阅读程序的能力则有待提高。
要求学生能够读懂程序/模块的设计意图:教师给出一段较复杂的程序,学生能够描述“程序的算法”,并给出程序的运行结果。
3.教学案例片段:限于篇幅,此案例恕不赘述。
七、“调试/跟踪程序”式的教学方法
1.现实出发点:源于江民、瑞星这些反病毒卫士的工作
一种新的病毒出现了,它在电脑中做了哪些操作,如何跟踪调试,给出适宜杀毒方案?
2.最佳采用时机:EXE应用程序级别/高级、骨灰级
《算法与程序设计》课程进行到了后期,要求学生能够熟练的对自己的程序调试/除错;对于水平较高的、有编程爱好的学生,教师还可以提供一些工具软件,对应用程序进行简单的跟踪,由于其颇为“神秘”,相信可以吸引不少学生的眼球,实践证明也是如此。
3.教学案例片段(略)
在基础教育阶段,《算法与程序设计》这门课程,让学生掌握程序设计的基本知识、基本技能固然很重要,但更重要的则是,让学生充分体验程序设计的方法和过程、了解其背后的思想方法,引领学生感受算法与程序设计的关系,对其形成正确的态度;这才是新课标的神髓所在。限于笔者的水平有限,本文之中定有许多错误与不到之处,请各位同行不吝赐教;同为信息技术课程发展计,同为整个课程改革的顺利实施计!
参考文献:
[1] 《普通高中技术课程标准(实验稿)》
[2] 《算法与程序设计》- 教育科学出版社
[3] 《我们理想中信息技术课堂》- 信息技术教育- 钟和军
[4] 《基于建构主义的高中信息技术教学策略初探》- 中小学信息技术教育 –管志毅
[5] 《主体发展性信息技术课堂教学方法初探》- 北京航空航天大学附小方东





