本書重點(diǎn)介紹程序設(shè)計(jì)的基本方法和技術(shù),全書共15章,以程序設(shè)計(jì)思想、程序設(shè)計(jì)語(yǔ)言、程序設(shè)計(jì)技術(shù)和軟件工程管理四條主線組織內(nèi)容。在程序設(shè)計(jì)思想方面,以結(jié)構(gòu)化程序設(shè)計(jì)思想為主,同時(shí)介紹面向?qū)ο蟪绦蛟O(shè)計(jì)思想,并引入并行程序設(shè)計(jì)的思想。在程序設(shè)計(jì)語(yǔ)言方面,以C語(yǔ)言為主,按照*C11標(biāo)準(zhǔn),充分考慮初學(xué)者的學(xué)習(xí)規(guī)律,深入淺出地介紹基本語(yǔ)法和特性,內(nèi)容通俗易懂。在程序設(shè)計(jì)技術(shù)方面,重點(diǎn)介紹結(jié)構(gòu)化程序設(shè)計(jì),同時(shí)從代碼封裝與重用入手,介紹函數(shù)庫(kù)和組件;另外,還加強(qiáng)了并行計(jì)算技術(shù)的內(nèi)容,除介紹面向多機(jī)的MPI外,還介紹面向多核的多線程和OpenMP技術(shù)。在軟件工程管理方面,為培養(yǎng)個(gè)人軟件工程的能力,從程序設(shè)計(jì)的規(guī)范性入手介紹個(gè)體軟件過(guò)程管理。
本書適合作為高等學(xué)校程序設(shè)計(jì)基礎(chǔ)課程的教材,也可供程序設(shè)計(jì)愛(ài)好者學(xué)習(xí)。
十二五普通高等教育本科*規(guī)劃教材,精品課程配套教材。程序設(shè)計(jì)課程的經(jīng)典教材,使用廣泛,歷久彌新,追求卓越,精心修訂。圍繞程序設(shè)計(jì)能力培養(yǎng),從程序設(shè)計(jì)思想、語(yǔ)言、技術(shù)和工程管理四個(gè)方面組織內(nèi)容,以結(jié)構(gòu)化程序設(shè)計(jì)思想為主,兼顧面向?qū)ο蟪绦蛟O(shè)計(jì)和并行程序設(shè)計(jì);程序?qū)崿F(xiàn)以C語(yǔ)言為主,系統(tǒng)介紹了C11標(biāo)準(zhǔn),同時(shí)介紹其他語(yǔ)言的相應(yīng)處理;從分解與重用的角度闡述函數(shù)、文件、庫(kù)、組件等相關(guān)技術(shù),從高性能計(jì)算的角度介紹MPI并行程序設(shè)計(jì)技術(shù);從編碼規(guī)范入手引入個(gè)體軟件過(guò)程管理。在教材內(nèi)容編排模式上,采用將完整案例分解,逐級(jí)深入,引導(dǎo)學(xué)生有序地用程序設(shè)計(jì)思想解決實(shí)際工程問(wèn)題。配套資源豐富。提供教學(xué)計(jì)劃、教學(xué)講義(中英文)、教學(xué)課件、教學(xué)素材、教學(xué)例題與案例、教學(xué)視頻、在線測(cè)試系統(tǒng)等數(shù)字資源。以知識(shí)點(diǎn)為單元組織在線資源,利用思維導(dǎo)圖將知識(shí)點(diǎn)有機(jī)地聯(lián)系到一起。從高度、廣度、深度三個(gè)方面立體展示了課程知識(shí)網(wǎng)絡(luò)。結(jié)構(gòu)清晰,語(yǔ)言通俗易懂,內(nèi)容由淺入深,循序漸進(jìn),實(shí)例豐富,習(xí)題具有代表性。全書貫穿傳授知識(shí)、培養(yǎng)能力、提高素質(zhì)的教學(xué)理念。
目錄
第1章計(jì)算機(jī)及程序設(shè)計(jì)概述1
1.1概述1
1.2計(jì)算與機(jī)器2
1.2.1計(jì)算器2
1.2.2機(jī)械式計(jì)算機(jī)2
1.2.3圖靈機(jī)模型3
1.2.4電子數(shù)字計(jì)算機(jī)4
1.3指令與程序5
1.4計(jì)算機(jī)的典型應(yīng)用6
1.5程序設(shè)計(jì)語(yǔ)言7
1.5.1機(jī)器語(yǔ)言8
1.5.2匯編語(yǔ)言8
1.5.3高級(jí)語(yǔ)言9
1.6問(wèn)題求解與算法11
1.6.1算法定義12
1.6.2算法復(fù)雜性12
1.7算法描述13
1.7.1偽代碼13
1.7.2流程圖14
1.7.3NS圖15
1.8程序設(shè)計(jì)15
1.8.1基本步驟15
1.8.2結(jié)構(gòu)化程序設(shè)計(jì)16
1.8.3面向?qū)ο蟪绦蛟O(shè)計(jì)17
1.8.4并行程序設(shè)計(jì)17
1.8.5程序設(shè)計(jì)思想前沿18
1.9C語(yǔ)言簡(jiǎn)介18
1.9.1C語(yǔ)言的特點(diǎn)18
1.9.2簡(jiǎn)單的C程序設(shè)計(jì)19[1]〖3〗程序設(shè)計(jì)基礎(chǔ)(C語(yǔ)言)(第3版)目錄〖3〗[3]1.9.3C語(yǔ)言程序結(jié)構(gòu)21
1.9.4C程序設(shè)計(jì)過(guò)程23
1.10案例24
練習(xí)題25
第2章信息編碼與數(shù)據(jù)類型27
2.1概述27
2.2二進(jìn)制與信息編碼27
2.2.1整數(shù)編碼27
2.2.2實(shí)數(shù)編碼28
2.2.3字符編碼29
2.3標(biāo)識(shí)符和關(guān)鍵字30
2.3.1標(biāo)識(shí)符構(gòu)成30
2.3.2關(guān)鍵字30
2.3.3自定義標(biāo)識(shí)符31
2.4基本數(shù)據(jù)類型31
2.4.1整數(shù)類型33
2.4.2實(shí)數(shù)類型34
2.4.3字符類型34
2.4.4邏輯類型36
2.4.5復(fù)數(shù)類型36
2.5常量37
2.5.1整型常量37
2.5.2實(shí)型常量38
2.5.3字符常量38
2.5.4字符串常量39
2.5.5邏輯常量40
2.5.6復(fù)數(shù)常量40
2.5.7符號(hào)常量41
2.6變量41
2.6.1變量聲明42
2.6.2變量初始化43
2.6.3變量賦值44
2.6.4變量讀寫45
2.7案例45
練習(xí)題46
第3章基本運(yùn)算與順序結(jié)構(gòu)48
3.1概述48
3.2運(yùn)算符與表達(dá)式48
3.3賦值運(yùn)算50
3.4算術(shù)運(yùn)算51
3.4.1基本算術(shù)運(yùn)算51
3.4.2自增或自減運(yùn)算52
3.4.3整數(shù)運(yùn)算53
3.4.4實(shí)數(shù)運(yùn)算55
3.4.5復(fù)合賦值運(yùn)算56
3.5字符運(yùn)算56
3.5.1算術(shù)運(yùn)算56
3.5.2字符分類57
3.5.3字符轉(zhuǎn)換58
3.6位運(yùn)算58
3.6.1位邏輯運(yùn)算58
3.6.2位移運(yùn)算60
3.6.3復(fù)合位運(yùn)算及補(bǔ)位原則61
3.7逗號(hào)運(yùn)算61
3.8強(qiáng)制類型轉(zhuǎn)換62
3.8.1算術(shù)運(yùn)算中的隱式轉(zhuǎn)換62
3.8.2賦值運(yùn)算中的隱式轉(zhuǎn)換62
3.8.3顯式轉(zhuǎn)換63
3.9sizeof運(yùn)算64
3.10標(biāo)準(zhǔn)設(shè)備輸入輸出庫(kù)64
3.10.1字符輸入輸出函數(shù)65
3.10.2格式化輸出函數(shù)66
3.10.3格式化輸入函數(shù)72
3.11數(shù)學(xué)庫(kù)76
3.11.1實(shí)數(shù)計(jì)算函數(shù)76
3.11.2復(fù)數(shù)運(yùn)算函數(shù)77
3.12基本語(yǔ)句78
3.12.1標(biāo)簽語(yǔ)句78
3.12.2空語(yǔ)句78
3.12.3聲明語(yǔ)句79
3.12.4表達(dá)式語(yǔ)句79
3.12.5復(fù)合語(yǔ)句79
3.13順序結(jié)構(gòu)80
3.14案例82
練習(xí)題83
第4章邏輯判斷與選擇結(jié)構(gòu)85
4.1概述85
4.2關(guān)系運(yùn)算85
4.3邏輯運(yùn)算86
4.4條件運(yùn)算88
4.5if語(yǔ)句89
4.5.1單分支選擇結(jié)構(gòu)89
4.5.2雙分支選擇結(jié)構(gòu)91
4.5.3多分支選擇結(jié)構(gòu)93
4.6switch語(yǔ)句96
4.7選擇結(jié)構(gòu)嵌套101
4.8案例106
練習(xí)題108
第5章迭代計(jì)算與循環(huán)結(jié)構(gòu)109
5.1概述109
5.2while語(yǔ)句110
5.3do…while語(yǔ)句112
5.4for語(yǔ)句115
5.5循環(huán)語(yǔ)句對(duì)比118
5.6循環(huán)嵌套119
5.7跳轉(zhuǎn)控制語(yǔ)句124
5.7.1break語(yǔ)句124
5.7.2continue語(yǔ)句126
5.7.3goto語(yǔ)句126
5.7.4continue、break、goto語(yǔ)句的區(qū)別128
5.8案例129
練習(xí)題131
第6章集合數(shù)據(jù)與數(shù)組133
6.1概述133
6.2一維數(shù)組134
6.2.1一維數(shù)組定義134
6.2.2一維數(shù)組初始化135
6.2.3一維數(shù)組引用136
6.2.4一維數(shù)組應(yīng)用137
6.3二維數(shù)組140
6.3.1二維數(shù)組定義141
6.3.2二維數(shù)組初始化142
6.3.3二維數(shù)組引用143
6.3.4二維數(shù)組應(yīng)用143
6.4高維數(shù)組147
6.5字符數(shù)組與字符串149
6.5.1字符數(shù)組149
6.5.2字符串151
6.6字符串處理函數(shù)155
6.6.1字符串標(biāo)準(zhǔn)輸入輸出函數(shù)155
6.6.2字符串輸入輸出函數(shù)157
6.6.3字符串復(fù)制函數(shù)158
6.6.4字符串連接函數(shù)159
6.6.5字符串比較函數(shù)159
6.6.6字符串檢索函數(shù)160
6.6.7字符串轉(zhuǎn)換函數(shù)162
6.6.8其他字符串常用函數(shù)162
6.6.9寬字節(jié)型字符串函數(shù)163
6.7數(shù)組新特性164
6.8案例165
練習(xí)題166
第7章模塊化與函數(shù)168
7.1概述168
7.2函數(shù)定義170
7.2.1函數(shù)定義形式170
7.2.2函數(shù)返回值與函數(shù)類型173
7.3函數(shù)聲明、頭文件的使用和庫(kù)函數(shù)聲明176
7.3.1函數(shù)聲明176
7.3.2頭文件的使用177
7.3.3庫(kù)函數(shù)聲明178
7.4參數(shù)傳遞180
7.4.1形式參數(shù)180
7.4.2實(shí)際參數(shù)182
7.4.3值復(fù)制傳遞機(jī)制183
7.4.4地址復(fù)制傳遞機(jī)制185
7.4.5數(shù)組參數(shù)新特性189
7.5函數(shù)調(diào)用190
7.5.1函數(shù)調(diào)用形式190
7.5.2嵌套調(diào)用191
7.5.3遞歸調(diào)用192
7.6源程序文件與函數(shù)分類194
7.6.1外部函數(shù)194
7.6.2內(nèi)部函數(shù)195
7.6.3內(nèi)聯(lián)函數(shù)196
7.7變量存儲(chǔ)類型197
7.7.1普通變量197
7.7.2寄存器變量197
7.8變量作用域198
7.8.1局部變量199
7.8.2全局變量200
7.8.3靜態(tài)變量203
7.8.4變量訪問(wèn)控制204
7.9源程序結(jié)構(gòu)205
7.9.1單文件單函數(shù)結(jié)構(gòu)205
7.9.2單文件多函數(shù)結(jié)構(gòu)206
7.9.3多文件多函數(shù)結(jié)構(gòu)206
7.10案例208
練習(xí)題210
第8章地址操作與指針212
8.1概述212
8.2指針和指針變量213
8.2.1指針變量聲明213
8.2.2指針變量的賦值及初始化214
8.2.3指針變量的引用214
8.3指針運(yùn)算215
8.3.1取地址與取值運(yùn)算216
8.3.2算術(shù)運(yùn)算216
8.3.3關(guān)系運(yùn)算218
8.3.4指針類型轉(zhuǎn)換218
8.4數(shù)組和指針220
8.4.1用指針訪問(wèn)數(shù)組元素220
8.4.2指向多維數(shù)組的指針221
8.5字符串和指針224
8.5.1指針處理字符串224
8.5.2使用字符指針變量與字符數(shù)組的區(qū)別225
8.6函數(shù)和指針227
8.6.1指針作為函數(shù)參數(shù)227
8.6.2指針作為函數(shù)的返回值232
8.6.3指向函數(shù)的指針233
8.7指針數(shù)組236
8.7.1指針數(shù)組定義236
8.7.2帶參數(shù)的main函數(shù)239
8.8數(shù)組指針241
8.9指向指針的指針242
8.10內(nèi)存訪問(wèn)控制244
8.11案例245
練習(xí)題249
第9章復(fù)雜數(shù)據(jù)類型與結(jié)構(gòu)體251
9.1概述251
9.2結(jié)構(gòu)體類型252
9.2.1結(jié)構(gòu)體類型定義253
9.2.2結(jié)構(gòu)體類型變量聲明與初始化254
9.2.3結(jié)構(gòu)體變量的引用257
9.2.4結(jié)構(gòu)體數(shù)組259
9.2.5結(jié)構(gòu)體與函數(shù)262
9.2.6結(jié)構(gòu)體類型指針264
9.3共用體267
9.4枚舉類型269
9.5類型重定義271
9.6日期和時(shí)間273
9.7鏈表274
9.7.1鏈表定義274
9.7.2動(dòng)態(tài)內(nèi)存管理函數(shù)275
9.7.3鏈表的基本操作279
9.8結(jié)構(gòu)體新特性283
9.9案例285
練習(xí)題290
第10章泛化編程與預(yù)編譯292
10.1概述292
10.2#define指令292
10.2.1不帶參數(shù)的宏定義292
10.2.2帶參數(shù)的宏定義294
10.3#include指令297
10.4條件編譯299
10.4.1#ifdef … #else …#endif299
10.4.2#ifndef … #else …#endif299
10.4.3#if … #else …#endif300
10.5其他指令302
10.6預(yù)定義宏305
10.7異常處理305
10.8程序移植307
10.9案例308
練習(xí)題310
第11章數(shù)據(jù)存儲(chǔ)與文件312
11.1概述312
11.2文本文件與二進(jìn)制文件313
11.2.1文本文件313
11.2.2二進(jìn)制文件313
11.3文件類型314
11.4文件打開與關(guān)閉315
11.4.1文件打開315
11.4.2文件關(guān)閉318
11.5文件讀寫319
11.5.1單字符讀寫319
11.5.2字符串讀寫322
11.5.3格式化讀寫323
11.5.4數(shù)據(jù)塊讀寫325
11.6文件定位函數(shù)328
11.7文件狀態(tài)跟蹤330
11.8其他文件操作函數(shù)332
11.9案例334
練習(xí)題338
第12章程序設(shè)計(jì)思想及范例 340
12.1概述340
12.2求和/求積問(wèn)題340
12.2.1多項(xiàng)式求和341
12.2.2數(shù)列求和342
12.3遍歷問(wèn)題344
12.4迭代問(wèn)題350
12.4.1二分迭代法350
12.4.2牛頓迭代法352
12.5排序問(wèn)題354
12.5.1直接插入排序355
12.5.2起泡排序357
12.5.3選擇排序359
12.6查找問(wèn)題361
12.6.1順序查找361
12.6.2折半查找362
12.7遞歸問(wèn)題364
12.8矩陣運(yùn)算367
12.8.1矩陣加/減運(yùn)算367
12.8.2矩陣乘法368
12.8.3矩陣轉(zhuǎn)置370
練習(xí)題371
第13章面向?qū)ο笈cC 基礎(chǔ)373
13.1概述373
13.1.1結(jié)構(gòu)化程序設(shè)計(jì)373
13.1.2模塊封裝與訪問(wèn)控制374
13.2面向?qū)ο蟪绦蛟O(shè)計(jì)376
13.3類與對(duì)象376
13.3.1類376
13.3.2對(duì)象378
13.3.3類在C 中的實(shí)現(xiàn)378
13.3.4成員變量384
13.3.5成員函數(shù)386
13.3.6構(gòu)造函數(shù)和析構(gòu)函數(shù)390
13.3.7函數(shù)重載392
13.3.8運(yùn)算符重載394
13.3.9靜態(tài)成員變量396
13.3.10靜態(tài)成員函數(shù)398
13.4繼承與多態(tài)400
13.4.1類繼承400
13.4.2多態(tài)性與虛函數(shù)403
13.5案例407
練習(xí)題408
第14章高性能計(jì)算與并行程序設(shè)計(jì)409
14.1概述409
14.2并行算法409
14.2.1并行問(wèn)題409
14.2.2并行算法設(shè)計(jì)410
14.3并行程序設(shè)計(jì)實(shí)現(xiàn)411
14.3.1并行程序設(shè)計(jì)模型411
14.3.2進(jìn)程412
14.3.3創(chuàng)建進(jìn)程412
14.3.4消息傳遞413
14.4MPI程序設(shè)計(jì)基礎(chǔ)416
14.4.1MPI簡(jiǎn)介416
14.4.2簡(jiǎn)單MPI程序設(shè)計(jì)417
14.4.3MPI初始化與關(guān)閉417
14.4.4MPI函數(shù)庫(kù)419
14.4.5MPI消息傳遞420
14.5多核CPU與多線程428
14.5.1多核CPU428
14.5.2線程430
14.6OpenMP與多核程序設(shè)計(jì)431
14.6.1OpenMP簡(jiǎn)介431
14.6.2OpenMP并行程序結(jié)構(gòu)431
14.6.3parallel節(jié)433
14.6.4for節(jié)434
14.6.5其他節(jié)435
14.6.6共享變量與信息傳遞436
14.7多線程技術(shù)437
14.7.1線程函數(shù)庫(kù)簡(jiǎn)介437
14.7.2Win32線程函數(shù)庫(kù)437
14.7.3C11標(biāo)準(zhǔn)線程函數(shù)庫(kù)444
練習(xí)題451
第15章個(gè)體軟件過(guò)程管理453
15.1概述453
15.2編碼規(guī)范定義454
15.3MPI編碼規(guī)范454
15.3.1標(biāo)識(shí)符命名規(guī)范455
15.3.2函數(shù)或過(guò)程規(guī)范455
15.4ANSI C程序編碼規(guī)范456
15.4.1代碼結(jié)構(gòu)與組織456
15.4.2注釋458
15.4.3標(biāo)識(shí)符命名規(guī)范460
15.4.4代碼風(fēng)格與排版461
15.5代碼重用技術(shù)462
15.5.1源程序文件463
15.5.2靜態(tài)庫(kù)463
15.5.3動(dòng)態(tài)鏈接庫(kù)465
15.5.4組件技術(shù)467
15.6軟件生命周期模型簡(jiǎn)介468
15.7CMM簡(jiǎn)介470
15.8PSP簡(jiǎn)介470
15.9PSP0級(jí)471
15.9.1計(jì)劃過(guò)程管理472
15.9.2開發(fā)過(guò)程管理472
15.9.3總結(jié)過(guò)程管理473
15.9.4PSP0過(guò)程管理文檔474
15.9.5PSP0.1級(jí)475
15.10軟件開發(fā)計(jì)劃477
15.10.1軟件開發(fā)計(jì)劃基本內(nèi)容477
15.10.2制定個(gè)體軟件開發(fā)計(jì)劃478
15.10.3PSP軟件開發(fā)計(jì)劃過(guò)程管理479
15.11PSP1級(jí)479
15.11.1規(guī)模計(jì)算480
15.11.2任務(wù)計(jì)劃480
15.11.3進(jìn)度計(jì)劃481
15.12PSP2級(jí)481
15.12.1代碼評(píng)審482
15.12.2設(shè)計(jì)評(píng)審483
15.12.3缺陷預(yù)防483
15.12.4PSP2級(jí)的改進(jìn)483
練習(xí)題483
附錄AASCII碼表485
附錄B運(yùn)算符和結(jié)合方向486
參考文獻(xiàn)488