导航菜单

清华大学出版社

本书以C语言为基础,系统地介绍程序语言、算法与数据结构,注重系统能力培养。全书由10章组成,以程序设计语言、程序设计方法、程序设计技术三大主题组织教材内容,采用“数据表示”和“程序实现”双线索知识体系。本书结构清晰、语言通俗易懂,具有专业的编程风格;内容由浅入深、知识循序渐进,例题丰富,注重案例的精选与提炼,配套程序设计综合训练平台、系列教学软件、教辅参考书、混合式教学和慕课资源等。本书可作为高等院校和信息技术类培训机构“程序设计”“计算机高级语言”等课程的教材,也可作为软件开发、学科竞赛实践活动和编程爱好者的自学教材。

more >

前言 程序设计(computer programming,CP)课程是大学计算机教育的核心课程,它既是各类专业技术的计算机基础,又是各种实践环节的软件工具,更是实习实训、学科竞赛、毕业设计、创新创业、创客科技等实践活动的重要平台。C语言是国内外广泛使用的计算机程序设计语言。其功能强大、灵活自由、运行效率高、可移植性好,包含高级语言和低级语言的优点,非常适合编写各种系统程序和应用软件。在TIOBE编程语言排行榜上,C、C++语言多年来一直位居前列。C语言的学习难度较大。面对庞大且复杂的语言知识体系,不少学生在学习过程中会感觉“一叶障目,不见森林”,学了前面的忘了后面的,对学过的编程思路了解不深,数据描述不清楚,算法设计不到位,基本知识掌握不好,开发环境不会使用。没有树立思维、能力、素养的学习目标是造成这一局面的重要原因之一。为此,我们在多年一线教学经验和软件开发工作的基础上,结合自主研发的程序设计综合训练平台等系列教学软件,推出以计算思维为主线、以语言知识为工具、以能力培养为目标、以编程技术为核心的系列教材。遵循“技能提升、思维训练、系统培养、价值塑造”教学理念,在知识体系的选取、深度的把握,以及算法、数据结构与程序设计的结合等方面,精心设计,力图适合高等院校和专业培训的教学目标和学习要求。1. 程序设计中的计算思维程序设计中的逻辑过程如图1所示。 图1程序设计中的逻辑过程从一个待求解的问题,到编写出程序代码,或者从一个现实的需求,到编写出应用软件,中间经过分析、抽象、模型、设计、实现五大逻辑过程,涉及对现实问题的观察、理解能力,对问题现象及本质的分析与归纳能力,对事物的抽象思维能力,建立(数学、计算机)模型的能力,工程表达与设计能力,运用计算机程序语言的代码实现、实践能力,以及反复迭代优化的系统思想。模型之前是人类的现实世界,模型之后是计算机世界,因此,编程的实质就是把现实世界抽象为一个计算特征的模型,然后使用计算机语言实现,在计算机里能够正确运行。在上述展现“武”的技术硬实力过程中,其实隐含着“文”的软实力,彰显“文武”之道,体现了程序员世界观、认识论、方法论的深度,逻辑推理、实证精神、辩证法的高度,科学素养和思想、实践观,情怀、信念意志和品格的高度。所以,学习程序设计,不仅要学习程序设计语言知识,还要有意识地开展思维训练,有目的地提高综合的、系统的能力,有计划地提升信息素养。为此,学习或教学过程中,阅读计算机科学发展史、计算机科学中的数学、逻辑学、程序员修养等课外读物是十分有益的。2. 程序设计中的“元知识”学习科学认为,知识是有层次的,需要优先掌握有效知识,即组成知识本身的基础知识,以及控制与调节知识的知识——元知识。要形成正确的知识体系,必须从自己的元知识开始,用科学、辩证和逻辑的思维逐渐添加,形成一个小体系,再形成大体系。C语言有庞大的知识体系,如果只以语言知识为线索往往会使学生抓不住重点,容易陷入凌乱无序的状态。本书首创“双线索”程序设计元知识体系,以“数据表示”和“程序实现”作为教学上的两条主线索,螺旋上升、交叉推进,如图2所示。 图2双线索C语言元知识体系首先,本书通过简单程序引出程序基本结构,以编程为目标给出两条线索: 数据表示和程序实现。其次,从引入简单数据开始,逐步解决计算和程序组织,进而上升到程序模块化的实现。再次,从基本数据类型上升到复杂数据类型,然后上升到数据结构层面的数据表示,程序模块进阶到算法实现。最后,两条线索交汇到高级编程技术应用专题,揭示程序设计与软件开发的一般规律。“双线索”给出了程序语言领域的知识,同时也给出了使用和控制领域知识的元知识。元知识不解决具体编程问题,而是关于程序语言的性质、结构、功能、特点、规律、组成与使用的知识,用来管理、控制和使用程序语言知识,进而使得学习者能够站在更高的高度、更长的时间纬度“俯瞰”程序语言,做到“概念为本,理解为先,范式学习”。3. 程序设计中的专业融合如果是低年级大学生学习程序设计,还会遇到“学在当下、用在未来”的实际问题,那么如何做到“学以致用、知行合一”?许多编程教学集中于做题,如同数学一般,将程序设计演变成“程序语言+计算方法”,C语言成了数学工具。殊不知计算方法(数值计算、非数值计算)仅仅是程序设计方法的一种,程序方法学中还有诸如操作系统、人机界面、图形图像、多媒体、网络通信、数据库、硬件接口等技术领域,每个领域都有独特的编程技术和精巧的解决方法。衡量程序设计学习效果有两个重要指标: 编程累计行数(total lines of code, TLOC)和单个程序行数(single lines of code, SLOC)。以解题为主的编程训练能提高TLOC,但却止步于SLOC。即使在在线判题系统(online judge, OJ)上做几百个习题,虽然TLOC指标上去了,但SLOC却不见长。一般地,在专业的软件开发技术领域,SLOC小于300行时很难让人体会到应用开发的“感觉”。高级编程技术是本教材的创新点之一。通过将理工类专业和计算机应用融合,导入丰富的应用场景,衔接行业领域及IT前沿,激发学习的内在需求。通过研究型专题的技术方法教学,拓宽应用知识面,充分认识程序是如何实现应用需求的,使学习者有极大兴趣开展探究式项目学习。在这样的环境下,才能从根本上提高SLOC,提升技能训练层次。限于篇幅,高级编程技术的内容放在慕课上,可参照后面的方法进入课程自行学习、下载和练习。4. 程序设计中的系统能力程序设计与算法、数据结构实际上是一个统一体,不应该也不可能将它们对立与分割。数据结构——编程之“道”。计算机工作原理的核心就是“计算”,也就是用一定的方法加工数据。因此,数据是加工的对象,是编程的目的,是应用的主体,这是程序设计亘古不变的规律。数据结构是计算机存储、组织数据的方式,分为逻辑结构和存储结构。当编不出程序来的时候,就要回到数据的“初心”,实施“结构性改革”。编程训练时,应该先“头脑风暴”出数据及其结构。编程之美首先是“结构之美”。算法——编程之“法”。算法包括策略思想、算法设计与分析,是经过实践思考、归纳总结出的规则体系和方法原则。编程时,依据结构确定一定的指导思想和策略,然后开展方法的设计以及对方法的性能评估分析,广义的“设计”是“思想→策略→设计→评估→优化”过程。编程训练时,不能只解决问题,还要反复优化,“深度迭代”出系统的方法论。编程之美其次是“设计之美”。实现——编程之“术”。在“简洁、易懂、高效”等原则下,具体实现技术可以千变万化,包括语言工具、实现方法、编程抽象、编程范式、设计模式等。本质上,程序代码是逻辑演绎的形式化表达,反映的是人类对这个世界的数字化理解。因此,编程具有独创性和艺术性,是知识、技能、理念高度融合的创作。编程之美实质是“艺术之美”。本书在案例教学中给出了算法和数据结构的初步知识,克服了算法与程序设计脱节、数据结构与数据表示脱节的问题,融为一体,力求理论与实际相结合,数据描述与数据表示、算法与实现相统一。本书有以下特色。(1) 精选典型案例本书针对精选的程序,设计了初等难度语言示范、中等难度算法和数据结构应用、较高难度综合设计三种梯度的案例。这些案例的精选与提炼,有利于提高学生的学习兴趣,有利于在计算机问题求解方面开阔视野,使学习者在程序设计方法、思路、技巧的应用方面有较高层次的锻炼与提高。其中难度较大的高级编程技术综合设计案例可作为课程设计、大作业及课后专题研究选用。(2) 注重编程风格本书使用ISO/IEC 9899:1999 C语言标准(简称C99标准),充分体现程序语言的最新进展和当前业界的最佳实践。广泛采纳各专业软件公司编程规范,无论语法语义、书写形式、示例代码,均采用专业风格编写,潜移默化地引导学习者与行业领域接轨,书中所有程序均在Visual C++和GCC(Code::Blocks、Dev\|C++)平台调试通过。同时,书中的所有源代码和各章习题代码可在清华大学出版社网站下载。(3) 配套教学平台自2001年以来,基于软件开发科研优势,结合一线教学和课程改革的经验,围绕课堂、实验、作业、实训、考核五个教学环节,我们开发了系列教学软件。例如“程序设计在线评测系统NOJ”大规模开展习题训练解决TLOC,“软件设计协同开发平台DevForge”按行业模式管理、评阅学生课程设计解决SLOC,“远程网络考试系统inTest”实现线上考试和实践考核,等等。这些教学工具的使用,使得实验机房变成了学生讨论、思考、赛课训练的场所,形成数字化课堂教学、在线教学、电子教室、智能答疑、综合训练等立体化教学环境,为落实教学理念和教学目标提供了先进工具。(4) 配套教辅参考《C程序设计实验教程》分为4部分,前两部分详细介绍Visual C++和GCC开发工具的使用方法和程序调试技术,第3部分是与教材相对应的实验内容,分为验证型、设计型实验,第4部分是课程设计专题实验,训练应用程序开发,掌握高级编程技术。《C程序设计习题与解析》包括3方面的内容: 知识点与考点提炼、经典例题解析、典型习题与解答,目的是进一步促进学习者对程序语言理论知识的掌握。(5) 配套混合式教学向使用本书的高校提供电子课件文稿和素材,以节省教师的备课时间,包括“教学指南”等文档,方便教学组织,课程管理。本书对应课程为首批“国家级一流本科课程”(线上线下混合式),提供混合式教案,如图3所示。(6) 配套慕课资源本书对应课程为首批“国家精品在线开放课程”,可申请MOOC或SPOC学习,使用方法如下。① 进入爱课程(中国大学MOOC)平台,选择“西北工业大学”,再选择“C程序设计”或者搜索“C程序设计”。② 进入学堂在线平台,选择“西北工业大学”,再选择“C程序设计”或者搜索“C程序设计”。 图3融合能力培养的KTCPD混合式教学模式本书第1~8章和附加的高级编程技术由姜学锋编写,第9~10章由刘君瑞编写,全书由姜学锋统稿。相比第1版,本版在理念、方法、手段、资源方面有较大进步。在书稿的编写过程中,得到了多位专家的关心和支持,清华大学出版社对本书十分重视,做了周到的安排。在此,对所有鼓励、支持和帮助过本书编写工作的领导、专家、同事和广大读者表示诚挚的谢意!由于时间紧迫以及作者水平有限,书中难免有错误、疏漏之处,恳请读者批评指正。2021年7月于秦岭·终南山·竹园

more > 课件下载 样章下载 暂无网络资源扫描二维码下载APP了解

相关推荐: