一个资深C语言工程师说如何学习C语言.pdf

上传人:l*** 文档编号:72127773 上传时间:2023-02-08 格式:PDF 页数:23 大小:2.36MB
返回 下载 相关 举报
一个资深C语言工程师说如何学习C语言.pdf_第1页
第1页 / 共23页
一个资深C语言工程师说如何学习C语言.pdf_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《一个资深C语言工程师说如何学习C语言.pdf》由会员分享,可在线阅读,更多相关《一个资深C语言工程师说如何学习C语言.pdf(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、谈及 C 语言,我想凡是学过它的朋友都有这样一种感觉,那就是“让我欢喜让我忧。”欢喜的是,C 语言功能非常强大、应用广泛,一旦掌握了后,你就可以理直气壮地对他人说“我是电脑高手!”,而且以后若是再自学其他语言就显得轻而易举了。忧虑的是,C 语言犹如“少林武功”一般博大精深,太难学了。其实就笔者认为 C 语言并非是“difficult(困难)的,只要你能理清思路,掌握它的精髓,那么自学 C 语言是一件非常容易且又其乐无穷的事。今天本人就与大家一起谈谈如何学习 C 语言或者说学习 C 语言应从哪几方面着手。了解一些基本知识一C 语言的背景就个人感触,无论学习哪门语言首先应该了解一下自己所学语言的背

2、景,也可以说它的发展史。C 语言属于高级程序语言的一种,它的前身是“ALGOL。其创始人是布朗W卡尼汉和丹尼斯M利奇.C 语言问世时是带有很大的局限性,因为它只能用于 UNIX 系统上。然而随着科学技术的进步,计算机工业的发展,C 语言逐渐脱离 UNIX。1987 年美国标准化协会制定了 C 语言的国际标准,简称“ANSI C,从此以后它便成为一种广泛使用的程序语言。C 语言的优点很多,主要的有如下四点:1兼备高级语言与低级语言的优点,属于一种中间语言.2它是一种结构化程序设计语言,非常适合结构化程序设计.3有较丰富的数据类型、运算符以及函数供以选用。4直接与内存打交道,使修改、编辑其他程序与

3、文档变得轻松,简单。二二大语系二种不同的学习方法笔者学习过很多程序语言,例如:C,C(C 语言的扩展),QBASIC,VB(BASIC 的可视化),javascript,JSCRIPT,VBSCRIPT,JAVA,ASP,FOXPRO,PERL 等等,就本人实践所得,其实高级程序语言分为两大语系。一路是以C 为主的程序语言,例如:javascript,JAVA 等,这类语言在函数的调用,程序语句的书写,循环的控制都极为相似。另一路是以 BASIC 为首的程序语言,例如:FOXPRO,VBSCRIPT 等,此类语言同样具有相似的函数调用,程序语句书写以及循环控制,但与 C 语系是不同的。因此若是

4、您以前是从 QBASIC 起家的,那么在学习 C 语言前最好是先洗洗脑,千万不要把学习 BASIC 的方法以及思路用在 C身上。讲到这里,我想大家对 C 语言一定有了感性认识吧!下面让我们再升华一下,全方位亲密接触它.学习 C 语言必须从以下四点入手,也就是说,只要你能掌握这四点的内容,那么基本上就大功告成了.、多看代码在有一定基础以后一定要多看别人的代码。注意代码中的算法和数据结构。毕竟学 C 之后的关口就是算法和数据结构.提到数据结构,指针是其中重要的一环,绝大多数的数据结构是建立在指针之上的,如链表、队列、树、图等等,所以只有学好指针才能真正学好 C。别的方面也要关注一下,诸如变量的命名

5、、库函数的用法等等。有些库函数是经常用到的.对于这些函数的用法就要牢牢记住.、要自己动手编程序是个实干的活,光说不练不行。刚开始学的时候可以多练习书上的习题.对于自己不明白的地方,自己编个小程序实验一下是最好的方法,能给自己留下深刻的印象.自己动手的过程中要不断纠正自己不好的编程习惯和认识错误.有一定的基础以后可以尝试编一点小游戏,文曲星之类的电子词典上小游戏很多,照着编作为练习。基础很扎实的时候,可以编一些关于数据结构方面的东西,诸如最经典的学生管理系统。之后.。.学汇编、硬件知识。、选择一个好的编译器英文版 Turbo C v2。0 没话说,最经典的 C 编译器(下载地址:http:/ww

6、w4。skycn。com/soft/2151.html),其次推荐一个 win-tc 1。91,支持 windows 下的编译器。(下载地址:http:/www4。skycn。com/soft/17869.html)、关于养成良好的编程习惯基本上每本 C 教材上都要提到.作为新手这条一定要时时遵守。具体方面:(1)在比较复杂的代码后面要有注释.如果光溜溜一堆代码,别人就不可能看懂你的代码,而且也不利于查找错误.除非你一直编东西给自己看。能在代码里说明白的就一定要在代码里体现.比如变量名、函数名,在命名的时候尽量说明是干什么用的。(2)注意语句的嵌套不能过长,一般来说,一段代码里 Tab 要少于

7、 8 个.简单说就是语句最多 8 个嵌套.对于新手来说,这个标准还要下降。有一个好习惯是,把主函数尽量写简短。经常看到别人的代码是主函数只有几行,几个函数调用,而定义全在主函数外部。这样一是减少了主函数内部的嵌套,二是比较精简,容易读懂.(3)注意语句的选择.并不是分支语句就用 if 循环就用 while、for.在适当的情况下 switch 和 do while 语句也是要用的。在某些时候,switch 语句比 if 语句更加精练明了,而 do while 比 while 少一个循环.很多人对学习 C 语言感到无从下手,经常问我同一个问题:究竟怎样学习 C 语言?我是一个教师,已经开发了很多

8、年的程序,和很多刚刚起步的人一样,学习的第一个计算机语言就是 C 语言。经过这些年的开发,我深深的体会到 C 语言对于一个程序设计人员多么的重要,如果不懂 C 语言,你想写底层程序这几乎听起来很可笑,不懂 C 语言,你想写出优秀高效的程序,这简直就是天方夜谭。为什么 C 语言如此重要呢?第一:C 语言语法结构很简洁精妙,写出的程序也很高效,很便于描述算法,大多数的程序员愿意使用 C 语言去描述算法本身,所以,如果你想在程序设计方面有所建树,就必须去学它。第二:C 语言能够让你深入系统底层,你知道的操作系统,哪一个不是 C 语言写的?所有的 windows,Unix,Linux,Mac,os/2

9、,没有一个里外的,如果你不懂C 语言,怎么可能深入到这些操作系统当中去呢?更不要说你去写它们的内核程序了。第三:很多新型的语言都是衍生自 C 语言,C+,Java,C#,J#,perl。.。哪个不是呢?掌握了 C 语言,可以说你就掌握了很多门语言,经过简单的学习,你就可以用这些新型的语言去开发了,这个再一次验证了 C 语言是程序设计的重要基础。还有啊,多说一点:即使现在招聘程序员,考试都是考 C 语言,你想加入 it 行业,那么就一定要掌握好 C 语言。那么究竟怎样学习 C 语言呢?1:工欲善其事,必先利其器这里介绍几个学习 C 语言必备的东东:一个开发环境,例如 turbo C2。0,这个曾

10、经占据了 DOS 时代开发程序的大半个江山。但是现在 windows 时代,用 turbo C 有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C+,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。一本学习教程,现在 C 语言教材多如牛毛,但推荐大家使用C 语言程序设计谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。除此以外,现在有很多辅助学习的软件,毕竟现在是 Window 时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套.我向大家推荐一个“集成学习环境(C 语言),里边

11、的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个windows 下的 trubo C,初学者甚至不用装其它的编译器,就可以练习编程了,非常适合初学者。还有一个“C 语言学习系统”软件,不过感觉只是一个题库系统,如果你觉得题做的不够,不妨也可以试试。2:葵花宝典学习计算机语言最好的方法是什么?答曰:读程序。没错,读程序是学习 C 语言入门最快,也是最好的方法。如同我,现在学习新的J,C#等其他语言,不再是抱着书本逐行啃,而是学习它们的例程.当然,对于没有学过任何计算机语言的初学者,最好还是先阅读教程,学习完每一章,都要认真体会这一章的所有概念,然后不放过这一章中提到

12、的所有例程,然后仔细研读程序,直到每一行都理解了,然后找几个编程题目,最好是和例程类似的或一样的,自己试图写出这段已经读懂的程序,不要以为例程你已经读懂了,你就可以写出和它一样的程序,绝对不一定,不相信你就试一试吧,如果写不出来,也不要着急,回过头来再继续研究例程,想想自己为什么写不出来,然后再去写这段程序,反反复复,直到你手到擒来为止,祝贺你,你快入门了。3:登峰造极写程序的最高境界其实就是掌握各种解决问题的手段(数据结构)和解决问题的方法(算法)。是不是写出底层程序就是程序设计高手呢?非也,写底层程序,无非是掌握了硬件的结构,况且硬件和硬件还不一样,要给一个芯片写驱动程序,无非就是掌握这块

13、芯片的各种寄存器及其组合,然后写值读值,仅此而已。这不过是熟悉一些io 函数罢了。那么怎样才算精通程序设计呢?怎样才能精通程序设计呢?举个例子:你面前有 10 个人,找出一个叫“张三的人,你该怎么办?第一种方法:直接对这 10 个人问:“谁叫张三”。第2 种方法:你挨个去问“你是不是张三?”,直到问到的这个人就是张三。第三种方法:你去挨个问一个人“你认不认识张三,指给我看”。不要小看这个问题,你说当然会选第一种方法,没错恭喜你答对了,因为这个方法最快,效率最高,但是在程序设计中找到解决问题的最优方法和你用的手段却是考验一个程序员程序设计水平的重要标志,而且是不容易达到的。刚才这个问题类似于数据

14、结构和算法中的:Map 数据结构,穷举查找和折半查找。所以掌握好数据结构和一些常用算法,是登峰造极的必然之路。最后给大家推荐严尉敏的数据结构清华大学出版社,希望每一个想成为程序设计高手的人研读此书.今天,我能够自称是一个混 IT 的人,并能以此谋生,将来大家能一次谋生,都要感谢两个人:克劳德.香农和约翰。冯。诺依曼,是他们发现了所有的数字化信息,不论是一段程序,一封 email,一部电影都是用一连串的 1 和 0 进行编码的;是他们发现了我们可以利用一个预先编写好的程序控制机器,并使之完成我们期望它完成的动作.建议大家在心里默念三遍他们的名字,以示仰慕.当然,如果让你们带着现在的知识回到他们的

15、那个时代,那么就没有什么图灵奖了。C 语言程序设计是我们的专业基础课,但是 C 语言本身却是一个非常强大的工具,它是到目前为止最为广泛使用的工具,并且在可以预见的将来,它仍然是皈依为程序员的人们心中的神器.这个工具作什么的呢?它在人和机器之间建立了一个交流的平台.某天,你需要完成一个求 100 的阶乘的作业,于是你搬来一个最新的电脑,为它安装了最新的 windows vista 操作系统,然后坐在它的身前,喊“喂电脑,给我计算 100 的阶乘”,电脑说“ok,wait a moment”;过了一会,一盘香菇小白菜端了上来!呵呵,电脑不是 waiter,你喂它它是不会有反应的,如果你真的 wai

16、ta moment,恐怕你就需要 wait one more moment 了!一万年后,人们就把你命名成“望夫崖”。既然电脑不是伺应生,听不懂我们的话,那么我们要怎么控制它呢?如果你们给我装聋作哑,我会告诉你期末挂了你,哦,你立马老实了!对于电脑,我要怎么才能使唤它,让它为我工作呢?不错,我们有个强力工具,C 语言!好,我们把上面的场景复习一下:你要我算 100 的阶乘,于是我去机房上机,编写了一个程序:(参加 ppt.。.)运行程序,哦,结果出来了!有人认为,现在是 java 和。net 的时代,有谁还需要 C 以及汇编呢?孰不知,java 和.net 是建立在软件之上的,是为了垄断市场而

17、建立起来的体系,犹如挖好一个金壁辉煌的坑,请你往下跳,还自以为站在巨人的肩膀上,事实上成了坑底之蛙.要成为一个真正的程序员,并期望成为一个程序员高手,必须从机器出发,从 cpu 到操作系统,再到软件体系,高手的境界就是悟道后的明镜灵台,软件设计出神入化,我就是程序,程序就是我。听完我讲高手的境界,于是乎你很受感动,说:我要努力学习,向高手学习!隔天就买了一堆 MFC,VB,JAVA 以及.NET 的书回来,早上五点钟起来背书!这样是不行的,正确的入门方法只有一个,要证大道,唯有此法!同学们,从 C 语言入手,努力学好 C 语言!旁观者李四说:此人大笨也!我用鼠标随便拖几个控件,就是一个 xxx

18、 管理系统了,你用 C 语言怕是一年也写不出来吧!好吧,我要承认,讲这话的都已经是 mS的奴才了,别的我不了解,MFC 本身就是一个封闭的架构,从 MFC 入手学习,你只会形成一种封闭的思维模式,因为 MS 希望很多人只学会表面的东西,不致成为高手,所以它大力推荐所谓的可视化的程序开发工具,也真有很多人愿意上他的当,最后真正迷失方向。说他坐不了程序吧,他也可以作,但是如果程序复杂一点,出现问题时,问题出再哪里就搞不清楚了,反正是不清楚!梁肇新,大牛啊,他说:“我就搞不懂了,用鼠标怎么写程序呢?在我的公司里,高手的键盘响个不停,鼠标偶尔响一下,新手是鼠标响个不停,键盘偶尔响一下,他们的薪水相差的

19、就不是一倍那么多了!C 语言是各大操作系统的基础,Unix、Linux、Windows 其内核都清一色是 C语言开发的,(某些地方是和汇编语言混合开发的),君不见 Windows API 都是C 语言函数的接口?Unix/Linux 绝大多数应用都是 C 语言开发的;Windows应用程序用纯 API 开发已然不多,大多都是依靠某种 Application Framework,比如所谓的 VC+,其实就是指 VC IDE+C+语言+MFC(现在重点已转向ATL、WTL),但是 Windows 服务、网络、驱动程序等底层软件,还是 C 语言开发的.各种语言的编译器,包括 java 虚拟机,都是用

20、 C 语言开发的.各种嵌入式设备,如手机、PDA 也都是 C 语言开发的。C 语言历史悠久,其内容也绝非谭浩强老师的C 语言程序设计(第二版)所描述的那么简单-那本书只是针对中国国情的教学入门书而已。学生总喜欢问:那种语言好?学那种语言有前途?这种问题天天在讨论,永无休止。其实我觉得大家所关心的,无非是那种语言更有“钱途”,学习那种语言毕业后能够轻松找到高薪的工作-当年我也是这么想.那么,我告诉你,如果你精通 C语言,请你去华为,不要在小池塘里浪费青春了!OK,听了我苦口婆心的劝告,你准备从 C 语言入手,开始攀登程序员高手这座山峰了,在你出发之前,你的行囊中需要准备什么呢?第一个要装进行囊和

21、你一起前进是“规范的格式”,有很多教科书,参考书,不太注重程序的格式的问题,写出的程序就象一堆堆的垃圾一样,这也导致了现在很多人写的程序中有很多的废码,垃圾代码,这和那些入门的书有非常大的关系,要把那些作者都拿来打打 PP。真正的商业程序绝对是规范的,张三写的程序和李四的程序格式大致相同,各种标识符的命名规则一样,否则谁也看不懂你写的程序。如果写出来的代码谁也看不懂,那绝对是垃圾。如果要把那些垃圾翻半天,勉强才把金子找出来,那这样的程序不如不要,还不如重新写过,这样,思路会更清楚一点。所以说,规范的格式是入门的基础。那这个规范的格式包括什么呢?不少啊,要坚持才能做到!长标志符命名,代码缩进,一

22、对大括号范围不超过一屏幕,等等.第二个要装进行囊的是耐心,所谓工欲善其事,必先利其器。要想成功,没有一个相对平淡的过程是不可能的。这不仅仅指你在学习过程中要有耐心,要循序渐进,而起也说的是另一个重要的方面:调式程序。调试是写程序过程中一个重要的方面,如果有人能一次写成程序,牛啊,而且是大牛,不光是大牛,还是老子骑的那头青牛,凡人是做不道的!调试是每个程序必定经历的历程.经常有同学问我:老师,我的程序完全没错误啊,都是照书抄的啊!怎么就运行不出来呢?对于这个问题我也看不出来!你们有问题可以找我,找其他的老师,老师找谁啊?李师父?那是很荒谬的!我就只好坐下来调试,这个说实话,调试是很枯燥的,所以有

23、同学抱怨说我操作太快,不理解为什么要这样,为什么要那样,我的脾气不太好,一烦躁就会骂人地,所以,这个就需要你们自己修炼内功了!有了这两个就可以了,可以出发了,估计有人说了,英语和数学不要了?大家都说大学生了,这种问题就不要问了嘛!你已经用早晨和傍晚的时光学习了英语了,我这个没有要去,计算机专业英语超简单,小学水平而已,记住一些专业词汇就可以了!关于数学,说数学好,写程序就好是没有科学根据的!我就有个同学,数学回回 100 分,写程序也就是 hello world 的程度,不过人家现在是数学博士了!惭愧啊!做为的大学生,而且是我们这个专业的大学生,已经完全具备了写程序所需要的数学素养了!所以这个

24、不是我们要担心的,Ready?Go!第一招,学什么呢?打狗棍法!呵呵有一个伟人说过:“重复权威是成熟的必经之路”,这是站在巨人的肩膀上的做法,习武之人首先要学的都是各种套路,比方说辟邪剑法,然后才能融会贯通,开宗流派;我们学习写程序也要这样来,这是一个捷径,帮你走得更远得捷径.看书,看好书!书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十年的功力,那么你的内功也会迅速上升 1 甲子。:)书当然要看好书,只有好书才营养丰富。要做到读书破万卷,编程如有神;枯燥的看书是很郁闷的,很容易变成化石!现在很多是书都是用源码说明问题的,源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看

25、。可以说高手的经验大都是源自代码,最后也都化成源码展现在大家面前,把书上的程序一个一个的输入(用键盘,用你的手指)到电脑中,编译运行.自己手工输入这一步不能省略,现在很多书有配套源码,很多同学或者成年人学习的时候都耍小聪明,直接把源码复制过去编译运行,hoho,这是没有效果的。自然,我让你输入程序不是让你练习盲打,你在输入的过程就可以品出程序的好坏来了,如果发现自己输入了很多重复代码,那至少这个程序的结构就不好了,穷则变,变则通嘛,你就想改进它啊,这不是很好吗?当然,程序输得多了,盲打功力也上了一个台阶,键盘敲得快了,薪水也跟着涨上去了!_不过,键盘敲得快不代表你的程序就写得好,否则学校只要每

26、个学生发一份盲打联系软件,四年毕业后,个个都是程序高手了!好了,你输了一个程序进电脑了,锻炼了手部肌肉,也运行出了结果,愉悦了身心,就此满足了?那离高手还远呢,要变成高手,你还要锻炼一下你得脑部肌肉!拿起你得笔,拿起你得纸,用你得大脑,这号称世界上最精密的机器来运行你输入的程序,记录下不同运行时刻变量的值,记录下程序的运行分支,最后发现,这个程序被你解剖到了纸上,我相信也解剖到了你的心里!这是捷径的核心,一定要记住,输入的程序不是说正确运行就完事了,要去阅读一下代码,利用笔和纸做辅助工具,做一下笔记,这就是重复权威,当然,如果你是天才,那请你塞上耳朵,你不在我们讨论的范围之内!为什么这一步很重

27、要呢?大家刚开始学习的时候,是不是有种感觉,如果让你写一个程序,你从哪里下手呢?前面?后面?上面?下面?为了解决这个问题,我的程序该如何写呢?抓耳挠腮,好烦啊,于是乎干脆睡觉去,不写了,你看,这种行为是要打 PP 的!练武功,总是先重复师父的动作,才能有自己的动作,所以也让我们重重复别人写的程序开始,然后再写自己的程序吧!遵循这个方法,你们就跟着组织走上了通往罗马的大路了!接下来,你得走啊,不走怎么到罗马呢?把你学会的程序设计方法应用到你写的程序中去啊!某天,你看到这里有个问题,你有了想法,怎么办?上机去,和键盘奋战去!stop,stop!暂停一下,上机之前,不要忘记了你的笔和纸,勇敢地把你的

28、想法写下来,如果写不出来,就不要去机房浪费爸爸妈妈的血汗钱了!当然,你不能乱写啊,写出来的东西怎么样才叫不是乱写的呢?实践是检验真理的唯一标准!用你的大脑去运行一边啊,不是叫“人程序合一”嘛?,这就是了!学武功就要学绝世武功!虽然号称最精密,实际效果上,人脑还是没有电脑的准确度的,如果你的大脑能马马虎虎地运行出来之后,那么OK,带上规范的格式和耐心,去上机吧!自然,我们说一天到晚面对字符界面的 TC 是有些郁闷,大家都习惯了windows,微软的客户体念设计中心可不是吹出来的!windows 多好,色彩斑斓的。当你修炼到我这个程度的时候,非要听这京剧才文思泉涌的写程序的时候,当然要用 wind

29、ows 下的集成开发环境了.但是对大家来说,不是现在,windows是很危险地,程序员还是回到 TC 中去吧!TC 至少有一个好处,可以锻炼我们使用组合键的习惯,可以锻炼我们使用键盘编程的习惯,回想我们刚刚说的梁某说的话“用鼠标怎么编程呢?有同学不免要提出疑问了,我是 80 年代甚至是 90 年代生人,你还让我面对那么枯燥的输入输出界面?我跟你有代沟!我期待有更丰富更吸引人的交互手段哦,这个问题问得好,C 语言中也有图形啊,完全可以满足大家寓教于乐得心理!让我们来看这个程序,很简单,就是在屏幕上话一个周期得正弦波!(参见 ppt.。.)运行效果是不是很好?你学数据结构的时候,树啊,图啊,你都可

30、以这样输出啊,很多地方你都可以做的更好呢!好了,到这里,我们基本解决了在学习 C 语言程序设计时的一些方法论的东西,关于具体的学习过程,如果你要我在这里给你们讲指针要如何学习?函数要如何学习?那我讲的内容也不会多于任课老师的内容,或者开个专题叫“如何学好指针”,当然,如果你愿意和我探讨一下指针的本质和高级应用的话,课后,课后啊!现在,我们要谈最后一个问题!我们这个专业的女生的比例较其他的工科专业还是要高一些的,不知道为什么经常到如下的说法:1,我是女生,我不适合写程序啊;2,我的性格比较外向,不适合坐下来安静的写程序呢!性格外向不适合写程序?你们看我啊,觉得我是性格内向的任吗?程序员也非常需要

31、发散的外向型思维,老比,地球上最富裕的人说,他招程序员更愿意招原来是学物理的人,因为学物理的人的思维可以从极大(宇宙)到极小(原子)。所有,说性格外向不适合写程序的话是懒惰的借口,是要掩盖他不可告人的目的的接口!狂打 PP!女生又为什么不适合写程序呢?我到知道一个理由,对皮肤不好啊!你们看我这满脸沧桑的,就知道了!除此之外,还会又其他的理由吗?英国科学家早就证明了男女的区别完全不是人们想象的那样,很多方面女性是要超过男性的!想想以前的母系社会,现在的惠安女!我就见过一个上市公司的研发二部全是女性!,从软件工程师到硬件工程师再到部门经理都是女性,业绩根本不输其他的研发部门,这个公司在湖南,不是我

32、瞎掰的!同学们,问大家一个问题,“二十一世纪最贵是什么?,不错,是人才,所以,我可以负责任地告诉大家,“不学好 C 语言,老师很生气,老师很生气,后果怎么样啊?是很严重!Thats all,thank you!学习 C 语言不是一朝一夕的事情,但也不需要花费十年时间才能精通。如何以最小的代价学习并精通 C 语言是本文的主题。请注意,即使是“最小的代价”,也绝不是什么捷径,而是以最短的时间取得最多的收获,同时也意味着你需要经历艰苦的过程。一、要读就读好书,否则不如不读所有初学者面临的第一个问题便是:如何选择教材.好的开始是成功的一半,选择一本优秀的教材是事半功倍的关键因素.不幸的是,学校通常会帮

33、你指定一本很差劲的 C 语言课本;而幸运的是,你还可以再次选择。大名鼎鼎的谭浩强教授出了一本C 语言程序设计,据说发行量有超过 400 万,据我所知,很多学校都会推荐这本书作为 C 语言课本。虽然本人的名字(谭浩宇)跟教授仅仅一字之差,但我是无比坚定地黑他这本书的。这本书不是写给计算机专业的学生的,而是给那些需要考计算机等级考试的其它专业学生看的。这本书的主要缺点是:例子程序非常不专业,不能教给你程序设计应该掌握的思考方式;程序风格相当地不好,会让你养成乱写代码的恶习;错误太多,曾经有人指出过这本书的上百个错误,其中不乏关键的概念性错误。好了,这本书我也不想说太多了,有兴趣大家可以百度一下:)

34、Kernighan 和 Ritchie 的The C Programming Language(中译名C 程序设计语言)堪称经典中的经典,不过旧版的很多内容都已过时,和现在的标准 C 语言相去甚远,大家一定要看最新的版本,否则不如不看。另外,即使是最经典最权威的书,也没有办法面面俱到,所以手边常备一本C 语言参考手册是十分必要的.C 语言参考手册就是C Reference Manual,是 C语言标准的详细描述,包括绝大多数 C 标准库函数的细节,算得上是最好的标准C 语言的工具书.顺便提一句,最新的C 程序设计语言是根据 C89 标准修订的,而C 语言参考手册描述的是 C99 标准,二者可能

35、会有些出入,建议按照 C99 标准学习.还有一本 C 和指针,写得也是相当地不错,英文名是 Pointerson C,特别地强调指针的重要性,算是本书的一个特点吧。不过这本书并不十分适合初学者,如果你曾经学过 C 语言,有那么一些 C 语言的基础但又不是很扎实,那么你可以尝试一下这本书。我相信,只要你理解了指针,C 语言便不再神秘。如果你已经啃完了一本 C 语言教材,想要更进一步,那么有两本书你一定要看。首先是C Traps and Pitfalls(中译名C 陷井与缺陷),很薄的一本小册子,内容非常非常地有趣。要注意一点,这本书是二十多年前写成的,里面提到的很多 C 语言的缺陷都已被改进,不

36、过能够了解一些历史也不是什么坏事。然后你可以挑战一下 Expert C Programming(中译名 C 专家编程),书如其名,这本书颇具难度,一旦你仔细读完并能透彻理解,你便可以放心大胆地在简历上写“精通 C 语言”了。切记一个原则,不要读自己目前还看不懂的书,那是浪费生命。如果你看不懂,那你一定是缺失了某些必需基础知识。此时,你要仔细分析自己需要补充哪些内容,然后再去书店寻找讲述的这些内容的书籍。把基础知识补充完毕再回头来学习,才会真正的事半功倍。二、Unix/Linux 还是 Windows,这是个很大的问题不同的编程环境会造就出不同思维的程序员.Windows 的程序员大多依赖集成开

37、发环境,比如 Visual Studio,而 Unix 程序员更加钟爱 Makefile 与控制台。显而易见,集成开发环境更容易上手,在 Windows 上学习 C 语言,只需要会按几个基本的 Visutal C+工具栏按钮就可以开始写 Hello,World!了,而在 Unix 下,你需要一些控制台操作的基本知识。有人也许认为 Unix 的环境更简洁,但习惯的力量是很大的,大家都很熟悉Windows 的基本操作,而为了学习 C 语言去专门装一个 Unix 系统,似乎有点不划算。对于一个只懂得 Windows 基本操作、连 DOS 是什么都不知道的新手而言,尽快做一些有趣而有意义的事情才是最重

38、要的。用 C 语言写一个小程序远比学习 ls、cat 等命令有趣,况且我们要专注于 C 语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile 的写法等等等等.所以我建议初学者应该以 Visual C+6。0(不是 VisualC+。NET)或者 Dev C+作为主要的学习环境,而且千万不要在 IDE 的使用技巧上过多纠缠,因为今后你一定要转向 Unix 环境的.Visual C+6。0 使用很方便,调试也很直观,但其默认的编译器对 C 标准的支持并不好,而 Dev C+使用 gcc 编译器,对 C99 的标准都支持良好。使用顺带提一下,很多大学的 C 语言课程还在使用Tur

39、bo C 2.0 作为实验环境,这是相当不可取的,原因其一是 TC 2。0 对 C 标准几乎没有支持,其二是 TC 2。0 编译得到的程序是 16 位的,这对今后理解 32位的程序会造成极大的困扰(当然,用 djgpp 之类的东西可以使 TC 2.0 编译出32 位程序,不过那过于复杂了)。等你学完一本 C 语言的教材,你一定要转向 Unix 平台继续学习,几乎所有的 C 语言高级教程都是基于 Unix 平台的(比如C 专家编程)。转变的过程是痛苦的,你需要面对的是各种纷繁复杂的命令,完全不同于 Windows 平台的思考方式,但是这种痛苦是值得的。Unix 与 C 是共生的,Unix 的思考

40、方式和习惯更加符合 C 语言的思考方式和习惯.在 Unix 下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查看某个库函数的联机手册,还可以看到最优秀的代码风格(说到代码风格,我会专门写一篇文章详细叙述)。归结起来就是一句话:初学 C 语言,建议使用 Windows 系统和集成开发环境,在准备向“高手”方向努力时,请先转向 Unix 平台.三、万事俱备,你就是东风书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了.请从书的前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书

41、,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。学习 C 语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本上有的例子,自己还要“创造一些例子,比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如p+和(p)+,又比如 a=b=c、(a=b)=c 和 a=(b=c)等等。自己抄的书上的例子以及改造之后的例子,还有自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上

42、简短的注释,阐述这个例子的意图。例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码.很多人不重视习题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的知识。也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学习的一笔财富.以我自己举例,阅读Windows 核心编程时(我只阅读了 3/4 的内容),除了抄书上的代

43、码,还自己写了很多例子,一共有 5574 行(用 unix 下的 wc 工具统计),时隔多日,我早已记不清 Windows 的系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这种方式只适合学习需要精通的技术,如果不是学习 C 语言,你还要具体情况具体分析。写到最后,还有非常非常重要的一点没有提及代码风格,从最开始学习就必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专门的一篇文章来详细

44、讨论,请大家关注程序员之路关于代码风格.题目是关于 C 语言,其实我主要想说说程序该怎么学,或者一点感悟罢了,在这里,我只想引用身边的几个人的例子,来谈一下对程序学习的理解第一个人要说到我了,我对程序产生兴趣,是听说程序可以作游戏,那时候是在初一,然而借来一本 G-BASIC 简明教材后,我便傻了眼。陌生的词汇,古怪的逻辑,都是些天文的中文译本,头疼了好一阵子。然而当时又没有别的闲书可看,我就整天捧着那一本书,什么方法都试过了,甚至倒着看过了,都没看出什么眉目,自己又没有电脑,只能不停地大胆地想象,然后满脑子的疑惑在这里停一下,上面说的便是我学习的风格:总要经历一番波折,瞎折腾几下,然后才会有

45、偶然间的明悟开窍了!我甚至没见过几个人有我这么笨,现在明白过来了,我总是一开始把事情想得过于复杂,造成狗咬刺猬的难堪的局面,然而竟然有意想不到的收获!但是不建议大家模仿这种风格,起码追女朋友的时候不能这样,生活中很多机会在于接手的那一瞬间,失去就永远找不回来了。现在回来,后来偶然间,我看懂了一行代码,是print 语句,当时兴奋得要命,又仔细看了这个看了那个,一下子看懂了很多东西,像是在霎那间被什么给击中似的,立刻间醍醐灌顶。.。初三在学校学了 FOXBASE,基本上自学的,我发现了一件奇怪的事,我这人是出了名的记性不好,然而当时背程序中的命令却是过目不忘,到现在还记得很多,也许是感兴趣吧,也

46、感谢我的微机老师给我提供自由上机的机会!后来我又自学了 QBASIC,初四暑假又学了一点 C,那时学 C 遇到不少困难,当时我们学校机房连 C 语言都没有,我只好闷在家里,一本二级 C 教材,一本配套习题,整天发呆地想,把自己的脑袋当电脑 cpu 使,有时进入死循环,有时又彻底崩溃。我花十几天看完了一本书,做完了一本题,然而脑袋里充满了疑惑,由于没有上机实践的机会,我就凭自己的猜测与推理己慢慢建立了一大堆理论,十分得意与自信,但后来证明大部分是错的,害我花了很长时间去纠正,这是后话.可是,还是那句话不破不立,不阻不行.就像我现在有了电脑,整天泡在互联网的海洋里,感受着快餐文化,好久都没静下心来

47、好好想点东西了.高中还上过几节电脑课,只不过忙于应付高考,我将学程序的打算放弃了,到这里我该说下一个人了。高中时坐我旁边一女生,她的文曲星里有 BASIC,我偶尔拿过来编了几个小程序玩,她看到后很感兴趣,令人惊讶的是,她只看了三五个程序,听我讲了几个命令的功能,就能根据自己的想象编出小动画来,她此前是绝没有学过程序的!我曾一度怀疑过她的智商,然而她程序是如此之快,却让我的眼都瞪大了好几圈,比我当年高了好几个境界!我后来经常在想,是不是我当时的方法不对,程序到底应该怎样学。.。一晃就到了大学,我碰到另一个让我佩服的人,跟我一样是学计算机的,他是偶尔看到我在编动画,然后十分感兴趣,便开始自学。他令

48、人吃惊的是,指针,结构体,位运算等等,都没搞懂(更不用说算法和数据结构),只学了三种程序结构,现在只学了 C 半年,便自己能编出贪吃蛇,俄罗斯方块,扫雷,还有很多叫不出名字的小游戏来,现在又在写黑白棋,我知道我确实是走了不少弯路。程序应该怎样学,对 C 来讲,我觉得应该从画图学起。原因有二。一,画图程序很能振奋人心的,它能带给你浓厚的兴趣,这是学程序的关键。二,画图程序容易上手,很简单的道理,就能做出很漂亮的东西来。有很多东西甚至不用看课本,就能自己推出来(我认为推理的方法很重要,它是你自学的必要条件)。比如画一个圆,从数学角度来分析,要确定一个圆,只需知道它的圆心(x,y)与半径 r,那好一

49、个圆就画出来了,circle(x,y,r);其它的类推,再画一个立体的,选择立方体,再分析,只要知道两个对角的坐标就行了吧,翻一下课本,不是这样,为什么?你或许会想到,电脑屏幕本来就是平面的,用立体坐标的理论在这里,恐怕就不是最简单的方法。所以它采用的应该是两个平面图形平移。此处留下疑问,立体图形在平面坐标中怎么表示?自己慢慢研究,很浅的东西。想作动画吧,想象一下动画的原理只是从一个图形变幻到另一个图形,不同地变幻就出现动画效果,那就可以画一个,擦了,再画一个新的,再变化。数学功底好的话,从二维到三维,从静态到动态我认为是很快的过渡。具体该怎么学呢,你可以多找几个画图的例子,敲到电脑里,多敲几个,慢慢地你就会知道哪些东西是干什么的,慢慢地就会自己做出东西来.但这里不要沉溺太久了,先学画图只是帮助你轻松地入门(很多人 C 学完了还没有入门)。从画图里暂时走出来,你应该打打基础了,这里不再赘述。可以边学边实践,物理,数学课本中很多问题都可以用程序来演示,来解决,尝试着多做些东西,这比你老学课本中的模型强多了,只有你自己去体会才能知道。就到这里。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁