程序设计课程教学方法探讨
2016-03-15向泽林
向泽林
摘 要:计算机程序设计是一门逻辑性、实践性很强的课程,在该课程的教学中,重点是培养学生的学习兴趣、掌握程序设计的思想和方法,以利于学生具备用计算机来分析、解决实际问题的能力,并配以完善的考核方式,以提高程序设计课程教学质量,增强教学效果。
关键词:计算机;程序设计;思维能力
在计算机教学中,程序设计课程是必不可少的,也是非常重要的,它在计算机领域具有举足轻重的作用,可以这样说,信息自动化其实就是编写程序的具体体现。但是,教师对这门课程的讲授以及学生对这门课程的学习、掌握、领悟都感到非常困难。特别是对非计算机专业的文科学生而言,那更是难上加难,通常出现老师难教、学生难学的尴尬局面。作为一名工作在教育一线的教师,我通过多年的程序设计课程的教学实践,以及教学方法的思考,获得了一些宝贵经验,提出来与同仁探讨,希望能在程序设计课程的教学上找到一条更适合、更有效的路子。
一、激发学生学习程序设计的兴趣和爱好
对刚接触程序设计课程的学生来说,很难理解程序的概念,始终不明白为什么要编写语句代码来实现现实生活中的问题。如果老师在教授程序设计课程的时候,一开始就进入程序本身,学生必定会感到迷茫。即使会编写一些程序,也可能是不知其所以然。为了解决这一问题,我在讲授程序设计课程的时候,第一次课并不直接讲程序,而是出了几道小学暑期作业当中的题目,给一定的时间,让学生以自己的思考方式解答。
1.有这样一个算式:元宵+庆元宵=乐乐乐(其中每个汉字对应一个0~9的不重复数字),求出每个汉字分别对应的数字是多少。
2.有这样一句话:小朋友元宵节好(其中每个汉字对应一个0~9的不重复数字),且满足下面三个条件,求出每个汉字分别对应的数字是多少。
①小×朋+友×元+宵×节-好=61
②朋+友×元+宵×节+好×小=61
③元×宵+节×好×小+朋×友=61
3.谁是偷盗者问题:甲、乙、丙、丁4个人为嫌疑犯,只有一个是偷盗者。在审讯中,四人都有可能说真话和假话。
甲:乙没偷,丁偷的;乙:我没偷,丙偷的;丙:甲没偷,乙偷的;丁:我没偷。
根据以上四人的证词,推断谁是偷盗者。
学生一看到这几道题目的时候,都很亲切,毕竟都是他们小学时候遇到过的内容,于是积极思考,踊跃答题。在时间到了的时候,教师抽几位学生起来回答他们解决每道题的思路、分析过程,并看是否得到了正确的答案。然后老师快速地以某种程序语言(比如VB、C、C++、C#、JAVA)编写实现上述三道题,一边写代码的时候一边简单阐述,其实步骤就是我们思考的过程,只是这里相当于用特殊的语句将人解决这个问题的思路翻译一下。最后调试、运行得出正确答案,学生看后非常惊奇,自然而然就激发了他们学习程序的欲望和兴趣。毕竟兴趣是最好的老师,要想学生能够学好编程,培养学生的兴趣就是关键的第一步。这一步至关重要,将直接影响到后面的教学过程。
二、培养分析问题的思维能力
其实,要编写程序解决某个问题,不是计算机本身能做到的,毕竟计算机不是人,不会思考,关键是人要能对某个问题会分析,弄清楚解决该问题的思路。程序的语法结构只是提供给人编写程序的规则和平台,实现一个程序功能,我们关键是要重视算法(算法其实就是人对某个问题的思考过程、思路)、抓住核心。
在教学中经常存在这样一种现象:很多学生对程序语法结构掌握得很好,但往往碰到实际问题时就束手无策,不知道如何用学到的知识加以解决,究其根源,这是算法能力欠缺的一种表现。有些教师在讲课时经常注重分析程序代码中每条语句的含义,却忽略了算法描述过程的展现,造成学生知其然,不知其所以然,只会完成自己曾经做过的题目。其实,在程序设计课程中,算法设计是它的核心。如果学生掌握了良好的算法设计能力,也就掌握了程序设计的灵魂,无论遇到什么问题都可以很好地解决。当然,在教学中可以通过多种方法培养学生的算法设计能力:
(1)详细讲解常用的算法。对同一个问题,算法可能都有很多种,但学生一般只要掌握常用的、经典成熟的就可以了。例如:排序问题,前人总结归纳的就有很多种算法,比如简单插入排序,冒泡排序,希尔排序,快速排序,简单选择排序,堆排序等。但是我们要求学生掌握冒泡排序、选择排序的算法就足够了,只要这两种排序的算法弄清楚了,其他的也就轻而易举了。
(2)教师带领学生多阅读程序,分析程序功能和代码实现过程,吸取他人的经验和成熟的算法,使学生少走弯路或不走弯路。其实很多问题,都有比较成熟的算法设计。阅读程序关键一点就是要善于总结、归纳,吸取精髓,变别人的东西为自己所有。比如获得每个汉字拼音的首字母,在网上或书本上都有现成的代码,我们就可以通过程序代码分析其实现的原理,彻底搞清楚,今后如果要用到这一功能时,就可以直接拿来用。
(3)多用打比方分析问题。用打比方的方法分析问题不仅简单,而且容易懂,学生能很快接受。例如,在计算机等级考试或实际生活中,我们经常遇到这样的问题:将一篇英语文章中的所有大写字母转换成相应小写字母,而小写字母相应的转换成大写字母,其他字符则保持不变。一看到这道题,许多学生都不知道怎么下手。但是我们仔细思考、分析,就可以将上述题目转换为这样一个实际问题:小明写了一篇英语文章,我们如何将这篇文章中的大小写字母进行相应转换呢?大家根据平时的理解和处理方式很快就能想到,要解决这个问题,不外乎存在以下三个关键步骤:
从文章开头到文章结尾,必须完整浏览一遍。
从前往后或从后往前依次找出每一个英文字母进行判断,它是大写字母还是小写字母,或是其他字符。
判断后根据要求进行转换,是大写就转换成小写,是小写就转换成大写,其他字符就不转换。
大家想一想,按照这三个步骤做完,问题不就解决了吗?最后,根据思考步骤自然想到用循环结构,结合查找、转换函数等知识点编写相应代码就可以轻松实现。
(4)学生之间多交流。要实现一个功能,解决一个问题,编程方式可能有多种,但究竟哪一种好呢,可以让学生之间多讨论、多比较,最后落实到算法上。经过长期的这种方式的培养锻炼,学生在今后的编写代码过程中肯定会充分考虑算法的时间复杂度。
三、养成多读、多写程序的习惯
程序设计课程的实践性很强,“精讲多练”是程序设计课程教学的一大特点,实践教学在程序设计教学中起着重要的作用,学生只有通过自己亲自分析问题,亲手编写程序、上机调试程序这一恒定过程,才能从中理解程序设计的思想方法,积累程序调试的经验,体会成功的乐趣,才会有成就感,从而激发学生的学习兴趣,学起来也才会从容自如。学生只听不练根本达不到学习的目的。在教学中,就经常发现,对某个问题老师分析的时候,学生都能听懂,写代码的时候,也都能理解。但是一旦叫他们自己分析编程的时候,就显得毫无办法。我认为这种情况就是学生独立思考、独立编程时间太少造成的。
四、以学生学习内容为中心,完善考核形式
考试是测试学生的知识与能力、评价教学质量的基本手段。是教学过程中的重要一环,也是对一阶段教学工作的总结与检查,也是检验学生学习效果、评价学生学习业绩的重要环节,考试的形式对教学目标、教学过程有着相当大的影响。我认为,在程序设计课程中采用“笔试+实例操作”的考核方式比较好。笔试着重于理论体系(主要是读程序、程序填空等)。实例操作则着重于培养学生分析问题、解决问题以及团队协作的能力。
比如,给学生上C#程序设计课,在学期快结束时,我就将班上学生分成几个小组,每小组完成一个具体实例,这些实例应该是学生经常遇到的,与生活息息相关的,比如简单打字软件、斗地主扑克牌发放程序、五子棋游戏、俄罗斯方块等等。这样,学生就会主动积极思考、讨论,想尽一切办法寻求答案。在这个过程中,学生亲自动手解决具有一定难度的实际问题,为之设计合适的算法,经过实践去培养他们的创新意识、应用意识和探究能力。这些意识和能力一旦形成,就会使他们利用程序解决实际问题能力得到很快的提高,对今后从事计算机软件开发也是大有好处的。
总之,程序设计课程,在高校的计算机基础教学中占据着十分重要的位置,教学方法在程序设计教学中的举足轻重制约着程序设计教学的效率。科学的教学方法一定会为学生提供良好的帮助。我们在教学过程中应以学生为主体,教师为主导,采用符合学生认知规律的、科学的教学方法,充分调动学生学习的主动性,让老师不再难教,学生不再难学。同时,采用综合评价学生的方式,努力培养学生自主学习的兴趣,提高学生实际应用能力,从而使得程序设计课程的教学质量得到不断提高。
参考文献:
周蕾.程序设计课程教学方法探讨[J].电脑知识与技术,2012.
编辑 段丽君