一个资深C语言工程师说如何学习C语言.pdf
《一个资深C语言工程师说如何学习C语言.pdf》由会员分享,可在线阅读,更多相关《一个资深C语言工程师说如何学习C语言.pdf(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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 甲子。:)书当然要看好书,只有好书才营养丰富。要做到读书破万卷,编程如有神;枯燥的看书是很郁闷的,很容易变成化石!现在很多是书都是用源码说明问题的,源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 资深 语言 工程师 如何 学习
限制150内