大力推广开源和国产软件,督促理工科学生自觉提高人文修养,培养完善的人格。
为了防止Blog过于庞大,导致读者阅读不便,故设立多处Blog。
大一学生问题3——怎样提高C语言编程水平,尤其是算法方面
上一篇 /
下一篇 2007-05-17 08:21:00
/ 个人分类:大一指导
这个问题是仁者见仁、智者见智,你可以先看看别人的看法:
http://www.baidu.com/baidu?tn=GreenBrowser&word=%D4%F5%D1%F9%CC%E1%B8%DFC%D3%EF%D1%D4%B1%E0%B3%CC%CB%AE%C6%BD
“书山有路勤为径,学海无涯苦做舟”,知识的学习没有任何投机取巧的机会,没有所谓的“速成法”。
我在第一节课就讲到“40%听课+20%看书+30%编程调试+10%总结经验=100%学懂”,按照我们每周6个学时的上课时间(含授课和实验),那么你应该至少自己看书预习和复习3个小时,自行额外上机将近5个小时,每周累计花一个半小时进行经验总结(学习经验+设计经验+调试经验等)。这样你才可能算是学懂了C语言。
学习方法:
① 上课认真听讲,记住讲课的要点;
② 下课认真看书,对不懂的地方,及时去答疑;
③ 上机时,先调试书上的例子(尤其是课堂讲过的),一定要认真分析调试,然后进行修改,最后试着自己编写同样功能的程序;
③ 认真完成每次布置的作业,通过发E-mail及时交作业 ;
④ 每次上机认真调试,不遵守纪律者会被指导教师赶出机房。
就这门课程而言,36学时的授课时间非常紧张,我只能讲授重要的、关键的部分,更何况我增加了不少国外教材的素材。所以没有办法把课本的每一页内容都讲到,那样的话需要超过72学时的授课时间,这是不现实的。在这种情况下,抛弃中学那种被动学习方式,转向大学生必须掌握的主动学习(自学)为主的模式是非常必要的。大学中所有的课程都应该主动学习,所有的课余时间是让大家去图书馆或者教室自习的,不是玩的,也不是搞幼稚的所谓“创业”的。
我讲授的这门课,倾注了我大量“教书育人”理念在里面,重在培养良好的学习习惯、优先掌握C语言规范、养成正确的编程习惯、掌握好的设计方法,习惯单步调试的模式。更详细地说就是:
① 重在培养理论与实践相结合的学习模式,反对读死书,也反对重实践轻读书。“学而不思则罔,思而不学则殆”,理论学习是实践的前提条件,只有把必要的理论基础学好了,实践的效果才会好,否则就是浪费时间。
② 重在讲授C语言编程规范、轻复杂的算法。国内教材以较复杂的算法为主,而国外教材以简单的生活事件为主,算法相对简单易懂,这样有助于先掌握C语言。谭浩强老师的C语言教程毁誉参半,就是这个原因。我是反对使用国内的C语言教材的,大多数都是谭浩强老师的徒子徒孙,一脉相承。
③ 重在培养良好的编程习惯。国内教材上的例题大多缩进格式不规范、注释语句稀少、变量声明过分随意,这样的程序可读性非常差,所以几乎每个示例程序都被我改造过。编程环境,我要求学生的程序前半学期在Turbo C环境下调试,熟练掌握这个最标准的开发工具之后,才可以转到Visual C++环境。GCC的环境没有机会介绍,只能交给后续课程了。
④ 学习C语言课程,除了掌握C语言编程规范之外,最重要的就是竖立“结构化编程思想”,这样编写出来的程序结构清晰、模块化、可读性好、易于编写和调试。相应的设计方法就是“自顶向下,逐步求精”,设计工具是“伪码”和“流程图”。这是我授课中从头到尾贯彻始终的。
⑤ “单步调试”专门介绍的原因是,每年指导学生参加课外科技活动,发现很多当年没有听我讲C语言的学生,大多不会单步调试。可能他们的老师提到过却没有强调过,或者说因为没有实际工程经验压根就不懂单步调试的重要性,所以没有讲过。昨晚我指导毕业设计的大四学生就是这样,只知道全速运行,从没有想到过单步调试。他说”程序小,一看就知道错在什么地方了“,我立刻告诉他:5行以内的程序我都是单步调试的。这种方法我一般在讲授三大类七种控制结构时开始一点点加入,并贯穿整个课程不断强调。
至于算法方面的提高,只能通过后续专门的算法课程去学习,从本科到博士都有大量的课程,后面即将学《数据结构》和《计算方法》两门纯算法的课程,其他课程中也包含各自专业方向上的算法。C语言课程中只能讲非常简单的算法了。要想学好算法,需要有较好的数学功底和逻辑思维能力。
导入论坛
收藏
分享给好友
管理
举报
TAG: