
0人評分過此書
本書主要針對高中與大學開始接觸程式設計的初學者,及想學好C++11程式設計的讀者所設計。書中文字敘述力求淺顯簡潔,並以大量範例、片語、學習要點、風格要點等方式,逐步引導初學者進入程式設計的領域。
這本書以「重構」為中心,也就是以一再改寫來引導初學者,強調機制的原理與應用,並用於程式之中。期待藉此正確的程式設計技術傳遞給廣大讀者群,以提升讀者對程式設計的興趣。
本書特色
1. 以「重構」為中心,也就是以一再改寫來引導初學者。
2. 透過「學習要點」、「風格要點」、「特殊字元」等設計,隨時提醒讀者各項學習重點,以提升學習效率。
3. 本書搭配專屬網站(https://sites.google.com/view/cplusplusrefactor),提供各章練習題、作業,並隨時更新相關補充資料、程式碼等資訊。
4. 以更多完整範例、相關圖示說明複雜的觀念與方法,同時強化各範例間的關聯性,讓讀者能從中反覆練習、更瞭解所學之實際應用。
這本書以「重構」為中心,也就是以一再改寫來引導初學者,強調機制的原理與應用,並用於程式之中。期待藉此正確的程式設計技術傳遞給廣大讀者群,以提升讀者對程式設計的興趣。
本書特色
1. 以「重構」為中心,也就是以一再改寫來引導初學者。
2. 透過「學習要點」、「風格要點」、「特殊字元」等設計,隨時提醒讀者各項學習重點,以提升學習效率。
3. 本書搭配專屬網站(https://sites.google.com/view/cplusplusrefactor),提供各章練習題、作業,並隨時更新相關補充資料、程式碼等資訊。
4. 以更多完整範例、相關圖示說明複雜的觀念與方法,同時強化各範例間的關聯性,讓讀者能從中反覆練習、更瞭解所學之實際應用。
- 前言
- 關於「批改娘」
-
1 程式設計
-
1.1 程式
-
1.1.1 高階語言
-
1.1.2 編譯器
-
-
1.2 設計
-
1.2.1 流程圖
-
1.2.2 編輯
-
1.2.3 編譯
-
1.2.4 執行
-
-
-
2 基本程式架構
-
2.1 程式骨架
-
2.2 變數
-
2.3 輸出
-
2.4 輸入
-
-
3 運算
-
3.1 指定
-
3.1.1 交換變數值
-
3.1.2 指定敘述算式
-
-
3.2 運算
-
3.2.1 算術運算
-
3.2.2 比較運算
-
3.2.3 邏輯運算
-
-
-
4 判斷
-
4.1 if 判斷
-
4.1.1 if 語意
-
4.1.2 if then else 語意
-
4.1.3 巢狀if
-
-
4.2 判斷式值
-
4.2.1 絕對值
-
4.2.2 三者最大值
-
4.2.3 面積周長
-
-
4.3 switch 判斷
-
4.3.1 計算次方
-
4.3.2 計算天數
-
4.3.3 算數運算
-
4.3.4 #define
-
4.3.5 比較運算
-
-
-
5 迴圈
-
5.1 while 迴圈
-
5.1.1 複合敘述
-
5.1.2 數列和
-
5.1.3 最大公因數
-
-
5.2 for 迴圈
-
5.2.1 固定次數迴圈
-
5.2.2 質數判斷
-
5.2.3 複合敘述
-
5.2.4 長除法模擬
-
5.2.5 檢查11 的倍數
-
-
5.3 do while 迴圈
-
5.3.1 複合敘述
-
-
5.4 break
-
5.5 continue
-
5.6 巢狀迴圈
-
-
6 標準輸入輸出
-
6.1 輸入資料
-
6.1.1 長除法模擬
-
6.1.2 檢查11 的倍數
-
-
6.2 輸出訊息
-
6.2.1 輸出中加入空白及換行
-
6.2.2 輸出中加入字串
-
-
6.3 多變數輸出入
-
6.4 格式輸出入操控子
-
-
7 陣列
-
7.1 屬性
-
7.2 一維陣列
-
7.2.1 初始化
-
7.2.2 迴圈處理
-
-
7.3 assert
-
7.4 一維陣列應用
-
7.4.1 尋找特定值
-
7.4.2 計算內積
-
7.4.3 費伯納西數
-
7.4.4 質數判定
-
7.4.5 泡沫排序法
-
7.4.6 記憶體配置
-
-
7.5 多維陣列
-
7.5.1 用法
-
7.5.2 初始化
-
7.5.3 矩陣相乘
-
7.5.4 質數
-
7.5.5 記憶體配置
-
-
7.6 多維陣列應用
-
7.6.1 生命遊戲
-
7.6.2 鏡子房間
-
7.6.3 繞圈
-
7.6.4 井字遊戲
-
-
-
8 浮點數
-
8.1 宣告
-
8.2 位元組數
-
8.3 輸出與輸入
-
8.4 類別轉換
-
8.4.1 靜態轉型
-
8.4.2 計算平均
-
-
8.5 泰勒展開式
-
8.5.1 float 計算級數
-
8.5.2 double 計算級數
-
8.5.3 不直接算階乘
-
-
8.6 開平方根
-
-
9 函式
-
9.1 呼叫函式
-
9.1.1 標頭檔
-
9.1.2 函式原型
-
9.1.3 檢查函式回傳值
-
9.1.4 程式庫
-
-
9.2 定義有回傳值的函式
-
9.2.1 回傳值
-
9.2.2 主程式
-
9.2.3 決定閏年
-
-
9.3 定義無回傳值的函式
-
9.3.1 將各位數分別印出
-
-
9.4 多個參數的函式
-
9.4.1 計算天數
-
9.4.2 印出連續整數
-
9.4.3 算式判斷
-
9.4.4 比較判斷
-
-
9.5 參數傳遞
-
9.5.1 形式與實際參數
-
9.5.2 陣列參數傳遞
-
9.5.3 多維陣列參數
-
9.5.4 預設參數值
-
-
9.6 生命遊戲
-
9.6.1 readLife
-
9.6.2 evolve
-
9.6.3 printLife
-
9.6.4 main
-
-
9.7 鏡子房間
-
9.7.1 init
-
9.7.2 setDir、setRow、setCol
-
9.7.3 inRoom
-
9.7.4 windowIndex
-
9.7.5 main
-
-
9.8 井字遊戲
-
9.8.1 init
-
9.8.2 playerToMove
-
9.8.3 play
-
9.8.4 win
-
9.8.5 main
-
-
9.9 結語
-
-
10 指標
-
10.1 指標變數
-
10.1.1 宣告
-
10.1.2 大小
-
10.1.3 取值
-
10.1.4 nullptr
-
10.1.5 綜合說明範例
-
10.1.6 取記憶體位址
-
-
10.2 指標參數傳遞
-
10.2.1 藉由指標交換變數值
-
10.2.2 藉由指標改變變數值
-
-
10.3 指標與陣列
-
10.3.1 利用指標改陣列元素
-
10.3.2 指標的陣列語法
-
10.3.3 指標算術
-
10.3.4 多維陣列指標
-
-
10.4 指標回傳值
-
10.5 用途與限制
-
10.5.1 用途
-
10.5.2 限制
-
-
-
11 參考類別
-
11.1 宣告及初始
-
11.1.1 語法
-
11.1.2 位元組數
-
11.1.3 指定
-
11.1.4 參考變數範例
-
-
11.2 參數傳遞
-
11.2.1 交換變數值
-
11.2.2 參考參數傳遞
-
-
11.3 參考回傳值
-
11.4 參考應用
-
-
12 字元
-
12.1 宣告
-
12.2 輸出
-
12.3 字元常數
-
12.4 輸入
-
12.4.1 get 及put
-
12.4.2 eof
-
-
12.5 常用函式
-
12.5.1 字元分類函式
-
12.5.2 字元轉換函式
-
-
-
13 宣告修飾
-
13.1 修飾大小
-
13.1.1 位元組數
-
13.1.2 輸出格式
-
13.1.3 溢位
-
-
13.2 有號及無號
-
13.3 C++11 標準類別
-
13.3.1 C++11 有號整數
-
13.3.2 C++11 無號整數
-
13.3.3 溢位
-
-
13.4 常數
-
13.4.1 常數參數
-
13.4.2 常數陣列
-
13.4.3 常數指標
-
13.4.4 常數參考
-
-
13.5 靜態宣告
-
13.5.1 靜態變數
-
-
13.6 auto
-
-
14 字串
-
14.1 宣告及輸出入
-
14.1.1 輸出入
-
14.1.2 eof
-
14.1.3 getline
-
-
14.2 串接
-
14.3 字串常數
-
14.4 操作函式
-
14.4.1 empty 及clear
-
14.4.2 length
-
14.4.3 複製
-
14.4.4 連結
-
14.4.5 修改
-
14.4.6 比較
-
14.4.7 部分字串
-
14.4.8 部分字串substr
-
-
14.5 C-style 字串
-
14.5.1 位元組數
-
14.5.2 初始化
-
14.5.3 慣例結尾
-
14.5.4 輸入
-
-
14.6 簡易BASIC 解譯器
-
14.6.1 BASIC
-
14.6.2 函式說明
-
14.6.3 readVariable
-
14.6.4 processCode
-
14.6.5 runCode
-
14.6.6 用BASIC 求質數的程式
-
-
-
15 位元運算
-
15.1 宣告
-
15.2 檢查位元
-
15.2.1 [] 語法
-
15.2.2 set 及reset
-
-
15.3 位元且
-
15.4 位元或
-
15.5 位元互斥或
-
15.5.1 位元互斥互換
-
-
15.6 位元互補
-
15.7 位元數目排序
-
15.7.1 bitset 排序
-
-
-
16 結構
-
16.1 結構宣告
-
16.2 結構欄位
-
16.3 表列初始
-
16.4 結構指標
-
16.4.1 -> 取欄位
-
-
16.5 記憶體位址
-
16.5.1 結構大小
-
16.5.2 欄位擺放與對齊
-
-
16.6 參數傳遞
-
16.6.1 有理數範例
-
16.6.2 指標傳遞
-
16.6.3 參考傳遞
-
-
16.7 標頭檔
-
16.7.1 有理數
-
16.7.2 日期
-
16.7.3 學生
-
-
16.8 生命遊戲
-
16.8.1 標頭檔
-
16.8.2 操作函式
-
-
16.9 鏡子房間
-
16.9.1 initRoom
-
16.9.2 setDir
-
16.9.3 setMovement
-
16.9.4 changeDir 及oneStep
-
16.9.5 inRoom 及windowIndex
-
16.9.6 hasMirror
-
16.9.7 主程式
-
-
16.10 繞圈
-
16.10.1 initBoard
-
16.10.2 printBoard
-
16.10.3 changeDir 及oneStep
-
16.10.4 主程式
-
-
16.11 位元數目排序
-
16.11.1 readNumberComputeOnes
-
16.11.2 sortNumberSet
-
16.11.3 printNumberSet
-
16.11.4 主程式
-
-
16.12 井字遊戲
-
16.12.1 init
-
16.12.2 playerToMove 及playerMoved
-
16.12.3 play
-
16.12.4 win
-
16.12.5 主程式
-
-
16.13 簡易BASIC 解譯器
-
16.13.1 結構宣告
-
16.13.2 操作函式
-
16.13.3 readVariable
-
16.13.4 processCode
-
16.13.5 runCode
-
16.13.6 主程式
-
-
16.14 結語
-
-
17 模組化
-
17.1 vector
-
17.1.1 初始化
-
17.1.2 調整大小
-
17.1.3 存取
-
17.1.4 存取範例
-
17.1.5 批次初始
-
17.1.6 搜尋
-
-
17.2 生命遊戲
-
17.2.1 個別檔案
-
17.2.2 個別編譯檔案
-
17.2.3 聯結個別目的檔
-
17.2.4 優點
-
-
17.3 井字遊戲
-
17.3.1 個別檔案
-
17.3.2 個別編譯檔案
-
-
17.4 鏡子房間
-
17.4.1 標頭檔
-
17.4.2 操作函式
-
17.4.3 movement.cc
-
17.4.4 room.cc
-
17.4.5 主程式
-
17.4.6 個別編譯並聯結
-
-
17.5 繞圈
-
17.5.1 標頭檔
-
17.5.2 操作函式
-
17.5.3 主程式
-
17.5.4 個別編譯並聯結
-
17.5.5 重複標頭檔
-
-
17.6 BASIC
-
17.6.1 標頭檔
-
17.6.2 操作函式
-
17.6.3 主程式
-
17.6.4 個別編譯並聯結
-
-
-
18 類別
-
18.1 井字遊戲
-
18.1.1 TicTacToe 類別宣告
-
18.1.2 TicTacToe 實作
-
-
18.2 權限
-
18.3 類別與結構
-
18.4 建構子
-
18.5 常數成員函式
-
18.6 類別與實體
-
18.6.1 Position
-
18.6.2 初始列
-
18.6.3 實體
-
-
18.7 類別成員
-
18.7.1 Movement
-
18.7.2 實作
-
18.7.3 類別成員範例
-
-
18.8 鏡子房間
-
18.8.1 Room
-
18.8.2 Room 實作
-
18.8.3 主程式
-
-
18.9 繞圈
-
18.9.1 Board
-
18.9.2 主程式
-
-
18.10 生命遊戲
-
18.10.1 Life
-
18.10.2 Life 實作
-
18.10.3 主程式
-
-
18.11 BASIC
-
18.11.1 Variable
-
18.11.2 VariableSet
-
18.11.3 Statement
-
18.11.4 Program
-
-
18.12 有理數
-
18.12.1 轉換建構子
-
-
-
19 遞迴
-
19.1 定義
-
19.1.1 自然數判定
-
-
19.2 費伯納西數
-
19.2.1 遞迴實作
-
-
19.3 計算時間
-
19.4 constexpr
-
19.4.1 使用constexpr
-
19.4.2 不使用constexpr
-
-
19.5 最大公因數
-
19.6 遞迴實作
-
19.7 三位撇節法
-
19.7.1 字串遞迴實作
-
19.7.2 數字遞迴實作
-
-
19.8 河內塔
-
19.8.1 遞迴解
-
19.8.2 遞迴實作
-
-
19.9 八后問題
-
19.9.1 遞迴窮舉解
-
19.9.2 遞迴實作
-
19.9.3 列出遞迴過程
-
-
19.10 老鼠走迷宮
-
19.10.1 Maze
-
19.10.2 Maze 操作函式
-
19.10.3 主程式
-
-
19.11 數獨
-
19.11.1 Sudoku
-
19.11.2 Sudoku 成員函式
-
19.11.3 窮舉流程
-
19.11.4 主程式
-
-
19.12 疊紙片
-
19.12.1 Paper
-
19.12.2 Solution
-
19.12.3 PaperStack
-
19.12.4 主程式
-
-
19.13 效能考量
-
-
20 繼承
-
20.1 基礎類別
-
20.1.1 頂層函式
-
20.1.2 函式成員
-
-
20.2 多載
-
20.3 繞圈
-
20.4 老鼠走迷宮
-
20.4.1 Maze 函式成員
-
20.4.2 衍生類別使用基礎類別功能
-
20.4.3 衍生類別增加基礎類別沒有的功能
-
20.4.4 衍生類別改寫基礎類別功能
-
20.4.5 老鼠走迷宮主程式
-
-
20.5 數獨
-
20.5.1 Sudoku 函式成員
-
20.5.2 衍生類別使用基礎類別功能
-
20.5.3 衍生類別增加基礎類別沒有的功能
-
20.5.4 數獨主程式
-
-
20.6 井字遊戲
-
20.6.1 TicTacToe 函式成員
-
20.6.2 衍生類別使用基礎類別功能
-
20.6.3 衍生類別增加基礎類別沒有的功能
-
20.6.4 主程式
-
-
20.7 生命遊戲
-
20.7.1 衍生類別使用基礎類別的功能
-
20.7.2 Life 函式成員
-
20.7.3 衍生類別增加基礎類別沒有的功能
-
20.7.4 主程式
-
-
20.8 鏡子房間
-
20.8.1 Room 函式成員
-
20.8.2 衍生類別使用基礎類別的功能
-
20.8.3 衍生類別增加基礎類別沒有的功能
-
20.8.4 鏡子房間主程式
-
-
-
21 運算子
-
21.1 運算子函式
-
21.2 位元數目排序
-
21.2.1 實作
-
21.2.2 主程式
-
-
21.3 有理數
-
21.3.1 實作
-
21.3.2 運算子測試
-
21.3.3 泡沫排序
-
21.3.4 演算法程式庫
-
21.3.5 自定比較函式
-
-
21.4 比較1 位元個數
-
21.5 lambda function
-
21.5.1 capture
-
21.5.2 有理數排序
-
-
21.6 位元數目排序重構
-
21.7 頂層運算子函式
-
21.7.1 實作
-
21.7.2 測試
-
-
21.8 錯誤處理
-
21.8.1 例外
-
21.8.2 機制
-
21.8.3 運算元函式例外
-
21.8.4 讀入Rational
-
21.8.5 讀入所有Rational
-
-
21.9 隱藏類別轉換
-
21.9.1 隱藏類別轉換分類
-
21.9.2 有理數
-
21.9.3 函式參數
-
-
21.10 explicit
-
-
22 鏈結序列
-
22.1 資料結構
-
22.2 記憶體配置
-
22.2.1 區域變數
-
22.2.2 動態記憶體配置
-
-
22.3 名稱空間
-
22.3.1 宣告名稱空間
-
22.3.2 名稱空間用法
-
-
22.4 鏈結序列
-
22.4.1 鏈結序列及節點
-
22.4.2 函式成員
-
22.4.3 函式成員實作
-
22.4.4 鏈結序列操作
-
-
22.5 鏈結序列遞迴實作
-
22.6 排序鏈結序列
-
22.6.1 insert 函式成員
-
22.6.2 函式成員實作
-
22.6.3 SortedList 操作
-
22.6.4 函式成員實作
-
22.6.5 遞迴實作測試
-
22.6.6 刪除節點
-
-
22.7 鏈結序列範例
-
22.7.1 記憶體管理
-
22.7.2 合併鏈結序列
-
-
22.8 堆疊
-
22.8.1 費伯納西數
-
-
-
23 移動與深度複製
-
23.1 指標物件問題
-
23.1.1 Integer
-
23.1.2 鏈結序列
-
-
23.2 移動
-
23.2.1 左值與右值
-
23.2.2 移動機制
-
23.2.3 Integer
-
23.2.4 LinkedList
-
-
23.3 深度複製
-
23.3.1 Integer
-
23.3.2 LinkedList
-
-
23.4 建構子
-
-
24 智慧指標
-
24.1 共享指標
-
24.1.1 鏈結序列
-
-
24.2 唯一指標
-
24.2.1 鏈結序列
-
-
-
25 二元樹
-
25.1 節點類別
-
25.1.1 別名
-
25.1.2 名稱空間
-
25.1.3 函式成員
-
-
25.2 二元樹
-
25.2.1 函式成員
-
25.2.2 遍歷
-
25.2.3 搜尋
-
25.2.4 範例
-
-
25.3 二元搜尋樹
-
25.3.1 類別
-
25.3.2 函式成員
-
25.3.3 範例
-
25.3.4 由大到小
-
-
25.4 重建二元樹
-
25.4.1 實作
-
25.4.2 範例
-
-
25.5 二元樹交集及聯集
-
25.5.1 遞迴定義
-
25.5.2 頂層函式實作
-
25.5.3 頂層函式測試
-
25.5.4 繼承類別實作
-
25.5.5 繼承類別測試
-
25.5.6 新類別實作
-
25.5.7 新類別測試
-
25.5.8 比較
-
-
-
26 多型與虛擬函式
-
26.1 函式綁定
-
26.1.1 靜態綁定
-
26.1.2 動態綁定
-
-
26.2 多型
-
26.3 BASIC
-
26.3.1 Statement.h
-
26.3.2 statement.cc
-
26.3.3 program.h
-
26.3.4 program.cc
-
26.3.5 BASIC 主程式
-
-
-
27 檔案處理
-
27.1 開啟與關閉檔案
-
27.1.1 開啟檔案
-
27.1.2 關閉檔案
-
-
27.2 標準檔案指標
-
27.3 文字檔案處理
-
27.3.1 以字元為單位
-
27.3.2 以行為單位
-
27.3.3 以變數為單位
-
-
27.4 二進制檔案處理
-
27.4.1 印出檔案內容
-
27.4.2 輸出入緩衝區
-
27.4.3 結構陣列
-
-
27.5 移動讀寫位置
-
27.5.1 輸入檔
-
27.5.2 輸入檔
-
27.5.3 應用
-
-
27.6 EOF
-
-
28 運算子及多載
-
28.1 運算子
-
28.2 二元樹交集聯集
-
28.2.1 聯集交集實作
-
28.2.2 實作測試
-
-
28.3 函數
-
28.3.1 樹狀結構
-
28.3.2 Function 基礎類別
-
28.3.3 Function 衍生類別
-
28.3.4 變數與常數
-
28.3.5 二元運算子
-
28.3.6 一元運算子
-
28.3.7 Function 主程式
-
28.3.8 檔案關係
-
28.3.9 動態轉型
-
-
28.4 檔案輸入
-
28.4.1 檔案輸出
-
-
-
29 模板
-
29.1 類別模板
-
29.1.1 Stack 模板
-
29.1.2 括號平衡
-
29.1.3 費伯納西數
-
29.1.4 深度優先搜尋
-
29.1.5 河內塔
-
29.1.6 八后問題
-
29.1.7 類別模板優點
-
-
29.2 函式模板
-
29.2.1 輸出模板
-
29.2.2 深度優先搜尋模板
-
29.2.3 合併
-
29.2.4 彈性合併
-
29.2.5 函式模板優點
-
-
29.3 別名模板
-
-
30 前置處理
-
30.1 引入
-
30.2 定義
-
30.3 條件編譯
-
30.3.1 命令列選項
-
30.3.2 重複定義
-
30.3.3 是否定義
-
-
30.4 巨集函數
-
30.5 #、LINE 、FILE
-
30.6 ##
-
30.7 應用
-
-
31 不想教的東西
-
31.1 goto
-
31.1.1 問題
-
-
31.2 全域變數
-
31.2.1 問題
-
-
31.3 多重繼承
-
31.4 保護及私有繼承
-
31.5 朋友類別及函式
-
31.6 輸出格式
-
31.7 指標技巧
-
31.8 修改記憶體
-
31.9 征服銀河系
-
- 徵引書目
- Index
- 出版地 : 臺灣
- 語言 : 繁體中文
- DOI : 10.978.986350/7123
評分與評論
請登入後再留言與評分