超圖解 C語言 -- 用資料結構 × 演算法突破 APCS

趙英傑

  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-1
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-2
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-3
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-4
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-5
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-6
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-7
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-8
  • 超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-9
超圖解 C語言 -- 用資料結構 × 演算法突破 APCS-preview-1

買這商品的人也買了...

商品描述

內容介紹:

//不只考檢測、更鍛鍊未來程式力//

本書是專為有志往資訊科系發展的讀者所設計,具有以下幾項特色:

□ 【紮實基礎教學】:全面涵蓋 C 語言各項主題,沒學過程式設計也可從本書開始入門。主題涵蓋基本語法、函式、陣列、遞迴、指標與多維陣列、動態記憶體配置、前置處理器、結構體與自訂資料型態、到檔案輸出入等,不限於 APCS 檢測範圍,更為未來鋪路。

□ 【超圖解觀念解說】:程式設計抽象概念往往是初學者卡關主因,本書作者親手繪製數百張圖解以及流程圖具像呈現程式設計抽象觀念,易讀又好理解。

□ 【線上開發環境】:學習程式設計就是要動手練習,本書採用線上開發環境,不需安裝軟體,只要打開瀏覽器,就可以開始動手寫程式,甚至在手機、平板上都沒問題。

在 APCS 檢定的準備上,則是採取以下策略:

□ 【從思維邏輯解題】:著重解決問題的思維邏輯,帶你用紙筆解析問題,思考解法。

□ 【單一程式語言】:APCS 的觀念題以 C 語言出題,學 C 語言無可避免,本書實作題也採用 C 語言,只要專心學習單一語言,不需要同時學習兩種語言,以免耗時又容易混淆觀念。

□ 【資料結構與演算法】:帶你思考如何善用資料儲存方法或是執行步驟,讓程式更簡潔、更有效率。涵蓋堆疊、佇列、鏈節串列、樹狀結構、圖形等基本資料結構,以及排序、動態規劃、回溯、雜湊等關鍵演算法。

本書不限定在 APCS 的範疇,也為未來往軟體工程師做準備,包含以下延伸內容:

□ 【業界軟體工具】:gcc 編譯指令、make 專案建置、gdb 除錯程式等實務軟體工作現場必備的工具,為未來進入職場做好準備。

□ 【進階程式主題】:檔案輸出入、動態記憶體配置、模組化程式設計、文字編碼等。另外,本書也提供有 C++ 附錄,對於想要進一步瞭解 C++ 的讀者,快速介紹 C++ 與 C 的差異,並且針對最核心的物件導向概念,做了深入淺出的介紹。

本書特色:

□ 從基本語法、函式、陣列、遞迴、指標與多維陣列、動態記憶體配置、前置處理器、結構體與自訂資料型態、到檔案輸出入,完整打好基礎

□ 線上編譯環境,開瀏覽器就可立即練習

□ APCS 觀念題實戰演練,驗證學習成效

□ APCS 實作模擬題解析,熟練思考邏輯

□ ○/✗對照示範,建立程式正確觀念

□ 用流程圖輔助,具像理解程式邏輯 

□ 涵蓋鏈結串列、樹狀結構、圖形、堆疊、佇列等基本資料結構

□ 涵蓋搜尋、排序、動態規劃、回溯法、雜湊等關鍵演算法

□ 包含 C++ 簡介附錄,提供進一步探索 C++ 的敲門磚 

□ gcc、make、gdb 等開發工具簡介,跨入軟體開發專業領域

目錄大綱

目錄:

第 1 章 認識 C 語言、資料結構和演算法
1-1 認識 C 程式語言
1-2 C 語言的基本結構和執行流程
1-3 電腦語言翻譯機:編譯器和直譯器 
1-4 資料結構和演算法
| APCS 觀念題練習 

第 2 章 數學運算子、變數與資料型態
2-1 運算子、變數和常數 
2-2 運算式 
| APCS 觀念題練習 
2-3 整數和浮點數資料型態
| APCS 觀念題練習 
2-4 printf():合併字串和資料
2-5 整理程式演算思緒的好幫手:虛擬碼和流程圖
| APCS 觀念題練習 

第 3 章 字串、字元編碼與自訂函式
3-1 確認資料型態大小以及注意事項
3-2 字元與字串資料型態 
| APCS 觀念題練習 
3-3 建立自訂函式 
3-4 變數的儲存等級、有效範圍和生命週期
| APCS 觀念題練習 

第 4 章 流程控制:選擇 (selection) 與迴圈 (iteration) 敘述 
4-1 讀取鍵盤輸入資料的 scanf() 函式
4-2 改變程式流程的 if 條件式
4-3 條件運算子
| APCS 觀念題練習 
4-4 switch…case 控制結構 
4-5 努力不懈的迴圈
4-6 使用輾轉相除法求最大公因數
4-7 continue 和 break 指令
| APCS 觀念題練習 
| APCS 實作題 購物車(堆積木) 

第 5 章 排列與隨機
5-1 內容不可改變的「常數」 
5-2 產生隨機數字 
5-3 排列圖案
5-4 常用的數學函式
5-5 判斷某數字是否為「阿姆斯壯數」 
| APCS 觀念題練習 
| APCS 實作題 辨別三角形

第 6 章 陣列與字串
6-1 基本資料結構:陣列 
6-2 處理字串資料 
6-3 文字位移加密(shift cipher) 
6-4 刪除字串裡的空白字元
6-5 運用 string.h 函式庫處理字串
6-6 使用 strtok() 函式切割、擷取子字串 
6-7 檢測迴文句子以及變數的有效範圍 
6-8 計算大數據
| APCS 觀念題練習 
| APCS 實作題 修補圍籬 (壽司拼盤) 
| APCS 實作題 猜拳遊戲(甲蟲爭霸戰) 
第 7 章 遞迴和堆疊
7-1 遞迴:函式呼叫自己 
7-2 認識「堆疊」記憶體區域和資料結構
7-3 利用 pythontutor.com 觀察程式運作狀況
7-4 河內塔問題
| APCS 觀念題練習 

第 8 章 指標與多維陣列
8-1 取址運算子與指標運算子
8-2 指標與加減運算
8-3 二維陣列:表格式資料
8-4 用二維陣列儲存多筆字串資料
8-5 帕斯卡三角形和二項式係數 
| APCS 觀念題練習 
| APCS 實作題 矩陣總和 

第 9 章 前置處理器、標頭檔與程式模組
9-1 外部 C 程式檔 
9-2 前置處理指令與標頭檔
9-3 再談 extern(外部)與 static(靜態)儲存等級
9-4 #define:定義巨集 
9-5 條件編譯
| APCS 觀念題練習 
| APCS 實作題 矩陣轉置 
第 10 章 自訂資料型態
10-1 列舉型態 enum 
10-2 結構體(struct) 
10-3 結構體陣列
10-4 在函式中使用結構體 
10-5 讓記憶體空間華麗轉身的 union 自訂型態 
10-6 位元欄位(bit-field)與位元資料操作
10-7 位元運算子(bitwise operator)與位移運算
10-8 互斥或(XOR)加密和解密
| APCS 觀念題練習 
| APCS 實作題 邏輯運算子

第 11 章 演算法、資料排序和搜尋
11-1 測量執行程式的花費時間
11-2 評估演算法效率和大 O 符號 
11-3 資料排序
11-4 氣泡排序原理與實作 
11-5 快速排序原理與實作 
11-6 求取中位數
11-7 二分搜尋法
| APCS 觀念題練習 
| APCS 實作題 購買力計算
| APCS 實作題 成績指標 
| APCS 實作題 線段覆蓋長度
| APCS 實作題 基地台覆蓋問題 

第 12 章 動態配置記憶體與鏈接串列資料結構
12-1 動態配置記憶體
12-2 函式中的雙重指標參數
12-3 鏈結串列資料結構
12-4 使用區域變數指向串列的開頭
12-5 在串列的結尾新增節點
12-6 搜尋鏈接串列的內容 
12-7 刪除節點
| APCS 觀念題練習 
| APCS 實作題 定時 K 彈(約瑟夫問題) 

第 13 章 樹狀結構
13-1 樹狀結構
| APCS 實作題 樹狀圖分析
13-2 二元樹與平衡二元樹 
13-3 使用鏈接串列建立二元樹
13-4 走訪與搜尋二元樹的節點資料
13-5 新增二元樹的節點
13-6 刪除節點
| APCS 觀念題練習 
| APCS 實作題 自動分裝(旅行團團員分配) 

第 14 章 圖形、佇列、最長距離與最短路徑
14-1 圖形結構
14-2 深度優先(DFS)與廣度優先(BFS)走訪
14-3 佇列(queue)與廣度優先(BFS)走訪
14-4 用陣列實作佇列
14-5 廣度優先走訪(BFS)程式實作 
| APCS 實作題 最長路徑(血緣關係) 
14-6 計算最短路徑:Dijkstra(戴克斯特拉)演算法
| APCS 實作題 機器人移動路徑 
第 15 章 動態規劃
15-1 計算費式數列 
15-2 背包問題
15-3 找零所需的最少硬幣數量
15-4 最長共同子序列
| APCS 實作題 置物櫃(板凳)出租
| APCS 實作題 勇者修練 

第 16 章 回溯法與雜湊表
16-1 走出迷宮
16-2 N 皇后問題 
| APCS 實作題 美麗彩帶(完美序列) 
16-3 可壓縮儲存空間的「雜湊表(Hash Table)」 
16-4 具備碰撞處理機制的雜湊函式
| APCS 實作題 完美序列(雜湊版) 

附錄 A 程式開發工具、GCC 以及 Makefile 編譯命令檔
A-1 安裝 Code::Blocks 程式開發工具 
A-2 手動編譯 C 程式 
A-3 其他 gcc 命令選項以及 gdb 除錯工具 
A-4 封裝函式庫以及靜態連結函式庫 
A-5 採用 makefile 檔編譯程式
A-6 在 Mac 電腦上安裝與設置 C 程式開發工具 

附錄 B 讀寫檔案 
B-1 文字檔和二進位檔
B-2 操作檔案的函式 
B-3 讀取文字檔
B-4 寫入文字檔
B-5 採用 "w+" 讀寫與 "r+" 寫讀模式開啟檔案 
B-6 在文字檔案中新增文字 
B-7 以二進位形式讀寫檔案 
B-8 處理多國語系字串:wchar_t 型態以及語言環境設定 

附錄 C C++
C-1 處理標準輸出∕輸入資料流以及命名空間
C-2 物件導向程式設計(OOP)與 string 字串物件
C-3 函式簽名、多載以及預設參數值 
C-4 標準樣板程式庫(STL) 

索引