APP下载

《算法与程序设计》选修模块教学实践与研究

2008-12-29

中国信息技术教育 2008年1期

  《普通高中信息技术课程标准(实验)》指出,在中学开设《算法与程序设计》课程的主要目的是使学生能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法来解决问题。这对初学《算法与程序设计》的学生来说可不是容易的事。有的学生甚至觉得比学数学还难。那么,如何搞好《算法与程序设计》这门选修课的教学呢?下面谈谈我的做法。
  
  明确学习用途,消除学生畏难情绪
  
  学生通过学习必修课中的“用计算机程序解决问题”一课,初步了解编程解题的作用及其主要步骤。但有的学生可能会认为:要计算机解决问题都可以找到相应的软件,这些软件都是专业人员设计好的,对于普通的人不需要再学习编程解题。针对这个问题,我在第一节课就向学生介绍了我自己在工作中遇到的问题,即如何批量添加server-u用户的问题。
  例1:每学年开学时,我都要在学校的服务器上为每个学生开设一个文件夹,并利用server-uFTP软件为每个学生设置对自己文件夹的使用权限。一个年级段600人,每人建一个文件夹、设置权限的工作少说要花1分钟,600个人要600分钟(10个小时),手工操作工作量大,而且容易出错。那么,如何解决这个问题呢?
  引导学生进行认真分析后,就会发现,学生们的文件夹可以按班级分类存放,每个学生的文件夹名称也可以设置为g06??**这种形式(其中??表示班级,**表示座号)。server-u中的用户配置都保存在一个文本文件中,并且用户与权限都很有规律。因此,我们可以编写一个程序,一个班一个班地、每个班一个学生一个学生地进行开辟空间和server-u的用户添加权限设置。最后,我演示了一下我的程序,并简要地解析了一下程序。通过以上的例子,我是想让学生们知道,尽管现在已经有各种各样的软件可以帮助我们,但仍然会遇到一些现有软件无法做到的事情,需要我们在原来软件的基础上进行二次开发。因此,学习编程解题是很有必要的。
  我还通过实例简要介绍程序设计语言的发展,让学生了解了几种常见的程序设计语言(机器语言、汇编语言和高级语言),同时,让学生感受到高级语言比起低级语言是更容易学习的,从而消除了学生对学习这门课的畏难情绪。
  这节课不仅让学生学习了编程解题的过程,同时,更重要的是向学生传递了“编程有用、编程不难”这样的信
  息,进而增强了学生学习本门课程的兴趣与信心,为本门课的教学打下了一个良好的基础。
  
  理解算法设计,引导学生自主学习
  
  众所周知,算法设计是程序设计的核心。对于任何一个问题,我们要想通过编程解决它,首先要将自己想要如何解决这个问题的方法用一定方式描述出来(这就是算法设计),然后再根据算法编写出程序。多年的程序设计教学的经验告诉我们,学生学习这门课的一个很突出的困难就是如何学会和掌握算法设计。因此,在这门课的第2、3节课中,着重通过一些简单的例子来让学生懂得如何进行三种结构的简单问题的算法设计。
  第一,实例入手,引导学生总结出自己的算法
  例2(时间转换):输入一个以秒为单位的时间t,将其转换成x小时y分钟z秒形式。用自然语言描述算法。
  这是一个小学数学问题。首先,让学生看清题目,抽象出“已知什么?求什么”这样的模型,即已知t秒,求x小时、y分钟、z秒,使得t秒=x小时y分钟z秒。接着,让学生思考如何解决这个问题。经过初步分析,学生们仍觉得无从下手。于是,我们将问题改为“3800秒是几小时几分几秒”,发现学生很快算出答案“1小时3分20秒”。究其原因,我觉得学生可能习惯于解决一个具体的数学问题,而不习惯于解决一个带变量的问题。这恰恰是数学解题与编程解题的一个区别。接下来,我就让学生说出他们是如何得出以上答案的,并引导学生进行归纳,将3800这个数换成t,再让他们尝试说出求法,经过几次修改,最后得到算法。
  通过以上例子,我让学生明白了什么是算法设计,同时,也让他们知道,要设计出算法,通常可从实例入手,逐步地把设想的解法用尽量精确的方法描述出来,就能设计出算法。
  第二,从学生熟悉的问题出发,进行算法设计训练
  在讲解选择结构问题的算法设计时,我从学生初中阶段就知道的“求一元二次方程实根”的问题出发,进行算法设计的训练。
  先让学生自己描述一下“求实根”问题的算法。由于学生对问题比较熟悉,又有例2中的顺序结构算法设计的基础和教师点拨,学生很快得出了如下的算法描述:①