[转]试论如何提高学生编程能力

by sundy 7/22/2009 3:23:16 PM

韩国勇  男  工程硕士  信息工程系  助理讲师

[文章摘要] 计算机应用能力和编程能力是计算机专业教学的两个重要的检验手段,我结合自己四年的软件开发经验和一年的教学经历,从学习、读程序、思考、练习、实践和好习惯六个方面来论述提高学生的编程能力。

高等职业技术教育是一种能力教育,是一种以学生就业为导向的教育。除了注重学生能力的全面培养外,更要注重学生专业应用能力和专业扩展能力的培养,这样学生才能适应社会发展的需要。我结合自己四年的软件开发经验和一年的教学经历,通过对我们学校学生的了解,感觉学生编程能力比较薄弱,本文从学、读、思、练、实践和好习惯六个方面探讨如何提高高职院校学生的编程能力。

一、学

所谓学就是学习,认真学习专业课程和编程基础课程,不断地学习新的和先进的开发工具;只有扎实的理论基础,理论指导,编程才能游刃有余,才能写出高水平的代码,才能编写出高质量的程序。

最基础的课程是C语言,然后根据应用范围不同而选择不同的开发工具,如果搞底层开发一般使用C和汇编;如果是大型或者游戏软件开发那就是C或C++,一般都用到VC++或者BC++开发工具;网页编程可以选择ASP/PHP/JSP;电子商务方面选择.NET和J2EE;网络应用一般选择JAVA。不过像数据结构,数据库等课程无论哪个方面的开发都需要学的;另外英语和数学也非常重要。

一般的基础课程有C语言,VB程序设计,数据库原理,数据结构,算法设计等,主要是指学习一门语言,一门数据库,一门算法设计;扎实地学好这些基础课程,基础越牢固编的程序效率越高,这一点在以后的编程中会慢慢的体会到;如果基础课程不牢固,可能也能编软件,写程序,但是很难写出高水平的程序。

例如一般的程序会遇到费用问题,有费用就要考虑费用的大写问题,那么怎样实现费用的大小写转换呢?首先考虑算法设计,然后考虑使用什么语言实现。考虑算法时就要考虑从左向右转换还是从右向左转换,确定后就可以通过循环控制结构来实现转换;中间用判断结构来判断如果为零或中间有零的情况等等。这样一个问题就通过简单的算法和基本控制结构实现了,所以编程必须有扎实的理论基础。

另外,很多的课程告诉我们一些程序的效率问题,例如数据库设计中提到了SQL语句,我们最先想起的就是Select语句,在数据量比较大的情况下,Select语句的查询速度和数据库中表的索引有很大的关系,但是很多情况下Select语句是不使用索引的,如果在Select语句中的where条件中出现下列情况的不使用索引:列上有数学运算的,列上使用substr字符串函数的,‘%’通配符在第一个字符的,在列上使用字符串连接(||)的,Where条件中使用is null或is not null的等。在对大量的数据进行查询时,如果不考虑上面的情况可能写得SQL语句的效率就比较低。

二、读

所谓的读就是读教材、读程序、读网上资料,然后把看到的经典的程序代码,好的算法,整理出来,逐个消化并吸收,转变为自己的知识,提高编程能力。

    多读别人的代码,读完后思考你是否能写出比它更精练更有效率的程序,读别人的程序,不要单纯的模仿,思想才是最重要的,主要是理解别人的思想,和自己的思想进行比较,能学到很多东西;多与别人交流,三人行必有我师焉,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上网搜资料,看别人的开发经验心得,算法的实现,变为己有。

三、思

所谓思就是思考,事前思考有没有解决方案,事中思考有没有更好的解决方案,事后考虑有没有需要完善和补充的功能,总之是使程序功能更强大和完善,性能更好!

首先:事前思考有没有可行性,给你一个问题或一个项目,最先要做的就是思考可行性问题,包括技术可行性、经济可行性、法律可行性。如果给你一个悖论,让你用程序来实现,本身是一个悖论,编写程序肯定陷入死循环,怎么可能解决呢?

其次:事中考虑有没有更好的解决方案?微软给了我们很好的思路,比如:登陆界面,保存,输入格式的限制和输入范围的限制等。登陆界面一般有用户名和登录密码,并且默认上次成功登陆系统的用户名,输入的密码显示为一串“*”,在这些操作中可以只使用键盘,我们编写的程序应该怎样实现呢?可以使用setfocus()方法来实现;那么定期保存怎样实现,数据备份怎样实现?其实我们可以在程序中增加登陆时系统时间,在一定的时间间隔内实现备份,最简单的就是调用Winrar进行文件压缩备份;一些输入的限制,要根据输入的内容的逻辑进行判断到底应该输入的内容或范围是什么?例如日期有的月份能输入31日,有的月份就不能输入31日,需要进行逻辑判断,当然了现在已经有很多工具有时间的控件,自动进行逻辑判断。

最后:事后考虑有没有需要完善的,代码有没有需要优化的?下面举几个代码优化的例子:(1)判断年year是否为闰年,首先我们知道闰年的定义是能被4整除,不能被100整除;或者能被4整除,且能被400整除,然后书写算法(year % 4 == 0 && year % 100 != 0)|| (year % 4 == 0 && year % 400 == 0 ),其实 year % 4 == 0 就不需要了,因为year如果能整除400,肯定能整除4,所以year % 400 == 0一个条件就可以了。(2)求一元二次方程ax2 + bx + c = 0的根,步骤是先判断a是否为0,在判断b2 - 4ac是否为0,根据相应的值求方程的根;但是在判断b2 - 4ac是否为0时,需要这样判断fabs(b2 - 4ac) <= 1e – 6,因为在计算机中,储存实数一般都有误差。

四、练

    所谓练就是动手做练习,教材上的例题、课后习题都是很好的练习素材,这些是编者经过深思熟虑的例子和习题,很有代表性。  

边练习,边理解,边思考,多问为什么?然后根据自己的思考和理解对例子作一定的改动,看执行结果,是否和自己期望的一样?出现问题设法调试和改正使其编译通过。例如有很多循环例子,是否可以实现for循环和while循环相互转化,当通过自己的实际转换后才体会到原来每个循环有各自的特点。  

练习要分阶段分步骤,开始编一些趣味性大一点的小程序,例如:数据结构书中有很多算法的,试着把它们敲成程序,运行一下,既可以实践检验算法,也可以锻炼自己的实际编程能力,队列,排序,很多都是很经典的。当积累到一定程度就可以按照自己的想法去编一些实用性强一点的程序,开始时没灵感也不要紧,毕竟资源丰富,可以从借鉴别人的劳动成果开始。最后,系统地学学软件工程,完全按照软件生命周期的6个阶段来做。

练习是一个逐渐的过程,开始熟悉语法,编程规范,各种控件的用法,然后再学习各种控件的综合运用,甚至编写一个小的系统。但是不要为了练习而练习,要加上自己丰富的想象力,不要拘泥于固定的思维方式,多思考、多练习,通过不断的练习,加深对各种工具或控件的运用,提高编程能力。

五、实践

如果有机会,可以做实际的项目工程,在实践中不断地锻炼自己的其他能力:逻辑能力、思维能力、业务能力、沟通交流能力。

逻辑能力和思维能力是编程能力的基础,只有良好的逻辑能力和思维能力才能开发出高性能的程序,才能保证程序的正确性。

业务能力和沟通交流能力是必须的,如果你不知道业务的话,不可能开发出适合用户的程序,因为不懂业务,所以就不知道用户所需,不能更好的为用户服务。

实践的项目不在大小,在于我们的实践经历,通过实践我们知道在实施项目中除了编程能力外还需要其他的能力,通过实践知道项目的实施过程和环节,在实施的过程中遇到各种各样的问题,会使我们明白在编程中怎样解决这些问题,例如:在培训用户使用我们的系统时,发现用户对我们的业务流程不适应,业务流程过于繁琐,他们有自己的业务流程,而且也比较简单,那么我们在编程时就可以借鉴用户的流程,使我们系统的操作流程更简捷;在测试阶段发现用户经常使用业务回退功能,那么我们就把主要的业务流程都增加上业务回退功能,使系统功能更完善;在现场维护阶段发现维护人员看代码看不明白,那么在编程阶段就要注意良好的编程风格和增加适量的注释,这样位护时才能很快的看明白程序,尽快地调试和改正程序中的问题,以便提高工作效率。

所以,编程能力的高低,不是语言懂的越多能力越高,需要我们在实践中不断的锻炼,提高自己的沟通交流能力和逻辑思维能力,提高编程综合能力。 

六、好习惯

    所谓好习惯就是在编程过程中要养成良好的习惯,提高编程效率和编程能力:

1、先想后做:在编程前或解决问题前,先考虑该问题是否有可行性,有可行性再考虑计划和实施。

2、游戏规则:编程要遵循软件的生命周期,按照制定计划、需求分析、软件设计、程序编码、软件测试和运行维护这6个阶段来实现软件,不可越级。

3、有备无患:编程之前,先找一些样例程序仔细研究,应该包含哪些基本功能?里面一些难度大的算法应该怎样实现?不打无准备之仗。

4、见名知意:程序再小,用的变量也不会少,变量起名应当"见名知意",这是老规矩,能提高程序的易理解性和易修改性。

5、编程规范:和见名知意雷同,主要是使得程序层次清晰,易于理解。   

6、多加注解:对程序中自定义的变量、函数、子程序加以功能性的注释说明,别嫌麻烦,如果三五个月之后,连自己写的东西都看不明白了,那才麻烦大了。

7、环境保护:如果应用程序需要修改系统设置,记着执行程序前先保存设置,结束后要恢复设置,千万别污染环境。

8、拿来主义:一个人的力量是有限的,大家的力量是无限的,平时多看看书,有好的经验、巧的方法、用得上的段子不妨拿来。    

总之:要提高编程能力,就要不断地学习,不断地读程序、读代码,不断地思考和练习、有机会就实践,还要在编程中养成良好的习惯,只有这样才能得到锻炼,能力才能提高。

Currently rated 4.0 by 1 people

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Education & Consultation

Related posts

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.
© Copyright 2007 - 2008 Design by Sundy Linghua-Zhang 蜀ICP备08108648号

About the author

Name of author Author name
Something about me and what I do.

E-mail me Send mail

Calendar

<<  September 2010  >>
MoTuWeThFrSaSu
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

Recent comments

Authors

Disclaimer

The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010

Sign in