新書推薦:
《
刻意练习不生气
》
售價:NT$
179.0
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:NT$
500.0
《
安全感是内心长出的盔甲
》
售價:NT$
305.0
《
快人一步:系统性能提高之道
》
售價:NT$
505.0
《
我们为什么会做梦:让梦不再神秘的新科学
》
售價:NT$
352.0
《
算法图解(第2版)
》
售價:NT$
356.0
《
科学的奇幻之旅
》
售價:NT$
352.0
《
画艺循谱:晚明的画谱与消闲
》
售價:NT$
653.0
|
編輯推薦: |
本书作为首批“国家精品在线开放课程”和“国家级教学成果奖”配套教材,适用于大学本科/专科一、二年级学生,使用范围广、教学适用性强。教材配有实验教程、习题与解析和丰富的数字资源。
本书作者长期从事计算机基础教学和软件开发科研工作,具有丰富的教学经验和软件开发经验。结合作者多年的产、学、研经验,以程序设计语言、程序设计方法、程序设计技术组织教材内容。首创“数据表示”和“程序实现”双线索知识体系,以C 语言为基础系统地介绍程序语言、算法策略和数据结构、传授程序性能分析、领域应用编程技术,优化程序设计知识安排,注重能力培养。全书贯彻“技能提升、思维训练、系统培养、价值塑造”的教学理念和实践。
|
內容簡介: |
本书以C/C 语言为基础,系统地介绍程序语言、算法与数据结构,注重系统能力培养。全书由14章组成,以程序设计语言、程序设计方法、程序设计技术三大主题组织教材内容,采用“数据表示”和“程序实现”双线索知识体系。
本书结构清晰、语言通俗易懂,具有专业的编程风格;内容由浅入深、知识循序渐进,例题丰富,注重典型案例的精选与提炼,配套有程序设计综合训练平台、系列教学软件、教辅参考书、混合式教学和慕课资源等。
本书可作为高等院校本科生“程序设计”“计算机高级语言”等课程的教材,也可作为信息技术类培训课程的教材,还可作为软件开发、学科竞赛实践活动和编程爱好者的自学教材。
|
內容試閱:
|
“程序设计”课程是大学计算机教育的核心课程,它既是各类专业技术的计算机基础,又是各种实践环节的软件工具,更是实习实训、学科竞赛、毕业设计、创新创业、创客科技等实践活动的重要平台。
C 语言是国内外广泛使用的计算机程序语言。其功能强大、面向对象、数据表示丰富、代码运行效率高、可移植性好,包含高级语言和低级语言的优点,非常适合编写各种系统程序和应用软件。在TIOBE编程语言排行榜上,C、C 语言多年来一直位居前列。相比较而言,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 14882—2003 C 语言标准(简称C 03标准),附加C 新特性资源,覆盖C 11、C 14、C 17、C 20新标准,充分体现了程序语言的最新进展和当前业界的最佳实践。广泛采纳各专业软件公司编程规范,无论语法语义、书写形式、示例代码,均采用专业风格编写,潜移默化地引导学习者与行业领域接轨,书中所有程序均在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所示。
图3融合能力培养的KTCPD混合式教学模式
(6) 配套慕课资源。
本书对应课程列入首批国家级精品在线开放课程,可申请MOOC或SPOC学习,使用方法如下。
① 进入爱课程(中国大学MOOC)平台,选择“西北工业大学”,选择“C 程序设计”或者搜索“C 程序设计”。
② 进入学堂在线平台,选择“西北工业大学”,选择“C 程序设计”或者搜索“C 程序设计”。
本书第1~8章和附加的高级编程技术由姜学锋编写,第9、10章由姜学锋、周果清共同编写,第11~14章由刘君瑞编写,全书由姜学锋统稿。书中带号的章节是C 对C语言的扩展。相比第1版,第2版在理念、方法、手段、资源方面有较大进步。在书稿的编写过程中,得到了多位专家的关心和支持,清华大学出版社对本书十分重视,做了周到的安排。在此,对所有鼓励、支持和帮助过本书编写工作的领导、专家、同事和广大读者表示真挚的谢意!
由于时间紧迫以及作者水平有限,书中难免有错误、疏漏之处,恳请读者批评指正。
2022年5月于秦岭·终南山·竹园
|
|