程序员教程第5版pdf免费阅读高清扫描版|百度网盘下载

编者按:全国计算机技术与软件专业技术资格(等级)考试指定书籍

根据2018年批准的程序员考试大纲编写,程序员教程第五版涵盖了程序员(初级)岗位所需的主要知识和应用技巧。通过程序员考试的考生,可以获得人力资源和社会保障部、工业和信息化部认可的职业资格证书。该考试是初级资格认证。

程序员教程第5版pdf免费阅读

程序员教程第5版pdf图片预览

简介

本书作为全国计算机技术与软件专业技术资格(水平)考试(简称“软考”)一级职称的指定教材,具有比较权威的指导意义。本书按照《程序员考试大纲》(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.3 DBMS的功能和特点...267

6.3.1 DBMS 的特点...267

6.3.2 DBMS的特点和分类...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.1 SQL 概述...280

6.6.2SQL 数据定义...281

6.6.3SQL数据查询...285

6.6.4SQL数据更新...293

6.6.5SQL 访问控制...295

6.6.6 嵌入式 SQL.296

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/IP.314

7.3.1 TCP/IP 模型...314

7.3.2 TCP/IP 协议...315

7.3.3 IP 地址...318

7.4 互联网基础知识...322

7.4.1 互联网服务...322

7.4.2 上网方式...327

7.4.3 TCP/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.2string.434

10.4.3STL.438

10.4.4vector443

第 11 章 Java 编程...447

11.1 Java 语言概述...447

11.2 Java 语言基础...448

11.2.1 Java 基本数据类型...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.6 Java类库的使用...489

11.6.1 包装类型的基本类型...489

11.6.2 泛型和集合...493

前言阅读

全国计算机技术与软件专业技术资格(水平)考试实施20多年,在社会上产生了很大的影响,为我国软件产业的形成和发展做出了重要贡献。为适应我国计算机信息技术发展需要,人力资源和社会保障部、工业和信息化部决定将考试水平扩大到计算机信息技术产业的各个方面。满足社会对计算机信息技术人才的需求。

编者受全国计算机专业技术资格考试办委托,对《程序员教程(第4版)》一书进行了重新编辑,以适应新考试大纲的要求。在考试大纲中,要求考生掌握广泛的知识,每一章的内容都可以构成相关领域的一门课程,所以本书的编写难度很大。考虑到应试者有一定基础,本书仅阐述考试大纲所涉及知识领域的重点,但限于篇幅,无法详细展开,敬请谅解。

本书分为11章。各章内容安排如下。

第一章计算机系统基础知识:主要介绍计算机系统的硬件组成、数据在计算机中的表示和操作、校验码的基本知识、指令系统和多媒体系统的基本知识。

第二章操作系统基础知识:主要介绍操作系统的类型、功能等基本概念,进程管理、存储管理、设备管理、文件管理、作业管理等基础知识。

第三章程序设计语言基础知识:主要介绍程序设计语言的种类和特点,程序设计语言的基本组成部分,编译、解释等语言翻译的基本知识。

第四章数据结构与算法:主要介绍线性和链表、栈、队列、数组、树、图等基本数据结构,以及搜索、排序等常用算法。

第5章软件工程基础:主要介绍软件工程与项目管理基础、面向对象分析与设计方法、软件需求分析、软件设计、编码与测试、软件系统运维、软件质量管理、 ETC。 。

第6章数据库基础:主要介绍数据库管理系统的主要功能和特点、数据库模式、数据模型和ER图、关系操作和SQL等基础知识。

第7章网络与信息安全基础知识:主要介绍网络的功能、分类、组成和拓扑结构,基本网络协议和标准,常用网络设备和网络通信设备的功能和特点,局域网(局域网)和互联网基础知识,以及信息安全和网络安全基础知识。

第8章标准化与知识产权基础知识:主要介绍标准化的基本概念和知识产权、计算机软件著作权、商业秘密权基础知识的概念和特点。

Chapter 9 C Programming:主要介绍C程序的基础知识、语句、函数、指针以及简单C程序中的常见错误。

第10章C程序设计:主要介绍C程序基础、类与对象、继承与多态、输入输出流库、异常处理及常用的STL模板库。

第11章Java编程:主要介绍Java编程语言的基础和特点、类和接口、异常、文件和输入/输出流、Java类库。

第一章张叔平和马志新写,第二章王亚平写,第3、四章张叔平写,第五章褚华和霍秋燕写,第六章王亚平写,第七章闫体华写,第八章刘强写,第九章张叔平秦贵敏写,第十章张叔平宋胜利写,第十一章霍秋雁写,全本书由张树平和秦桂敏所著。

在本书编写过程中,参考了很多相关书籍和资料,编者谨向这些参考资料的作者表示感谢。同时,感谢清华大学出版社在本书出版过程中给予的支持和帮助。

由于水平有限,书中难免有不足之处。希望读者多多指正,以便改进和提高。

免费在线试用

第 5 章软件工程基础

软件是计算机系统的重要组成部分,包括程序、数据和相关文档。软件工程是指应用计算机科学、数学和管理科学等原理,用工程原理和方法解决软件问题。其目的是提高软件生产力,提高软件质量,降低软件成本。

软件工程涉及软件开发、维护和管理的原则、方法、工具和环境。限于篇幅,本章无法对软件工程进行全面介绍。本章根据程序员级考试大纲的要求,重点介绍软件开发过程中的基本方法和内容。

5.1 软件工程概述

早期的软件主要是指程序,而程序的开发主要取决于开发者的个人技能和编程能力。当时的软件通常缺乏与程序相关的文档,软件开发的实际成本和进度往往与预期相去甚远,软件质量无法得到保证。随着计算机应用需求的不断增长,软件的规模也在不断扩大,但软件开发的生产力却远远跟不上计算机应用的快速增长。此外,由于缺乏良好的方法指导和工具辅助,以及缺乏相关文档,大量现有软件难以维护。上述问题严重阻碍了软件的发展。 1960年代中期,人们将软件开发和维护过程中遇到的各种问题称为“软件危机”。

1968年,在德国召开的北约(NorthAtlanticTreatyOrganization,北大西洋公约组织)会议上,首次提出“软件工程”的概念,希望用工程原理和方法来克服软件危机。此后,人们对软件过程模型、开发方法、工具和环境进行了研究,提出了瀑布模型、演化模型、螺旋模型、喷泉模型等开发过程模型。面向对象的方法和其他开发方法,以及一些CASE(ComputerAidedSoftwareEngineering,计算机辅助软件工程)工具和环境。 5.1.1 软件生命周期 与任何事物一样,软件产品或软件系统也会经历孕育、诞生、成长、成熟和衰退的多个阶段,一般称为软件生命周期。整个软件生命周期分为几个阶段,每个阶段的任务相对独立,也相对简单,便于不同人员之间的分工合作,从而降低整个软件开发项目的难度。目前,划分软件生命周期阶段的方法有很多种。软件规模、类型、开发方法、开发环境以及开发过程中使用的方法论都会影响软件生命周期阶段的划分。划分软件生命周期各阶段应遵循的一个基本原则是,使每个阶段的任务尽可能地相对独立,同一阶段的每个任务的性质尽可能相似,从而减少每个阶段的任务复杂性和简化不同阶段。它们之间的联系有利于软件开发的组织和管理。

1、问题定义 问题定义阶段必须回答的关键问题是:“要解决的问题是什么?”通过问题定义阶段的工作,系统分析师应该就问题的性质、项目目标和规模生成一份书面报告。问题定义阶段是软件生命周期中最短的阶段,通常需要一天或更短的时间。

2、本阶段可行性分析要回答的关键问题是:“前一阶段确定的问题是否有可行的解决方案?”可行性分析阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得解决,是否有可行的解决方案。

3、需求分析 需求分析阶段的任务不是具体解决问题,而是准确确定软件系统必须做什么,确定软件系统的功能、性能、数据和接口需求,从而确定逻辑模型系统的。

4、总体设计 这个阶段必须回答的关键问题是:“总的来说,这个问题应该如何解决?”

首先,应考虑几种可能的解决方案。系统分析员应该使用系统流程图或其他工具来描述每个可能的系统,估计每个选项的成本和收益,并应该推荐一个更好的系统(最佳计划)并制定一个实施建议系统的详细计划。总体设计阶段的第二个主要任务是设计软件的结构,即确定程序由哪些模块组成以及模块之间的关系。软件的结构通常用层次图或结构图来描述。

5、详细设计

整体设计阶段以更抽象和概括的方式提出问题的解决方案。详细设计阶段的主要任务是详细描述各个模块的功能,即回答以下关键问题:“这个系统具体应该如何实现?”。因此,详细设计阶段的任务不是编写程序,而是设计程序的详细规范,其中应包含程序员编写实际程序代码所必需的细节。通常使用 HIPO(层次结构加输入/过程/输出图)或 PDL 语言(程序设计语言)来描述详细设计的结果。

6、编码和单元测试 编码阶段就是将各个模块的控制结构转换成计算机可以接受的程序代码,即编写一个用特定编程语言表达的源程序清单,并对编写的每个模块进行仔细的测试。

7、综合测试 综合测试阶段的关键任务是通过各种类型的测试(以及相应的测试)使软件达到预定的要求。最基本的测试是集成测试和验收测试。所谓集成测试,就是将单元测试测试的模块,按照设计好的软件结构,按照选定的策略进行组装,并在组装过程中对程序进行必要的测试。所谓验收测试,就是用户(或在用户的积极参与下)按照规范的规定(通常在需求分析阶段确定)对目标系统的验收。

软件的可靠性可以通过软件测试结果的分析来预测;反之,也可以根据软件可靠性的要求,确定测试调试过程何时结束。测试计划、详细的测试场景和实际测试结果应保存在正式文档中,作为软件配置的组成部分。

8、维护

维护阶段的关键任务是通过各种必要的维护活动使系统永久满足用户的需求。通常有四类维护活动:纠正性、适应性、完善性和预防性。其中,纠正性维护是指对使用过程中发现的软件错误进行诊断和纠正;适应性维护是指修改软件以适应环境的变化;完善维护是指根据用户要求对软件进行改进或扩展,使其更加完善;预防性维护是指修改软件以提前为未来的维护活动做准备。

应准确记录每项维护活动,并将其作为官方文档进行维护。

5.1.2 软件生命周期模型 软件生命周期模型是一个框架,包括软件产品开发、运行和维护过程中的相关过程、活动和任务,涵盖从系统需求的定义到系统使用终止(IEEE 标准 12207.0—1996)。把这个概念应用到开发过程,即软件过程模型中,我们可以发现所有生命周期模型的内在基本特征:描述开发的主要阶段;定义每个阶段要完成的主要过程和活动;输入和输出(提交);提供了一个框架,可以将必要的活动映射到该框架中。

软件过程是生产最终满足要求并实现工程目标的软件产品所需的步骤。根据《计算机科学与技术百科全书》,软件过程是软件生命周期中一系列相关的过程。流程是活动的集合,活动是任务的集合。软件过程具有三个含义:一是个体含义,是指软件产品或系统生命周期中某一类活动的集合,如软件开发过程、软件管理过程等;上述所有含义下的整个软件过程;三是工程意义,是指解决软件过程,运用软件工程的原理和方法,构建软件过程模型,并结合软件产品的具体要求进行实例化的工程。用户环境进一步提高软件生产力和降低成本。

阅读剩余
THE END