《算法与程序设计》教学初探
2014-02-05
(南京师范大学附属中学,江苏南京210003)
“算法与程序设计”模块以算法与程序设计为主线,揭示利用计算机解决实际问题的过程。通过本模块的学习,可以让学生体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序、设计算法、解决问题。
本模块由“计算机解决问题的基本过程”、“程序设计语言初步”和“算法与问题解决例举”三个主题组成。
通过本模块的学习可以锻炼学生的逻辑思维能力,使学生思考问题时更加科学严密和细致全面。
我们知道“算法与程序设计”这个模块的教学一直存在“难教”、“难学”的问题。程序设计本身存在抽象、枯燥、逻辑思维性强的特点。能否找到一套有效的教学方式,使学生在学习过程中既能掌握高级编程语言的知识,又能灵活运用高级语言进行程序设计一直是高中信息技术教师努力的方向。总结这个模块的教学,从教材内容处理、教学方法和策略及应用实例三个方面来探讨本模块的教学。
一、教材内容处理
“计算机解决问题的基本过程”主题是整个模块的起始篇,计算机解决问题的基本过程是重点。本主题中的内容比较抽象,建议结合实例讲解这部分内容,教师不妨提供多个简单的例子让学生分组进行讨论,如:猜数字游戏、倒油问题、密码锁问题,等等。教学时不要进行实例代码的分析,也不要展开深入探讨,建议将第三个专题中的算法的概念提到这个专题来讲,结合实例讲解计算机解决问题的步骤,理解算法的概念和算法的表示方法。
“程序设计语言初步”中程序设计基本思想、结构化编程三大类型是教学重点,也是难点。这个主题中基本数据类型、常量、变量、数组、函数等都是一些新概念,理论性较强、枯燥,容易引起学生厌学情绪,但这些知识却是用计算机解决问题的基础。建议让学生了解程序设计最基础、最核心的内容,增强学生学习的自信心,利用可视化的界面,提高学生兴趣。在教学内容的安排上可以采取“按需分配”的策略,常用的、要用的先讲,难用的,用不着的后讲。例如:基本数据类型中,重点介绍实型、整型、字符串型、布尔型等常用数据类型,货币型、日期型等不常用的类型可以暂不做介绍。
如果选用的是Visual Basic语言作为程序设计学习的语言,将会涉及到很多控件的运用,以及属性、事件、方法等专业概念的问题。对于控件的介绍要避免“求全”。同样遵循按需的原则,要用的控件先讲,例如:标签、文本框、按钮等。特别是Timer控件,可以先讲解,因为学习了Timer控件后就可以实现很多有趣的程序了,例如:“捉蝴蝶”、“进度条”等。另外,也要避免所有程序只用标签、文本框、按钮,建议可以在不同的程序中采用不同控件,不断增加新控件的学习,也能使程序的界面更美观,布局更合理。例如:“图片浏览器”实例中可以增加列表框控件和下拉列表框控件的学习。
“算法与问题解决例举”中用典型的算法思想解决问题是教学重难点,本主题是以前面两个主题为基础的。对于不同版本的教材,可以根据实际教学适当地调整教学顺序,建议依据课时以及学生认知水平适当进行教学内容的删减。选取几个容易理解又典型的算法思想来讲解,例如:穷举算法在生活中有很多应用的实例,例如:密码的暴力破解,查找罪犯指纹,“超女”海选等,学生比较容易理解和掌握;解析法在数学科目中经常涉及到,也是比较容易掌握的算法之一。
二、教学方法和策略
教学方法是教学目标达成的重要因素,当然,没有最好的教学方法,只有适合的教学方法。“任务驱动”、“情境教学”都是本模块教学中常用而且有效的教学方法。巧设情境,布置任务,在教学过程中设置一个情境,让学生融入进去,有利于调动学习的主动性。
例如:在学习“用穷举算法解决问题”时,创设这样的情境,“达·芬奇家的保险柜长期不用,密码忘了,达·芬奇找到一个密码纸,显示密码有五个数字,但是,其中有两个数字模糊不清了。不过达·芬奇记得密码同时是他和他母亲生日的倍数。他的生日是7月8日,他母亲的生日是6月7日。我们能不能帮助达·芬奇找回保险柜密码,打开保险柜呢?”,这个任务取名叫“达·芬奇密码”,同名的电影和小说会引起学生的共鸣,一下就吸引了他们的兴趣。让学生试着解开这个密码,由于数据量大,自然而然就想到用计算机运算速度快的特点去解决这个问题,虽然密码的可能性比较多,但却是有范围的,自然地引出穷举算法使用的两个关键:数据范围和条件。学生通过这个实例很容易就理解了穷举算法的思想和解题关键,编写程序就不是问题了。
高中学生的起点水平参差不齐,建议采用分层策略设计教学任务。分层次教学承认学生的差异,符合因材施教的原则,分层次教学面向全体学生,使教学尽量适合大多数学生的发展需要和实际水平,这也符合学生的心理需求,能激发学生的自信和兴趣。建议教师在布置教学任务时,可以设计基础题和拓展题两种难度不同的任务,基础题主要用于基础任务和基础技能的训练,一般的学生基本能完成,作为学生必须要完成的任务;而拓展题是课堂相关知识的拓展或创新,学有余力的学生可以尽量完成,这样设计兼顾了不同层次学生的需求,不至于在课堂上造成能力强的学生无所事事的现象。
例如:在分支结构中,《碰碰球》的实例属于基础题,只要用分支语句判断窗口的边界就可以实现,而由它演变而来的《接球游戏》则难度要提升一些,不光要进行窗口边界的判定,还涉及到接球挡板的边界判定,挡板与键盘的交互的设定等,这就要求学生有较高的能力。
实践证明,基础薄弱的学生完成基本任务后,很有满足感;基础好、学有余力的学生对拓展任务很感兴趣,不仅完成,还对界面和功能进行进一步的优化。当然,这对教师前期的备课工作也是一种挑战。
“算法与程序设计”模块是一个过程性的教学,是需要学生积累的一个过程。教师可以引导学生经历“理解——模仿——创新”这样的一个学习过程。要知道学生通过理解程序,才能感知程序要做什么,以及结果会是什么,才能体验算法的奇妙,熟悉程序的流程。理解后学生就可以模仿,先学会走,再学会跑,学好了基础才能灵活运用、创造和创新。
三、实例选择
教学中实例的选择非常重要,可以说是一节课成败的关键。而在实例选取中经常会有这样两个误区。一类是过分简单,一眼就能看出答案,对这类实例学生会产生疑问:“为什么这么简单的问题还要用计算机来做?”;一类是数学课上的数学题,信息技术教师去上数学课,无疑是没什么优势的。
兴趣是学习最好的老师,是学生积极求知的诱因,当学生对所学的内容产生浓厚兴趣时,自然便能主动参与到教学过程中来,主动构建知识。信息技术教师在选取实例的时候要尽量做到贴近生活,有趣味性,同时也要简单,便于理解和实现。例如:“猜数字”、“QQ秀”、“遥控机器人”、“换位思考”、“捉蝴蝶”、“自制屏幕保护程序”、“碰碰球”等实例,这些实例界面美观,有趣又生动,最主要的是这些实例是学生能力范围内可以实现的。
每个实例中都包含了不同的知识点和教学内容,可将教学引向寓教于乐的良性循环中。
[1]普通高中信息技术课程标准.