本書作為全國計算機技術與軟件專業(yè)技術資格(水平)考試(簡稱軟考)的初級職稱指定教材,具有比較權威的指導意義。本書根據(jù)《程序員考試大綱》(2018年審定通過)的重點內容,組織了共11章的內容,考生在學習教材內容的同時,還須對照考試大綱,認真學習和復習大綱要求的知識點。
本書是在《程序員考試大綱》的指導下,對《程序員教程(第4版)》進行再編后完成的。
本書適合參加相關考試的考生和在校大學生作為教材使用。
程序員教程(第5版)依據(jù)2018年審定通過的程序員考試大綱大綱編寫,涵蓋程序員(初級)崗位所要求的主要知識及應用技術。通過程序員考試的考生可以獲得由人力資源和社會保障部、工業(yè)和信息化部認可的職業(yè)資格證書,本考試為初級資格認證。
第5版前言
全國計算機技術與軟件專業(yè)技術資格(水平)考試從實施至今已有二十余年,在社會上產(chǎn)生了很大的影響,對我國軟件產(chǎn)業(yè)的形成和發(fā)展做出了重要的貢獻。為了適應我國計算機信息技術發(fā)展的需求,人力資源和社會保障部、工業(yè)和信息產(chǎn)業(yè)部決定將考試的級別拓展到計算機信息技術行業(yè)的各個方面,以滿足社會上對計算機信息技術人才的需要。
編者受全國計算機專業(yè)技術資格考試辦公室委托,對《程序員教程(第4版)》一書進行再編,以適應新的考試大綱要求。在考試大綱中,要求考生掌握的知識面很廣,每個章節(jié)的內容都能構成相關領域的一門課程,因此編寫本書的難度很高。考慮到參加考試的人員已有一定的基礎,所以本書中只對考試大綱中所涉及的知識領域的要點加以闡述,但限于篇幅所限,不能詳細地展開,請讀者諒解。
全書共分11章,各章的內容安排如下。
第1章 計算機系統(tǒng)基礎知識:主要介紹計算機系統(tǒng)硬件組成、數(shù)據(jù)在計算機中的表示和運算、校驗碼基礎知識、指令系統(tǒng)和多媒體系統(tǒng)基礎知識。
第2章 操作系統(tǒng)基礎知識:主要介紹操作系統(tǒng)的類型和功能等基本概念,進程管理、存儲管理、設備管理、文件管理和作業(yè)管理等基礎知識。
第3章 程序設計語言基礎知識:主要介紹程序設計語言的類型和特點、程序設計語言的基本成分以及編譯、解釋等基本的語言翻譯基礎知識。
第4章 數(shù)據(jù)結構與算法:主要介紹線性表和鏈表、棧、隊列、數(shù)組、樹、圖等基本數(shù)據(jù)結構以及查找、排序等常用算法。
第5章 軟件工程基礎知識:主要介紹軟件工程和項目管理基礎、面向對象分析與設計方法、軟件需求分析、軟件設計、編碼和測試、軟件系統(tǒng)運行與維護、軟件質量管理等基礎知識。
第6章 數(shù)據(jù)庫基礎知識:主要介紹數(shù)據(jù)庫管理系統(tǒng)的主要功能和特征、數(shù)據(jù)庫模式、數(shù)據(jù)模型和ER圖、關系運算和SQL等基礎知識。
第7章 網(wǎng)絡與信息安全基礎知識:主要介紹網(wǎng)絡的功能、分類、組成和拓撲結構,基本的網(wǎng)絡協(xié)議與標準,常用網(wǎng)絡設備與網(wǎng)絡通信設備的作用和特點、局域網(wǎng)(LAN)和互聯(lián)網(wǎng)(Internet)基礎知識,以及信息安全、網(wǎng)絡安全基礎知識。
第8章 標準化和知識產(chǎn)權基礎知識:主要介紹標準化的基本概念和知識產(chǎn)權的概念與特點、計算機軟件著作權和商業(yè)秘密權基礎知識。
第9章 C程序設計:主要介紹C程序基礎、語句、函數(shù)、指針與簡單C程序中常見錯誤。
第10章 C 程序設計:主要介紹C 程序基礎、類與對象、繼承與多態(tài)、輸入與輸出流庫、異常處理和常用STL模板庫。
第11章 Java程序設計:主要介紹Java程序語言基礎和特點、類與接口、異常、文件和輸入/輸出流以及Java類庫等基礎知識。
本書第1章由張淑平、馬志欣編寫,第2章由王亞平編寫,第3章和第4章由張淑平編寫,第5章由褚華、霍秋艷編寫,第6章由王亞平編寫,第7章由嚴體華編寫,第8章由劉強編寫,第9章由張淑平、覃桂敏編寫,第10章由張淑平、宋勝利編寫,第11章由霍秋艷編寫,全書由張淑平、覃桂敏統(tǒng)稿。
在本書的編寫過程中,參考了許多相關的書籍和資料,編者在此對這些參考文獻的作者表示感謝。同時感謝清華大學出版社在本書出版過程中所給予的支持和幫助。
因水平有限,書中難免存在欠妥之處,望讀者指正,以利改進和提高。
編 者
2018年1月
目
錄
第1章 計算機系統(tǒng)基礎知識... 1
1.1 計算機系統(tǒng)的基本組成... 1
1.2 數(shù)據(jù)的表示及運算... 3
1.2.1 計算機中數(shù)據(jù)的表示... 3
1.2.2 校驗碼... 13
1.2.3 邏輯代數(shù)及邏輯運算... 17
1.2.4 機器數(shù)的運算... 19
1.3 計算機的基本組成及工作原理... 23
1.3.1 總線的基本概念... 23
1.3.2 中央處理單元... 25
1.3.3 存儲系統(tǒng)... 30
1.3.4 輸入/輸出技術... 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)基礎知識... 62
2.1 操作系統(tǒng)概述... 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 系統(tǒng)的安全與可靠性... 96
2.6 作業(yè)管理... 98
2.6.1 作業(yè)管理... 98
2.6.2 作業(yè)調度... 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章 數(shù)據(jù)結構與算法... 129
4.1 線性結構... 129
4.1.1 線性表... 129
4.1.2 棧和隊列... 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 字符串運算... 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 軟件開發(fā)環(huán)境... 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.3 UML概述... 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章 數(shù)據(jù)庫基礎知識... 254
6.1 基本概念... 254
6.1.1 數(shù)據(jù)庫系統(tǒng)... 254
6.1.2 數(shù)據(jù)庫管理技術的發(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 關系數(shù)據(jù)庫與關系運算... 272
6.5.1 關系數(shù)據(jù)庫的基本概念... 272
6.5.2 關系數(shù)據(jù)庫模式... 275
6.5.3 完整性約束... 276
6.5.4 關系代數(shù)運算... 276
6.6 關系數(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ù)庫設計... 297
第7章 網(wǎng)絡與信息安全基礎知識... 300
7.1 計算機網(wǎng)絡概述... 300
7.1.1 計算機網(wǎng)絡的組成... 300
7.1.2 計算機網(wǎng)絡的分類... 301
7.1.3
ISO/OSI參考模型... 304
7.2 計算機網(wǎng)絡硬件... 305
7.2.1 計算機網(wǎng)絡互連設備... 305
7.2.2 計算機網(wǎng)絡傳輸媒體... 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基礎知識... 322
7.4.1
Internet服務... 322
7.4.2 因特網(wǎng)接入方式... 327
7.4.3
TCP/IP的配置... 328
7.4.4 瀏覽器的設置與使用... 329
7.5 局域網(wǎng)基礎知識... 332
7.6 信息安全基礎知識... 337
7.7 網(wǎng)絡安全概述... 341
第8章 標準化和知識產(chǎn)權基礎知識... 346
8.1 標準化基礎知識... 346
8.1.1 軟件工程標準化... 346
8.1.2 能力成熟度模型簡介... 348
8.2 知識產(chǎn)權基礎知識... 349
8.2.1 基本概念... 349
8.2.2 計算機軟件著作權... 351
8.2.3 計算機軟件的商業(yè)秘密權... 363
第9章 C程序設計... 366
9.1 C語言基礎... 366
9.1.1 數(shù)據(jù)類型... 366
9.1.2 運算符與表達式... 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 程序設計... 407
10.1 C 程序基礎... 407
10.1.1 數(shù)據(jù)類型... 407
10.1.2 運算符、表達式和語句... 409
10.1.3 基本輸入/輸出... 410
10.1.4 函數(shù)... 412
10.1.5 類與對象... 415
10.2
繼承與多態(tài)... 423
10.3 異常處理... 428
10.4 標準庫... 430
10.4.1 I/O流庫... 431
10.4.2
string. 434
10.4.3 STL. 438
10.4.4
vector 443
第11章 Java程序設計... 447
11.1
Java語言概述... 447
11.2
Java語言基礎... 448
11.2.1
Java基本數(shù)據(jù)類型... 449
11.2.2 控制結構... 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 標準輸入/輸出流... 487
11.6
Java類庫的使用... 489
11.6.1 基本類型的包裝類型... 489
11.6.2 泛型和集合類... 493