本書教授編程概念和解決問題的技巧,所使用的方法獨立于具體的編程語言,且不需要讀者有任何編程經(jīng)驗。內(nèi)容不僅包括數(shù)據(jù)類型、變量、輸入、輸出、控制結構、模塊、函數(shù)、數(shù)組和文件,還有面向?qū)ο蟮母拍、GUI開發(fā)和事件驅(qū)動編程。配套的教學資源也十分豐富,包括復習中的答案、編程練習中的解決方案、PPT和試題庫。此外,在本書的相應網(wǎng)站上還提供了用各種語言實現(xiàn)的書中偽代碼對應的程序。本書適合作為學習具體語言之前的先導編程邏輯課程,也可以是入門編程課程的部分。
前 言Starting Out with Programming Logic & Design, Third Edition歡迎學習本書第3版。本書教授編程概念以及解決問題的技巧,所使用的方法獨立于具體的編程語言,不需要讀者擁有任何編程經(jīng)驗。使用易于理解的偽代碼、流程圖和其他工具來學習程序邏輯的設計,規(guī)避了語法的困擾。
本書的基本主題不僅包括數(shù)據(jù)類型、變量、輸入、輸出、控制結構、模塊、函數(shù)、數(shù)組和文件,還有面向?qū)ο蟮母拍、GUI開發(fā)和事件驅(qū)動編程。本書文字清晰易懂,讓學生感到友好和親切。
本書各章都提供了大量的程序設計示例。短的示例突出編程主題,長的示例集中于問題求解。每章至少包括一個“重點聚焦”小節(jié),對一個具體的問題逐步分析和求解。
本書是學習編程邏輯的理想選擇,在用具體的語言學習編程基礎之前,本書可以作為先導。
第3版的變化本書的教學方法、內(nèi)容組織和寫作風格與上一版保持一致,但也做了很多改進,概括如下:
詳細指導學生設計他們的第一個程序第2章增加了2.8節(jié)。這一節(jié)將展示從分析一個問題到確定它的需求的全過程。在這個過程中將用一個示例使學生了解如何確定一個程序的輸入、處理和輸出,然后編寫偽代碼和繪制流程圖。
在第2章的“重點聚焦”小節(jié),還添加了一個新內(nèi)容,以計算手機超時費用為例,演示了從確定手動計算的步驟到將這些步驟轉換為計算機算法的過程。
新調(diào)試練習大部分章節(jié)都添加了一組新的調(diào)試練習。讓學生檢查一組偽代碼算法并識別其中的邏輯錯誤。
流程圖和偽代碼之間的一致性更高在整本書中,許多流程圖已經(jīng)修改,使它們與偽代碼之間的聯(lián)系更緊密。
嵌套重復結構擴展在5.6節(jié)擴展了一個示例。
附加重復結構的可視化說明在第5章的Do-While和For循環(huán)部分添加了新的可視化說明。
文件規(guī)范文檔和打印間隔圖文件規(guī)范文檔和打印間隔圖在第10章討論。
新的編程語言伴侶增加了新的語言伴侶Python 3和C++。本書的語言伴侶都可以在網(wǎng)站www.pearson-h-i-ghered.com/gaddis上找到。
各章簡介第1章,首先簡要介紹計算機的工作原理、數(shù)據(jù)的存儲和操作方式,以及為什么我們用高級語言編寫程序。
第2章,介紹程序開發(fā)周期、數(shù)據(jù)類型、變量和順序結構。學習使用偽代碼和流程圖來設計簡單程序,包括讀取輸入、執(zhí)行數(shù)學運算和生成屏幕輸出。
第3章,演示模塊化程序和自頂向下設計方法的好處。學習定義和調(diào)用模塊、給模塊傳遞實參、使用局部變量。引入層次結構圖作為設計工具。
第4章,介紹關系運算符和布爾表達式,以及用決策結構進行程序流程控制的方法。還介紹If-Then、If-Then-Else和If-Then-Else If語句、嵌套決策結構、邏輯運算符、Case結構。
第5章,學習用循環(huán)創(chuàng)建循環(huán)結構的方法。包括While、Do-While、Do-Until和For循環(huán),還有計數(shù)器、累加器、運行總和和哨兵。
第6章,首先討論通用庫函數(shù),例如生成隨機數(shù)的函數(shù)。然后,在學習如何調(diào)用庫函數(shù)以及如何使用函數(shù)返回值之后,學習如何定義和調(diào)用自定義函數(shù)。
第7章,討論用戶輸入驗證的重要性。學習編寫用于錯誤陷阱的輸入驗證循環(huán)。討論的內(nèi)容還有:防御性編程、對明顯和不明顯錯誤進行預測的重要性。
第8章,學習一維數(shù)組和二維數(shù)組的創(chuàng)建和使用。包含許多數(shù)組處理的示例,包括對一維數(shù)組元素求和、計算平均值、求數(shù)組最大值和最小值,以及對二維數(shù)組的行、列和全部元素求和。還演示了使用并行數(shù)組進行編程的技術。
第9章,學習數(shù)組排序和數(shù)組元素查找的基礎算法。包括的內(nèi)容有:起泡排序、選擇排序、插入排序和折半查找算法。
第10章,介紹順序文件的輸入和輸出。學習讀取和寫入大集合數(shù)據(jù),將數(shù)據(jù)另存為字段或記錄,設計可用于處理文件和數(shù)組的程序。該章最后討論了中斷處理控制。
第11章,講述如何設計程序,該程序顯示菜單,并根據(jù)用戶的菜單選項來執(zhí)行。該章還討論了模塊化菜單驅(qū)動程序的重要性。
第12章,詳細討論文本處理。包括對字符串逐個字符處理的算法,用于字符和文本處理的若干常用庫函數(shù)。
第13章,討論遞歸及其用途。提供遞歸調(diào)用過程的可視化跟蹤,討論遞歸應用程序。給出許多遞歸算法,例如計算階乘、求最大公約數(shù)(GCD)、數(shù)組求和、折半查找,還有經(jīng)典的漢諾塔算法。
第14章,將過程化和面向?qū)ο蟮木幊踢M行了比較。包含類和對象的基本概念,討論了域、方法、訪問規(guī)范、構造函數(shù)、訪問器和變異器。學習如何使用UML來對類建模、如何在特定問題中尋找類。
第15章,討論GUI應用程序的基本內(nèi)容,以及如何使用可視化設計工具(如Visual Studio或NetBeans)構建圖形用戶界面。學生要學習事件是如何在GUI應用程序中工作的,以及如何編寫事件處理程序。
附錄,列出了ASCII字符集,與前127個Unicode字符編碼相同。
內(nèi)容組織本書以逐步推進的方式講授編程邏輯和設計。每一章都包含一組主題,學生只要按部就班地學習,就可以掌握本書的知識。雖然這些章節(jié)按照現(xiàn)有的順序可以很輕松地講授,但還是有一些靈活性。圖P-1顯示了各章之間的依賴關系。 每個框代表一章或幾章。箭頭指向(即
托尼•加迪斯(Tony Gaddis)在北卡羅來納州的海伍德社區(qū)學院講授“計算機編程語言”“操作系統(tǒng)”和“物理”課程。他在1994年被評為北卡羅來納社區(qū)學院的“年度佳教師”,并在1997年獲得“教學卓越獎”。Tony也提供對公司和機構(包括NASA的肯尼迪航天中心)的培訓。他著有《Starting Out with C++》和《Starting Out with Java》,并與人合著了《Starting Out with Visual Basic 2005》等。
目 錄
Starting Out with Programming Logic & Design, Third Edition
出版者的話
譯者序
前言
第1章 計算機與程序設計導論 1
1.1 引言 1
1.2 硬件 2
1.3 計算機是如何存儲數(shù)據(jù)的 5
1.4 程序是如何執(zhí)行的 8
1.5 軟件的種類 14
復習 15
第2章 輸入、處理和輸出 18
2.1 設計一個程序 18
2.2 輸出、輸入和變量 21
2.3 變量賦值和計算 27
重點聚焦:計算手機的超時話費 29
重點聚焦:計算百分比 31
重點聚焦:計算平均值 32
重點聚焦: 將一個數(shù)學公式轉換為編程語句 34
2.4 變量聲明和數(shù)據(jù)類型 36
2.5 命名常量 40
2.6 手動跟蹤程序 41
2.7 程序文檔 42
重點聚焦: 使用命名常量、風格約定和注釋 43
2.8 設計你的第一個程序 44
復習 47
第3章 模塊 52
3.1 模塊簡介 52
3.2 定義和調(diào)用模塊 53
重點聚焦:模塊的定義和調(diào)用 57
3.3 局部變量 61
3.4 將參數(shù)傳遞給模塊 63
重點聚焦: 將一個實參傳給一個模塊 66
重點聚焦: 通過引用傳遞一個實參 71
3.5 全局變量和全局常量 73
重點聚焦:使用全局常量 74
復習 76
第4章 決策結構和布爾邏輯 82
4.1 決策結構簡介 82
重點聚焦:使用If-Then語句 86
4.2 雙重選擇決策結構 88
重點聚焦:使用If-Then-Else語句 89
4.3 比較字符串 92
4.4 嵌套決策結構 95
重點聚焦:決策結構的多重嵌套 98
4.5 Case結構 101
重點聚焦:使用Case結構 103
4.6 邏輯運算符 105
4.7 布爾變量 110
復習 111
第5章 循環(huán)結構 116
5.1 循環(huán)結構簡介 116
5.2 條件控制循環(huán): While、Do-While和 Do-Until 117
重點聚焦:設計一個While循環(huán) 120
重點聚焦: 設計一個Do-While循環(huán) 126
5.3 計數(shù)控制循環(huán)和For語句 130
重點聚焦: 使用For語句設計一個計數(shù)控制循環(huán) 135
5.4 計算運行總和 143
5.5 哨兵 145
重點聚焦:如何使用哨兵 146
5.6 嵌套循環(huán) 148
復習 151
第6章 函數(shù) 155
6.1 函數(shù)簡介:生成隨機數(shù) 155
重點聚焦:使用隨機數(shù) 157
重點聚焦:用隨機數(shù)表示其他值 158
6.2 寫自己的函數(shù) 161
重點聚焦:基于函數(shù)的模塊化 165
6.3 更多的庫函數(shù) 172
復習 181
第7章 輸入驗證 185
7.1 垃圾入,垃圾出 185
7.2 輸入驗證循環(huán) 186
重點聚焦: 設計一個輸入驗證循環(huán) 187
7.3 防御性編程 191
復習 192
第8章 數(shù)組 195
8.1 數(shù)組基礎知識 195
重點聚焦: 在數(shù)學表達式中使用數(shù)組元素 199
8.2 數(shù)組的順序搜索 206
8.3 數(shù)組的數(shù)據(jù)處理 210
重點聚焦:處理數(shù)組 216
8.4 并行數(shù)組 221
重點聚焦:并行數(shù)組的應用 221
8.5 二維數(shù)組 224
重點聚焦:二維數(shù)組的應用 227
8.6 三維或高維數(shù)組 231
復習 232
第9章 數(shù)組的排序和查找 237
9.1 起泡排序算法 237
重點聚焦:使用起泡排序算法 242
9.2 選擇排序算法 248
9.3 插入排序算法 253
9.4 折半查找算法 257
重點聚焦:使用折半查找算法 260
復習 262
第10章 文件 266
10.1 文件的輸入和輸出 266
10.2 采用循環(huán)處理文件 275
重點聚焦:處理文件 278
10.3 使用文件和數(shù)組 282
10.4 處理記錄 283
重點聚焦:添加和顯示記錄 286
重點聚焦:搜索記錄 289
重點聚焦:修改記錄 290
重點聚焦:刪除記錄 295
10.5 控制中斷邏輯 297
重點聚焦:使用控制中斷邏輯 298
復習 302
第11章 菜單驅(qū)動程序 306
11.1 菜單驅(qū)動程序簡介 306
11.2 模塊化菜單驅(qū)動程序 314
11.3 使用循環(huán)重復菜單 318
重點聚焦:設計菜單驅(qū)動程序 320
11.4 多級菜單 332
復習 336
第12章 文本處理 340
12.1 引言 340
12.2 逐字符文本處理 341
重點聚焦:密碼驗證 343
重點聚焦: 電話號碼格式化和去格式化 347
復習 351
第13章 遞歸 356
13.1 遞歸介紹 356
13.2 遞歸求解 358
13.3 遞歸算法舉例 361
復習 369
第14章 面向?qū)ο笤O計 372
14.1 過程化編程及面向?qū)ο缶幊? 372
14.2 類 374
14.3 使用統(tǒng)一建模語言來設計類 383
14.4 尋找一個問題中的類及其功能 384
重點聚焦:尋找一個問題中的類 384
重點聚焦:定義類的功能 387
14.5 類的繼承 392
14.6 類的多態(tài)性 397
復習 401
第15章 GUI應用程序和事件驅(qū)動編程 405
15.1 圖形交互界面 405
15.2 設計GUI程序的用戶接口 407
重點聚焦:設計一個窗口 410
15.3 編寫事件處理程序 412
重點聚焦: 設計一個事件處理程序 414
復習 415
附錄 ASCII/Unicode字符 418