作者劉邦鋒教授,感念在臺大資訊系唸書時,教過他的老師們,回憶從課堂上學習到寫程式是多麼有趣的事情,能夠一寫就是三十年。他將這份熱誠投注在教學及寫作上,經過多年教學累積經驗,試教兩年,不斷精進修改,為所有想學好程式設計的學子朋友們設想,完成這本深入淺出的好書《由片語學習C程式設計》。
程式設計是計算機科學的入門技術。透過程式設計,我們可以利用計算機進行大量計算。不僅理工科的同學需要學習程式設計,其他學科的學習者也可以利用程式設計幫助處理工作上的資料。藉著這本書將正確的程式設計技術傳播給廣大的讀者群,提升大家對學習程式設計的興趣。
本書特色:
1. 以片語為中心,依慣用寫法來引導初學者。
2. 學習要點、風格要點、特殊符號等欄位,隨時提醒讀者各項重點。
3. 整理各單元之關係圖,提供自主學習方法。
4. 本書專屬網站https://sites.google.com/site/mycprogrammingbook/,提供補充材料、相關軟體及程式碼。
本書編寫特點:
本書的寫法是以片語為中心,也就是以慣用的寫法來引導初學者。在作者的教學經驗中,學生往往知道一個東西是作什麼的,但是卻不會實際運用。原因在於教學的時候往往著重個別觀念的解釋,而非個別觀念集合在一起時的互動關係,就好像狂背英文單字,卻不會作文一樣。本書採用 C 的片語教學,讓學生能用學到的片語組成完整的程式,就好像用英文片語組成文章一樣。
這本書裡除了大量的片語及範例程式外,還有以下三個要項:
‧ 學習要點
作者將其認為重要的觀念強調一次,叮嚀學習者務必理解所有的學習要點。
‧ 風格要點
是關於如何寫出易於閱讀、理解及維護的程式。請在寫程式時確實遵守,養成良好的寫程式習慣。
‧ 特殊字元
C 程式語言中大量使用了特殊字元,這些特殊字元遠比我們習慣的標點符號複雜。在遇到特別的字元時,已整理成特殊字元項目,提醒讀者注意。
由於程式語言的系統相關部分會隨著時間而改變,因此作者還成立了一個網站。這個網站專門放這本書的補充材料,例如修正部分,軟體安裝,部分程式碼等。任何有關這本書的資訊都會放在這裡:https://sites.google.com/site/mycprogrammingbook/
如此深深以學習者立場考量,引領我們進入程式設計的天地,《由片語學習C程式設計》絕對是您的首選之書。
作者簡介:
臺灣大學資訊工程系教授。
美國耶魯大學計算機科學博士。
教授過計算機程式設計、高等程式設計、物件導向程式設計、平行程式設計等課程。
2002至2005年擔任國際大學生程式競賽 (ACM-ICPC, International Collegiate Programming Contest) 臺灣大學代表隊教練,並於2004年獲得 ACM-ICPC 世界大賽第六名及亞洲第一名。
2002年至今擔任國際奧林匹亞資訊競賽 (IOI, International Olympiad in Informatics) 臺灣代表隊指導老師。
2002年至今擔任教育部全國大專電腦軟體設計競賽裁判。
2006年至今擔任國際大學生程式競賽臺灣賽區裁判。
2008年臺灣大學主辦時,擔任臺灣賽區裁判長。
2008、2009、2011年獲臺灣大學教學優良獎。
目錄
前言. . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . ..7
1 程式設計
1.1 程式. . . . . . . . . .. . . . . . . . . . . . . . . . . 11
1.2 設計. . . . . . . . . . .. . . . . . . . . . . . . . . 12
2 基本程式架構
2.1 程式骨架. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 變數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 輸出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 輸入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3 運算
3.1 指定. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 算術運算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 比較運算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4 邏輯運算. . . . . . . . . . . . . . . . . . . . . . . .. . . . . . 38
3.5 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4 判斷
4.1 if 判斷. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.2 switch判斷. . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.3 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5 迴圈
5.1 while 迴圈. . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.2 for 迴圈. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.3 do while 迴圈. . . . . . . . . . . . . . . . . . . . . . . . . 75
5.4 使用break結束迴圈. . . . . . . . . . . .. .. . . . . . . . 77
5.5 使用continue繼續迴圈. . . . . . . . . . .. . . . . . . . 79
5.6 多重迴圈. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 81
5.7 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6 陣列
6.1 屬性. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.2 一維陣列. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 92
6.3 多維陣列. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . 102
6.4 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7 浮點數
7.1 輸出與輸入. . . . . . . . . . . . . . . . . . . . . . . . . . . 124
7.2 類別轉換. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.3 計算. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
7.4 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
8 函式
8.1 系統定義函式. . . . . . . . . . . . . . . . . . . . . . . . . 133
8.2 使用者定義函式. . . . . . . . . . . . . . . . . . . . . . . 139
8.3 不定個數參數. . . . . . . . . . . . . . . . . . . . . . . . . 149
8.4 參數傳遞. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
8.5 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
9 指標
9.1 用法. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
9.2 參數傳遞. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
9.3 指標與陣列. . . . . . . . . . . . . . . . . . . . . . . . . . . 177
9.4 回傳值. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
9.5 用途與限制. . . . . . . . . . . . . . . . . . . . . . . . . . . 183
9.6 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
10 字元
10.1 宣告. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
10.2 輸出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
10.3 字元常數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
10.4 輸入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
10.5 常用函式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
10.6 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
11 字串
11.1 宣告. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
11.2 輸出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
11.3 字串常數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
11.4 輸入. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
11.5 字元指標. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
11.6 常用函式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
11.7 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
12 宣告修飾
12.1 short、long 及long long . . . . . . . . . . . . . . . . . 247
12.2 signed及unsigned . . . . . . . . . . . . . . . . . . . . . . 248
12.3 const . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
12.4 static . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
12.5 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13 位元運算
13.1 位元且. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
13.2 位元或. . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 261
13.3 位元互補. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
13.4 位元互斥或. . . . . . . . . . . . . . . . . . .. . . . . . . . . 263
13.5 移位. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
13.6 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
14 遞迴
14.1 定義. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 271
14.2 應用. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 273
14.3 效能考量. . . . . . . . . . . . . . . . . . . . .. . . . . . . . 287
14.4 作業. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 288
15 結構
15.1 定義. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 297
15.2 欄位. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 299
15.3 結構指標. . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
15.4 參數傳遞. . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
15.5 typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
15.6 作業. . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . 315
16 檔案處理
16.1 開啟與關閉檔案. . . . . . . . . . . . . . . . . . . . . . . 323
16.2 文字檔案處理. . . . . . . . . . . . . . . . . . . . . . . . . 325
16.3 二進制檔案處理. . . . . . . . . . . . . . . . . . . . . . . 334
16.4 EOF測試. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
16.5 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
17 資料結構
17.1 動態記憶體配置. . . . . . . . . . . . . . .. . . . . . . . 355
17.2 assert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
17.3 鏈結序列. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
17.4 二元樹. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
17.5 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
18 物件
18.1 堆疊介紹. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
18.2 堆疊的陣列實作. . . . . . . . . . . . . . . . . . . . . . . 386
18.3 堆疊的使用. . . . . . . . . . . . . . . . . . . . . . . . . . . 389
18.4 堆疊的鏈結序列實作. . . . . . . . . . . . . . . . . . . 393
18.5 物件的優點. . . . . . . . . . . . . . . . . . . . . . . . . . . 395
18.6 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
19 前置處理
19.1 #include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
19.2 #define . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
19.3 #if, #ifdef, #ifndef . . . . . . . . . .. . . . . . . . . 409
19.4 #_ LINE_ , and_ FILE_ . . . . . . . . . . . . . . . . . 412
19.5 ## . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
19.6 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
20 C 標準程式庫
20.1 qsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
20.2 轉換函式. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
20.3 隨機數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
20.4 exit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
20.5 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437
21 高等技術
21.1 命令列參數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
21.2 導向. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
21.3 全域變數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
21.4 作業. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
22 不想教的東西
22.1 goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
22.2 全域變數. . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
22.3 格式字串. . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
22.4 指標技巧. . . . . . . . . . . . . . . . . . . . . . . . . . . 459
22.5 修改記憶體. . . . . . . . . . . . . . . . . . . . . . . . . . 459
22.6 征服銀河系. . . . . . . . . . . . . . . . . . . . . . . . . . 459
前言. . . . . .. . . . . . . . . .. . . . . . . . . . .. . . . ..7
1 程式設計
1.1 程式. . . . . . . . . .. . . . . . . . . . . . . . . . . 11
1.2 設計. . . . . . . . . . .. . . . . . . . . . . . . . . 12
2 基本程式架構
2.1 程式骨架. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 變數. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 輸出. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4 輸入. . . . . . . . . . . . . . . . . ...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。