怎样才能学好C语言?
首先要和你一起收拾的是“标准格式”。教材参考书很多,不太注重节目的格式。写出来的程序就像一堆堆的垃圾,这也导致了现在很多人写的程序里面出现了大量的浪费代码和垃圾代码,这和那些入门书籍有很大的关系。那些作者应该是用来玩PP的,真正的商业程序是绝对标准化的。张三和李四写的程序格式大致相同,各种标识符的命名规则也相同,否则没人能看懂你的程序。如果写出来的代码没人看得懂,那绝对是垃圾。如果非要翻很久的垃圾才勉强找到黄金,那么这个程序总比没有好,还不如重写一遍,这样思路会更清晰。所以,标准格式是入门的基础。本规范的格式包括哪些内容?挺多的,要坚持才能做到!长标识符命名、代码缩进、屏幕中的一对大括号等等。
第二个要打包的是耐心。工欲善其事,必先利其器。想要成功,没有一个相对平淡的过程是不可能的。这不仅意味着你在学习过程中要有耐心,循序渐进,还指的是另一个重要的方面:模态程序。调试是编写程序过程中的一个重要方面。如果有人能一次性写出程序,那就是牛,而且是大牛,不仅是大牛,还有我骑过的青牛,凡人做不到!调试是每个程序都必须经历的过程。学生经常问我:老师,我的程序完全没有错误,是我从书上抄来的!为什么跑不起来?这个问题我也看不出来!有问题可以找我和其他老师谈。老师在找谁?李师傅?太荒谬了!我不得不坐下来调试。说实话,调试很无聊,所以有同学抱怨我操作太快,不明白我为什么这样做,为什么那样做。我脾气不太好,一烦躁就会骂人。所以,这就需要你练好自己的内功!
有了这两个,你就可以走了。我猜有人说,不要英语和数学?大家都说大学生,不要问这种问题!你花了一上午和一晚上学习英语。我不想去那里。计算机英语超级简单,只是小学水平。只要记住一些专业词汇就行了!说数学好写程序好是没有科学依据的!我有个同学数学考了100分,写的程序是hello world的水平,现在却是数学博士!你真可耻!作为一名大学生,同时也是我们专业的大学生,我们已经完全具备了写程序所需要的数学素养!所以这不是我们要担心的,准备好了吗?走吧。
第一招,学什么?用棍子打狗!嗯。多有趣啊
一位伟人曾说:“权威的重复是走向成熟的必由之路”,这是站在巨人肩膀上的修行。练武的人首先要学会各种套路,比如辟邪的剑法,然后才能互相精通,开流派;我们应该学会这样写程序,这是帮助你走得更远的捷径。
读啊,读啊!书里写的都是之前十年的经验写出来的。读十本书相当于学习了前面十年的技能,你的内功也会快速上升1。当然,你要看好书。只有好书才有营养。要读万卷书,编程如神;无聊的读书很压抑,很容易变成化石!现在很多书都是用源码来说明问题。源代码就像一个动画,就像幻灯片一样。我会一个一个给你看书中的招式。可以说大师的大部分经验都来自于代码。最后把华颂的源代码呈现给大家,把书中的程序一个个(用键盘和你的手指)输入电脑,编译运行。不能自己省略手动输入这一步。现在很多书都有配套的源代码。很多学生或者成年人学习的时候很聪明,直接复制源代码编译运行,hoho,这是无效的。
我自然不希望你盲目练习打字。在打字的过程中可以看出程序的好坏。如果你发现你输入了很多重复的代码,至少说明程序的结构不好。穷就改,改了就过去了。你只是想改善它。这不是很好吗?
当然程序亏了不少,盲打能力也上了一个台阶,键盘敲的更快了,工资也跟着涨了!^_^
但是,在键盘上打字快不代表你的程序写得好,否则只要学校每个学生发一个盲打联系软件,毕业四年后,每个人都是程序高手了!
好了,你把一个程序输入电脑,锻炼了手部肌肉,跑了成绩,身心愉悦。够了吗?那离大师还远着呢。要成为高手,需要锻炼大脑肌肉!拿起笔,拿起纸,开动脑筋。这是号称世界上最精密的机器来运行你的输入程序,记录变量在不同运行时间的值,记录程序的运行分支。最后发现这个节目被你在纸上解剖了,我相信也解剖到了你的心里!这是捷径的核心。必须记住,输入程序在正确运行时不仅仅是完成了。你要读代码,用纸笔做辅助工具,做笔记。这就是重复的权威。当然,如果你是天才,请塞住耳朵。你超出了我们讨论的范围!
为什么这一步很重要?
刚开始学习的时候,你有没有一种感觉,如果让你写一个程序,你会从哪里开始?前面?后面?在上面?下面?我应该如何写我的程序来解决这个问题?挠耳朵挠脸颊好烦,我就睡觉不写了。你看,这种行为是要打击PP的!
练武的时候总是要重复师父的动作,才能有自己的动作,那我们就从重复别人写的程序开始,然后自己写程序!
遵循这个方法,你就会跟随组织走上通往罗马的道路!
接下来,你要走了。不去怎么能到罗马?将你所学的编程方法应用到你的程序中!
有一天,你在这里看到了一个问题,你有了一个想法。你该怎么办?上飞机打键盘!停下停下。暂停。上机前不要忘了你的纸和笔。勇敢地写下你的想法。如果你写不出来,就不要去机房浪费你的血汗钱!
当然不能乱涂乱画。乱涂乱画是什么意思?实践是检验真理的唯一标准!用脑子跑一边,是不是叫“人与程序融合”,在这里!学武术就是学绝世武功!虽然说是最精确的,但实际上人脑还是没有计算机精确。如果你的大脑可以这么漫不经心的运行,那么OK,带上标准化的格式和耐心,上电脑吧!
我们自然说,整天面对角色界面的TC,有点压抑。大家都习惯windows了,微软以客户为导向的设计中心也不是吹出来的!窗户多漂亮多多彩啊。等你修炼到我这个水平,你得听这个京剧才子,写程序,当然你得用windows下的集成开发环境。但是对于所有人来说,不是现在,windows是非常危险的。程序员还是回TC吧!
TC至少有一个好处,可以锻炼我们使用组合键和用键盘编程的习惯。回想一下梁刚才说的“如何用鼠标编程?”有些同学难免会问问题。我是80年代甚至90年代出生的,你还让我面对这么无聊的输入输出界面?我和你有代沟!期待更丰富更吸引人的互动手段。
哦,这是个好问题。还有C语言的图形,完全可以满足大家寓教于乐的心理!我们来看这个程序,很简单,就是讲屏幕上的一个正弦波!
(见ppt...)
手术效果很好吗?学数据结构的时候可以输出这样的树和图,很多地方可以做的更好!
好了,在这里,我们基本解决了学习C语言编程中的一些方法论的东西。关于具体的学习过程,如果要我告诉你怎么学?如何学习函数?那我就不多讲老师讲的内容了,还是开个专题叫“如何学好指针”。当然,如果你愿意和我探讨指针的本质和高级应用,课后!
学习C语言不是一朝一夕的事,但不是十年就能掌握的。如何以最小的代价学习和掌握C语言是本文的主题。请注意,即使是“最小成本”也绝不是捷径,而是要在最短的时间内获得最大的收益,这也意味着你需要经历一个艰苦的过程。
第一,读一本好书,否则还不如不读。
所有初学者面临的第一个问题是:如何选择教材。良好的开端是成功的一半,选择一本优秀的教材是事半功倍的关键因素。不幸的是,学校通常会给你分配一本很差的C语言教材。幸运的是,你可以重新选择。
Kernighan和Ritchie的《The C Programming Language》(中文翻译为“C Programming Language”)是经典之作,但旧版本的很多内容已经过时,与现在的标准C语言相差甚远。大家一定要看最新版本,不然还不如不看。另外,即使是最经典、最权威的书籍也不可能面面俱到,所以手边放一本C语言参考手册是很有必要的。C语言参考手册就是C参考手册,是对C语言标准的详细描述,包括了大部分C标准库函数的细节,可以算是标准C语言的最佳参考书。对了,最新的C编程语言是按照C89标准修订的,而C语言参考手册描述的是C99标准。可能会有一些出入,建议按照C99标准学习。还有一本书《C与指针》,也写得相当不错。英文名是“Pointers on C”,特别强调了指针的重要性,这是本书的一大特色。但是,这本书不太适合初学者。如果你学过C语言,有一些C语言的基础知识,但是不是很扎实,那么你可以试试这本书。相信只要懂了指针,C语言就不再神秘了。
如果你已经吃完了一本C语言教材,还想更进一步,那么有两本书是你必须要看的。第一本是C陷阱和陷阱,一本非常薄的小册子,内容非常有趣。需要说明的是,这本书是20多年前写的,里面提到的C语言的很多缺陷都得到了改进,但了解一些历史也不是坏事。然后就可以挑战专家级的C编程了。顾名思义,这本书相当难。一旦你认真阅读,理解透彻,你就可以放心地在简历上写上“掌握C语言”了。
记住一个原则,不要看你目前看不懂的书,那是浪费生命。如果看不懂,一定是缺少了一些必要的基础知识。此时,你要仔细分析你需要补充什么,然后去书店找关于这些内容的书。只有把基础知识补上,再回来学习,才能真正事半功倍。
第二,Unix/Linux还是Windows是个大问题。
不同的编程环境会造就不同思维的程序员。Windows程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更喜欢Makefile和console。显然,集成开发环境更容易使用。在Windows上学习C语言,只需要按几个基本的visual c++工具栏按钮,就可以开始写Hello,World!在Unix下,你需要一些控制台操作的基础知识。可能有人觉得Unix环境更简单,但是习惯的力量很大。大家对Windows的基本操作都比较熟悉,专门为了学习C语言而安装一个Unix系统,似乎有点不划算。
对于一个只知道Windows基本操作,连DOS是什么都不知道的新手来说,尽快做一些有意思有意义的事情是最重要的。用C语言写一个小程序,远比学习ls、cat等命令有趣。除此之外,如果要专注于C语言本身,就不得不暂时忽略一些东西,比如编译链接的过程,Makefile的编写方法等等。
所以我建议初学者还是考Visual C++ 6.0(不是Visual C++)。NET)或者Dev C++作为主要的学习环境,也永远不要太纠结IDE的使用技巧,因为以后肯定要转向Unix环境。Visual C++ 6.0简单易用,调试直观,但其默认编译器对C标准支持不好,而Dev C++使用gcc编译器,对C99标准支持较好。对了,现在很多大学还在用Turbo C 2.0作为C语言课程的实验环境,这是相当不可取的。原因一是TC 2.0对C标准的支持很少,二是TC 2.0编译的程序是16位,这对于以后理解32位程序会造成很大的麻烦(当然用djgpp之类的东西可以让TC 2.0编译32位程序,但那也太多了。
当你学完一本C语言的教材,就必须转向Unix平台继续学习。几乎所有的C语言高级课程都是基于Unix平台的(比如C专家编程)。转变的过程是痛苦的。你需要面对各种复杂的命令,和Windows平台上的思维方式完全不同,但是痛苦是值得的。Unix和C都诞生于* * *,Unix的思维方式和习惯更符合C语言。在Unix下,你可以找到无数优秀的源代码让你读得烂熟于心,你可以轻松地查阅某个库函数的在线手册,还可以看到最好的代码风格(说到代码风格,我会写一篇文章详细描述)。
归结为一句话:对于C语言初学者,建议使用Windows系统和集成开发环境。准备“大师”方向时,请先转Unix平台。
第三,万事俱备,你就是东风。
已经选择了书,并且已经配置了环境。正所谓万事俱备,只欠自己的努力。请从书的序言开始,认真阅读教材。很多人喜欢直接从第一章开始读,这是不对的。前言是作者对全书的概括性介绍。作者一般会告诉你需要什么基础才能顺利看完这本书,可以帮助你检查自己是否具备基础知识。看完序言,还需要浏览目录,了解书的整体结构,顺便给自己安排一个学习计划。
学习C语言,一定要注意每一个细节。必须自己敲书上的示例代码。只有编译执行后的输出和书上的一致,才算学完了一个例子。如果不符,一定要认真查找原因。出了书中的例子,我还得“创造”一些例子。比如在学习运算符优先级的时候,我可以写几个相同的表达式,把括号放在不同的位置,看看有什么不同的行为,比如*p++和(*p)++,或者a = b == c,(a = b) == c和a = = (b = =)。自己抄的书里的例子,改造后的例子,自己创造的例子,都要认真分类保存,并在源代码里写一个简短的注释,说明这个例子的意图。
例完了,还有练习。我建议初学者独立完成所有练习,然后对比答案的代码,看看自己的代码有哪些不足,再尝试修改自己的代码。很多人不重视习题,这是一个很大的错误,因为作者通常在习题中讲解一些重要的道理,而不是简单的检验之前的知识。
也许你觉得学起来太慢了,其实不然。认真学习就不用回去了。后来学的时候发现前面没想通。那真是得不偿失。一般来说,看完整本书,无论是原封不动地从书上抄下来的,还是自己心血来潮写出来的,都要完成几千行甚至上万行代码,这对以后继续学习是一笔财富。以我自己为例。我看《Windows核心编程》的时候(只看了3/4的内容),把书上的代码抄了一遍,自己写了很多例子。一个* * *有5574行(unix下wc工具统计)。时间久了,我记不住Windows的系统编程,但只要花几分钟翻出之前的代码,我就又知道了。就是这个原因,好的记忆力不如烂的文笔。
认真阅读,认真抄写源代码,独立完成习题并做进一步的实验,最后把所有代码都留下来作为自己的经验和财富。绝对是辛苦的工作,事半功倍。当然,这种方法只适合学习需要掌握的技能。如果不是学C语言,要具体情况具体分析。
最后还有一个非常非常重要的点没有提到——代码风格。从一开始,你就必须强迫自己模仿最好的代码风格。因为代码风格太重要,内容太多,所以我会专门文章详细讨论。请注意程序员之路——关于代码风格。
题目是关于C语言的。其实我主要想说的是如何学习程序,或者只是一点感受。在这里,我只想引用一些身边人的例子,谈谈我对程序学习的理解。
第一个人将要谈论我。对程序产生了兴趣,但是听说程序可以当游戏。那是在初一的时候。但是,在借了一本简明的G-BASIC教材之后,我就傻了眼。
生疏的文字,奇怪的逻辑,都是天文中文翻译,让我头疼了好一阵子。
可是当时没有别的闲书可看,就整天抱着那本书,什么都试过了,甚至倒着看,什么也没看到。我自己没有电脑,只能大胆想象,然后满腹疑惑...
就此打住,以上是我的学习风格:总要经历一些波折,折腾几次,才会有偶尔的开悟——开悟!我甚至没见过几个人和我一样蠢。现在明白了,一开始总是把事情想得太复杂,导致狗咬刺猬的尴尬局面,我却有意外收获!但是不建议你模仿这种风格,至少在追女朋友的时候不要模仿。人生很多机会就在你接手的那一刻,失去了就再也找不回来了。
现在回来的时候无意中理解了一行代码,是打印语句。我当时太激动了,仔细看了这个看了那个,一下子明白了很多东西,好像一瞬间被什么东西撞了一下,顿时豁然开朗。。。。
如何学习程序?对于C,我觉得应该从画图开始。
原因有二。
首先,绘图程序非常令人兴奋,它能给你带来浓厚的兴趣,这是学习程序的关键。
第二,画图程序好用,做出漂亮的东西很简单。有很多东西甚至不用看课本就可以自己推出来(我觉得推理的方法很重要,是你自学的必要条件)。
比如画圆,从数学的角度来说,确定一个圆,我们只需要知道它的圆心(x,y)和半径r,那么就会画出一个好的圆,circle(x,y,r);
其他类比,画一个立体,选一个立方体,然后分析。只要知道两个对角的坐标。看课本。事实并非如此。为什么?你可能觉得电脑屏幕本来就是平面的,在这里用三维坐标的理论恐怕不是最简单的方法。所以应该用两个平面图形平移。这里有一个问题,如何在平面坐标中表达三维图形?自己慢慢学,很浅的东西。
如果要做一个动画,想象一下动画的原理只是从一个图形变化到另一个图形,变化不一样就会出现动画效果。然后你可以画一个,擦一擦,再画一个新的,然后换。。。
如果你有很好的数学知识,我想这将是一个从二维到三维,从静态到动态的快速过渡。
具体怎么学?你可以多找一些画画的例子,输入电脑,然后你就知道东西是干什么用的了,然后你就自己动手做东西了。
但是不要在这里沉迷太久。先学画图只是帮你轻松入门(很多人学了C还没入门)。
一会儿出图,你要打好基础,这里就不赘述了。可以边学边练。物理和数学课本上的很多问题都可以用程序演示和解决,可以尝试做更多的事情。这比你们老课本里的模型强多了,只有自己才能知道。
一、C语言的背景
c语言属于一种高级编程语言,它的前身是“ALGOL”。它的创始人是布朗?w?凯恩和丹尼斯?m?沥滤。c语言刚出来的时候局限性很大,因为只能在UNIX系统上使用。然而,随着科技的进步和计算机行业的发展,C语言逐渐从UNIX中分离出来。1987年,美国标准协会制定了C语言的国际标准,缩写为“ANSI C”,从此成为一种广泛使用的编程语言。c语言有许多优点,主要如下:
1.它兼有高级语言和低级语言的优点,属于中级语言。
2.它是一种结构化编程语言,非常适合结构化编程。
3.有丰富的数据类型、运算符和函数可供选择。
4.直接处理内存使得修改和编辑其他程序和文档变得容易和简单。
怎样才能学好C语言?
有人问我C语言难学吗,我说不。后来有更多的人问,我就萌生了写一篇如何入门C语言的文章的想法。
其实C语言很简单。它只是一个交流的规则,一个表达的工具,一个思想的容器。之所以觉得难,是因为我不习惯用计算机的特性来考虑问题。就像中国人定居英国一样。虽然你学过英语,但那只是一个想象中的英国,和英国的真实情况相差甚远,所以有一个适应的过程,通常被称为过渡期或磨合期。
想尽快入门,就得掌握计算机的特点。计算机的特征包括:
1,计算机需要一个完整的解题方法,并且会告诉它所有的可能性。人可以按照习惯忽略一些事情,但电脑不行。比如在解一元二次方程的时候,我们在考虑问题的时候就已经默认了A不等于0,更有甚者,从B中减去4ac也默认大于等于零。这是我们的习惯。既然有解,我们通常就把它当成实数解,所以你做的程序一般不考虑这两个条件,但是计算机不行。电脑是出了名的智障。计算机不具备和人类一样的智能处理能力。它是人类的忠实信徒,无论你怎么想,它都会执行你的命令。因为你的习惯,一些别有用心的人或者无意犯错的人犯错,有时候会让电脑不知所措。累,甚至崩溃,报错,导致你的程序不成功,所以你觉得很难。
2.计算机要求程序的描述准确无误。人类语言具有很强的随机性和模糊性。我们平时说话的时候,有时候会有一些寒暄,有时候说话的逻辑会说不清楚。词语既可以表达这个意思,也可以表达那个意思。人可以根据环境和对方想表达的意思来分析意思,最后得出正确的结果,但是计算机很弱智。虽然它很听话,但是它不能理解你的想法,只会按照你给的指令去做,这就会导致执行过程中的报警和出错。
3、计算机编程要求有很强的全局性和逻辑性,没有起伏。人的思维有很强的活跃期和休眠期,而计算机没有。他们随时待命。人在思考一个问题的时候,有很多乐趣,但是这不是问题的全部,而是一部分,所以做完一段代码之后,就不愿意再写了,或者觉得很辛苦,所以觉得很难。
计算机要求它的主人考虑问题要全面,要把所有可能的情况和处理方法告诉它,要学会冷静,要有稳定的头脑,要把需要交流的句子用单一的意思说清楚。
怎样才能快速学习C语言,更快的度过磨合期?当然,记住和理解C语言的语法规则是必不可少的。除此之外,我们还应该注意以下几个方面:
1,对变量和函数的概念有很好的理解,至少回头看一下初等数学。这是基础,否则先天不足,学习再好也成不了气候。
2、心态平衡,虽然不能达到“不以物喜,不以己悲”的境界,但至少不要浮躁,不要急于求成,欲速则不达。
3.培养自己的全球意识,可大可小。
4.严格按照程序设计流程设计程序,不要跳脱。没有规则,你不可能成为方圆。
5、努力提高自己的综合素质。程序是人类思维的表达,是人类思维和语言的结合。你对客观性的重视程度与你所拥有的知识成正比。不理解问题,不会处理问题,就写不出程序。
6、学会沟通,多交流,取长补短,团队合作也很重要。
总之,实践出真知,多学习,多实践,多思考,多交流,勤奋好学。
有不合适的地方请指教!