浅谈算法
⑴ 浅谈如何在面上中学开展《算法与程序设计》教学
高中信息技术学科选修模块《算法与程序设计》内容枯燥、严谨,对于我们学生来说缺乏相关的知识背景,在高中阶段才开始学习信息技术课难度大,也容易产生畏难情绪。那么对于学生来说怎样才能上好这门课呢?
一、首先教师应根据学生的实际情况,处理教材,分散难点
新课标指出:“学习本模块旨在使学生进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。”算法是程序设计的灵魂,算法教学是程序设计语言教学的基础,程序设计语言教学是算法教学的必要的延续。
教科版的《算法与程序设计》,使用的编程语言是VisualBasic6.0。它和大多数程序设计语言书籍一样,先花大量的篇幅介绍与VB语言开发环境及语法相关的基础知识和基本概念,而后才开始程序三种基本结构的教学。教师根据学生的实际情况,对教材进行了处理、对内容进行调整,改变了教材中原有知识的逻辑结构顺序。这样学生可以边用边学,以用促学。
教师在每节课教学过程中都以简单有趣的小问题为切入点,通过分析问题、设计算法、编写程序、调试运行,让学生对算法和程序设计有一个感性的认识,以降低学生的学习难度,并激发学生的学习兴趣,观摩、模仿、尝试等阶段逐渐到学生能独立操作。开始选择的例子比较简单,如“在屏幕上输出‘studyVB’”、“已知三边之长求三角形面积”、“计算前100个自然数之和”等。在此过程中适当忽略VB的可视化开发环境,其中数据的输入只要求用inputbox()函数完成,数据的输出直接用print语句在窗体完成,整个事件只要求由命令按钮command1_click()来触发,这样的目的一方面是减少太多新知识对学生学习算法思想的干扰,将难点分散,另一方面控件少的程序也更容易上机调试通过,让学生体验成功的喜悦。
二、其次教师应联系学生的数学知识,进行算法与程序设计练习
算法是解决问题的方法和步骤,计算机解决问题,必须严格地按步骤进行,这和我们平时解决问题是有区别的。因此在算法设计中,应将解题的每一步都想清楚,对学生逻辑思维能力要求较高,许多同学刚开始不太适应。因此教师在教学过程中,精选教学案例,联系学生的数学知识,从学生熟悉的或感兴趣的数学问题出发,进行算法与程序设计的练习。学生刚刚学习过海伦公式,在顺序结构和选择结构的教学中可采用“已知三边长利用该公式来求三角形的面积”这个例子。因为学生有数学基础,只要将解题步骤稍加修改就写出如下算法:
1.输入三边长;
2.求面积;
3.利用海伦公式s=p(p-a)(p-b)(p-c),p=a+b+c2,求出面积s;
4.输出面积s;
5.结束程序。
根据此算法编写好程序,在调试运行中发现如果三边长为10,10,30时就不会输出结果。那么是为什么呢?学生很快就想到这样的三条边是组不成三角形的,怎么改?自然是输入的a、b、c要先满足两边之和大于第三边才能组成三角形的,所以要在第二步之前添加一句,“如果不能同时满足,就输出‘输入数据错误’,转5;否则转2”。通过以上的例子,既体会到了算法的严谨性,学生也学会了顺序和选择两种结构的算法描述。
教师还用趣味数学题来激发学生的兴趣,如在学习过程中老师通过讲解“水仙花数”、“百鸡百钱”、“韩信点兵”、“棋盘上的麦粒”、“鸡兔同笼”等问题来激发学生的学习兴趣,以使大家的积极性得到提高。
三、一题多变,提高学生对知识的理解能力和编程能力
学生固有的认识框框和习惯的思维方式是学好算法与程序设计的一大障碍。只有多实践才能体会和认识到计算机解决问题的过程。然而由于课时限制,不可能有太多的时间来进行这方面的训练。教师如能恰当地运用“一题多变”和“一题多解”等方法,精心选择一道例题,让它由浅入深循序变化,引导学生分析和比较,总结解决问题的一般规律,对弄清基本概念,提高解题能力以及培养思维的灵活性都是有益的。例如,对于“求s=1+2+3+4+5+6的一个算法”就可以拓展以解决一类问题,如s=12+22+32+42+52+62,s=1+12+13+14+15+16,s=1-2+3-4+5-6,s=1×2×3×4×5×6等许多问题。这样引导学生对比for-next以及do-loop循环的语法及适用情况。通过“一题多变”和“一题多解”的教学手段,使课堂效率得到了大大地提高。
四、教师应授之以渔,教会学生自己调试程序
《算法与程序设计》模块是作为计算机应用的技术基础设置的,不能忽视技术,但我们强调的技术不再是以前那种“软件说明书”式的操作。实际上对学生来说,犯的错误具有共性,主要是标点符号错误,比如“:”和“;”,关键词与变量名之间没有空格,语句书写不完整,有if没有endif,有for没有next,变量名、对象名引用时出现拼写错误等,其实学生只要掌握一点调试、运行程序的方法就能大大提高上机效率。通过训练学生不但能自己调试程序,更能加深对程序的理解,尤其是到循环结构以后,这种作用就更明显了,而且这种能力完全可以迁移到今后的学习和生活中去。
新课程目前还处在实验阶段,存在着很大的探索空间。对学生来说,激发他们的学习兴趣、提高他们的积极性、不断进行创新的同时提高教师自身的信息素养水平。教师不再只是教学者,更应该成为研究者和学习者,教师应加强教学反思,才能提高教学水平。