让优秀的实例引导学生积极主动学习——谈“算法与程序设计”模块教学中实例的引用
江苏省淮阴中学 谢诺
新一轮的信息技术课程改革将“算法与程序设计”定为五个选修模块中的一个,虽然此模块的教学体系成熟、以往的教学经验较丰富,但是由于此部分对学生的逻辑思维能力和考虑问题的严密性要求较高,加之课时有限,处理不好却容易给学生造成内容枯燥、难懂、没什么实际用处等印象,导致学生学习积极性不高,教学效果差等问题。
如何在有限的课时内,提升并保持学生学习的积极性,避免以上问题的发生,我认为在教学中选好用好实例至关重要。如果将教师备好的课比喻成一顿营养丰富的大餐,那么教学内容就是其中有利于身体健康成长的营养,而实例则好比其中的色香味,只有色香味俱全的大餐,才会让学生的胃口大开,同时才能在享受美食的过程中不知不觉地汲取身体所需的各种营养。所以在程序设计的教学中实例的选择至关重要。
一、善于利用课本中的实例
教育科学出版社出版的《算法与程序设计》教材中,有很多非常经典而又有趣的实例,如韩信点兵问题,水仙花数问题, 丢番图的年龄问题以及百鸡百钱问题。这些实例都是学习和生活中的实际问题,同时还蕴含着丰富的算法思想,我们在教学过程中要重视这些实例,在激发学生兴趣、启发学生思维、引导学生设计算法等方面充分用好它们。
但是在讲到分支结构时,此书中用了一个“输入飞船速度,程序判断飞船是否能升空”的例子。由于上过两个班的课后,都有部分学生对为什么要使用分支结构不能理解,于是我想到了另一本教材中实例。
这个例子是这样的:“设计一个界面如图1所示的算术练习程序,由计算机自动产生一位数加法练习题。学生输入答案后,单击“确认”按钮,如答案正确,自动产生下一题,否则重新输入答案。”
我认为这个例子在这个地方使用非常好,对题目正确和错误的判断,自然而然地引出了分支结构,此时更能体现分支机构的价值和意义。但是,我感觉到这个例子还可以用得更好。于是在新一届的高一我做了如下尝试:
1、引导学生主动质疑
在讲到顺序结构时,我就引入了这个例子,由于此时学生还没有学习分支结构,所以我把此实例稍微修改了一下,另外,为了和学生的生活联系的更紧密,我还顺带着创设了一个情境:“暑假,小明的阿姨带着一个小弟弟到小明家玩,这个小弟弟开学就要上一年级了,阿姨交了一个任务给小明,要他每天出20道一位数的加法题给小弟弟做,做完后还要帮小弟弟批改。小明自己的作业也很多,他不想每天花许多时间去重复出题、改题的工作,于是他想到了用计算机帮他出题并批改。”请你设计一个界面如图2所示的算术练习程序,由计算机自动产生一位数加法练习题,由用户输入答案,并设计“答案”按钮和答案区,以便用户判断自己的答案是否正确。”
我带着大家分析过界面和事件代码后,个别思维活跃的学生马上发表自己的意见,“老师,这个程序给出了标准答案,小弟弟可以偷懒,不用动脑筋了!”,“这个程序好像缺少批改的功能”,“老师,我想将程序设计成:做对几题,就显示几颗星星,可我不知道该怎么去编。”……,个别学生的活跃带动了大家更多的思考,学生的问题层出不穷,我料到学生会提问题,但是没料到他们会想得更多,此时学生投入的热情空前的高涨。由于他们提出的问题恰恰是我下一节课要教给他们的知识,我感觉到这是一个非常好的机会,于是,我告诉大家,利用计算机去判断,是我们下一节课将要学习的内容,先完成程序的同学,如果有兴趣,可以先参照课本的分支结构部分,修改程序。许多同学听了我的话,迫不及待地翻开课本,动手开始尝试。
看着他们求知若渴的样子,我在心里想,什么是以生为本?让学生自己质疑、自己探究,引导学生积极主动地去学习,不就是最好的以生为本的体现吗?
2、启发学生积极创新
由于有了上节课的悬疑,在我讲到分支结构的时候,大家听得都格外的认真,所以掌握得也很快。此时,经过大家的讨论,我们决定在上节课程序的基础上删除“答案”按钮和答案区,同时增加判断的功能,如果用户输入的答案正确,程序将显示“正确”,而如果输入的答案错误,程序将显示“错误”,程序的界面将修改成如图3所示。
除此之外,我提醒学生可以用一些奖励的话语代替“正确”,用一些鼓励的话语代替 “错误”,避免干巴巴的“正确”、“错误”,这样一来可以使程序更人性化。
我这么简单的几句启发,没想到引来了学生的妙语连珠。学生的想象力和创造力真是让我吃惊,从中抽取出几个和大家共享:

3、鼓励学生更高更优
当学生按要求完成上述程序时,本节课的任务就基本完成了。为了使学生的程序更具个性化,也为了给先做完的同学更多挑战,我要求先完成的同学在两个方面进行改进:第一是界面的个性化设计,可以在界面上显示一些图片或是增加一些文字信息;第二是程序功能的优化设计,比如象有的同学提出的那样,做对几题,就显示几颗星星等等。
学生完成的作品完全出乎我的意料,以下图4,图5是学生作品的界面:
二、善于挖掘生活中的实例
1、体育彩票号码
讲到for循环时,经验告诉我这部分内容学生开始时较难理解,选择合适的实例非常重要,我曾经使用过输出10个“*”,输出10个随机数等不同的实例引入,在重新备课时突然有一天我想到了7位数的体育彩票,课标要求“引导学生注意寻找、发现身边的实际问题,进而设计出算法和设计计算机程序去解决这些问题。”,这不正是一个“身边的实际问题”吗?
于是我用下面的实例引入新课:“李明的爷爷退休后,迷上了7位数的体育彩票,每期必买,假如你是李明,请你用VB编写一个程序,当用户单击命令按钮:“生成号码”时,计算机将在窗体上显示一个7位数的体彩号码。提示:产生0~9之间一位随机数的函数为int(rnd()*10)。”
实践证明这个例子效果非常好,学生通过这个例子不仅很容易就理解了循环语句的执行过程,而且轻松体会了为什么要用循环及什么时候用循环等关键性的问题。由于此例子就来自学生生活的现实环境,所以学生的关注度非常高,不管是编写程序之前、之中还是之后,大家都兴味盎然。有一个平时对程序设计不甚感兴趣的同学,竟然拿出纸和笔将自己程序所产生的号码抄下来,作出马上就要去买彩票的样子,甚是可爱。
其实这个实例,不仅解决了学生刚接触循环结构时,不易理解循环结构的功能和特点的问题,而且稍加修改,又是引导学生理解循环嵌套的好实例。
将问题修改为:现在我们已经知道了输出一个体彩号码的程序,如果让计算机一次输出10个,甚至100个体彩号码,程序该如何编写呢?这个问题自然而然地引导学生去考虑循环体本身又是循环语句的情况,非常便于学生对循环嵌套的理解。
2、折纸问题
实例:假如有一张纸,它足够大,厚度0.01厘米,请问将这张纸折叠多少次以后,其厚度可以超过珠穆朗玛峰的高度?
在do循环的第一节课,我抛出了以上问题,请同学猜测,有的同学说几万次,有的同学说几亿次,还有的同学不知该如何回答。当我公布答案——27次时,所有的学生都瞪大了眼睛表示质疑。
紧接着,我带着同学一步步地分析问题,并通过do语句编程实现……,同学恍然大悟,哦,原来如此。
一个悬念解开了,一个问题也随之解决,当然相关的知识也在不知不觉中被掌握了。
【参考资料】:
1、蔡绍稷 全日制普通高级中学教科书《信息技术》
2、李 艺 普通高中课程标准试验教科书《算法与程序设计》





