《大学计算机基础教程》以培养学生的计算思维能力为目标,以计算机中信息的表示、存储、压缩、处理和传输为主线,以易得易用且前景看好的Python、SQLite等语言和软件为工具,系统讲解了“大学计算机基础”课程涵盖的知识和技术。本书的主要内容包括3个方面:计算机软件、硬件的概念及基本工作方式;算法的概念、算法与数据结构以及常用算法的基本思想;数据库系统的概念、工作方式及基本操作方法。
本书着重讲解计算机科学技术的基础知识和基本思想方法,对涉及的程序设计语言和软件工具的介绍也力图准确、清晰,便于读者学习和运用。本书可用作高等院校非计算机专业“大学计算机基础”课程的教材,也可作为科技工作者或其他工作人员的参考书。本书封面贴有清华大学出版社防伪标签,无标签者不得销售。
前言
大学计算机基础教程对于早期的计算机使用者来说,只要了解某种计算机程序设计语言并能使用专门的软件来编辑和运行程序,就可以应付工作了。而今天,面对无所不在的普适计算、无远弗届的云计算,以及各种各样综合性的或者个性化的计算机应用和基于计算机技术的信息技术应用,每个使用者(实际上是每个人)的时间和条件都是有限的,学习的只能是从浩如烟海的知识和技能中筛选出来的核心的基础知识和基本技能,而且必须在正确的思想方法指导下学习和研究,才能有效地构建以计算机技术为主体的能够支持终生工作与继续学习的信息技术的知识基础和能力基础。“大学计算机基础”这门课程需要帮助大学生理解和掌握基于计算机技术的信息技术的基础知识和基本技能。有鉴于此,作者在自编的多本同类教材见参考文献\\[1\\]、\\[3\\]、\\[7\\]、\\[8\\]。的基础上,依据教育部高等学校计算机课程教学指导委员会的相关文件见参考文献\\[4\\]。,结合多年来的教学实践,编写了这本教材。
“大学计算机基础”课程应以培养学生的计算思维能力为基本教学目标,但正像以培养逻辑思维能力为目标的“高等数学”课程并不讨论什么是逻辑思维一样,本书不打算显式地讨论计算思维的概念,甚至也不谋求建立“体现计算思维的知识体系”,而是按照基于计算机技术的信息技术的固有规律,考虑教学过程中的实际需求,重新梳理已有的和新增的教学内容,编排出既有利于实现基本教学目标,又便于学生理解和掌握的知识体系。本书的主要内容包括: 计算机软件、硬件的概念及基本工作方式;算法的概念、算法与数据结构及常用算法的基本思想;数据库系统的概念、工作方式及基本操作方法。全部内容编排为8章,每章中除了详尽的讲解之外,还包括了精心编排的习题。
第1章介绍计算机的基本工作方式,计算机程序设计语言的概念和分类,以及计算机应用的现状和前景。
第2章介绍用于描述算法及各种计算模型的Python程序设计语言的概念、主要功能及使用方法。
第3章介绍逻辑电路与逻辑运算,数字、文字、图片和声音的计算机表示方法,信息量、信息熵的概念及基于信息熵的编码方法。
第4章介绍数据结构的概念及常用数据结构(线性表、二叉树、图等)的概念和应用,常用的查找算法和排序算法。
第5章介绍数据库系统及关系数据库的概念,SQL语言的功能与特点,使用SQLite数据库管理系统和Python语言实现SQL数据定义、数据查询和数据操纵的一般方法。
第6章介绍算法的概念与特点,利用计算机的主要特点实现的递推、迭代和递归算法,常用的算法策略——穷举法、分治法、贪心法、回溯法、动态规划法和分支限界法。
第7章介绍计算机网络的概念、组成及主要应用,数字信号编码、检错纠错编码和常用加密方法,网络分类及网址的概念。
第8章介绍计算机操作系统的概念、主要功能及基本工作方式。
本书第2、3、4、5、6章由姚普选编写,第1、7、8章由乔亚男编写。
本书可作为高等院校“大学计算机基础”课程的教材,也可作为计算机科学技术爱好者以及从事相关工作的工程技术人员的参考书。采用本书作为教材的课程以48~64(包括上机时数)学时为宜。如果少于64学时,则可不讲以“”标记的内容;如果少于56学时,则可少讲或不讲以“”标记的内容。本书中每章都配备了内容丰富的习题,不同类型的读者可按自己的需求选作部分习题。
信息技术博大精深且仍处于不断发展变化之中,受篇幅、时间、读者定位、使用环境以及作者水平等种种限制,一本书所涵盖的内容及所表达的思想总会有所局限。因而,本书作者希望传达给读者的信息是否到位或者是否得体,还要经过读者的检验。望广大读者批评指正。
姚普选
2016年9月
大学计算机基础教程第1章计算机与信息化社会1
1.1计算机的诞生和发展1
1.2了解计算机3
1.2.1计算机是如何工作的3
1.2.2什么是程序设计语言5
1.2.3什么是机器语言6
1.2.4什么是汇编语言7
1.2.5什么是高级语言8
1.3信息化生存9
1.3.1从互联网思维谈起9
1.3.2无所不在的计算设备12
1.3.3无远弗届的云计算13
1.3.4与人绑定15
1.3.5线上到线下17
习题119
第2章Python语言20
2.1Python编程环境和解释器20
2.1.1Python编程环境的使用20
2.1.2Python程序的一般结构22
2.1.3Python解释器的使用23
2.2数据的表示及输入输出26
2.2.1常量与变量26
2.2.2数据的输入输出28
2.2.3常用函数29
2.2.4运算符与表达式31
2.3序列34
2.3.1字符串34
2.3.2列表36
2.3.3元组37
2.3.4字典39
2.4程序的控制结构40
2.4.1分支语句40
2.4.2while循环语句41
2.4.3for循环语句42
2.4.4用户自定义函数44
2.4.5模块46
2.5类和对象47
2.5.1类的定义和使用48
2.5.2面向对象程序设计方法50
2.5.3类的继承性52
2.5.4异常处理54
习题256
大学计算机基础教程目录
第3章数据的计算机表示61
3.1逻辑电路及逻辑运算61
3.1.1门电路及基本逻辑运算61
3.1.2组合逻辑电路63
3.1.3时序逻辑电路64
3.2数值的计算机表示67
3.2.1二进制数68
3.2.2十六进制数及数制转换70
3.2.3数的补码表示71
3.2.4定点数73
3.2.5浮点数74
3.2.6IEEE标准浮点数76
3.2.7BCD码79
3.3文字的计算机表示81
3.3.1ASCII码81
3.3.2GB 2312—1980汉字编码标准83
3.3.3GB 18030汉字编码标准84
3.3.4Unicode标准88
3.3.5Unicode字符的存储格式90
3.4图片与声音的数字化93
3.4.1数字化图形和图像93
3.4.2图像的采样及存储96
3.4.3数字化音频98
3.5信息量与数据压缩101
3.5.1信息量101
3.5.2信息熵103
3.5.3信息熵与数据压缩105
3.5.4熵编码算法108
习题3112
第4章数据结构115
4.1数据结构的概念115
4.1.1数据及数据元素115
4.1.2数据结构的研究对象117
4.1.3数据结构的定义118
4.2线性表119
4.2.1线性表的概念120
4.2.2线性表的顺序存储结构121
4.2.3线性表的链式存储结构123
4.2.4栈127
4.2.5队列129
4.3树与二叉树131
4.3.1树的概念131
4.3.2二叉树的概念及性质133
4.3.3二叉树的存储结构135
4.3.4二叉树的遍历136
4.4图138
4.4.1图的概念138
4.4.2图的存储结构140
4.4.3图的遍历142
4.5查找143
4.5.1查找的概念144
4.5.2顺序查找145
4.5.3折半查找147
4.6排序148
4.6.1排序的概念148
4.6.2插入排序150
4.6.3交换排序152
4.6.4选择排序154
习题4156
第5章数据库160
5.1数据库系统组成与结构160
5.1.1数据库的概念160
5.1.2数据库系统组成163
5.1.3数据库系统的三级模式结构165
5.2数据库管理系统167
5.2.1关系数据库167
5.2.2数据库管理系统的功能170
5.2.3常见数据库管理系统171
5.3SQL语言及数据库操作173
5.3.1SQL语言的功能与特点174
5.3.2SQL语言的语句175
5.3.3创建SQLite数据库179
5.3.4SQLite数据库的数据查询与更新183
5.3.5Python程序操作SQLite数据库185
习题5188
第6章算法设计191
6.1算法的特征及评价191
6.1.1算法的概念191
6.1.2算法的特征193
6.1.3算法求解与解析解194
6.1.4算法的表示196
6.1.5算法的复杂度198
6.2递推、迭代和递归202
6.2.1递推法202
6.2.2递推法与代数解法205
6.2.3迭代法207
6.2.4递归法208
6.2.5尾递归法211
6.3构造算法的常用方法212
6.3.1穷举法212
6.3.2贪心法215
6.3.3分治法218
6.3.4动态规划算法222
6.3.5回溯法228
6.3.6分支限界法234
6.3.7分支限界法求解单源最短路径问题241
习题6245
第7章数据的传输248
7.1计算机网络概述248
7.1.1计算机网络的历史发展248
7.1.2计算机网络的功能250
7.1.3计算机网络的传输介质251
7.1.4网络体系结构与网络协议252
7.2编码与加密255
7.2.1编码与解码255
7.2.2检错与纠错260
7.2.3加密与解密技术262
7.3网络结构266
7.3.1网络的分类266
7.3.2网络地址269
习题7272
第8章操作系统275
8.1操作系统概述275
8.1.1操作系统的历史回顾275
8.1.2无所不在的操作系统277
8.1.3操作系统的目标与功能279
8.2进程与线程281
8.2.1进程的概念281
8.2.2线程的概念283
8.2.3多线程285
8.2.4生产者消费者问题286
8.3死锁问题291
8.3.1死锁的概念291
8.3.2银行家算法292
8.4设备管理294
8.4.1I/O控制方式294
8.4.2缓冲技术296
8.5分布式操作系统299
习题8301
参考文献303