图书前言

    C语言程序设计项目化教程大多数计算机程序设计工作的从业者几乎都是从学习C语言开始的,而我国大多数理工院校几乎都把C语言作为计算机相关专业的入门课程。所以C语言教材在专业教学中就显得尤其重要。

    笔者从事计算机语言教学二十余年,先后教授过十多门语言课程,在教学过程中笔者发现这样一个现象:某些学生C语言学得比较扎实,那么这部分学生在学习其他计算机编程课程时就显得非常轻松,理解和掌握得都比较快。相反,C语言学得不好的那部分学生,在学习其他计算机课程时就非常吃力,从而导致他们对所学的课程产生恐惧和厌恶感,最终完全放弃有关课程的学习。

    我曾经多次和学生们座谈,了解他们的想法,特别是那些学习吃力的学生,他们这样对我说: “老师讲课的时候听得很明白,可是一旦自己动手就不知道如何下手。”归根结底是学生对所学的知识不理解或者不会运用,并且在有疑难问题的时候又得不到及时的指导。

    我也曾经让学生多看书,而学生反映某些书的表述太过专业和枯燥,有些内容看不懂,从而失去了阅读教材的兴趣。

    作为一名老师,不可能总是和学生们在一起为他们解答疑难问题。再说一名老师要面对数十个甚至上百个学生,这样分配给每个学生的机会就非常少。此时唯一能做的是给学生们选择一本好的书来陪伴他们,使学生随时可以从书中找到问题的症结所在。

    虽然目前市场上有关C语言的书籍和教材很多,但大多数书籍的语言表述太过专业,且复杂的例题和案例没有思路分析。这对于有编程语言基础的读者来说并不困难,但对于还没有入门的读者来说显得比较困难。所以特别需要一本通俗易懂、带思路分析和综合项目设计的书,这会对学生的学习起到事半功倍的作用。

目前,各大院校几乎都在鼓励和开展项目化教学。个人认为,项目化教学应当根据不同的课程、课程开设的不同时期以及课程面向的教学对象来区分进行,不能用同一个标准来要求所有的课程。

   "C语言程序设计”这门课程是理论与实践并重的课程,并且大多数院校都在一年级开设本课程。也就是说, "C语言程序设计”这门课程是学生接触的第一门程序语言课程,学生们一点理论基础没有,如果此时盲目地开展项目化教学,势必会造成“头疼医头,脚疼医脚”的局面,同时由于学生们没有扎实的理论基础,以后遇到新的项目,他们就不知道如何下手。但是,我们也不能一味地讲解理论,而忽略项目应用,那我们的教学就成了纸上谈兵。我们常说“授人以鱼不如授人以渔”,在项目化教学中,项目就是“鱼”,项目的种类很多,任何一本书不可能讲完所有的项目,而“渔”就是项目的开发方法以及相关的理论。如何把握“鱼”与“渔”的关系,选择什么样的项目,就成了项目化教学和相关教材的一个关键因素。

以往的教材注重理论,例题往往只是为了佐证理论,并不考虑其实际应用如何。而真实的项目规模庞大,初学者因为没有相关的知识储备,在一个C语言的教学周期内完不成那些庞大的项目。另外,对没有任何编程经验的读者来说,他们迫切地需要一本既有严谨的理论又有合适的项目,同时又通俗易懂,让读者在无人指导的情况下能读懂的教材。

在这个背景下,笔者产生了自己写一本书的想法。

    C语言程序设计项目化教程前言本书设计了“小学生四则运算测试系统”和“简易学生成绩管理系统”这两个项目。考虑到知识的关联和学生的耐力,本教材在讲完循环结构(前4章)后,完成了“小学生四则运算测试系统”项目,这样既可以把前4章的知识串联起来,又可以让学生获取满足感和成就感。

学习完循环以后,学生的知识结构会上一个台阶,所以从数组开始,本书在讲授有关理论的同时,着手完成“简易学生成绩管理系统”这个项目。有“小学生四则运算测试系统”项目做铺垫,学生们自己很容易搭起“简易学生成绩管理系统”项目的框架。后面随着数组、函数、指针、链表以及文件的讲述,学生需要做的是用不同的数据结构去存储“简易学生成绩管理系统”中的原始数据,更改项目的细节部分,从而体会不同知识点的对比,直至讲完文件并实现学生信息的永久保存。当整个项目完成后,学生们从中不仅学习了理论,同时也知道这些理论都用在何处,例如如何开发一个项目等。

    C语言程序设计这门课程是一门实践忠于理论的课程,“看懂教材,听懂老师的讲课”并不是目的,大家一定要亲自动手,在计算机上实践所有的例题、习题和项目,尝试不同的实现方法。只有在计算机上反复使用,有关的理论才能变成自己的东西,成为大家活学活用的工具。

    在本书的编写过程中,得到了众多领导和同事的帮助和指导,在此对他们表示深深的祝福和由衷的感谢。

    由于水平有限,本书肯定有不足之处,请各位读者指正,在此一并表示感谢。