程序設計基礎(原書第3版)

程序設計基礎(原書第3版) pdf epub mobi txt 電子書 下載 2025

[美] 托尼·加迪斯(Tony Gaddis) 著,王立柱 譯
圖書標籤:
  • 程序設計
  • 基礎
  • C語言
  • 入門
  • 教學
  • 教材
  • 計算機
  • 編程
  • 算法
  • 第3版
  • 經典
想要找書就要到 靜流書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 機械工業齣版社
ISBN:9787111596806
版次:1
商品編碼:12358976
品牌:機工齣版
包裝:平裝
叢書名: 計算機科學叢書
開本:16開
齣版時間:2018-05-01
用紙:膠版紙
頁數:418

具體描述

內容簡介

本書教授編程概念和解決問題的技巧,所使用的方法獨立於具體的編程語言,且不需要讀者有任何編程經驗。內容不僅包括數據類型、變量、輸入、輸齣、控製結構、模塊、函數、數組和文件,還有麵嚮對象的概念、GUI開發和事件驅動編程。配套的教學資源也十分豐富,包括復習中的答案、編程練習中的解決方案、PPT和試題庫。此外,在本書的相應網站上還提供瞭用各種語言實現的書中僞代碼對應的程序。本書適閤作為學習具體語言之前的先導編程邏輯課程,也可以是入門編程課程的部分。

作者簡介

托尼?加迪斯(Tony Gaddis)在北卡羅來納州的海伍德社區學院講授“計算機編程語言”“操作係統”和“物理”課程。他在1994年被評為北卡羅來納社區學院的“年度佳教師”,並在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 計算機是如何存儲數據的 5
1.4 程序是如何執行的 8
1.5 軟件的種類 14
復習 15
第2章 輸入、處理和輸齣 18
2.1 設計一個程序 18
2.2 輸齣、輸入和變量 21
2.3 變量賦值和計算 27
重點聚焦:計算手機的超時話費 29
重點聚焦:計算百分比 31
重點聚焦:計算平均值 32
重點聚焦: 將一個數學公式轉換為編程語句 34
2.4 變量聲明和數據類型 36
2.5 命名常量 40
2.6 手動跟蹤程序 41
2.7 程序文檔 42
重點聚焦: 使用命名常量、風格約定和注釋 43
2.8 設計你的第一個程序 44
復習 47
第3章 模塊 52
3.1 模塊簡介 52
3.2 定義和調用模塊 53
重點聚焦:模塊的定義和調用 57
3.3 局部變量 61
3.4 將參數傳遞給模塊 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章 循環結構 116
5.1 循環結構簡介 116
5.2 條件控製循環: While、Do-While和 Do-Until 117
重點聚焦:設計一個While循環 120
重點聚焦: 設計一個Do-While循環 126
5.3 計數控製循環和For語句 130
重點聚焦: 使用For語句設計一個計數控製循環 135
5.4 計算運行總和 143
5.5 哨兵 145
重點聚焦:如何使用哨兵 146
5.6 嵌套循環 148
復習 151
第6章 函數 155
6.1 函數簡介:生成隨機數 155
重點聚焦:使用隨機數 157
重點聚焦:用隨機數錶示其他值 158
6.2 寫自己的函數 161
重點聚焦:基於函數的模塊化 165
6.3 更多的庫函數 172
復習 181
第7章 輸入驗證 185
7.1 垃圾入,垃圾齣 185
7.2 輸入驗證循環 186
重點聚焦: 設計一個輸入驗證循環 187
7.3 防禦性編程 191
復習 192
第8章 數組 195
8.1 數組基礎知識 195
重點聚焦: 在數學錶達式中使用數組元素 199
8.2 數組的順序搜索 206
8.3 數組的數據處理 210
重點聚焦:處理數組 216
8.4 並行數組 221
重點聚焦:並行數組的應用 221
8.5 二維數組 224
重點聚焦:二維數組的應用 227
8.6 三維或高維數組 231
復習 232
第9章 數組的排序和查找 237
9.1 起泡排序算法 237
重點聚焦:使用起泡排序算法 242
9.2 選擇排序算法 248
9.3 插入排序算法 253
9.4 摺半查找算法 257
重點聚焦:使用摺半查找算法 260
復習 262
第10章 文件 266
10.1 文件的輸入和輸齣 266
10.2 采用循環處理文件 275
重點聚焦:處理文件 278
10.3 使用文件和數組 282
10.4 處理記錄 283
重點聚焦:添加和顯示記錄 286
重點聚焦:搜索記錄 289
重點聚焦:修改記錄 290
重點聚焦:刪除記錄 295
10.5 控製中斷邏輯 297
重點聚焦:使用控製中斷邏輯 298
復習 302
第11章 菜單驅動程序 306
11.1 菜單驅動程序簡介 306
11.2 模塊化菜單驅動程序 314
11.3 使用循環重復菜單 318
重點聚焦:設計菜單驅動程序 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章 麵嚮對象設計 372
14.1 過程化編程及麵嚮對象編程 372
14.2 類 374
14.3 使用統一建模語言來設計類 383
14.4 尋找一個問題中的類及其功能 384
重點聚焦:尋找一個問題中的類 384
重點聚焦:定義類的功能 387
14.5 類的繼承 392
14.6 類的多態性 397
復習 401
第15章 GUI應用程序和事件驅動編程 405
15.1 圖形交互界麵 405
15.2 設計GUI程序的用戶接口 407
重點聚焦:設計一個窗口 410
15.3 編寫事件處理程序 412
重點聚焦: 設計一個事件處理程序 414
復習 415
附錄 ASCII/Unicode字符 418

前言/序言

前  言Starting Out with Programming Logic & Design, Third Edition歡迎學習本書第3版。本書教授編程概念以及解決問題的技巧,所使用的方法獨立於具體的編程語言,不需要讀者擁有任何編程經驗。使用易於理解的僞代碼、流程圖和其他工具來學習程序邏輯的設計,規避瞭語法的睏擾。
本書的基本主題不僅包括數據類型、變量、輸入、輸齣、控製結構、模塊、函數、數組和文件,還有麵嚮對象的概念、GUI開發和事件驅動編程。本書文字清晰易懂,讓學生感到友好和親切。
本書各章都提供瞭大量的程序設計示例。短的示例突齣編程主題,長的示例集中於問題求解。每章至少包括一個“重點聚焦”小節,對一個具體的問題逐步分析和求解。
本書是學習編程邏輯的理想選擇,在用具體的語言學習編程基礎之前,本書可以作為先導。
第3版的變化本書的教學方法、內容組織和寫作風格與上一版保持一緻,但也做瞭很多改進,概括如下:
詳細指導學生設計他們的第一個程序第2章增加瞭2.8節。這一節將展示從分析一個問題到確定它的需求的全過程。在這個過程中將用一個示例使學生瞭解如何確定一個程序的輸入、處理和輸齣,然後編寫僞代碼和繪製流程圖。
在第2章的“重點聚焦”小節,還添加瞭一個新內容,以計算手機超時費用為例,演示瞭從確定手動計算的步驟到將這些步驟轉換為計算機算法的過程。
新調試練習大部分章節都添加瞭一組新的調試練習。讓學生檢查一組僞代碼算法並識彆其中的邏輯錯誤。
流程圖和僞代碼之間的一緻性更高在整本書中,許多流程圖已經修改,使它們與僞代碼之間的聯係更緊密。
嵌套重復結構擴展在5.6節擴展瞭一個示例。
附加重復結構的可視化說明在第5章的Do-While和For循環部分添加瞭新的可視化說明。
文件規範文檔和打印間隔圖文件規範文檔和打印間隔圖在第10章討論。
新的編程語言伴侶增加瞭新的語言伴侶Python 3和C++。本書的語言伴侶都可以在網站www.pearson-h-i-ghered.com/gaddis上找到。
各章簡介第1章,首先簡要介紹計算機的工作原理、數據的存儲和操作方式,以及為什麼我們用高級語言編寫程序。
第2章,介紹程序開發周期、數據類型、變量和順序結構。學習使用僞代碼和流程圖來設計簡單程序,包括讀取輸入、執行數學運算和生成屏幕輸齣。
第3章,演示模塊化程序和自頂嚮下設計方法的好處。學習定義和調用模塊、給模塊傳遞實參、使用局部變量。引入層次結構圖作為設計工具。
第4章,介紹關係運算符和布爾錶達式,以及用決策結構進行程序流程控製的方法。還介紹If-Then、If-Then-Else和If-Then-Else If語句、嵌套決策結構、邏輯運算符、Case結構。
第5章,學習用循環創建循環結構的方法。包括While、Do-While、Do-Until和For循環,還有計數器、纍加器、運行總和和哨兵。
第6章,首先討論通用庫函數,例如生成隨機數的函數。然後,在學習如何調用庫函數以及如何使用函數返迴值之後,學習如何定義和調用自定義函數。
第7章,討論用戶輸入驗證的重要性。學習編寫用於錯誤陷阱的輸入驗證循環。討論的內容還有:防禦性編程、對明顯和不明顯錯誤進行預測的重要性。
第8章,學習一維數組和二維數組的創建和使用。包含許多數組處理的示例,包括對一維數組元素求和、計算平均值、求數組最大值和最小值,以及對二維數組的行、列和全部元素求和。還演示瞭使用並行數組進行編程的技術。
第9章,學習數組排序和數組元素查找的基礎算法。包括的內容有:起泡排序、選擇排序、插入排序和摺半查找算法。
第10章,介紹順序文件的輸入和輸齣。學習讀取和寫入大集閤數據,將數據另存為字段或記錄,設計可用於處理文件和數組的程序。該章最後討論瞭中斷處理控製。
第11章,講述如何設計程序,該程序顯示菜單,並根據用戶的菜單選項來執行。該章還討論瞭模塊化菜單驅動程序的重要性。
第12章,詳細討論文本處理。包括對字符串逐個字符處理的算法,用於字符和文本處理的若乾常用庫函數。
第13章,討論遞歸及其用途。提供遞歸調用過程的可視化跟蹤,討論遞歸應用程序。給齣許多遞歸算法,例如計算階乘、求最大公約數(GCD)、數組求和、摺半查找,還有經典的漢諾塔算法。
第14章,將過程化和麵嚮對象的編程進行瞭比較。包含類和對象的基本概念,討論瞭域、方法、訪問規範、構造函數、訪問器和變異器。學習如何使用UML來對類建模、如何在特定問題中尋找類。
第15章,討論GUI應用程序的基本內容,以及如何使用可視化設計工具(如Visual Studio或NetBeans)構建圖形用戶界麵。學生要學習事件是如何在GUI應用程序中工作的,以及如何編寫事件處理程序。
附錄,列齣瞭ASCII字符集,與前127個Unicode字符編碼相同。
內容組織本書以逐步推進的方式講授編程邏輯和設計。每一章都包含一組主題,學生隻要按部就班地學習,就可以掌握本書的知識。雖然這些章節按照現有的順序可以很輕鬆地講授,但還是有一些靈活性。圖P-1顯示瞭各章之間的依賴關係。 每個框代錶一章或幾章。箭頭指嚮(即
《算法的奧秘:從思維到實現》 前言 在這個信息爆炸的時代,數據如同奔騰不息的河流,而算法,則是駕馭這股洪流、從中挖掘寶藏的智慧之舟。它們是解決問題的通用藍圖,是連接理論與實踐的橋梁,更是驅動現代科技發展的核心引擎。從搜索引擎的精準匹配,到社交網絡的智能推薦,再到自動駕駛的精準導航,無不閃耀著算法的智慧光芒。 然而,算法的學習並非易事。許多初學者在麵對抽象的數學概念和復雜的邏輯結構時,常常感到無從下手,甚至産生畏難情緒。市麵上關於算法的書籍琳琅滿目,但不少作品過於側重理論的深度,或是過於依賴具體的編程語言,使得讀者在理解核心思想上步履維艱。 《算法的奧秘:從思維到實現》的誕生,正是為瞭填補這一鴻溝。我們深知,理解算法的本質,比死記硬背某個排序或查找的實現細節更為重要。因此,本書的核心目標是引導讀者掌握算法設計的思維方式,培養解決問題的分析能力,並在此基礎上,循序漸進地掌握各類經典算法的精髓。我們力求用最直觀、最易懂的方式,揭示算法背後的邏輯,讓抽象的概念變得鮮活起來。 本書並非一本枯燥的理論堆砌,也非一本僅僅羅列代碼的工具書。我們更希望它成為讀者探索算法世界的一位良師益友。通過大量的實例分析、圖形化解釋以及循序漸進的難度梯度,我們旨在幫助讀者構建起紮實的算法基礎,並激發對算法的濃厚興趣。無論你是計算機科學專業的學生,還是希望提升編程技能的開發者,亦或是對數據驅動的智能化世界充滿好奇的求知者,《算法的奧秘:從思維到實現》都將是你不可或缺的寶藏。 本書特色 思維導嚮,而非代碼導嚮: 我們將重心放在算法的設計思路、思想演進以及適用場景上。每一種算法的引入,都源於其解決的具體問題,並深入剖析其背後的邏輯和策略。我們希望讀者學會“如何思考”算法,而非僅僅“如何編寫”算法。 直觀易懂,化繁為簡: 復雜的算法概念常常令人望而生畏。本書大量采用圖示、類比和生動的語言,將抽象的算法過程可視化,讓讀者能夠輕鬆理解其工作原理。例如,對於遞歸算法,我們將通過“俄羅斯套娃”或“分形幾何”等直觀的例子來解釋;對於圖算法,我們會將其與現實世界中的交通網絡、社交關係等進行類比。 循序漸進,構建知識體係: 本書的章節安排遵循邏輯性與遞進性原則。我們從最基礎的算法概念和數據結構入手,逐步過渡到更復雜、更高級的算法。每一章的內容都建立在前一章的基礎上,確保讀者能夠穩步構建起完整的算法知識體係,避免“夾生飯”。 經典算法,深度解析: 本書涵蓋瞭計算機科學中最核心、最常用的算法,包括但不限於排序算法(冒泡排序、插入排序、快速排序、歸並排序)、查找算法(綫性查找、二分查找)、圖算法(深度優先搜索、廣度優先搜索、Dijkstra算法、Floyd-Warshall算法)、動態規劃、貪心算法等。我們不僅會介紹這些算法的實現,更會深入探討它們的復雜度分析、最優性證明以及實際應用。 問題驅動,貼近實戰: 理論與實踐相結閤是學習的王道。本書每介紹完一種算法或一種思想,都會附帶相應的典型問題和實例分析,引導讀者將所學知識應用於解決實際問題。這些問題涵蓋瞭從數據處理、路徑規劃到資源分配等多個領域,幫助讀者體會算法的強大威力。 嚴謹而不失趣味: 我們力求在保持學術嚴謹性的同時,增加學習的趣味性。書中穿插瞭算法發展史上的趣聞軼事,以及一些巧妙的算法設計案例,讓讀者在輕鬆的氛圍中體會算法的魅力。 目錄概覽 第一部分:算法的基石——思維的起點 第一章:走進算法的世界 什麼是算法?算法的要素與特徵。 算法的重要性:為何我們如此重視算法? 算法的衡量標準:效率、正確性與可讀性。 算法的錶示方法:僞代碼與流程圖。 從一個簡單的例子開始:求和問題。 第二章:數據結構初探 數據結構是什麼?它與算法的關係。 綫性結構:數組、鏈錶、棧、隊列。 非綫性結構:樹(二叉樹、平衡樹)、圖。 抽象數據類型(ADT)的概念。 第二部分:經典算法的智慧——排序與查找 第三章:排序的藝術:讓數據有序 排序算法的分類:內部排序與外部排序。 簡單排序算法:冒泡排序、插入排序、選擇排序。 高效排序算法:快速排序、歸並排序、堆排序。 排序算法的復雜度分析與比較。 穩定性與原地性。 第四章:查找的藝術:快速定位信息 查找算法的分類:靜態查找與動態查找。 順序查找(綫性查找)。 摺半查找(二分查找):前提與應用。 哈希查找:散列函數與衝突處理。 二叉搜索樹與平衡二叉樹。 第三部分:圖形世界的探索——圖算法的魅力 第五章:圖論基礎與遍曆 圖的定義與錶示:鄰接矩陣與鄰接錶。 圖的遍曆:深度優先搜索(DFS)。 圖的遍曆:廣度優先搜索(BFS)。 圖的連通性:連通分量。 第六章:最短路徑的追尋 單源最短路徑問題。 Dijkstra算法:貪心策略的應用。 Bellman-Ford算法:處理負權邊。 所有頂點對最短路徑問題:Floyd-Warshall算法。 第七章:最小生成樹的構建 最小生成樹的概念。 Prim算法:另一種貪心策略。 Kruskal算法:並查集的應用。 第四部分:高級算法的思維——動態規劃與貪心 第八章:動態規劃:分而治之的智慧 動態規劃的基本思想:最優子結構與重疊子問題。 記憶化搜索與自底嚮上。 經典動態規劃問題:斐波那契數列、背包問題、最長公共子序列。 狀態轉移方程的設計。 第九章:貪心算法:局部最優到全局最優 貪心算法的定義與特徵。 貪心選擇性質與最優子結構。 經典貪心問題:活動選擇問題、霍夫曼編碼。 貪心算法的局限性。 第五部分:算法的進階之路 第十章:字符串匹配算法 樸素字符串匹配。 KMP算法(Knuth-Morris-Pratt)。 BM算法(Boyer-Moore)。 第十一章:搜索算法的深化 迴溯法:解空間搜索。 分支限界法:優化搜索。 第十二章:復雜度理論入門 漸進記號:O、Ω、Θ。 時間復雜度和空間復雜度。 NP-完全問題簡介。 結語 算法的海洋廣闊而深邃,充滿瞭無窮的奧秘與挑戰。掌握算法,不僅是掌握一門技術,更是掌握一種思維模式,一種解決問題的通用工具。我們希望《算法的奧秘:從思維到實現》能夠點燃你對算法的熱情,幫助你構建起堅實的知識壁壘,讓你在編程的世界裏遊刃有餘,在技術革新的浪潮中,成為一名自信而富有創造力的探索者。 願你在算法的世界裏,發現屬於自己的無限可能!

用戶評價

評分

不得不說,這本書在排版和視覺設計上給瞭我很大的驚喜。雖然我還沒正式開始學習裏麵的編程語言,但我被它精美的布局和清晰的圖示深深吸引。每一頁都好像經過精心設計,重點突齣,易於閱讀。我喜歡書中大量使用圖錶和流程圖來解釋抽象的概念,這比單純的文字描述要直觀得多,也能幫助我更快地理解復雜的邏輯。比如,作者在介紹某個算法時,用瞭一個生動的比喻和一組清晰的示意圖,我感覺自己一下子就抓住瞭核心要點。而且,書中的代碼示例也都使用瞭醒目的高亮格式,看起來非常舒服,不會讓眼睛疲勞。我尤其喜歡書中在關鍵概念旁邊留齣的空白區域,這鼓勵讀者在閱讀時進行批注和思考,感覺就像是有一個老師在旁邊引導你一樣。這種細節上的用心,讓我覺得這本書不隻是內容的堆砌,而是真正以讀者的學習體驗為中心。

評分

雖然我還沒有深入學習這本書的具體編程語言,但它所傳遞齣的“調試”和“錯誤處理”的理念,已經給我留下瞭深刻的印象。作者似乎非常強調在編寫代碼的過程中,要學會如何發現和解決問題,而不是害怕犯錯。他在目錄中專門闢齣瞭一個章節來講解“調試技巧”,並且在其他章節中也會時不時地穿插一些“常見錯誤及解決方法”的提示。這讓我覺得,這本書並沒有把犯錯看作是學習的障礙,而是學習過程中必然會遇到的環節,並且提供瞭有效的應對策略。這種積極的態度,極大地減輕瞭我對編程錯誤的恐懼感。我預感,這本書會教會我如何成為一個更加獨立和有韌性的程序員,能夠主動地去解決遇到的技術難題,而不是被動地尋求幫助。

評分

我目前正在探索這本書關於“函數”的部分,即使還沒有深入代碼實現,但作者的講解思路已經讓我眼前一亮。他並沒有上來就講解函數如何定義和調用,而是先從“模塊化”和“代碼復用”的角度來闡述函數的重要性,這讓我從一開始就理解瞭為什麼要使用函數,而不是被動地接受一個語法規則。作者在描述函數的概念時,用瞭一個“小工具箱”的比喻,每個工具都有特定的功能,可以獨立使用,也可以組閤使用,這種形象的比喻讓我對函數的理解立刻清晰瞭許多。我感覺這本書的講解方式更像是在傳授一種編程的“哲學”和“思想”,而不是單純地教授一種技術。他似乎在引導讀者去思考如何寫齣更優雅、更易於維護的代碼,這對於一個初學者來說,是非常寶貴的指導。

評分

一本讓我徹底改變對編程看法的書,雖然我還沒有開始閱讀它的正文,但光是目錄和前言就足以讓我驚嘆不已。它並沒有像很多入門書籍那樣,一上來就拋齣一大堆晦澀難懂的概念和代碼,而是非常有策略地循序漸進。我尤其欣賞作者在開篇部分對“為什麼學習編程”這個問題的深入探討,這讓我開始思考編程的本質和它在現代社會中的意義,而不僅僅是把它當成一門需要死記硬背的技能。我瞭解到,編程不僅僅是寫代碼,更是一種解決問題的思維方式,一種創造性的錶達。它似乎鼓勵讀者從更高的層麵去理解編程,而非僅僅停留在語法層麵。我迫不及待地想看看書中是如何將這些理念轉化為具體的編程實踐的。作者在目錄中也巧妙地穿插瞭一些“思考題”和“項目挑戰”,這讓我預感到這不會是一本被動學習的書,而是一本需要主動探索和實踐的書。這種設計讓我充滿期待,覺得這本書會是一次真正的思維鍛煉。

評分

這本書的作者似乎非常理解初學者的睏境,這一點從它對於一些基礎概念的講解方式上就能看齣來。我注意到作者在解釋“變量”和“數據類型”時,並沒有直接給齣枯燥的定義,而是通過一些貼近生活的類比,比如“盒子”和“標簽”,來幫助我們理解。這種接地氣的解釋方式,讓我覺得學習過程沒有那麼枯燥和遙不可及。而且,作者似乎有意避免使用過於專業的術語,或者在使用時會立即給齣通俗易懂的解釋,這讓我覺得學習門檻大大降低瞭。我之前接觸過一些編程書籍,常常因為突然冒齣的生詞而感到沮喪,但這本書似乎非常有意識地避免瞭這種情況。我特彆欣賞作者在章節結尾處設置的“總結”部分,用簡潔的語言迴顧本章的要點,並且會提前預告下一章將要講到的內容,這讓我的學習過程非常有條理,不會感到迷失。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 靜流書站 版權所有