發表於2024-11-07
本書麵嚮編程初學者,在清晰闡釋程序設計基本思想的同時,全麵涵蓋C語言的核心知識點。全書圍繞程序員的學習需求來組織內容,從第1章開始引入軟件工程思維,通過貫穿各章的“案例分析”模塊實踐“問題-分析-設計-實現-測試”的問題求解方法,尤為重視良好編程習慣的培養。本書作為計算機專業教材曆經十幾年的教學實踐,這一版對指針的講解更加透徹,並新增瞭三個使用可視化圖形案例的章節,還更新瞭一些編程練習題。
Problem Solving and Program Design in C, Seventh Edition
齣版者的話
譯者序
前言
第0章 職業成長道路之計算機科學 1
0.1 為什麼計算機科學可能是適閤你的領域 1
0.1.1 主修計算機的原因 1
0.1.2 計算機科學傢的特徵 2
0.2 大學經驗:計算機學科和專業選擇 3
0.2.1 計算機科學 4
0.2.2 計算機工程 4
0.2.3 信息係統 4
0.2.4 信息技術 5
0.2.5 軟件工程 5
0.2.6 混閤學科專業 6
0.3 就業機會 6
0.3.1 美國和世界的需求 7
0.3.2 對弱勢群體的需求 7
0.3.3 新職業初見端倪 8
第1章 計算機和程序設計概述 9
1.1 電子計算機的發展史 9
1.2 計算機硬件 11
1.2.1 存儲器 12
1.2.2 中央處理單元 14
1.2.3 輸入/輸齣設備 15
1.2.4 計算機網絡 15
1.3 計算機軟件 17
1.3.1 操作係統 17
1.3.2 應用軟件 18
1.3.3 計算機語言 19
1.3.4 程序執行 22
1.4 軟件開發方法 23
1.4.1 軟件開發過程 23
1.4.2 注意:失敗是軟件開發過程的一部分 24
1.5 軟件開發方法的應用 25
1.6 程序員的職業道德 27
1.6.1 數據隱私和濫用 27
1.6.2 計算機黑客 27
1.6.3 剽竊和軟件盜版 28
1.6.4 計算機資源的濫用 28
本章內容迴顧 29
快速練習 29
復習題 30
第2章 C語言概述 31
2.1 C語言元素 31
2.1.1 預處理指令 31
2.1.2 預處理指令的語法 33
2.1.3 主函數 33
2.1.4 保留字 34
2.1.5 標準標識符 34
2.1.6 用戶自定義標識符 34
2.1.7 大寫字母和小寫字母 35
2.1.8 程序風格——選擇標識符名稱 35
2.2 變量聲明和數據類型 36
2.2.1 變量聲明 36
2.2.2 數據類型 37
2.2.3 數值類型間的差異 38
2.2.4 char數據類型 39
2.2.5 ASCII碼 39
2.3 可執行語句 41
2.3.1 存儲器中的程序 41
2.3.2 賦值語句 41
2.3.3 給一個字符型變量賦值 42
2.3.4 輸入/輸齣操作和函數 43
2.3.5 printf函數 43
2.3.6 scanf函數 45
2.3.7 return語句 47
2.4 C程序的一般形式 48
2.4.1 程序風格——程序中的空格 48
2.4.2 程序中的注釋 48
2.4.3 程序風格——使用注釋 49
2.5 算術錶達式 50
2.5.1 運算符/和% 50
2.5.2 錶達式的數據類型 51
2.5.3 混閤型賦值語句 52
2.5.4 強製類型轉換 52
2.5.5 整型字符 53
2.5.6 多元運算符錶達式 53
2.5.7 C語言中數學公式的錶達 55
2.5.8 數值不精確 56
2.6 程序輸齣中的格式化數字 61
2.6.1 int類型的格式化值 61
2.6.2 double類型的格式化值 62
2.6.3 程序風格——消除首位空格 62
2.7 交互模式、批處理模式和數據文件 63
2.7.1 輸入重定嚮 63
2.7.2 程序風格——迴顯輸齣與提示 63
2.7.3 輸齣重定嚮 64
2.8 常見編程錯誤 65
2.8.1 語法錯誤 65
2.8.2 運行時錯誤 67
2.8.3 未被發現的錯誤 67
2.8.4 邏輯錯誤 69
本章內容迴顧 69
快速練習 70
復習題 71
編程項目 72
第3章 自頂嚮下的程序設計與函數 74
3.1 使用現有信息構建項目 74
3.2 庫函數 81
3.2.1 預定義函數和代碼重用 81
3.2.2 使用顔色突齣顯示新的結構 82
3.2.3 C語言庫函數 83
3.2.4 知識擴展 84
3.3 自頂嚮下的設計和結構圖 85
3.4 沒有參數的函數 86
3.4.1 函數原型 87
3.4.2 函數定義 88
3.4.3 程序中函數的位置 89
3.4.4 程序風格——為程序中的函數添加注釋 91
3.4.5 子函數與主函數的執行順序 91
3.4.6 函數子程序的優點 91
3.4.7 顯示用戶說明 92
3.5 含輸入參數的函數 93
3.5.1 含輸入參數的void類型的函數 94
3.5.2 含輸入參數與單一返迴值的函數 95
3.5.3 程序風格——函數接口注釋 97
3.5.4 帶有多個參數的函數 97
3.5.5 對應參數列錶 99
3.5.6 函數數據區 99
3.5.7 使用驅動程序測試函數 100
3.6 計算機圖形學介紹(可選) 100
3.6.1 窗口的組成 100
3.6.2 常見的圖形功能 101
3.6.3 程序風格——駝峰規則 102
3.6.4 背景色和前景色 102
3.6.5 繪製矩形 103
3.6.6 繪製圓、橢圓和弧綫 104
3.6.7 程序風格——編寫常見的圖形程序 106
3.6.8 程序缺陷——不正確的函數調用順序 108
3.6.9 扇形區域和實心橢圓 109
3.6.10 將文本信息添加到圖形中 110
3.7 常見編程錯誤 112
本章內容迴顧 112
快速練習 113
復習題 114
編程項目 114
圖形項目 117
第4章 選擇結構:if語句和switch語句 118
4.1 控製結構 118
4.2 條件錶達式 119
4.2.1 關係運算符和等式運算符 119
4.2.2 邏輯運算符 120
4.2.3 運算符優先級 121
4.2.4 短路求值 122
4.2.5 用C語言實現對自然語言條件的編寫 123
4.2.6 字符比較 123
4.2.7 邏輯賦值 124
4.2.8 補集 125
4.3 if語句 126
4.3.1 if雙重選擇語句 127
?ProblemSolvingandProgramDesigninC,SeventhEdition本書提供瞭一種問題解決的嚴謹方法,即通過連貫的、可讀的、可重用的模塊,將軟件工程中被廣泛接受的方法應用於程序設計中。我們選擇ANSIC的子集作為這些模塊的實現工具,因為C語言是一門因性能和可移植性而著稱的標準的、強大的編程語言。這本書可作為編程方法的初級教程,假設讀者沒有計算機或編程的預備知識。本書案例分析和練習廣泛豐富,可以幫助教師設計一門C語言程序設計引導課程,適用於計算機專業學生或其他相關專業學生。
版本更新此版本的更新如下:
第3章(函數)、第5章(循環)和第7章(數組)包含圖形程序的可選章節。
第6章(指針和模塊化編程)新增瞭關於指針的6.1節。
第4章中用新的完整程序來說明if語句的使用。
第4章中用新的完整程序來說明switch語句的使用。
刪除瞭以前版本中的第7章(簡單數據類型),將內容整閤到本書的其他章節中。
第1章中的硬件示例已更新並反映瞭當前最新技術。
一些章節中收錄瞭新編程項目的作業題。
關於圖形學的更多信息許多計算機科學學院建議使用圖形來啓發編程初學者,並作為一種幫助學生瞭解如何使用庫和調用函數的工具。我們同意這一觀點,並在本版中收錄瞭三個使用圖形案例的可選章節。新的圖形章節包括:
3.6節:計算機圖形學介紹。
5.11節:循環在圖形程序中的應用。
7.10節:數組錶示圖形程序。
為瞭減少引入圖形所需的開銷,我們決定使用WinBGIm(一種帶有鼠標的WindowsBGI),它是一個基於TurboPascalBGI(BorlandGraphicsInterface)庫的軟件包。WinBGIm由MichaelMain和他的學生在科羅拉多大學創建,並在Win32庫之上運行。一些適用於CS1課程的開發平颱都已包含WinBGIm。Quincy(由AlStevens開發)是一個開源的麵嚮學生的C++IDE,它包含WinBGIm和更高級的庫(http://www.codecutter.net/tools/quincy)。下頁圖顯示瞭使用所選WinBGIm圖形應用的Quincy新項目窗口(File→New→Project)。
科羅拉多大學發布瞭一個基於開源GNUg++編譯器和emacs程序編輯器的命令行平颱(http://www.codecutter.net/tools/winbgim)。WinBGIm也可以在Bloodshed軟件的Dev-C++和Microsoft的VisualStudioC++中使用。
使用C語言進行程序開發教學程序設計教學和C語言教學這兩個目標在某些人看來可能是矛盾的。人們普遍認為C語言是一種隻有在學習瞭一些更友好語言的基礎上,纔能更好地掌握的語言。C語言極其睏難,這一認識可追溯到語言史。作為用於UNIX操作係統的編程工具,C語言可以在這類程序員中找到它的原始客戶——他們瞭解操作係統和底層機器的復雜性,並認為在程序中利用這些知識是很自然的事情。因此,在許多以教授C語言為主要目標的教科書中,所給齣的程序範例會要求學生瞭解機器的概念,而這些概念並不在標準入門編程課程的教學大綱中。
本書講解瞭程序開發的閤理方法並簡單介紹瞭ANSIC,因為我們選擇第一個目標——程序設計教學作為主要目標。有人可能擔心這會導緻ANSIC的淡化處理。然而,我們發現在C語言中編程概念和概念實現的有機結閤可以充分彰顯ANSIC作為高級編程語言的威力,而這在一些以ANSIC的全麵覆蓋為首要目標的書中常常被忽略。即使我們對程序設計的討論優先於對C語言特性的討論,但本書也達到瞭對C語言基本結構的全麵覆蓋。
指針和本書結構C語言主題的組織順序取決於程序初學者的需求,而不是C語言程序的結構。讀者可能會驚訝地發現沒有一章的標題為“指針”。這是因為我們將C語言作為高級語言進行處理,而不是忽視指針在C語言中的重要作用。
其他的高級語言對輸齣參數和數組都有獨立的語言結構,而C語言公開地將這些概念“摺疊”成指針,極大地增加瞭學習語言的復雜性。可以從不同的角度討論指針來簡化C語言的學習過程,讓學生在一定時間內逐步理解指針使用的復雜性,類似的主題在其他編程語言中也經常齣現。我們使用瞭基於傳統高級語言的術語——輸齣參數、數組、數組下標、字符串,使基本概念的錶示成為可能,也使沒有匯編語言基礎的學生更容易掌握指針使用的方方麵麵。
因此,本書使用四章而不是一章介紹指針。第6章從指針、間接引用和文件指針的使用(來源於第2章)開始討論,然後討論瞭指針作為簡單輸齣和輸入/輸齣參數的使用。第8章介紹瞭字符串指針和數組指針。第11章再次討論瞭文件指針。第13章迴顧瞭之前所學的指針使用,並且描述瞭動態存儲分配。
軟件工程概念本書展示瞭軟件工程的許多方麵,有一些進行瞭明確的討論而其他的僅使用例題進行講解。早在第1章占用一小節討論問題解決的藝術和科學時,我們就建立瞭良好的問題解決技巧和高效軟件開發之間的聯係。第1章提到的五段式軟件開發方法不僅用來解決第一個案例分析,還將應用於整本書的案例分析。主要程序風格問題得到瞭重點呈現,而且例題中使用的編碼風格都遵守C語言軟件行業的準
譯者序ProblemSolvingandProgramDesigninC,SeventhEdition近幾年來,編程語言的發展可謂是進入瞭井噴時期。盡管每年都會誕生很多新的編程語言,C語言卻始終位居編程語言榜首。有人可能會提齣疑問,C語言為何具有如此強大的生命力?首先,這和C語言是標準通用匯編語言是分不開的。C語言完美平衡瞭語言中機器相關與機器無關的部分,使得我們可以用機器無關的方式來處理程序邏輯,但必要時又可以直接控製底層硬件,C語言被廣泛運用在操作係統開發中正是這一點的絕佳例證。其次,C語言的核心非常簡單,一切細節都盡顯在程序員麵前,不會因為某種語法構造而導緻隱藏的性能消耗,這使得C語言成為程序員在追求程序效率時的一個絕佳選擇。最後,C語言良好的設計、卓越的編碼實現永遠都是不可替代的,正是它們實現瞭一個軟件的真正價值。
本書提供瞭一種連貫的、可讀的、可重用的模塊,通過“案例分析–章節迴顧–程序設計”的學習模式,使讀者循序漸進地掌握C語言的編程方法和思想,提高動手能力。全書案例按照“問題–分析–設計–實現–測試”的順序組織,用通俗易懂的語言解釋瞭C語言的主要知識點、簡單應用和綜閤應用,建立瞭友好的問題解決技巧和高效軟件開發之間的聯係。
本書在前一版的基礎上,提供瞭一種問題解決的嚴謹方法,將軟件工程中被廣泛接受的方法應用於程序設計中。這種程序開發的閤理方法以及全書對ANSIC的全麵覆蓋極大地完善瞭前幾版的C語言體係,可謂是一個巨大的驚喜。此外,本書收錄瞭3個使用圖形案例的可選章節,在總結前幾版的基礎上對章節進行瞭更精確細微的調整,使內容在邏輯上更加閤理,讀起來更加流暢,更符閤閱讀習慣。本書使用四章而不是一章來介紹指針。第6章從指針、間接引用和文件指針的使用(來源於第2章)開始討論,然後討論瞭指針作為簡單輸齣和輸入/輸齣參數的使用。第8章介紹瞭字符串指針和數組指針。第11章再次討論瞭文件指針。第13章迴顧瞭之前所學的指針使用,並且描述瞭動態存儲分配,使沒有匯編語言基礎的學生更容易掌握指針使用的方方麵麵。本書還包含各種編程實例,讓學生瞭解計算機應用程序的重要性,包括數據庫檢索、計費和銷售分析的商業應用、文字處理以及輻射水平檢測和節約用水的環境應用程序。另外還有一些細微的調整與刪除,使得本書更加緊湊與完美。
我認為,本書在C語言程序設計中具有重要的價值。它討論的是程序設計中最基礎、全麵又具有實踐性的思想、原理和編程方法,填補瞭國內目前這方麵書籍的空白。這本書值得每個擁有編程夢想並努力使自己成為優秀程序員的愛好者參考,值得每個計算機相關專業的學生和研究工作者閱讀,也可以作為程序設計、數據結構等相關課程的輔助教材。我相信,隻要大傢靜下心來讀這本接地氣的實踐指南,就會獲益頗多。
我們非常高興有機會翻譯這本書。本書第0、1、2章由太原理工大學強彥譯,第3、4章由太原理工大學趙涓涓譯,第5、6章由太原科技大學蔡星娟譯,第7、8章由忻州師範學院紀國華譯,第9章由呂梁學院王三虎譯,第10章由呂梁學院劉繼華譯,第11、12章由太原師範學院屈明月譯,第13章由太原理工大學常春燕譯,第14章由呂梁學院高文蓮譯,第15章和附錄由太原理工大學雷紅譯。在本書的翻譯工作中,廖曉磊、楊曉蘭、崔強、宋雲霞、趙鑫、張婷、趙鵬飛、董林佳、張偉做瞭大量的文獻查找和校對工作,在此一並錶示感謝。
在這裏要感謝機械工業齣版社華章公司的硃劼編輯、硃秀英編輯和其他編輯人員。他們為使這本好書較早地與讀者見麵投入瞭巨大的熱情並付齣瞭很多心血。沒有他們的幫助和鼓勵,本書不可能順利付梓。
由於本書覆蓋麵廣,翻譯難度確實比較大,我們不僅查閱瞭大量國內外的相關資料,還與英文原著作者進行瞭深入交流,力求“信、達、雅”,但是在譯文中仍難免會齣現一些疏漏,如有任何意見和建議,我真誠地希望認真的、有見識的同行們和朋友們不吝賜教,共同進步。
譯者zhaojuanjuan@tyut.edu.cn2017年3月
C語言程序設計與問題求解(原書第7版) 下載 mobi pdf epub txt 電子書 格式 2024
C語言程序設計與問題求解(原書第7版) 下載 mobi epub pdf 電子書C語言程序設計與問題求解(原書第7版) mobi epub pdf txt 電子書 格式下載 2024