本书以计算机解决问题的规律为驱动来组织内容,涵盖了计算机导论、基础算法、程序设计语言基础、C语言程序设计、数据结构和基本的软件工程知识,以期填补现有的独立学科单元内容与读者开发软件项目所需知识之间的鸿沟。这样以解决问题为导向来组织内容,不仅符合计算机解决问题的规律,同时也会提升读者的学习兴趣。
除上述特点外,本书在理论上加入了超图这样的非线性数据结构,在应用上加入了作者在人工智能领域图像处理方向上的图像森林变换和图像质量评价的*研究成果,使读者对计算机的应用有更深入的了解。
本书既可作为高等院校本科生计算机类课程的基础教材,也可作为专业人员的参考书,同时还可作为非计算机专业学生学习计算机编程的教材。
目前,计算机的应用广泛、深入。同时,利用计算机解决实际问题的技术也是我国加快制造业和推动互联网、大数据、人工智能与实体经济深度融合的重要技术支撑。此外,培养学生高水平地利用计算机解决实际问题的能力也是我国建设创新型国家、加快一流大学和一流学科建设、实现高等教育内涵式发展的重要组成部分。
本书为西安电子科技大学2018年立项支持教材,是西安电子科技大学新的人才培养方案确立的本科公共大类课程之一。新的课程标准开课思路先进,大纲制定与国际接轨,但目前市面上还没有对应的中文教材。基于此,作者精心编写了本书。书中涵盖了计算机导论与程序设计课程大纲要求的必修内容,阐述了利用计算机解决实际问题的基础理论与基本技术。编写中,作者以计算机解决问题的规律为驱动来组织内容,从而填补了现有的以内容为单元编写的书籍与读者开发项目所需知识之间的鸿沟。另外,本书作为大一学生的第一门计算机系统认知和应用课程教材,在内容上涵盖了基础算法、程序设计语言基础和C语言程序设计、数据结构和软件工程基础。这样以解决问题为导向组织教材内容的方式不仅符合计算机作为工具来解决问题的规律,同时也会提升读者的学习兴趣。这也正是本书特色所在。
用计算机解决问题涉及的层面很多。本书从计算机系统、问题、计算机和问题相结合三个方面来考虑,最终达到培养学生利用计算机解决问题的目的。
(1) 从计算机系统层面上来看,本书阐述了编程人员对计算机系统应该有的认知:计算机系统工作原理和内存特性,它们是解决问题的最基本的计算机理论基础,该部分及相关内容构成本书第1章。从问题解决并考虑到问题在计算机上解决的特性,本书对解决问题的基础算法及描述工具等进行了详细系统的阐述,这部分内容安排在本书第2章。有了解决问题的算法后,如何将这些算法在计算机上实现?结合问题和计算机系统知识,在第3章中讨论了实现算法的计算机语言及其特性,并对目前教学与应用中常用的C语言及其语法规则进行了系统介绍,尤其对问题对应的数据如何选择内存空间大小做了重点说明,它们是高质量程序设计的基础。在本书中,我们也对简单的C程序设计所涉及的函数、程序、文件、构造数据类型、库函数的功能和使用进行了详细系统的描述,同时配有详细的应用举例,该部分内容安排在本书的第4章。以上第1章至第4章内容可以完成简单问题的计算机求解。
(2) 从问题角度来看,计算机解决问题时需要抽象出数据的结构特性。数据的结构特性从逻辑上分为线性结构和非线性结构,其中部分线性结构对应于本书的第5章。在第5章中,包括最经典的线性表、队列和堆栈三种结构的逻辑定义、特性、运算及其结合C语言的计算机程序实现。在此基础上,作为线性结构的应用范例,第5章中还实现了图像森林变换。这样安排,一方面体现了线性结构的应用,另一方面也让读者对当前人工智能领域中的计算机应用场景有所接触,为将来在工作中应用计算机打下基础。
非线性数据结构树、图和超图等内容安排在本书第6章,其中超图部分是国家自然基金项目(61173088,618724331,61671348)资助的最新研究成果。此章同样包括了两种结构的逻辑定义、运算及其物理实现。值得指出的是:此章加入了超图这种数据结构及其简单的应用,该部分是对于现有的经典非线性数据结构的适当扩充,而这种超图的数据类型在当前人工智能领域的图像处理领域中得到了应用。可以预期的是,随着计算机科学等相关技术的不断发展,这些应用还会进一步推广。通过该部分内容,希望读者能够体会到解决问题的思路需要创新性地结合不同学科的理论和技术,因此其他学科的专门知识积累也是需要的。
(3) 本书将软件作为解决问题的产品。从软件产品开发角度来看,本书系统论述了软件开发需要的技术、方法和规则。以这些内容为指导,可以开发出专业的软件产品。该部分内容安排在本书第7章。
本书第8章是与软件实现相关的计算机操作系统的操作和软件集成环境及调试方法的介绍。在此章中首先介绍了DOS常用命令和Windows的主要设置,重点给出了四种平台上的软件实现环境及使用说明。基于此,可以实现软件的编辑、编译、链接及运行,直到软件产品的生成。此外,一些软件开发所需的基本知识作为附录放在了本书的最后部分。
值得一提的是,本书还尝试将我国的一些优秀传统文化与计算机编程内容相结合,以期使读者在学习计算机软件开发的同时感到生动有趣,激发学习兴趣,拓宽知识面,转换思维方式。
总之,用计算机解决问题涉及内容较多,本书使解决问题的思路与书的内容安排相一致,同时在书中融入了作者多年来用计算机完成项目的部分成果。因此,本书既可作为本科生计算机类课程的基础教材,也可作为专业人员的参考书,同时还可作为非计算机专业学生学习计算机编程的教材。
温馨提示
本书可按不同的课时选取不同章节内容学习:
(1) 第1~8章对应于程序设计与软件开发课。
(2) 第1~4章和第7~8章对应于计算机导论与程序设计课(学校公共大类基础课)。
(3) 第2章和第5~7章对应于算法设计与软件开发课。
本书由王俊平主编。第1~3章由王俊平编写,第4~7章由王俊平、孙德春、李勇、郭佳佳、梁刚明、胡静编写;第8章和附录由沈中编写;孙德春、万波参与了本书的内容组织。全书由王俊平统稿。在编写过程中我们还得到了西安电子科技大学许多同事的关心和指导,2015级、2016级和2017级的许多同学对于本书的应用成果研发付出了辛勤的劳动,还有王文瑞、李艳波、张亚琼、高兆华等参与了本书的校对及部分程序的调试,在此一并表示诚挚的谢意。
本书在编写过程中参考了有关图书和资料,在此向其作者表示由衷的感谢。由于编者水平有限,书中难免有不妥之处,敬请读者指正。
编 者
2018-9-6