前言
学生在学习专业知识的过程中,有很多环节需要用到计算机软件相关技术:
(1) 学生在专业课学习过程中,需要借助计算机软件技术进行相关知识的学习。
(2) 在毕业设计和论文研究期间,需要采用计算机软件技术编写相关算法及开发应用系统。
(3) 毕业从事相关工作需要具有一定的软件技术基础。
在上述各个环节中,根据实际教学和科研工作、软件从业人员调研的结果来看,学生需要掌握的相关技术基础有:
(1) 信息逻辑处理技术。
(2) 软件开发工具语言技术。
(3) 数据库相关技术。
(4) 计算机网络技术。
(5) 软件工程技术。
(6) 软件相关技术。
上述相关技术中,信息处理基本算法、数据库技术、软件工程技术是计算机软件技术的基础,对学生学习相关专业知识、提高软件技术能力至关重要。
在多年本科生、硕士生教学和科研工作中,经常遇到这样一些问题: 学生无法很好地将所学的专业知识通过软件技术实现,开发出能满足实际需要的应用系统。其主要原因是计算机软件技术基础薄弱,尤其是非计算机专业的学生。因此在学习计算机软件技术的时候,迫切需要有一套适应面较广的、以非计算机专业人员为基础的实用性教材,以满足以下多种层次的要求。
(1) 以通俗易懂的语言讲解相关技术原理。
(2) 翔实的示例代码及运行结果解析,使学生通过运行代码,阅读解析,逐步了解和掌握相关算法。
(3) 以实际应用为教学目标,避免出现学生学习时无从下手、不会自己动手编写代码的现象,使学生具备独立开发代码的能力。
(4) 具有适应面广、基础性强的特点,能满足多种层次、多种类型的计算机专业本科学生的需要,特别是满足计算机应用型人才培养的需要。
为此,我们编写了适合非计算机专业的学生学习计算机软件技术的教材,帮助学生掌握相关计算机软件技术,为后续专业课的学习和就业提供有力支持。
本书以数据结构及算法、数据库技术、软件工程技术等为主要内容,面向机器人工程、智能制造工程等非计算机专业学生介绍计算机软件基础技术。本书共分12章,其中第2~6章介绍数据结构及算法,第7章介绍程序运行相关资源管理,第8章介绍数据库基础技术,第9~12章介绍软件工程技术相关知识,具体如下:
第1章概括性地介绍了信息处理、计算机技术和算法的基本概念,使学生对计算机软件技术有一个整体了解,为后续深入学习具体知识打基础。
第2章介绍了递归方法。递归方法是一种常用的计算方法,也是后续相关数据结构学习的基础。
第3章介绍了数据结构、线性表、栈和队列的基本概念和操作方法,是本书的基础部分。
第4章介绍了树与二叉树,包括二叉树的遍历和二叉排序树等的存储结构和操作算法。
第5章介绍了图的定义、存储、遍历和最短路径等操作。相关知识在机器人行走路径优化等方面经常用到。
第6章介绍了查找与排序。查找与排序是最常见的数据处理需求,这里重点介绍了常用的排序算法。
第7章介绍了程序运行过程、存储、文件和设备等软件运行资源管理,其中程序运行资源包括程序运行过程涉及的进程、线程的状态与调度、同步等知识,是进一步学习并行计算、大规模并发解决方案的基础。
第8章介绍了数据库技术,包括数据库系统的组成、关系模型和结构化查询语言(SQL),其中关系模型和SQL是本章的学习重点。
第9章介绍了软件需求管理相关知识,这是软件系统项目中的一个极其重要的工作环节,是系统分析和系统设计及实现的基础。
第10章介绍了系统分析中的结构化分析方法和面向对象分析方法相关知识,其中结构化分析方法应用非常普遍,是本章的学习重点。
第11章介绍了信息系统中的功能模块设计、编码设计、数据库设计等系统设计知识,其中数据库设计是本章的学习重点。
第12章介绍了软件系统实施相关知识,包括信息系统的开发方式、信息系统的项目管理、系统开发方法、程序设计和软件测试等软件项目实施阶段的内容。
本书从基本算法设计方法入手,系统、全面地介绍表、树、图、查找、排序等基本数据结构及算法,给出了C++语言程序示例,读者可以结合程序的跟踪调试,考察过程结果,进而理解和掌握相关算法。书中的代码均通过多个专业学生试用,根据学生对相关知识的理解程度调整了语言文字和示例。
本书各章都配有练习题,其中,部分可选作上机练习题。大多数习题都紧扣正文中的教学内容。
本书使用对象是非计算机科学与技术相关专业的本科生、硕士生以及相关技术人员。为了便于自学,在编写过程中,力求语言简练、通俗易懂、由浅入深,着力挑选简单明了、实用性强的示例以阐明基本概念和基本算法。
感谢王欢、刘徐畅、吴光谱、王小童、李悦、张宁波、贾文哲、李苓苓、王世洲、林坤、陈明杰、张海啸、李晶、田彦荣、张铠、沙桂东等对本书代码验证、文字录入和图表绘制等相关工作给予的支持。
虽经作者再三努力,书中难免有疏漏之处,恳请读者指正,更请同行不吝赐教,提出宝贵意见与建议,不断对本书进行完善。
作者2021年4月于北京