李艳雄
【摘要】在C语言的学习中,算法的设计的实质就是建立问题求解的模型。要想让学生学好C语言,算法的教学就显得尤为重要。本文主要讲述如何进行算法的教学,使学生更好的掌握算法。
【关键词】中职学生;C语言;算法;教学
一、算法的重要性
算法就是为为解决一个问题而采取的方法和步骤,是分析问题的钥匙、程序设计的思想和灵魂,离开算法就谈不上程序设计。在C语言的学习中,算法的设计的实质就是建立问题求解的模型。中职学生在编写程序经常不写算法,拿起笔就想写代码,这样就经常会出现两个大的问题,一个看到问题,知道是怎么回事,但就是无从下手;另一个则是编写好一个程序,但结果却是漏洞百出,不是这里有毛病就是哪儿出问题。而要解决上述问题必须让学生引起对算法的重视,让学生用算法来指导编写程序,从而提高学生的逻辑思维能力,提高学生编写程序的能力,编写出好的规范的程序代码。
二、算法的表示方法
在C语言程序设计中算法的表示方法大致有:自然语言表示法、流程图表示法、N—S流程图表示法、伪代码表示法和计算机语言表示法等。各种算法的表示法有各自的优点,而算法的主要作用是指导编写程序,不管用哪种表示法都可以实现这个功能,对于中职学生在说,如果把所有的算法表示法都讲到的话,由于时间关系可能只能泛讲,这样反而极易造成学生的困扰;如只讲一两种算法表示法,让学生把它学深学透,其它也就一通百通了,这样反而能达到更好的教學效果。而对于中职学生来说选择基础的自然语言表示法与普遍使用的流程图表示法是非常好的选择。
三、算法的教学方法
1.循序渐进法
自然语言表示法是把算法用文字分步骤表示出来,如:求1+2+3+……+100。用自然语言表示的算法如下:
S1:使i=1,s=0
S2:使s+i, 和仍然放在在变量s中,可表示为s+i→s
S3:使i的值+1,即i+1→i
S4:如果i≤100, 返回重新执行步骤S2以及其后的S3和S4;否则,算法结束。
由以上的实例我们可以看出,自然语言表示法简单,而且容易实现,它对于简单的程序是非常适合的,对于初识算法的人来说它是简单的,最容易上手的一种算法表示法,是学习其它算法表示法的非常好的基础,是应该最先学习的一种算法表示法。但对于适合复杂的程序来说,它书写太多,而且不太容易看懂。这时我们可以考虑用流程图。
流程图表示法是通过箭头相互连结的几何图形来表示程序运行的方法,如上一个例题如用流程图来表示算法则如图1所示。
图1
从图1可知流程图表示算法,直观形象,易于理解。它是目前一种非常普遍的算法表示法,适合各种大小问题的算法表示。
对于中职学生来说流程图算法表示法是最终必须学会的一种算法表示法,但我们不能一上来就讲这种算法表示法,而应该循序渐进地先讲解自然语言表示法,在掌握好自然语言表示法的基础上,再让学生学习流程图表示法,把自然语言转化为流程图,这样学生才容易接受,才会更好的学好流程图算法表示法。
2.多看多练经典算法
C程序设计是计算机语言的一门基础课程,诞生的历史悠久。在其发展过程中,人们积累了许多的经验,产生出对一些问题的经典算法,如排序问题的选择、插入和冒泡排序算法;如搜寻问题的循序搜寻法、带卫兵的循序搜寻法和二分法搜寻法;如判断素数的经典算法;如辗转法求最大公约数算法等,让学生多看这些算法,从中吸取养分,提高自己的逻辑思维能力。
如果仅仅是看而不自己动手的话,哪是远远不够的,在实际的教学过程过经常碰到这样的学生,上课认真听,也认真看书了,但就是不知道编写程序,为什么会这样呢?通过观察我发现这样的学生平时就不爱做练习,简单的问题认为不值得做,而复杂的问题又以不会做为借口,久而久之就跟不上教学进度。算法它不是靠死记硬背的就能学好的,它不只是看看书听听课就能学好的,要学好,不仅要多看,更要多练,把所学习到的知识多去应用,从而煅炼自己分析问题和解决问题的能力,提高自己的逻辑思维能力,从而更好的学好算法,提高自己编写程序的能力。
3.多归纳总结
许多时候学生总是说这个题目与以前老师讲过的哪个比较相似,但就是写不出算法跟代码,而在实际教学过程中,老师也不可能把所有的程序都讲遍。而要解决这类问题就需要老师在平时的教学过程中,要多归纳总结,把问题进行延伸,实现一种模块化问题的讲解。比如在讲解:1+2+3+……+100这个问题的时候,可以这个问题进行延伸,引出1+3+5+……+101;1+5+9+……前30项之和;1-3+5-7+……前30项之和;2+22+222+……前7项之和等等这样一个模块问题,从而进行分析总结这样一个模块问题(累加问题)的模块算法的特点。从而使学生从学会一个程序算法,引申到学会一个模块问题的算法,更加有助于训练学生快速独立编写程序,树立学习信心。而在C语言中这样的模块化的问题还有很多,比如累乘、查找、求最值、经典的星形输出等等。通过将这些套路模块化也有助于学生更快更好地学习和编写程序,激发学生程序设计的兴趣和灵感。
4.激发学生的学习兴趣
如果只是让学生不停的写算法,探索算法,学生就会感觉到非常枯燥无味。我们应多让学生上机实践,让学生把自己写的算法转换成代码,上机操作一下,就会极大的增加学生的学习兴趣。我们还可以让学生设计一些与生活实际相关的问题来提高学生的兴趣,如:“输入一个学生的成绩,如超过80分,输出优,60到80之间,输出良,60分以下输出差”等等。学生有兴趣后,会更加愿意思考问题,书写算法,从而形成良性循环,自然而然地学生就会学好C语言了。
谭浩强教授认为:程序=算法+数据结构+程序设计方法+语言工具和环境,它是程序设计的灵魂,由此可见算法在程序设计中的重要地位。算法不是一节二节课就能学会的,它是一能力的体现,我们应在整个C语言教学过程中都重视算法的教学,从而提高学生逻辑思维能力,使学生能独立设计出好的算法,编写出优质的程序代码。