【编程指导】如何学习C语言,致初学者朋友

最近会有一些低年级的同学问,C语言不会写代码怎么办?大致上都是一些类似的问题吧,回想一下自己走过的路,反复的思考然后写了这篇博客,希望可以对一些迷惘的同学一丝帮助,那我将是莫大的欣喜与荣幸了。

回想一下,我去年的时候也和你是一样的状态吧,也有类似的疑惑,一年时间的成长,现在身在大二的我虽然谈不上很厉害吧,但是也算是走过了最初的那段迷惘吧,就分享一下自己的感受与经历吧,希望对以有帮助。

一:现在大一上学期应该只学一门专业课,除了数学与英语课之外,还是有很多的业余时间的,抽出一小部分去了解一些计算机的文化吧。举个例子吧,比如计算”机科学之父”,艾伦.图灵的生平啊什么的,了解一下他是如何以一个数学家的身份去首次提出图灵思想的,再比如他是如何创造性的提出“机器可以思考吗”这样子的论文而开创了AI的先河的。

这是说了一个人物的了解吧,再比如你可以去了解一下计算机的发展历史啊,比如第一台计算机是在1946年诞生于美国的宾夕法尼亚大学的;再或是去了解一下你们的C语言的发展史,等等等等,这些东西没有必要刻意的去看,兴趣来了偶尔去百度一下子,会开阔一下见识与思维的,而且还可以增加自己对相关领域的兴趣程度。

这些知识如果要系统的细看的话,可以去看<计算机导论>,或是<计算机科学概论>这两本书讲的是比较系统的,都是简单的提一下计算机科学体系吧,没有深入的讲解部分。

二:计算机科学知识的学习是最注重循序渐进的,注重基础的,万万不可跳跃性的学习,当然你是天才或是个别的话我只能膜拜了,至少我是一步一个脚印学过来的。我们不讨论哪一门语言才适合做大学计算机相关专业的第一门编程课的问题,我们是C语言,也听说很多学校都是以C语言为第一门编程语言对待的,我想大部分都是吧。那我们就把C语言尽自己的最大努力学好吧,有一些学弟学妹会问一些问题,自己不会敲代码怎么办?还有人会说能看懂别人写的代码,但是自己就是敲不出来。

这些问题我曾经也遇到过吧,首先要明确一个观念:C语言不难学,一点都不难学。这门课程不需要那么多的动脑筋的地方,就我感觉还没有数学难呢,当然这仅仅是一孔之见吧。入门一个语言最重要的是要选择一本好书,一本能够以最简单的描述来表达出基本知识的书,我想很多国内的首学C的人会选择谭老的C吧,我当时也不例外,因为毕竟是国人写的书,在问题描述与问题展开与循序讲解的过程中透漏的思考问题的方式都是符合国人思考方式的,所以易于理解吧,当然如果喜欢读外国的名著当然也是可以的,比如C之父的<C Programing Language>,这当然是传世经典之作了。

还要明确一个观念是:谭老的书仅仅是作为一个最基本语法的讲解书,看完谭老的书后确实会把很多语法细节学到,但是这也仅仅是语法,只能保证你会用这些语法了,你是知其然而不知其所以然。看完谭老的书后最好把<C Programing Language>这本书看看,而且更要仔细的看,这个时候有了基础后看起来会轻松一些的,会发现有很多原理性的讲解了,而且会有一些谭老书中讲不到的细节。看完了<C Programing Language>后会有一种小小的豁然开朗吧。

以上说的看书,过程应该是这样子的:看基本语法,看书上的例题,试着自己去敲一遍例题,即使你看懂了例题,但是让你合上书自己敲,我保证还是会出错的,肯定是某些地方理解的不够透彻,再看书,然后再敲,直到无误的敲出为止。慢慢的经过一段时间的坚持练习,会发现自己合上书后敲的时候错误越来越少了。然后是做课后的习题,最开始看懂例题去敲书后习题也是很难下手的,但是要尝试,第二次写习题就不会那么纠结了。编程容不得一点的掺假,必须要动手去敲代码,而且还要准确无误的敲出来。不可手写而不去上机验证。

还有就是培养一个习惯:先思考清楚问题,然后再去敲代码。因为我们敲代码仅仅是为了用程序设计语言把我们人的思维转换成了计算机可理解的方式了而已。有的同学会看完题目不思考就直接敲,发现总是会出一些错误,然后在那苦逼的各种改啊调试啊等等,这样子不是一个好的编程习惯。

三:认真的看书,做练习题,敲代码。这样子下来一个学期完全可以把C语言学好的,一般性的题目是没问题的。学习了程序设计语言后会发现我们的思维在慢慢的转变,我们思考问题的方式也在更加的严谨了,这是学习编程的结果。

如果有兴趣的话可以考虑进阶了,去学习<C与指针>,<C专家编程>吧,这两本书会介绍很多在课程老师讲不到的,在一般性的书上看不到的。更多的是站在编译器的角度去看待代码,看待基本的语法了。比如编译器如何编译语言并生成可执行二进制文件的?这个编译的过程是怎样的?编译器又是如何奖产生的.exe文件交给CPU执行的?一个基本语法的规则背后肯定是和编译器的某一项工作原理是契合的,举个例子吧:大家都知道的函数中的普通变量是在函数的调用结束后悔自动销毁的,而我们在函数中定义的静态变量,也就是用static修饰的类型变量,他的内存空间在函数调用结束后是不会销毁的,这是为什么呢?这是因为编译器为我们的程序分配的内存进行了一个分类,把不同类型的变量分门别类的存储,这样子便于管理。至于变量内存空间销毁与否的区别就不在这细说了。当然两本进阶的书我是当时没有看,也是后面的学习中翻了翻的。

四:最后不得不说的是,还要把数学学好,这个好并不是要投入很多的精力在上面,但最起码你要能独立写得出习题,考试不要分太低吧。计算机科学还是很依赖数学的,毕竟图灵与冯诺依曼两位大师都是数学家出身呢。数学更多的是培养一个思考问题的方式吧,通过做一些习题是很锻炼自己对问题的认识与整体把握的。

本文来自CSDN博客,作者:疯狂的红豆

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-06-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【编程思想】给学C++的人N条忠告

N条忠告: 1.把C++当成一门新的语言学习; 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programmi...

3578
来自专栏coding

写下这行代码时,只有我和上帝知道是怎么回事01.烂代码的路径依赖02.对于烂代码应采取零容忍03.代码规范的重要性04.文档的重要性

"算了,这里的代码有说不清的玄机,重构相当于在给自己挖更大的坑,还是按照原来的写法吧..."

553
来自专栏鸿的学习笔记

关于最近读的书的一些瞎扯

最近两个月是真的忙,忙的公众号都没有坚持更新了。现在我又回来了。在此准备瞎扯几句,顺便推荐下自己的最近读过的书,

652
来自专栏程序人生 阅读快乐

《UML面向对象建模与设计》

361
来自专栏飞总聊IT

SQL的坑,你入了吗?

SQL很常用,所以大家都觉得很简单。但是SQL的坑很多。多得超出了所有初学者的想象。我一个朋友,资深富帅码农点名要我回答一个问题,我觉得这个问题很有意义,就贴出...

34611
来自专栏从流域到海域

《笨办法学Python》 总结

《笨办法学Python》 总结 写到这里我决定停了,剩下的课程就是Python在各个方向上的应用,包括网络、数据处理等等。 有了前面的基础,你可以专门找一本书来...

1718
来自专栏量化投资与机器学习

几种编程语言的优缺点

我的旋风式简介会讲C、C++、Lisp、Java、Perl 、Ruby (我就是喜欢) 和 Python,把 Python 加进来是因为 —— 好吧,你看了就知...

45711
来自专栏牛客网

阿里一面

【每日一语】当你厌恶你身边的人,你表达厌恶最好的方式不是和他们争吵,而是自己勤快点儿,加把劲离开他们。那样,他们就永远从你的生活中消失,和死了差不多。

773
来自专栏带你撸出一手好代码

kotlin, 一种新的android平台一级开发语言

今天看到一则科技新闻, 大致内容是google将kotlin语言作为android应用开发的一级语言, 与java并驾齐驱, 这是一个开发界的大事件大新闻, 连...

3288
来自专栏java一日一条

记一次 Google 面试经历

这是我上周去面试的地方。很顺利,我觉得——至少我认为我已经尽我所能,并且无论发生什么事情对我都是有帮助的。

461

扫码关注云+社区