图书前言

前言

C语言作为国内外广泛使用的一种语言,虽经历了计算机行业的飞速发展,但一直经久不衰。C语言具有功能强大、目标程序效率高、可移植性好,既具有高级语言的优点,又具有低级语言的执行速度快等特点,因此特别适合编写各种系统软件。

随着计算机应用的普及,计算机的编程能力已不再是计算机专业的强势,许多非计算机理工类专业人士也广泛地应用计算机程序设计,进行与专业相关的工作。现在所有的在校大学生基本都学习“C程序设计”这门课程,是因为涉及国家等级考试、专业课的基础课以及面向对象程序设计等。可是由于学生的计算机应用能力差异较大,对计算机的工作原理缺乏感性认识,理解起来比较抽象,是入门学生的一大难点,致使学生认为学习计算机编程语言就是背语法,学习起来抽象、难理解。针对此现状,本书从计算机工作原理出发,在熟悉计算机工作原理的基础上,通过不断地运行程序,很快就能明白计算机是如何工作的。这样,引入数据类型、变量等概念不再突然。

本书主要以数据类型为主线,以案例为驱动,以C程序的基本单位——函数为核心,将该门课程难点分散。在此基础上对于不同基础、不同要求的学生采用分层次的思路组织本书结构。

本书的具体思路是将本书分为两大部分(层次): 基础篇和应用篇。

基础篇(第1~12章): 以培养应用型人才为目的,重在实践,在掌握各知识点基本应用的基础上,增加了一部分进阶应用,进阶应用部分如果学时紧张可作为有自学能力学生自学的材料,学习本篇之后完全能达到解决简单问题的能力。

(1) 在深入理解计算机工作原理的基础上,引出内存的重要性。CPU只能与内存交换数据,不能直接与外存交换数据。那么数据到底占用多大的内存空间取决于占用该内存空间的量的数据类型,进而引出数据类型的概念,使学生学习数据类型有针对性、不再抽象。

(2) 学习了基本数据类型,然后根据要解决的实际问题抽象出变量,定义某种数据类型的变量,知道变量在内存中的存储形式,进而利用三种结构化程序控制流程,实现基本数据类型变量的操作。程序对变量进行控制,计算机对相应变量的内存空间进行操作,真正达到人机共同完成一个任务。有了对简单程序的应用能力,进而作为一个功能模块讲解函数。此时函数只能是处理基本数据类型的变量。

(3) 接下来,在基本数据类型变量的基础上引入数组,数组在数据结构上是顺序存储,数组里的每一个元素与相同数据类型的变量具有相同的操作功能,只用关心数组元素的下标即可。利用所学的函数基本理论,将数组元素和数组名作为函数的参数,发生函数调用时的情形进行扩展。这样,对于函数功能的扩展就变得很容易。

(4) 指针是C语言的一大特点,使操作内存变得很灵活。指针是一个特殊的变量,存储内存地址号。根据指针所指向的内存空间的归属,决定是指向什么(变量、数组、指针)的指针变量,进而明确操作。通过指针变量作为函数的参数,发生函数调用时传址和传值的区别一目了然。

(5) 结构体变量可以表达许多与生活息息相关的数据结构,把不同数据类型的集合称作结构体类型,与简单变量的定义、引用类似。可以定义结构体类型(用户自定义类型)的变量、数组、指针变量并引用,进而引出在数据结构上的链式存储数据结构——链表。

(6) 有了上面对各种数据类型变量的操作,主要是对内存空间进行操作,那么存在外存(硬盘等)的数据如何操作,可以通过文件操作将外存文件与内存文件指针变量相关联,通过操作内存文件指针变量从而达到操作外存文件的目的。

应用篇(第13章): 在非计算机专业不学习“数据结构”课程的情况下,针对实际应用中需要处理的问题类型进行了总结并加以详细的阐述,希望能启迪读者的思路。

本书有以下特色: 重点突出,难点分解,图文并茂,思路清晰,培养编程风格,使学生知其然也知所以然。

学习者以数据类型为线索,通过标识符被修饰的不同形式即int a; int a[]; int *p; int f(); 学习各知识点。这样在基本数据类型应用理解的基础上,再引入结构体类型的变量、数组和指针变得较易理解和掌握。

本书精选大量实例和习题,且例题重要部分都有详细解释,尤其是前面部分和难理解的程序均给出详细的解释和注释,可使入门者学习方便。本书中所有程序均在Visual C++6.0下调试通过。通过详细的图解,使学习者深刻体会变量在机器中的存储形式,能够更好地操作变量。

本书还有一个特点,尤其是对初学者,根据多年教学经验给出了一些基本的编程风格和技巧。使学生尽快养成良好的编程风格,积累编程经验和能力。我一直对我的学生说“学习计算机语言一定要手勤、脑勤,自己亲自上机实验,出的错误越多越好,这样通过改错使自己对所学知识点才能真正掌握”。

本书适用人群为计算机专业的本科生、研究生及大专生、专升本学生,也可作为大学计算机公共课教材、等级考试参考书及比赛辅导用书。本书由浅入深、难点分散的组织形式,也很适合广大计算机软件爱好者快速、深入地掌握C语言的内涵。

   与本书配套的辅导教材是《C语言程序设计习题、实验与课程设计》(清华大学出版社,田丽华主编),该书提供了本书绝大部分课后编程题的详细解答,并提供多个实验及课程设计项目。

本书的编者都是工作在教学一线的教师,是一支具有丰富教学经验和科研开发能力的教师队伍。各位编者为本书的撰写花费了大量精力,全书统稿由田丽华负责,第1~4章由孙颖馨编写,第7、8、10章由岳俊华编写,第5、6、9、11、12、13章及应用篇由田丽华编写。

在本书的写作过程中,白宝兴教授及其他同事、朋友和家人给予了大力的支持与鼓励,并提出许多宝贵建议和意见。在此向他们表示感谢!

由于作者水平有限,时间仓促,书中难免会有错误,恳请读者指正。

本书的配套课件及程序源代码等资源可以从清华大学出版社网站www.tup.com.cn下载,关于本书和课件的使用问题请联系fuhy@tup.tsinghua.edu.cn。

编者2014年5月