圖書相關背景
內容簡介
作者是一名極富教學經驗的教授,在大多數人看來枯燥無味的語言基礎能夠被他講解得生動有趣,配合每章結束後的思考習題,很好地鞏固了前一章內學到的知識。
作者具有獨特的教學和寫作思路,不像高高的講台上站著的老師,而更像溫和的與你面對面交流編程經驗的朋友。
學習程式語言的關鍵在於動手實踐,書中提供了大量的實例可供讀者自行發散思維。
作者簡介
傑克?普德姆(Jack Purdum)是普渡大學技術學院(Purdue University’s College of Technology)的教授。普德姆博士在大學執教超過25年,其間一共編寫了17本程式開發和計算機相關的教材,如今,他仍然孜孜不倦,為雜誌和期刊撰寫文章,為各種專業會議做演講。他是Ecosoft, Inc.的創始人和CEO;這是一家專注於為PC研發編譯器等程式開發工具的公司。普德姆博士持續地將精力投入在與面向對象程式開發分析和設計相關的線上培訓和指導上,他總結出了大量的教學經驗和方法論(例如:“右左右左法則”、“水桶比喻”、“程式設計五環節”以及Sideway Refinement等),還包括代碼的評測機制(Dhampstone)等,這些都成為了他多年教學生涯的碩果。他在穆斯靜岡學院(Muskingum College)取得學士學位,後在俄亥俄州立大學(Ohio State University)獲得碩士和博士學位。
圖書前言摘要
本書和其他C語言教材不一樣。
首先,很多教材似乎都喜歡把編程歸為後台行為,轉而注重微處理器的開發過程方面。事實上,如果你讀過一些關於單片機的書籍,可能會有這種感覺:軟體,尤其是編程,是一個人們必須忍受的惡魔。也就是說,真正好的東西都在硬體中。然而,很棒的硬體上如果運行著馬馬虎虎的軟體,那你也就只能得到一個馬馬虎虎的結果。製作優秀的軟體所獲得的回報一點也不比設計精良的硬體差。
其次,讓本書與眾不同的是我的教學經驗。超過25年不斷的試錯和糾正的過程幫助我培養出了大量的教學技巧,讓我能夠巧妙地指導學生從最有可能絆倒他們的地方跨越過去。
最後,我盡己所能地讓本書在閱讀過程中就好像你和我面對面交流編程經驗一樣。我希望你能夠在這個過程中體會到編程的樂趣,就像我一樣。編程可以成為最令人享受的消遣。
圖書目錄
第1章 簡介 1
1.1 一些假設前提 2
1.2 你需要什麼 3
1.2.1 基於Atmel的單片機卡 3
1.2.2 麵包板 5
1.2.3 零碎的小件 5
1.3 安裝軟體 6
1.4 檢查硬體 7
1.4.1 連線USB線纜 7
1.4.2 在集成開發環境中選擇mc板 8
1.4.3 連線埠選擇 9
1.5 載入並運行你的第一個程式 11
1.5.1 Blink程式 11
1.5.2 運行Blink程式代碼 13
1.5.3 編譯Blink程式代碼 14
1.5.4 上載Blink程式 14
1.6 本章小結 16
第2章 ArduinoC 17
2.1 程式語言的通用構件 17
2.1.1 表達式 17
2.1.2 語句 19
2.1.3 語句塊 20
2.1.4 函式塊 21
2.2 程式的5個環節 22
2.3 再來看看Blink程式 24
2.3.1 程式注釋 25
2.3.2 數據定義 26
2.3.3 setup()函式 28
2.3.4 loop()函式 29
2.4 小結 30
2.5 練習 31
第3章 ArduinoC數據類型 32
3.1 boolean數據類型 33
3.2 char數據類型 34
3.2.1 二進制數據 34
3.2.2 char數據類型和字元集 35
3.2.3 生成ASCII字元表 36
3.3 byte數據類型 37
3.4 int數據類型 37
3.5 word數據類型 38
3.6 long數據類型 38
3.7 float和double數據類型 38
3.8 string數據類型 39
3.9 String數據類型 40
3.10 void數據類型 41
3.11 array數據類型 42
3.12 變數的定義與聲明 42
3.12.1 符號表 43
3.12.2 lvalue和rvalue 43
3.12.3“水桶”比喻 45
3.13 使用強制類型轉換符 46
3.14 小結 47
3.15 練習 48
第4章 C語言的邏輯判斷 49
4.1 關係運算符 49
4.2 if語句 50
4.3 升級版Blink程式 52
4.3.1 電路 52
4.3.2 程式代碼 54
4.4 升級版Blink程式的修改 55
4.5 if—else表達式 56
4.6 if語句嵌套 57
4.7 自增和自減運算符 58
4.7.1 兩種類型的自增運算符(++) 59
4.7.2 兩種類型的自減運算符(??) 59
4.7.3 運算符的優先權 60
4.8 switch語句 61
4.9 goto語句 62
4.10 拋棄“魔數” 62
4.11 C語言的預處理指令 63
4.12 正面還是反面 65
4.12.1 初始化環節 65
4.12.2 輸入環節 65
4.12.3 處理環節 65
4.12.4 輸出環節 66
4.12.5 結束環節 66
4.13 思考一下 68
4.14 小結 69
4.15 練習 69
第5章 C語言的循環 70
5.1 正常循環的特徵 70
5.1.1 條件1:變數初始化 70
5.1.2 條件2:循環控制測試 71
5.1.3 條件3:修改循環控制變數的狀態 71
5.2 使用for循環 71
5.3 while循環 73
5.4 do—while循環 74
5.5 break和continue關鍵字 75
5.5.1 break語句 75
5.5.2 continue語句 76
5.6 一段完整的示例 77
5.6.1 環節1:初始化 77
5.6.2 環節2:輸入 77
5.6.3 環節3:處理 77
5.6.4 環節4:輸出 78
5.6.5 環節5:結束 78
5.6.6 代碼5—1是“傻瓜代碼” 80
5.7 循環和編碼風格 81
5.8 小結 82
5.9 練習 82
第6章 C語言函式 83
6.1 函式剖析 84
6.1.1 函式類型說明符 84
6.1.2 函式名 84
6.1.3 函式參數 85
6.1.4 函式體 86
6.1.5 函式簽名 87
6.2 “優質”函式所具備的條件 88
6.2.1 使用面向任務的函式命名 88
6.2.2 函式應該具有聚合力 89
6.2.3 函式應避免耦合 89
6.3 編寫自己的函式 90
6.3.1 設計函式的考慮因素 90
6.3.2 參數列表 91
6.3.3 函式體 92
6.4 邏輯運算符 92
6.4.1 邏輯與運算符(&&) 92
6.4.2 邏輯或(||) 93
6.4.3 邏輯非(!) 94
6.5 編寫自己的函式 94
6.5.1 IsLeapYear()函式和編碼風格 95
6.5.2 實參(Argument)和形參(Parameter) 96
6.5.3 為什麼要堅持一種函式風格 96
6.6 閏年計算程式 97
6.7 函式中數據的傳入和返回 99
6.8 小結 102
6.9 練習 102
第7章 存儲類型和作用域 103
7.1 隱藏程式數據 103
7.2 語句塊作用域 103
7.3 本地作用域 105
7.4 全局作用域 108
7.5 作用域和存儲類型 110
7.5.1 auto存儲類型 110
7.5.2 register存儲類型 110
7.5.3 static存儲類型 111
7.5.4 extern存儲類型 111
7.6 volatile關鍵字 116
7.7 小結 116
7.8 練習 116
第8章 初識指針 117
8.1 定義一個指針 117
8.1.1 指針名 117
8.1.2 星號 118
8.1.3 指針類型說明符和指針標量 118
8.2 使用指針 121
8.2.1 取值運算符(*) 122
8.2.2 使用取值運算 123
8.3 指針用法小結 125
8.4 指針為什麼有用 126
8.5 指針和數組 129
8.6 小結 134
8.7 練習 134
第9章 高效使用指針 136
9.1 針對指針的關係判斷 136
9.2 指針運算 137
9.3 二維數組 141
9.3.1 一點小改進 144
9.3.2 幾維 144
9.4 二維數組和指針 144
9.5 函式指針 147
9.5.1 函式指針數組 149
9.5.2 enum數據類型 149
9.6 右左右左規則 153
9.7 小結 154
9.8 練習 154
第10章 結構、聯合和數據存儲 155
10.1 結構 155
10.1.1 聲明結構 156
10.1.2 定義結構 156
10.1.3 訪問結構成員 157
10.1.4 從函式調用返回結構 160
10.1.5 使用結構指針 162
10.1.6 初始化結構 164
10.1.7 結構數組 165
10.2 聯合 165
10.3 EEPROM記憶體 166
10.4 數據日誌 167
10.5 其他存儲選擇 175
10.5.1Shield 175
10.5.2 SD卡的其他功能 176
10.6 小結 177
10.7 練習 178
第11章 C預處理和按位操作 179
11.1 預處理指令 179
11.1.1 #undef 180
11.1.2 #line 181
11.1.3 #if條件指令 182
11.1.4 #include 183
11.2 帶參宏 184
11.2.1 按位操作符 184
11.2.2 按位移動操作符 187
11.2.3 使用不同進制的整型常量 188
11.2.4 帶參宏(補充內容) 189
11.3 小結 189
11.4 練習 189
第12章 Arduino庫 191
12.1 庫 191
12.1.1 Arduino庫 191
12.1.2 其他庫 196
12.2 編寫自己的庫 198
12.2.1 庫頭檔案 199
12.2.2 庫原始碼檔案(Dates.cpp) 200
12.3 設定ArduinoIDE以使用自己的庫 203
12.4 使用Dates庫實現的示例程式 203
12.4.1 向IDE添加Easter程式 205
12.4.2 keyword.txt檔案 205
12.4.3 關鍵字顏色(theme.txt) 206
12.5 小結 207
12.6 練習 207
附錄A 供應商和資源 208
A.1供應商 208
A.1.1SeeedinoStudio 208
A.1.2DiligentInc 208
A.1.3OSEPP 209
A.1.4TinyosElectronics 210
A.1.5CookingHacks 210
A.2資源 210
附錄B 實驗用電子元器件 212
B.1開發板 212
B.2麵包板 212
B.3電子元件 212
B.4網購元件 213
B.5實驗 213
練習答案 215
第2章 215
第3章 215
第4章 217
第5章 219
第6章 221
第7章 222
第8章 222
第9章 223
第10章 224
第11章 226
第12章 227
圖書封底
跟隨本書的作者,你將探索如何使用C程式語言來掌控Arduino(Atmel)系列單片機以及與Arduino相兼容的開發板。在此過程中,你會接觸到許多簡單而又廉價的硬體開發實踐,以展示C語言的強大實用性。它使你能夠更深入地理解代碼所能完成的工作,以及背後的原理。
通過本書,你將學習到以下知識和技能:
Arduino所定義的C程式語言語法;
設計、編碼並調試能驅動Arduino單片機的程式;
通過創建你自己的庫程式來增強和擴展C語言的功能;
檢測、抽離並修正程式中的bug;
對任何給定問題實現多種方案;
在項目中集成廉價、現成的硬體Shield。
本書將軟體和硬體的學習過程分解成一個個具有吸引力的小目標,它為你提供了沉浸其中而又可以輕鬆掌控的學習過程,將為你未來的創造奠定堅實的基礎。