問題求解與程式設計(2015年清華大學出版社出版的圖書)

問題求解與程式設計(2015年清華大學出版社出版的圖書)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

《問題求解與程式設計》是由鮑春波、林芳、謝麗聰編著,2015年清華大學出版社出版的計算機系列教材。該教材可作為高等院校計算機相關專業C/C++結構化程式設計課程的教材,也可以供非專業的C語言程式設計等級考試和程式設計愛好者選用。

全書共有10章。主要內容包括計算機與程式設計、數據類型與變數——程式設計入門、判斷與決策——選擇程式設計、重複與疊代——循環程式設計、分而治之——模組化程式設計、批量數據處理——數組程式設計、記憶體單元的地址——指針程式設計、客觀對象的描述——結構程式設計、數據的永久存儲——檔案程式設計、位運算——低級程式設計。

基本介紹

  • 書名:問題求解與程式設計
  • 作者:鮑春波、林芳、謝麗聰
  • ISBN:9787302402657
  • 類別:計算機系列教材
  • 頁數:409頁
  • 出版社:清華大學出版社
  • 出版時間:2015年9月1日
  • 裝幀:平裝
  • 開本:16開
  • 字數:千671字
  • CIP核字號:2015106467
成書過程,修訂過程,出版工作,內容簡介,教材目錄,教學資源,教材特色,作者簡介,

成書過程

修訂過程

該教材以福建工程學院校級精品課程建設為平台,依據理論教學和實驗教學改革,吸收和學習中國國內外先進的教學理念和方法的基礎之上編寫而成。
該教材在寫作過程中,福建工程學院信息科學與工程學院軟體工程教研室主任林芳副教授審閱了初稿,對該教材提出了修改建議,並組織教研室相關授課老師討論了該教材的教學內容體系和方法。福州大學數計學院謝麗聰副教授對該教材的內容體系也給予相關建議。

出版工作

2015年9月1日,該教材由清華大學出版社出版。
出版社工作人員
責任編輯封面設計責任校對責任印製
袁勤勇、李曄
常雪影
梁毅
沈露

內容簡介

全書共有10章。
第1章計算機與程式設計。該章介紹了計算機的工作原理和它的快速計算能力和邏輯判斷能力。
第2章數據類型與變數——程式設計入門。該章通過六個問題的分析求解,使讀者初步認識程式設計到底是乾什麼。
第3章判斷與決策——選擇程式設計。該章通過五個問題的求解,介紹了具有判斷決策能力的程式該如何設計實現。
第4章重複與疊代——循環程式設計。該章通過七個問題的分析求解,闡述了三種循環程式結構和三種控制循環的方法。
第5章分而治之——模組化程式設計。該章介紹了模組化程式設計的思想和方法。通過“再次討論猜數遊戲模擬”問題,採用自頂向下逐步求精的分析過程把問題劃分為模組,描述了模組化程式設計的思想。
第6章批量數據處理——數組程式設計。該章通過典型的批量數據的排序和查找引出了數組的概念和用法。
第7章記憶體單元的地址——指針程式設計。該章介紹了用記憶體單元的地址間接訪問變數、數組、字元串、函式的重要意義和方法。
第8章客觀對象的描述——結構程式設計。該章介紹了C語言描述客觀對象的方法。通過“基於對象的學生成績管理”問題的分析引出了C語言描述對象的結構類型,介紹了結構類型的定義方法、用結構類型創建對象(變數)的方法。
第9章數據的永久存儲——檔案程式設計。該章首先回顧了數據的變數存儲、數組存儲甚至是鍊表存儲它們都具有易失性,引出了數據要永久存儲的檔案機制。通過“檔案複製”問題的求解,介紹了檔案格式(文本和二進制)、檔案操作的一般步驟、檔案指針、緩衝檔案系統的概念及檔案的各種打開方式。
第10章位運算——低級程式設計。該章介紹了在加密解密算法、圖形圖像處理和嵌入式系統開發等方面套用非常廣泛的基於“位”操作的低級程式設計。

教材目錄

第1章計算機與程式設計/1
1.1什麼是計算機/1
1.2如何存儲程式/4
1.2.1存儲單位/4
1.2.2存儲方式/4
1.2.3存取操作/5
1.2.4存儲器分類/5
1.2.5檔案與目錄/5
1.3軟體與程式設計/7
1.4典型程式演示/9
1.5程式設計方法/10
1.5.1結構化方法/10
1.5.2面向對象方法/11
1.6程式設計語言/11
1.7C/C++語言簡介/14
1.8C/C++結構化程式設計基本環境/16
小結/18
概念理解/18
基本功訓練/19
第2章數據類型與變數——程式設計入門/20
2.1在螢幕上輸出文字信息/20
2.1.1C語言程式的基本框架/21
2.1.2注釋/22
2.1.3預處理指令/22
2.1.4主函式——應用程式的入口/23
2.1.5轉義序列/23
2.1.6保留字與分隔設定/24
2.1.7標準輸出函式/24
2.2計算兩個固定整數的和與積/25
2.2.1輸出列表和占位符/27
2.2.2數據類型——整型/28
2.2.3常量與變數/29
2.2.4算術運算和算術表達式/31
2.2.5賦值語句/31
2.2.6程式設計的風格/32
2.3計算任意兩個整數的和與積/33
2.3.1標準輸入函式/34
2.3.2測試用例/35
2.3.3程式的順序結構/36
2.4溫度轉換/37
2.4.1變數的初始化/39
2.4.2運算的優先權和結合性/41
2.5求兩個整數的平均值/42
2.5.1浮點型數據/44
2.5.2浮點型數據的輸入與輸出/46
2.5.3浮點型數據的捨入誤差和溢出問題/48
2.5.4不同類型之間的轉換/50
2.6計算圓的周長和面積/51
2.6.1符號常量/52
2.6.2帶參數的宏/53
小結/54
概念理解/54
常見錯誤/55
線上評測/56
項目設計/58
第3章判斷與決策——選擇程式設計/60
3.1讓成績合格的學生通過/60
3.1.1關係運算與邏輯判斷/61
3.1.2邏輯常量與邏輯變數/63
3.1.3單分支選擇結構/64
3.1.4特殊形式的判斷條件/66
3.1.5比較兩個實數的大小/67
3.1.6複合語句/69
3.2按成績把學生分成兩組/70
3.2.1雙分支選擇結構/73
3.2.2條件運算/74
3.3按成績把學生分成多組(百分制)/75
3.3.1嵌套的if結構/81
3.3.2嵌套的ifelse結構/82
3.3.3多分支選擇結構/86
3.4按成績把學生分成多組(五級制)/87
3.4.1字元常量和變數/90
3.4.2字元型變數的輸入與輸出/91
3.5判斷閏年問題/93
3.5.1邏輯運算/94
3.5.2邏輯運算的優先權和短路性/95
小結/96
概念理解/97
常見錯誤/97
線上評測/98
項目設計/100
第4章重複與疊代——循環程式設計/101
4.1列印規則圖形/101
4.1.1計數控制的while循環/103
4.1.2自增、自減運算/104
4.2自然數求和/105
4.2.1疊代與賦值/107
4.2.2更多的賦值運算/109
4.2.3for循環/109
4.3簡單的學生成績統計/115
4.3.1標記控制的while循環/117
4.3.2程式的容錯能力/118
4.3.3程式調試與測試/119
4.3.4輸入輸出重定向/119
4.3.5dowhile循環/121
4.4計算2的算術平方根/123
4.4.1誤差精度控制的while循環/125
4.4.2const常量/126
4.5列印九九乘法表/127
4.5.1多重循環嵌套 /128
4.5.2窮舉法/131
4.6判斷一個數是否是素數/132
4.6.1break /continue/135
4.6.2goto語句/138
4.7隨機遊戲模擬/140
4.7.1隨機數的生成/141
4.7.2自頂向下、逐步求精/144
4.7.3遊戲程式的基本結構/145
4.8結構化程式設計/145
小結/146
概念理解/147
常見錯誤/147
線上評測/148
項目設計/151
第5章分而治之——模組化程式設計/152
5.1再次討論猜數遊戲模擬問題/152
5.1.1模組化思想/155
5.1.2函式定義/156
5.1.3函式調用/160
5.1.4函式原型/165
5.1.5函式測試/166
5.2是非判斷問題求解/166
5.2.1判斷函式/166
5.2.2變數的存儲類別與作用域/168
5.2.3函式調用堆疊/175
5.3遞歸問題求解/177
5.3.1問題的遞歸描述/178
5.3.2遞歸函式/178
5.4用計算機繪圖/182
5.4.1接口設計/186
5.4.2接口實現/188
5.4.3全局變數/189
5.4.4私有函式/191
5.4.5建立自己的庫/192
5.5學生成績管理——大規模問題求解/193
5.5.1程式檔案模組/196
5.5.2構建多檔案應用程式/196
小結/198
概念理解/198
常見錯誤/199
線上評測/199
項目設計/202
第6章批量數據處理——數組程式設計/203
6.1一組數據排序問題/203
6.1.1什麼是一維數組/205
6.1.2一維數組的聲明/206
6.1.3一維數組的引用/207
6.1.4一維數組初始化/209
6.1.5讓下標從1開始/209
6.1.6交換排序/210
6.1.7一維數組作為函式的參數/212
6.2三門課程成績按總分排序問題/215
6.2.1二維數組/218
6.2.2選擇排序/220
6.2.3二維數組作為函式的參數/221
6.3在成績單中查找某人的成績/222
6.3.1字元數組與字元串/226
6.3.2字元串的輸入與輸出/227
6.3.3字元串的基本操作/229
6.3.4標準庫中的字元及字元串函式/230
6.3.5字元串數組/234
6.3.6線性查找/235
6.3.7折半查找/236
6.4大整數加法/237
6.4.1邏輯右對齊相加法/240
6.4.2逆置左對齊相加法/241
小結/242
概念理解/243
常見錯誤/244
線上評測/244
項目設計/247
第7章記憶體單元的地址——指針程式設計/250
7.1用函式交換兩個變數的值/251
7.1.1指針變數的聲明和初始化/254
7.1.2指針變數的引用/255
7.1.3指針作為函式的參數/256
7.2再次討論批量數據處理問題/259
7.2.1指向一維數組的指針和指針運算/261
7.2.2用指針訪問一維數組的元素/263
7.2.3用const修飾指針/267
7.3二維批量數據處理問題的指針版/267
7.3.1二維數組名與行列地址/270
7.3.2用指針訪問二維數組的元素/271
7.3.3指針的指針/274
7.4通用函式問題/275
7.4.1指向函式的指針/277
7.4.2指向函式的指針作為函式的參數/278
7.5再次討論字元串/279
7.5.1字元指針與字元數組/282
7.5.2字元型指針數組/284
7.5.3用字元指針進行字元串排序/286
7.6程式運行時提供必要的參數/286
7.6.1命令行參數/288
7.6.2集成環境下設定應用程式參數/289
7.7數據規模未知的問題求解/289
7.7.1void類型的指針/293
7.7.2動態分配記憶體/294
7.7.3動態申請字元串/295
7.7.4動態申請一維數組/296
7.7.5動態申請二維數組/296
7.7.6讓指針指向被調用函式中動態
申請的記憶體/300
7.7.7C++中的引用/303
小結/304
概念理解/305
常見錯誤/306
線上評測/307
項目設計/310
第8章客觀對象的描述——結構程式設計/312
8.1基於對象數組的學生成績管理問題/312
8.1.1結構類型/316
8.1.2結構變數的聲明及使用/317
8.1.3typedef/319
8.1.4指向結構的指針/321
8.1.5結構變數的記憶體映像/324
8.1.6結構類型定義的嵌套/325
8.1.7結構數組和指向結構數組的指針/325
8.1.8結構作為函式的參數或返回值/327
8.1.9抽象數據類型/328
8.2基於對象鍊表的學生成績管理系統/329
8.2.1自引用結構與鍊表/334
8.2.2靜態鍊表和動態鍊表/336
8.2.3返回鍊表的頭指針/340
8.2.4學生對象鍊表/341
8.3志願者管理問題/341
8.3.1聯合/343
8.3.2志願者信息存儲/345
8.4洗牌和發牌模擬問題/345
小結/351
概念理解/351
常見錯誤/352
線上評測/352
項目設計/356
第9章數據的永久存儲——檔案程式設計/357
9.1給一個源程式檔案做備份/357
9.1.1檔案與目錄/360
9.1.2檔案格式/361
9.1.3檔案操作的一般步驟/361
9.1.4字元讀寫/363
9.1.5字元串讀寫(無格式的行讀寫)/364
9.2把數據保存到檔案中/365
9.2.1格式化讀寫/370
9.2.2二進制塊數據讀寫/372
小結/378
概念理解/378
常見錯誤/379
線上評測/379
項目設計/382
第10章位運算——低級程式設計/383
10.1網路IP位址的表示/383
10.1.1按位左移或右移/385
10.1.2按位取反/387
10.1.3按位與/387
10.2加密解密問題/389
10.2.1按位或/390
10.2.2按位異或/391
10.3一個圖形類型最佳化問題/391
小結/396
概念理解/396
常見錯誤/396
線上評測/397
項目設計/398
附錄AC語言的關鍵字/401
附錄BASCII碼/402
附錄CC運算符的優先權與結合性/403
附錄DC++版的HelloWorld!/405
D.1C++的頭檔案/405
D.2命名空間/406
D.3C++的輸入和輸出/407
參考文獻/409
(註:目錄排版順序為從左列至右列

教學資源

  • 配套教材
該教材有配套教材——《問題求解與程式設計習題解答和實驗指導》。
書名書號出版社出版時間作者
《問題求解與程式設計習題解答和實驗指導》
9787302402664
清華大學出版社
2015.09.01
鮑春波、林芳、謝麗聰
  • 課程資源
該教材還提供包括例題的源碼、課件、線上評測習題、實驗等教學資源。

教材特色

該教材以問題求解為核心,在分析問題、解決問題的過程中融入C/C++結構化程式設計的思想和方法,立足於專業基本功的訓練和套用工程型人才的培養。
該教材含有的案例和習題,書中的每個章節都圍繞某個案例問題展開,按照“問題描述、輸入和輸出樣例、問題分析、算法設計、程式實現(隱含由讀者完成的編譯運行測試)及幾個小節的問題求解相關的知識點討論”來組織教材,各種語法現象和程式設計方法只有用到時才討論。
該教材的每章開始處列出了幾點學習目標,引出了該章要討論的話題和要解決的問題。每章的最後都有一個小結,以及若干概念複習題、填空題和若干線上評測題,還有一個比較綜合的項目設計。除此之外,該教材還具有下面特點:
  1. 以問題求解為核心:該教材組織了40幾個實際案例問題,每個章節都圍繞解決某個或某類案例問題而展開,把各種語法現象和編程技巧與規範融入到解決這個問題的具體過程中,在解決問題的過程中學習程式設計的方法,訓練程式設計的功夫;對於每個案例,經過分析、設計之後,給出程式實現清單;
  2. 融入軟體工程的思想:對於每個案例問題,首先按照問題描述和輸入輸出格式的要求進行全面分析,明確要做什麼,考慮各種可能的情況;對每一情況都給出具體的算法設計方案(偽碼或流程圖)、對應的代碼實現(程式清單),其次對程式或算法用一組測試用例進行運行測試(這個運行測試是實時演示,教材中省略);不管案例問題是大還是小,都嚴格按照這樣的過程展開,進行強化訓練;
  3. 遵循循序漸進的原則:該教材採用循序漸進的原則,螺旋式展開,在問題求解需要的時候才介紹語法規範和注意事項;
  4. 程式設計線上評測:該教材提供線上評測平台;首先,由於每道線上評測的題目都設計了一組測試用例,學生要完成它,必須嚴格按照輸入輸出樣例的格式要求,設計問題的求解算法;在設計過程中必須考慮各種可能的情況,不然就會導致部分測試用例不能通過;其次,由於是線上評測,學生提交作業之後會立即得到評測結果;最後,線上評測與傳統的作業完成方式相比更能訓練學生的動手操作能力、問題求解能力;該教材從第2章起,每章都設計了10餘道線上評測題目,全書總計包括100多道線上評測題目;
  5. 項目設計:從第2章起,每章最後都至少給出了一個項目設計題目;
  6. 開源軟體:該教材使用的軟體均為開源軟體,包括moodle平台、gcc編譯器、gdb調試器、grx圖形庫及CodeBlocks集成開發環境;
  7. 該教材對部分內容加強了討論:該教材的內容包括一般高級語言程式設計教材的全部內容,此外還討論了大整數處理問題、函式接口的設計與實現、建立自己的庫、使用函式獲得動態申請的記憶體、用指針訪問二維數組元素的各種方法、位運算的套用、gcc編譯器支持的C語言圖形程式設計、專業編輯器vim的使用、命令行環境等問題,一般的教科書很少涉及這些問題;
  8. 例題經過編譯測試:該教材的所有例題的C語言源程式都已經過gcc編譯器編譯測試,因此完全符合C99標準;事實上,所有的源程式都可以直接作為C++源程式,用gcc或g++編譯器編譯運行。該教材代碼對源程式進行了刪減,刪除了原始碼檔案中出於方便閱讀目的而添加的空行,左大括弧調到了上一行的末尾,故現在所列代碼行號有跳躍。

作者簡介

鮑春波,1956年,男,河北武邑人,仰恩大學計算機系講師,大連理工大學計算機系簿士研究生,研究方向為管理決策和可視仿真。
林芳,1970年生,女,漢族,福建福州人,福建工程學院信息科學與工程學院副教授,主要研究方向為機器學習軟體工程。
謝麗聰,女,1964年生,福州大學數學與計算機學院副教授,主要研究方向為數據挖掘、數據集成。

相關詞條

熱門詞條

聯絡我們