C语言->程序员的梦工厂
读计算机相关专业的学生开学一般会接触到两门课程《计算机科学导论》、《C语言XXX》。如果没有基础的情况下,这两门课程可能水水就结束了,尤其是第一门功课,相比较而言更容易划水。但是现在来看,第一门功课对整个计算机学科学习的过程都很重要(回头看目录就可以很明白),由此来看重要性,可见一斑。要这篇文章主要是我个人对C的理解和总结。
一、C的知识点
我这两天大概总结了一下C的知识框架,总体来说,重点,难点不多(图示中已经红色标注)。回过头来看C,更多需要注意的是细节,大部分会说C语言里面最难理解的是指针,至于指针这部分我的理解而言,最主要的是要理解C的编程核心—内存,这样会更好的帮助我们理解指针和C程序。文章的最后将罗列自己在学习C语言过程中整理的一些资料,这里会有这些资源的介绍和链接,大家可以自行下载学习。如果没有积分的同学可以私信我。
C主要知识点的框架(不完全详细):
我稍微对图中的内容做一下解释:其中前面的C程序基础知识,可能很大部分局限于C语言中,包括有关键字、运算符、表达式、数据类,以及后面的指针部分,不具有其他语言的通用性,但是语言都是相通的,学好这一部分内容,对于往后的学习其他语言C++、Java、php、Python的基础知识帮助很大。另外的一部分数组,函数,文件这部分在其他的语言中都基本上有着通用的思想,所以学习后面这一部分也十分关键。例如学好结构体,数据结构会用到,学好函数对于算法的学习很有帮助等。
二、如何学习C
总体上来说学好C语言的关键在于应用,知识点可以理解,总结,要想真正的学会C语言,动手实践十分的关键。
1.理解编程语言
可以去阅读以下《计算机科学导论》中的第9章、第3章的部分,学习一下关于程序设计语言的部分,需要了解一下面向过程的模式编程,了解数据存储的知识。C语言是一个基于内存为核心的编程语言,理解好内存尤为关键。
2.动手实践—ACM编程
我C语言学习历程:
第一学期,把C当成高中里面的数学、物理科目来学习的(还没有跳出高中学习方式),单纯的知识点记忆,理解。结果可想而知,后来考试差点挂。。。
第二学期,开始学习C++,同时接触到了我们学校的OJ系统(ACM竞赛的试题),绝大部分是用C语言进行编写的,可以说OJ完全提升我整个人的编程能力,从开始选拔时一场比赛一道a+b都没有输出,到最后喜欢上OJ,喜欢AC,喜欢上编程,都源于OJ。听说我们学校在2017年的亚洲ACM竞赛上,拿到了一金四银五铜的好成绩,再此表示庆祝。我本科期间遗憾的事情之一就是没有参加ACM竞赛,拿取一些奖项。这里很感谢我的本科母校提供给我ACM编程的平台:BUCTOJ。
下面给出我们北化工的OJ平台地址:http://202.4.155.100
校外访问需要通过VPN:https://vpn.buct.edu.cn/JudgeOnline/,DanaInfo=202.4.155.100+
北京大学OJ:http://poj.org/
浙江大学OJ:http://acm.zju.edu.cn/onlinejudge/
杭电OJ:http://acm.hdu.edu.cn/
这些OJ系统一般都是可以注册进行刷题的,每天坚持做10道题,一个学期下来,你会发现你进步了很多。
附图(我第一个OJ程序):
![]()
当然第一步是最困难的,编译错误啊、答案错误啊、格式错误啊……总之各种错误。O(∩_∩)O哈哈~
尽情享受在ACM中吧~~
3.动手实践—小项目编程
除了OJ之外,能不能做其他事情呢,当然可以,可以用VC编写一些小程序,比如说计算器、贪吃蛇。也可以是结合后面学习的数据结构,算法编写一些具有实际意义的程序,比如基于最短路径的问题,基于结构体的信息管理的项目等等。整体上来说对C的提升能力也很高,OJ侧重于数学和算法,而后面的小项目更侧重于整体C的灵活运用。建议两者前后前后都进行实践,尤其是OJ,毕竟后面的项目,学习过程中,课程上都会有要求。
三、附上资源
文章中知识框图(visio制作),点我下载
ASCII码对照表+运算符的优先级和结合性+C语言常用库函数源码下载实例,点我下载
BUCTOJ题目部分源代码(参考使用),点我下载
项目实训编程—贪吃蛇,点我下载
项目实训编程—坦克大战,点我下载
C Primer Plus(第五版)中文版,点我下载
深入浅出MFC,点我下载
[软件工程师典藏:MFC 程序开发参考大全].宋坤等.扫描版,点我下载
Windows程序设计,点我下载
- Windows图形编程,点我下载
结语
后面在C的知识模块,会有关于上知识框图中的部分知识介绍,包括有程序结构,数组,函数,指针,文件读写等部分,主要是通过程序介绍和学习。希望大家在程序创作的这条道路上越走越远,毕竟AI火的已经发紫,所以什么都有可能~~