最近总是听到很多人问”我该如何学C?”,”从哪里入手?”,”选用什么教材和编译器?”等问题.我想这也是大多数初学者遇到的很苦恼的事情.我不想讲过多高深的东西,就算讲也不一定讲的好,因为我在C的道路上走的不是很深入.之所以拿出来讲这个事情,是想就我学C的一些经验和大家一起分享,希望能对读者有些帮助.
C语言是一门很经典的语言.作为一门初学编程者接触的编程语言,它有着它独到的优势.尽管现在都在提倡面向对象技术,但是我还是希望读者能够认认真真的学好C语言,学透C语言,我相信这会对读者以后有很大的帮助.虽然C是面向过程的语言,但正是这种特性需要读者考虑到编程中的各种细节,这对编程思维是一种极好的锻炼.比如一些简单的出错(异常)处理,在面对象语言,如java中,就是用try和catch来实现的,但是你知道它是如何实现的吗?可能你会说,这不需要知道,这是虚拟机做的事,我们只要知道怎么用就行了.诚然这话不假,可是做为一个程序员,没有追根究底的精神是不行的.而在c语言中,如何对出错进行处理,就是编程者自己考虑的事情了.
俗话说万事开头难,对于一个初涉编程的人来说,想一下子就学懂学好那是不可能的,所以在学习的过程中一定要保持好心态.选择一本有条理,思路清晰,由浅入深的教材确实能够引导读者更好的学习.现在市面上C语言教程也多的很,而大多数学校和读者选用的都是谭浩强老师的C教程(本人刚开始用的也是这本).这本书对于初学者来讲,我个人认为哈可能有点点难,不过这不失为一本入门的好教材.在自学的过程中 (学编程主要靠的就是自学),最好是把书从头到尾仔仔细细的看个两到三遍,在这过程中第一遍主要是粗略的看一遍,这里的粗略指的是跳过那些你看不懂的地方(因为程序语言整个来讲是一个系统,编著者虽然是个资深的学者,但他也不可能把各个章节分的很细,总有用到你还没看到的知识点).看了第一遍后,你就应该大致了解了C的各个知识点,然后回过头来再认真的看一遍,这之中不要跳过你认为你上一遍已经看懂了的东西,说不定你看了之后又有了新的理解.这一遍中主要就是要搞懂书上的例子,弄懂为什么要这样写,程序运行结果是什么,怎么得出来的,这都是你需要考虑和理解的问题.第三遍,就是做课后习题吧,这就不要再很仔细的看书了.一章一章的做,对于不了解或是还没弄清的知识点就再翻翻书,争取把所有的习题都上机敲一变,运行一遍,看的出结果和你想象中的结果是否一致.在看书的过程中,可能有人会心浮七躁,不安心于书本,总想上机写个程序试试,我的建议呢,还是:静下心来,仔细的看书吧!大致的初步入门学习就是这样了,当然啦,这只是我的一点个人建议,每个人有每个人不同的学习方法和步骤.
一个好的编辑与编译器是每个程序员必不可少的工具,在GUI大行其道的今天,很多人是否已经认为TC这个DOS时代的编辑工具已经没有使用的必要了呢?我也不想就这个问题做过多的辩说,其实它用来学习我觉得还是不错的,但是开发软件就不适宜了.TC里主要是有单步调试工具,这对于初学者来讲应该是福音,因为刚学编程的读者写的程序总是程序量虽然不大但是错误百出.这是每个程序员都走过的路,除非你特N,呵,那就是个例外了.使用它的调试工具,可以很容易的定位出错误,虽然编译的时候有错误提示信息,如果你能一下子就改正错误那当然更好了,但有时候找不出来怎么办?所以说单步调试还是很有用的.当然啦,编译器不一定非得用TC,如果你有更好的选择那当然也很好,我的建议就是最好找个带调试功能的编译器,这样有助于你更准确快速的找到错误.
当你真正的将每一个习题都上机运行了一遍后,你会发现其实编程很简单,而且自己的水平有了很大的进步.但是不要骄傲哦,好的程序员不是靠炫耀出来的,他们的成功靠的是他们的潜心学习,因为他们深知:我的水平还不够高,我要学的东西还很多.所以还是继续潜心学习吧.一个好的数据结构+好的算法=好的程序,这大家应该知道了吧?所以这里我们来讲一下学习数据结构和算法.不要被你身边的人所说的吓倒”数据结构好难啊”,”我学了这么久还是没弄懂”…,不要被这些言语所吓倒,其实它并没有你想象的那么难,现在还有想学而学不懂的东西吗?没有.书是好老师,老师是好老师,因特网也是好老师,有这么多好老师还怕什么呢?说了这么多废话,该如何学数据结构呢?其实也没有一个定式,最主要的还是靠你的理解.这类的书也很多,这里主要是给想说明,当你的C学到一定的深度后,学习数据结构将是你学习的目标,如果你以后决定要走程序员这条路的话.数据结构和算法是相互的联系的,一个再好的数据结构用不好的算法来实现和一个很差的数据结构用非常好的算法来实现,其程序执行效率都是不高的.虽然如今的处理器等硬件资源已经不吝啬这点效率了,但是我们程序员不就是在保持程序可读性好的前提下尽可能的提高程序的执行效率吗?所以说,这部分还是很有必要学的,而且要学的很深,钻的很透.
接下来我想和大家说的就是程序风格.程序是用来干什么的?它不只是给编译器编译就完事了的,它也是程序员门互相交流和互相学习的渠道.如果给你一段代码:变量名随意取,代码无缩进格式,几个语句全都挤在一起,没有注释….代码量少还好说,如果代码行数超过几百行,甚至上千行.那你愿意看吗?你给我我也不会看.所以说,一个好的程序风格就好比一个人的修养.修养好的,人人都愿意看,不好的,那就只有你”自我欣赏”了.这个比方可能不太恰当,但我说的就是这个理,要有好的编程风格.由正入邪容易,可由邪入正就难了.所以说程序风格要从学习编程开始就养成.那一个好的程序风格应该注意什么呢?
首先,变量名要取得适当.比如说大家都约定成俗的用i,j来做循环变量,而你非得要在你程序里搞成表示一个人的年纪,这样就不好.尽可能的让人一眼看上去就知道你这个变量是用来干什么的.如你做一个学生管理系统,这之中你肯定会用到很多学生姓名,年纪等变量,如果你开始定义typedef int Age;typedef char Name;后,然后用Name stu[20],这样别人一看就知道,哦,这个stdu是来表示名字的.
其次,就是程序的缩进格式要好.这样才会显得层次感强,结构清晰.比如一个循环语句for,其循环体就应该缩进,这样一看就明白,它是for的循环体语句而不是和for一个层次的.尤其是在内嵌层次比较多的时候看着会很明白也很舒服.当然了,这里不推荐使用过多的层次,一般4到5层就可以了.如果你层次比较多的话,那你就要考虑你的程序结构设计是不是该改一改了.
再次,就是注释了.注释主要是注释要点,不要在每个地方都留下注释,这样反而会显得程序很乱.在关键点上做个小小的说明就可以了,这样以后再回头看程序的时候就知道这里是干什么的了.我个人建议就在函数前做块注释,适当的关键点做行注释,这样注释看上去不但清晰也很美观.
以上说了那么多废话,都是我学C这么久来的体会和心得.虽然有大部分大家肯定也看到过,不是我原创的^_^,但确实都是我的感受.上面把程序设计中各个要注意的部分都稍微简洁的说了一下,不是很深入,希望对大家有点作用吧.
后记:这是我在个人网站上有人发的一篇希望我多加点初学者需要的东西而写的,其实要学的东西很多,我也不知道从何加起,所以写这篇文章希望对大家有所帮助吧.花了一晚上终于写完了,现在是晚上22:22,不晓得为什么最近看时间总是看到这样的点,像还有11:11啊之类的.事了了,也该睡觉了ZZZ~~~~
铁木箱子完成于2005-12-11
>> 本文固定链接: http://www.vcgood.com/archives/752