编辑推荐
程序员教程(第5版)依据2018年审定通过的程序员考试大纲大纲编写,涵盖程序员(初级)岗位所要求的主要知识及应用技术。
通过程序员考试的考生可以获得由人力资源和社会保障部、工业和信息化部认可的职业资格证书,本考试为初级资格认证。
内容简介
本书作为全国计算机技术与软件专业技术资格(水平)考试(简称“软考”)的初级职称指定教材,具有比较*的指导意义。本书根据《程序员考试大纲》(2018年审定通过)的重点内容,组织了共11章的内容,考生在学习教材内容的同时,还须对照考试大纲,认真学习和复习大纲要求的知识点。
本书是在《程序员考试大纲》的指导下,对《程序员教程(第4版)》进行再编后完成的。
本书适合参加相关考试的考生和在校大学生作为教材使用。
目录
目录
第1章计算机系统基础知识1
1.1计算机系统的基本组成1
1.2数据的表示及运算3
1.2.1计算机中数据的表示3
1.2.2校验码13
1.2.3逻辑代数及逻辑运算17
1.2.4机器数的运算19
1.3计算机的基本组成及工作原理23
1.3.1总线的基本概念23
1.3.2中央处理单元25
1.3.3存储系统30
1.3.4输入/输出技术36
1.4指令系统简介40
1.5多媒体系统简介44
1.5.1数字声音45
1.5.2图形与图像48
1.5.3动画和视频55
第2章操作系统基础知识62
2.1操作系统概述62
2.2进程管理65
2.2.1基本概念65
2.2.2进程控制67
2.2.3进程通信68
2.2.4进程调度72
2.2.5死锁74
2.2.6线程76
2.3存储管理76
2.3.1基本概念76
2.3.2存储管理方案77
2.3.3分页存储管理79
2.3.4分段存储管理80
2.3.5虚拟存储管理82
2.4设备管理85
2.4.1设备管理概述85
2.4.2设备管理技术86
2.4.3磁盘调度88
2.5文件管理89
2.5.1基本概念89
2.5.2文件的结构和组织90
2.5.3文件目录92
2.5.4存取方法、存取控制93
2.5.5文件的使用95
2.5.6文件的共享和保护95
2.5.7系统的安全与可靠性96
2.6作业管理98
2.6.1作业管理98
2.6.2作业调度99
2.6.3人机界面102
第3章程序设计语言基础知识104
3.1程序设计语言概述104
3.1.1程序设计语言的基本概念104
3.1.2程序设计语言的分类和特点105
3.1.3程序设计语言的基本成分109
3.2语言处理程序基础116
3.2.1汇编程序基础116
3.2.2编译程序基础118
3.2.3解释程序基础126
第4章数据结构与算法129
4.1线性结构129
4.1.1线性表129
4.1.2栈和队列137
4.1.3串143
4.2数组144
4.3树与二叉树147
4.3.1树的基本概念148
4.3.2二叉树149
4.3.3树和森林153
4.3.4最优二叉树156
4.3.5二叉查找树157
4.4图158
4.5查找163
4.5.1顺序查找与折半查找164
4.5.2树表查找167
4.5.3哈希表及哈希查找170
4.6算法173
4.6.1算法概述173
4.6.2排序算法177
4.6.3递归算法187
4.6.4字符串运算188
4.6.5图的相关算法191
第5章软件工程基础知识199
5.1软件工程概述199
5.1.1软件生存周期199
5.1.2软件生存周期模型201
5.1.3软件过程评估207
5.1.4软件工具209
5.1.5软件开发环境211
5.2软件需求分析212
5.2.1软件需求的定义212
5.2.2软件需求分析的基本任务213
5.2.3需求建模213
5.3软件设计214
5.3.1软件设计的基本任务214
5.3.2软件设计原则216
5.4结构化分析与设计方法219
5.4.1结构化分析方法219
5.4.2结构化设计方法221
5.4.3结构化程序设计方法223
5.5面向对象分析与设计方法224
5.5.1面向对象的基本概念224
5.5.2面向对象分析与设计227
5.5.3UML概述228
5.5.4设计模式232
5.6软件测试与运行235
5.6.1软件测试的目的及原则235
5.6.2软件测试方法238
5.6.3软件测试过程241
5.6.4软件测试设计和管理242
5.6.5软件调试243
5.6.6软件运行与维护243
5.7软件项目管理245
5.7.1管理范围245
5.7.2成本估算246
5.7.3风险分析247
5.7.4进度管理248
5.8软件质量与软件质量保证250
5.8.1软件质量特性250
5.8.2软件质量保证252
第6章数据库基础知识254
6.1基本概念254
6.1.1数据库系统254
6.1.2数据库管理技术的发展255
6.1.3大数据257
6.2数据模型260
6.2.1数据模型的基本概念260
6.2.2数据模型的三要素261
6.2.3E-R模型261
6.2.4基本的数据模型265
6.3DBMS的功能和特征267
6.3.1DBMS的功能267
6.3.2DBMS的特征与分类268
6.4数据库模式270
6.4.1模式270
6.4.2三级模式两级映像272
6.5关系数据库与关系运算272
6.5.1关系数据库的基本概念272
6.5.2关系数据库模式275
6.5.3完整性约束276
6.5.4关系代数运算276
6.6关系数据库SQL语言简介280
6.6.1SQL概述280
6.6.2SQL数据定义281
6.6.3SQL数据查询285
6.6.4SQL数据更新293
6.6.5SQL的访问控制295
6.6.6嵌入式SQL296
6.7数据库设计297
第7章网络与信息安全基础知识300
7.1计算机网络概述300
7.1.1计算机网络的组成300
7.1.2计算机网络的分类301
7.1.3ISO/OSI参考模型304
7.2计算机网络硬件305
7.2.1计算机网络互连设备305
7.2.2计算机网络传输媒体311
7.3TCP/IP314
7.3.1TCP/IP模型314
7.3.2TCP/IP协议315
7.3.3IP地址318
7.4Internet基础知识322
7.4.1Internet服务322
7.4.2因特网接入方式327
7.4.3TCP/IP的配置328
7.4.4浏览器的设置与使用329
7.5局域网基础知识332
7.6信息安全基础知识337
7.7网络安全概述341
第8章标准化和知识产权基础知识346
8.1标准化基础知识346
8.1.1软件工程标准化346
8.1.2能力成熟度模型简介348
8.2知识产权基础知识349
8.2.1基本概念349
8.2.2计算机软件著作权351
8.2.3计算机软件的商业秘密权363
第9章C程序设计366
9.1C语言基础366
9.1.1数据类型366
9.1.2运算符与表达式372
9.1.3输入/输出375
9.2控制语句377
9.3函数381
9.4指针385
9.4.1指针的定义385
9.4.2指针与数组387
9.4.3指针与函数389
9.4.4指针与链表393
9.5常见的C程序错误395
第10章C++程序设计407
10.1C++程序基础407
10.1.1数据类型407
10.1.2运算符、表达式和语句409
10.1.3基本输入/输出410
10.1.4函数412
10.1.5类与对象415
10.2继承与多态423
10.3异常处理428
10.4标准库430
10.4.1I/O流库431
10.4.2string434
10.4.3STL438
10.4.4vector443
第11章Java程序设计447
11.1Java语言概述447
11.2Java语言基础448
11.2.1Java基本数据类型449
11.2.2控制结构455
11.2.3Java核心类458
11.3类与接口462
11.3.1类的定义与使用462
11.3.2对象的初始化464
11.3.3包466
11.3.4继承468
11.3.5抽象类与接口471
11.4异常478
11.4.1异常的处理478
11.4.2自定义异常480
11.5输入、输出和流483
11.5.1字节流483
11.5.2字符流486
11.5.3标准输入/输出流487
11.6Java类库的使用489
11.6.1基本类型的包装类型489
11.6.2泛型和集合类493
精彩书摘
第3章程序设计语言基础知识
程序设计语言是为了书写计算机程序而设计的符号语言,用于对计算过程进行描述、组织和推导。程序设计语言的广泛使用始于1957年出现的FORTRAN,其发展和演化已经超越了运行程序的机器。
3.1程序设计语言概述
本节主要介绍程序设计语言的基本概念、基本成分和一些典型语言的特点及其适用范围。
3.1.1程序设计语言的基本概念
1.低级语言和高级语言
计算机硬件只能识别由0、1字符序列组成的机器指令,因此机器指令是最基本的计算机语言。用机器语言编制程序效率低、可读性差,也难以理解、修改和维护。因此,人们设计了汇编语言,用容易记忆的符号代替0、1序列,来表示机器指令中的操作码和操作数。例如,用ADD表示加法、SUB表示减法等。虽然使用汇编语言编写程序的效率和程序的可读性有所提高,但汇编语言是面向机器的语言,其书写格式在很大程度上取决于特定计算机的机器指令。机器语言和汇编语言被称为低级语言。
人们开发了功能更强、抽象级别更高的语言以支持程序设计,因此就产生了面向各类应用的程序设计语言,即高级语言,常见的有Java、C、C++、C#、Python、PHP等。这类语言与人们使用的自然语言比较接近,大大提高了程序设计的效率。
2.编译程序和解释程序
目前,尽管人们可以借助高级语言与计算机进行交互,但是计算机仍然只能理解和执行由0、1序列构成的机器语言,因此高级程序设计语言需要翻译,担负这一任务的程序称为“语言处理程序”。由于应用的不同,程序语言的翻译也是多种多样的。它们大致可分为汇编程序、解释程序和编译程序。
用某种高级语言或汇编语言编写的程序称为源程序,源程序不能直接在计算机上执行。如果源程序是用汇编语言编写的,则需要一个称为汇编程序的翻译程序将其翻译成目标程序后才能执行。如果源程序是用某种高级语言编写的,则需要对应的解释程序或编译程序对其进行翻译,然后在机器上运行。
解释程序也称为解释器,它可以直接解释执行源程序,或者将源程序翻译成某种中间表示形式后再加以执行;而编译程序(编译器)则首先将源程序翻译成目标语言程序,将目标程序与库函数链接后形成可执行程序,然后在计算机上运行可执行程序。这两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不产生独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。
3.程序设计语言的定义
一般地,程序设计语言的定义都涉及语法、语义和语用3个方面。
(1)语法。语法是指由程序设计语言基本符号组成程序中的各个语法成分(包括程序)的一组规则,其中由基本字符构成的符号(单词)书写规则称为词法规则,由符号(单词)构成语法成分的规则称为语法规则。程序设计语言的语法可通过形式语言进行描述。
(2)语义。语义是程序设计语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义。静态语义是指编译时可以确定的语法成分的含义,而运行时刻才能确定的含义是动态语义。一个程序的执行效果说明了该程序的语义,它取决于构成程序的各个组成部分的语义。
(3)语用。语用表示了构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。
语言的实现还涉及语境问题。语境是指理解和实现程序设计语言的环境,这种环境包括编译环境和运行环境。
3.1.2程序设计语言的分类和特点
1.程序设计语言发展概述
程序设计语言的发展是一个不断演化的过程,其根本的推动力就是对抽象机制的更高要求,以及对程序设计活动更好地支持。具体地说,就是把机器能够理解的语言提升到也能够很好地模仿人类思考问题的形式。
FORTRAN(“FORmulaTRANslator”的缩写)是第一个高级程序设计语言,在数值计算领域积累了大量高效而可靠的程序代码。FORTRAN语言的最大特性是接近数学公式的自然描述,具有很高的执行效率,目前广泛地应用于并行计算和高性能计算领域。
前言/序言
第5版前言
全国计算机技术与软件专业技术资格(水平)考试从实施至今已有二十余年,在社会上产生了很大的影响,对我国软件产业的形成和发展做出了重要的贡献。为了适应我国计算机信息技术发展的需求,人力资源和社会保障部、工业和信息产业部决定将考试的级别拓展到计算机信息技术行业的各个方面,以满足社会上对计算机信息技术人才的需要。
编者受全国计算机专业技术资格考试办公室委托,对《程序员教程(第4版)》一书进行再编,以适应新的考试大纲要求。在考试大纲中,要求考生掌握的知识面很广,每个章节的内容都能构成相关领域的一门课程,因此编写本书的难度很高。考虑到参加考试的人员已有一定的基础,所以本书中只对考试大纲中所涉及的知识领域的要点加以阐述,但限于篇幅所限,不能详细地展开,请读者谅解。
全书共分11章,各章的内容安排如下。
第1章计算机系统基础知识:主要介绍计算机系统硬件组成、数据在计算机中的表示和运算、校验码基础知识、指令系统和多媒体系统基础知识。
第2章操作系统基础知识:主要介绍操作系统的类型和功能等基本概念,进程管理、存储管理、设备管理、文件管理和作业管理等基础知识。
第3章程序设计语言基础知识:主要介绍程序设计语言的类型和特点、程序设计语言的基本成分以及编译、解释等基本的语言翻译基础知识。
第4章数据结构与算法:主要介绍线性表和链表、栈、队列、数组、树、图等基本数据结构以及查找、排序等常用算法。
第5章软件工程基础知识:主要介绍软件工程和项目管理基础、面向对象分析与设计方法、软件需求分析、软件设计、编码和测试、软件系统运行与维护、软件质量管理等基础知识。
第6章数据库基础知识:主要介绍数据库管理系统的主要功能和特征、数据库模式、数据模型和ER图、关系运算和SQL等基础知识。
第7章网络与信息安全基础知识:主要介绍网络的功能、分类、组成和拓扑结构,基本的网络协议与标准,常用网络设备与网络通信设备的作用和特点、局域网(LAN)和互联网(Internet)基础知识,以及信息安全、网络安全基础知识。
第8章标准化和知识产权基础知识:主要介绍标准化的基本概念和知识产权的概念与特点、计算机软件著作权和商业秘密权基础知识。
第9章C程序设计:主要介绍C程序基础、语句、函数、指针与简单C程序中常见错误。
第10章C++程序设计:主要介绍C++程序基础、类与对象、继承与多态、输入与输出流库、异常处理和常用STL模板库。
第11章Java程序设计:主要介绍Java程序语言基础和特点、类与接口、异常、文件和输入/输出流以及Java类库等基础知识。
本书第1章由张淑平、马志欣编写,第2章由王亚平编写,第3章和第4章由张淑平编写,第5章由褚华、霍秋艳编写,第6章由王亚平编写,第7章由严体华编写,第8章由刘强编写,第9章由张淑平、覃桂敏编写,第10章由张淑平、宋胜利编写,第11章由霍秋艳编写,全书由张淑平、覃桂敏统稿。
在本书的编写过程中,参考了许多相关的书籍和资料,编者在此对这些参考文献的作者表示感谢。同时感谢清华大学出版社在本书出版过程中所给予的支持和帮助。
因水平有限,书中难免存在欠妥之处,望读者指正,以利改进和提高。
编者
2018年1月
程序员教程(第5版)/全国计算机技术与软件专业技术资格(水平)考试指定用书 电子书 下载 mobi epub pdf txt