本書作為全國計(jì)算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試(簡稱軟考)的初級職稱指定教材,具有比較權(quán)威的指導(dǎo)意義。本書根據(jù)《程序員考試大綱》(2018年審定通過)的重點(diǎn)內(nèi)容,組織了共11章的內(nèi)容,考生在學(xué)習(xí)教材內(nèi)容的同時(shí),還須對照考試大綱,認(rèn)真學(xué)習(xí)和復(fù)習(xí)大綱要求的知識點(diǎn)。
本書是在《程序員考試大綱》的指導(dǎo)下,對《程序員教程(第4版)》進(jìn)行再編后完成的。
本書適合參加相關(guān)考試的考生和在校大學(xué)生作為教材使用。
程序員教程(第5版)依據(jù)2018年審定通過的程序員考試大綱大綱編寫,涵蓋程序員(初級)崗位所要求的主要知識及應(yīng)用技術(shù)。通過程序員考試的考生可以獲得由人力資源和社會保障部、工業(yè)和信息化部認(rèn)可的職業(yè)資格證書,本考試為初級資格認(rèn)證。
第5版前言
全國計(jì)算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試從實(shí)施至今已有二十余年,在社會上產(chǎn)生了很大的影響,對我國軟件產(chǎn)業(yè)的形成和發(fā)展做出了重要的貢獻(xiàn)。為了適應(yīng)我國計(jì)算機(jī)信息技術(shù)發(fā)展的需求,人力資源和社會保障部、工業(yè)和信息產(chǎn)業(yè)部決定將考試的級別拓展到計(jì)算機(jī)信息技術(shù)行業(yè)的各個方面,以滿足社會上對計(jì)算機(jī)信息技術(shù)人才的需要。
編者受全國計(jì)算機(jī)專業(yè)技術(shù)資格考試辦公室委托,對《程序員教程(第4版)》一書進(jìn)行再編,以適應(yīng)新的考試大綱要求。在考試大綱中,要求考生掌握的知識面很廣,每個章節(jié)的內(nèi)容都能構(gòu)成相關(guān)領(lǐng)域的一門課程,因此編寫本書的難度很高?紤]到參加考試的人員已有一定的基礎(chǔ),所以本書中只對考試大綱中所涉及的知識領(lǐng)域的要點(diǎn)加以闡述,但限于篇幅所限,不能詳細(xì)地展開,請讀者諒解。
全書共分11章,各章的內(nèi)容安排如下。
第1章 計(jì)算機(jī)系統(tǒng)基礎(chǔ)知識:主要介紹計(jì)算機(jī)系統(tǒng)硬件組成、數(shù)據(jù)在計(jì)算機(jī)中的表示和運(yùn)算、校驗(yàn)碼基礎(chǔ)知識、指令系統(tǒng)和多媒體系統(tǒng)基礎(chǔ)知識。
第2章 操作系統(tǒng)基礎(chǔ)知識:主要介紹操作系統(tǒng)的類型和功能等基本概念,進(jìn)程管理、存儲管理、設(shè)備管理、文件管理和作業(yè)管理等基礎(chǔ)知識。
第3章 程序設(shè)計(jì)語言基礎(chǔ)知識:主要介紹程序設(shè)計(jì)語言的類型和特點(diǎn)、程序設(shè)計(jì)語言的基本成分以及編譯、解釋等基本的語言翻譯基礎(chǔ)知識。
第4章 數(shù)據(jù)結(jié)構(gòu)與算法:主要介紹線性表和鏈表、棧、隊(duì)列、數(shù)組、樹、圖等基本數(shù)據(jù)結(jié)構(gòu)以及查找、排序等常用算法。
第5章 軟件工程基礎(chǔ)知識:主要介紹軟件工程和項(xiàng)目管理基礎(chǔ)、面向?qū)ο蠓治雠c設(shè)計(jì)方法、軟件需求分析、軟件設(shè)計(jì)、編碼和測試、軟件系統(tǒng)運(yùn)行與維護(hù)、軟件質(zhì)量管理等基礎(chǔ)知識。
第6章 數(shù)據(jù)庫基礎(chǔ)知識:主要介紹數(shù)據(jù)庫管理系統(tǒng)的主要功能和特征、數(shù)據(jù)庫模式、數(shù)據(jù)模型和ER圖、關(guān)系運(yùn)算和SQL等基礎(chǔ)知識。
第7章 網(wǎng)絡(luò)與信息安全基礎(chǔ)知識:主要介紹網(wǎng)絡(luò)的功能、分類、組成和拓?fù)浣Y(jié)構(gòu),基本的網(wǎng)絡(luò)協(xié)議與標(biāo)準(zhǔn),常用網(wǎng)絡(luò)設(shè)備與網(wǎng)絡(luò)通信設(shè)備的作用和特點(diǎn)、局域網(wǎng)(LAN)和互聯(lián)網(wǎng)(Internet)基礎(chǔ)知識,以及信息安全、網(wǎng)絡(luò)安全基礎(chǔ)知識。
第8章 標(biāo)準(zhǔn)化和知識產(chǎn)權(quán)基礎(chǔ)知識:主要介紹標(biāo)準(zhǔn)化的基本概念和知識產(chǎn)權(quán)的概念與特點(diǎn)、計(jì)算機(jī)軟件著作權(quán)和商業(yè)秘密權(quán)基礎(chǔ)知識。
第9章 C程序設(shè)計(jì):主要介紹C程序基礎(chǔ)、語句、函數(shù)、指針與簡單C程序中常見錯誤。
第10章 C 程序設(shè)計(jì):主要介紹C 程序基礎(chǔ)、類與對象、繼承與多態(tài)、輸入與輸出流庫、異常處理和常用STL模板庫。
第11章 Java程序設(shè)計(jì):主要介紹Java程序語言基礎(chǔ)和特點(diǎn)、類與接口、異常、文件和輸入/輸出流以及Java類庫等基礎(chǔ)知識。
本書第1章由張淑平、馬志欣編寫,第2章由王亞平編寫,第3章和第4章由張淑平編寫,第5章由褚華、霍秋艷編寫,第6章由王亞平編寫,第7章由嚴(yán)體華編寫,第8章由劉強(qiáng)編寫,第9章由張淑平、覃桂敏編寫,第10章由張淑平、宋勝利編寫,第11章由霍秋艷編寫,全書由張淑平、覃桂敏統(tǒng)稿。
在本書的編寫過程中,參考了許多相關(guān)的書籍和資料,編者在此對這些參考文獻(xiàn)的作者表示感謝。同時(shí)感謝清華大學(xué)出版社在本書出版過程中所給予的支持和幫助。
因水平有限,書中難免存在欠妥之處,望讀者指正,以利改進(jìn)和提高。
編 者
2018年1月
目
錄
第1章 計(jì)算機(jī)系統(tǒng)基礎(chǔ)知識... 1
1.1 計(jì)算機(jī)系統(tǒng)的基本組成... 1
1.2 數(shù)據(jù)的表示及運(yùn)算... 3
1.2.1 計(jì)算機(jī)中數(shù)據(jù)的表示... 3
1.2.2 校驗(yàn)碼... 13
1.2.3 邏輯代數(shù)及邏輯運(yùn)算... 17
1.2.4 機(jī)器數(shù)的運(yùn)算... 19
1.3 計(jì)算機(jī)的基本組成及工作原理... 23
1.3.1 總線的基本概念... 23
1.3.2 中央處理單元... 25
1.3.3 存儲系統(tǒng)... 30
1.3.4 輸入/輸出技術(shù)... 36
1.4 指令系統(tǒng)簡介... 40
1.5 多媒體系統(tǒng)簡介... 44
1.5.1 數(shù)字聲音... 45
1.5.2 圖形與圖像... 48
1.5.3 動畫和視頻... 55
第2章 操作系統(tǒng)基礎(chǔ)知識... 62
2.1 操作系統(tǒng)概述... 62
2.2 進(jìn)程管理... 65
2.2.1 基本概念... 65
2.2.2 進(jìn)程控制... 67
2.2.3 進(jìn)程通信... 68
2.2.4 進(jìn)程調(diào)度... 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 設(shè)備管理... 85
2.4.1 設(shè)備管理概述... 85
2.4.2 設(shè)備管理技術(shù)... 86
2.4.3 磁盤調(diào)度... 88
2.5 文件管理... 89
2.5.1 基本概念... 89
2.5.2 文件的結(jié)構(gòu)和組織... 90
2.5.3 文件目錄... 92
2.5.4 存取方法、存取控制... 93
2.5.5 文件的使用... 95
2.5.6 文件的共享和保護(hù)... 95
2.5.7 系統(tǒng)的安全與可靠性... 96
2.6 作業(yè)管理... 98
2.6.1 作業(yè)管理... 98
2.6.2 作業(yè)調(diào)度... 99
2.6.3 人機(jī)界面... 102
第3章 程序設(shè)計(jì)語言基礎(chǔ)知識... 104
3.1 程序設(shè)計(jì)語言概述... 104
3.1.1 程序設(shè)計(jì)語言的基本概念... 104
3.1.2 程序設(shè)計(jì)語言的分類和特點(diǎn)... 105
3.1.3 程序設(shè)計(jì)語言的基本成分... 109
3.2 語言處理程序基礎(chǔ)... 116
3.2.1 匯編程序基礎(chǔ)... 116
3.2.2 編譯程序基礎(chǔ)... 118
3.2.3 解釋程序基礎(chǔ)... 126
第4章 數(shù)據(jù)結(jié)構(gòu)與算法... 129
4.1 線性結(jié)構(gòu)... 129
4.1.1 線性表... 129
4.1.2 棧和隊(duì)列... 137
4.1.3 串... 143
4.2 數(shù)組... 144
4.3 樹與二叉樹... 147
4.3.1 樹的基本概念... 148
4.3.2 二叉樹... 149
4.3.3 樹和森林... 153
4.3.4 最優(yōu)二叉樹... 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 字符串運(yùn)算... 188
4.6.5 圖的相關(guān)算法... 191
第5章 軟件工程基礎(chǔ)知識... 199
5.1 軟件工程概述... 199
5.1.1 軟件生存周期... 199
5.1.2 軟件生存周期模型... 201
5.1.3 軟件過程評估... 207
5.1.4 軟件工具... 209
5.1.5 軟件開發(fā)環(huán)境... 211
5.2 軟件需求分析... 212
5.2.1 軟件需求的定義... 212
5.2.2 軟件需求分析的基本任務(wù)... 213
5.2.3 需求建模... 213
5.3 軟件設(shè)計(jì)... 214
5.3.1 軟件設(shè)計(jì)的基本任務(wù)... 214
5.3.2 軟件設(shè)計(jì)原則... 216
5.4 結(jié)構(gòu)化分析與設(shè)計(jì)方法... 219
5.4.1 結(jié)構(gòu)化分析方法... 219
5.4.2 結(jié)構(gòu)化設(shè)計(jì)方法... 221
5.4.3 結(jié)構(gòu)化程序設(shè)計(jì)方法... 223
5.5 面向?qū)ο蠓治雠c設(shè)計(jì)方法... 224
5.5.1 面向?qū)ο蟮幕靖拍?.. 224
5.5.2 面向?qū)ο蠓治雠c設(shè)計(jì)... 227
5.5.3 UML概述... 228
5.5.4 設(shè)計(jì)模式... 232
5.6 軟件測試與運(yùn)行... 235
5.6.1 軟件測試的目的及原則... 235
5.6.2 軟件測試方法... 238
5.6.3 軟件測試過程... 241
5.6.4 軟件測試設(shè)計(jì)和管理... 242
5.6.5 軟件調(diào)試... 243
5.6.6 軟件運(yùn)行與維護(hù)... 243
5.7 軟件項(xiàng)目管理... 245
5.7.1 管理范圍... 245
5.7.2 成本估算... 246
5.7.3 風(fēng)險(xiǎn)分析... 247
5.7.4 進(jìn)度管理... 248
5.8 軟件質(zhì)量與軟件質(zhì)量保證... 250
5.8.1 軟件質(zhì)量特性... 250
5.8.2 軟件質(zhì)量保證... 252
第6章 數(shù)據(jù)庫基礎(chǔ)知識... 254
6.1 基本概念... 254
6.1.1 數(shù)據(jù)庫系統(tǒng)... 254
6.1.2 數(shù)據(jù)庫管理技術(shù)的發(fā)展... 255
6.1.3 大數(shù)據(jù)... 257
6.2 數(shù)據(jù)模型... 260
6.2.1 數(shù)據(jù)模型的基本概念... 260
6.2.2 數(shù)據(jù)模型的三要素... 261
6.2.3 E-R模型... 261
6.2.4 基本的數(shù)據(jù)模型... 265
6.3
DBMS的功能和特征... 267
6.3.1
DBMS的功能... 267
6.3.2
DBMS的特征與分類... 268
6.4 數(shù)據(jù)庫模式... 270
6.4.1 模式... 270
6.4.2 三級模式兩級映像... 272
6.5 關(guān)系數(shù)據(jù)庫與關(guān)系運(yùn)算... 272
6.5.1 關(guān)系數(shù)據(jù)庫的基本概念... 272
6.5.2 關(guān)系數(shù)據(jù)庫模式... 275
6.5.3 完整性約束... 276
6.5.4 關(guān)系代數(shù)運(yùn)算... 276
6.6 關(guān)系數(shù)據(jù)庫SQL語言簡介... 280
6.6.1 SQL概述... 280
6.6.2 SQL數(shù)據(jù)定義... 281
6.6.3 SQL數(shù)據(jù)查詢... 285
6.6.4 SQL數(shù)據(jù)更新... 293
6.6.5 SQL的訪問控制... 295
6.6.6 嵌入式SQL. 296
6.7 數(shù)據(jù)庫設(shè)計(jì)... 297
第7章 網(wǎng)絡(luò)與信息安全基礎(chǔ)知識... 300
7.1 計(jì)算機(jī)網(wǎng)絡(luò)概述... 300
7.1.1 計(jì)算機(jī)網(wǎng)絡(luò)的組成... 300
7.1.2 計(jì)算機(jī)網(wǎng)絡(luò)的分類... 301
7.1.3
ISO/OSI參考模型... 304
7.2 計(jì)算機(jī)網(wǎng)絡(luò)硬件... 305
7.2.1 計(jì)算機(jī)網(wǎng)絡(luò)互連設(shè)備... 305
7.2.2 計(jì)算機(jī)網(wǎng)絡(luò)傳輸媒體... 311
7.3 TCP/IP. 314
7.3.1
TCP/IP模型... 314
7.3.2
TCP/IP協(xié)議... 315
7.3.3 IP地址... 318
7.4 Internet基礎(chǔ)知識... 322
7.4.1
Internet服務(wù)... 322
7.4.2 因特網(wǎng)接入方式... 327
7.4.3
TCP/IP的配置... 328
7.4.4 瀏覽器的設(shè)置與使用... 329
7.5 局域網(wǎng)基礎(chǔ)知識... 332
7.6 信息安全基礎(chǔ)知識... 337
7.7 網(wǎng)絡(luò)安全概述... 341
第8章 標(biāo)準(zhǔn)化和知識產(chǎn)權(quán)基礎(chǔ)知識... 346
8.1 標(biāo)準(zhǔn)化基礎(chǔ)知識... 346
8.1.1 軟件工程標(biāo)準(zhǔn)化... 346
8.1.2 能力成熟度模型簡介... 348
8.2 知識產(chǎn)權(quán)基礎(chǔ)知識... 349
8.2.1 基本概念... 349
8.2.2 計(jì)算機(jī)軟件著作權(quán)... 351
8.2.3 計(jì)算機(jī)軟件的商業(yè)秘密權(quán)... 363
第9章 C程序設(shè)計(jì)... 366
9.1 C語言基礎(chǔ)... 366
9.1.1 數(shù)據(jù)類型... 366
9.1.2 運(yùn)算符與表達(dá)式... 372
9.1.3 輸入/輸出... 375
9.2 控制語句... 377
9.3 函數(shù)... 381
9.4 指針... 385
9.4.1 指針的定義... 385
9.4.2 指針與數(shù)組... 387
9.4.3 指針與函數(shù)... 389
9.4.4 指針與鏈表... 393
9.5 常見的C程序錯誤... 395
第10章 C 程序設(shè)計(jì)... 407
10.1 C 程序基礎(chǔ)... 407
10.1.1 數(shù)據(jù)類型... 407
10.1.2 運(yùn)算符、表達(dá)式和語句... 409
10.1.3 基本輸入/輸出... 410
10.1.4 函數(shù)... 412
10.1.5 類與對象... 415
10.2
繼承與多態(tài)... 423
10.3 異常處理... 428
10.4 標(biāo)準(zhǔn)庫... 430
10.4.1 I/O流庫... 431
10.4.2
string. 434
10.4.3 STL. 438
10.4.4
vector 443
第11章 Java程序設(shè)計(jì)... 447
11.1
Java語言概述... 447
11.2
Java語言基礎(chǔ)... 448
11.2.1
Java基本數(shù)據(jù)類型... 449
11.2.2 控制結(jié)構(gòu)... 455
11.2.3
Java核心類... 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 字節(jié)流... 483
11.5.2 字符流... 486
11.5.3 標(biāo)準(zhǔn)輸入/輸出流... 487
11.6
Java類庫的使用... 489
11.6.1 基本類型的包裝類型... 489
11.6.2 泛型和集合類... 493