前言工程教育认证标准对计算机类课程的实践环节提出了较高的要求,为此作者在多年C语言教学实践的基础上,按照“总结要点、题解分析、上机实验、综合编程”的思路组织C语言程序设计实验教学内容,以满足具有较强实践能力的人才培养目标。本书从C语言的教学内容出发,按照培养程序设计实践能力的要求而编写,是《C语言程序设计》(卢萍等编著,下同)的配套实践教材,也适合与其他C语言类教材配套使用。
本书第1章介绍C语言常用的上机开发环境与程序调试方法,包括 Code::Blocks集成开发环境、DevCpp开发环境、Visual Studio集成开发环境以及Linux下的编程与调试。给出了一个重点训练程序调试能力的实验,通过由浅入深的6道实验题引导学生使用单步执行、跟踪函数、设置断点、观察变量值等方法查找程序中的逻辑错误。在C语言常用的上机开发环境方面,可以任选一种作为学习C语言编程实践的开发环境。关键是要掌握程序的编辑、修改、编译、连接和执行方法,以及调试程序、跟踪程序、通过断点控制程序、观察变量/表达式在程序运行过程中的取值,综合利用开发工具的调试机制定位程序中的逻辑错误并排除错误,提高代码调试能力和程序开发效率。
第2~8章基本按照《C语言程序设计》的章节顺序组织编写,其目的在于帮助学生加深对C语言重点和难点知识的理解,以提高综合应用C语言进行程序设计的能力,每章分内容提要、典型题解析和实验3部分内容。内容提要部分全面、系统概括C语言的基本概念、语法和语义,包括标识符、关键字、常量、变量、运算符、表达式、流程控制、函数、编译预处理、数组、指针、结构与联合以及文件等知识点。典型题解析部分依据C语言各部分知识点精心设计和挑选了大量具有代表性的例题,这些例题以不同的题型给出并逐一给予详细解答,帮助学生深入理解C语言的基本知识,掌握编程思想和编程技术,为上机实践打下坚实的基础。实验部分按递进的方式给出多元化的实验内容及要求,实验题型丰富,除了传统的程序设计题之外,增加了程序的判断改错题、程序调试跟踪题、完善程序题、程序修改替换题等,其目的在于不仅加强学生对基本理论知识的理解与掌握,锻炼与提高实际编程能力,同时也培养学生跟踪程序、调试程序、排除错误与故障的能力,养成细致、周密、严谨的编程作风。考虑到学生上机实验的完成进度差别较大,程序设计题包含基础、提高和项目实训3个层次不同难度系数的题目,提高题(以标记)和项目实训题供速度快的学生选做,以满足不同基础学生的学习需求。实验注重培养分析和解决问题的能力,提高算法设计、程序设计的能力。
C语言的初学者一定要重视实验,上机实验是进一步深刻了解C语言的语法、语义,掌握用C语言进行初步程序设计所需要的方法和技能的一个重要环节。优秀的程序员毫无例外地都是在机器上“摸爬滚打”出来的,C语言的创始人Dennis M. Ritchie是如此,C++的创始人Bjarne Stroustrup也是如此。这些程序设计语言大师都是在机器上使用现行语言遇到巨大障碍的情况下产生发明新的计算机语言的灵感和动力,Dennis M. Ritchie直到20世纪90年代还在他的386机器上编程。
“凡事预则立,不预则废。”上机实验前一定要预先做好充分的准备,把上机的重点放在程序的编辑、修改、编译、连接、跟踪、调试程序方面,放在观察程序运行过程中的中间结果和运行完毕后的运行结果方面,最终使自己的大脑变成一台“计算机”,能够在自己的大脑中运行自己的程序,判断各种情况下程序的走向等,从而提高上机的效率和程序设计的准确性。“预”是培养编程者养成一种深思熟虑的、良好的编程习惯。
第9章结合计算机科学与技术的学科特点,给出应用位运算、函数指针、动态存储分配、字段结构、文件操作等知识的综合实例——简单处理器的汇编器和模拟器的实现,从设计要求的详细描述,到设计思路的分析和程序代码的展示,培养学生系统级和底层的编程能力,使学生直觉地感知计算机的指令系统、体系结构、存储组织、取指令、分析指令、执行指令的过程。通过编程实现小汇编程序设计,根据指令格式将汇编语言程序通过自己编写的小汇编程序汇编成为目标程序,再交给自己编写的仿真处理器执行,最终得到运行结果。这些将对后续的计算机组成原理、汇编语言程序设计、编译原理等课程的学习打下良好的基础,使学生带着问题、带着探索的兴趣进入后续课程的学习。实例解答后有留给学生完成的扩充功能,对需扩充的功能和要求做了详细说明。
第10章由浅入深地介绍利用OpenMP在多处理机(多核计算机)上用C语言编写并行程序的方法,供有学习潜力和参加各类程序设计竞赛的学生参考。
第11章给出3套综合测试练习题和参考答案,这些练习题给出考试的命题方向,以及每个知识点在实际考试中所占的分数比例,可供学生期末复习参考。
全书以巩固C语言知识、锻炼代码调试能力、培养编程思维为出发点,以提高综合应用C语言进行程序设计的能力为目标,内容包括上机操作过程、程序调试方法、典型题解析、层次化实验、综合实训项目、多线程编程和综合练习题,可以作为高等学校计算机及相关专业的实验教材,也可作为参加各类计算机程序设计竞赛和能力考试人员的参考书。此外,报考计算机的硕士研究生复试阶段需要考核上机编程能力,本书可供考生复习备考使用。
本书第1、2、5、6、11章及附录A、B、D由卢萍编写,第3、7、9章及附录E由李开编写,第4、10章由王多强编写,第8章及附录C由甘早斌编写,卢萍撰写了前言并对全书进行了统稿和审校。
华中科技大学计算机学院2018级研究生赵伟、林嘉栋、许伦祥参与了第1章的部分写作,实验2~8参考了课程组近年来的C语言上机实验教学资料,3套综合练习题大部分是本校计算机学院近年来C语言程序设计课程的考试试题,是C语言课程组集体智慧的结晶。在此,谨向这些提供无私支持的师生致以诚挚的谢意,感谢他们默默无闻的奉献!
期望本书能为广大读者学好和用好C语言提供帮助,书中难免存在不足之处,恳请批评指正。
编者2019年6月于武汉