S SmartDocs

编程语言

Python、C、C++、Java、JavaScript、TypeScript、Go、R 与 Haskell 教程,从入门语法到高级技巧。

C Programming Language 更新于 2026-02-03

📘 實作題

輸入一個整數 score (0 ≤ score ≤ 100),判斷該成績的等第。

阅读文章 →
C Programming Language 更新于 2026-02-03

apcs 20 answer

📘 string 是複合型別,不是基本型別。int, float, char, boolean

阅读文章 →
C Programming Language 更新于 2026-02-03

apcs 20 choices

1. 下列哪一個是合法的變數名稱? C A. 2count B. totalscore C. sum D. class

阅读文章 →
C++ 更新于 2026-07-21

題目說明

PRG155 期末專題:家庭保全系統 — 詳細解題報告[6pt] Home Security System(DeviceAlpha 開發板模擬)[4pt] 繳交期限:2026 年 7 月 30 日實驗課開始前(需現場簡報) | 繳交檔案: | 配分:15 分

阅读文章 →
C++ 更新于 2026-07-21

題目說明

PRG155 Lab 8:for 迴圈 — 詳細解題報告[6pt] 溫度讀取程式(Device Alpha 開發板)[4pt] 繳交期限:2026 年 7 月 23 日實驗課開始前 | 繳交檔案: | 配分:2 分

阅读文章 →
C++ 更新于 2026-06-15

Ch01:認識 C++ 與開發環境

了解 C++ 語言的歷史、設計哲學與特色 清楚說明程式的編譯流程(前置處理 → 編譯 → 組譯 → 連結) 安裝並設定 C++ 開發環境(g++ / clang++ / IDE) 熟悉常用的編譯器旗標(std、Wall、Wextra、g、O2) 理解 Debug 與 Release 兩種建置模式的差異 撰寫、編譯並執行你的第一個 C++ 程式 看得懂編譯器錯誤訊息並加以修正 認識 C++ 程式的基本結構、註解與命名空間 建立一套適合自己

阅读文章 →
C++ 更新于 2026-07-29

Ch02:變數與資料型別

學會宣告與初始化變數,理解四種初始化形式的差異 認識 C++ 的基本資料型別(整數、浮點數、字元、布林) 理解固定寬度整數型別(<cstdint)與何時該用它們 搞懂 signed / unsigned 的差別與常見陷阱 了解浮點數的 IEEE 754 表示法,以及為什麼 0.1 + 0.2 = 0.3 掌握型別轉換規則(整數提升、一般算術轉換)與四種 cast 認識位元運算子(&、、^、~、<<、) 區分 const 與 conste

阅读文章 →
C++ 更新于 2026-06-15

Ch03:控制流程

掌握條件判斷:if / else if / else,以及 C++17 的 if 初始化語句 熟練三元(條件)運算子,理解它與 if 的取捨 學會多路分支:switch / case,理解穿透與 fallthrough 理解邏輯運算子的短路求值及其實際用途 熟悉迴圈結構:for、while、dowhile、範圍 for 用範圍 for 搭配結構化綁定遍歷 map 等容器 了解 break、continue 與「跳出多層迴圈」的處理方式

阅读文章 →
C++ 更新于 2026-06-15

Ch04 — 函式(Functions)

函式是程式的基本建構單元。將重複的邏輯封裝成函式,可以提高程式碼的可讀性、可維護性和重用性。 一支好的程式不是「一大段做很多事的程式碼」,而是「許多各司其職的小函式互相合作」。學會切分函式,是從「會寫程式」邁向「會設計程式」的第一步。

阅读文章 →
C++ 更新于 2026-06-15

Ch05 — 陣列與字串(Arrays & Strings)

陣列是存放同型別元素的連續記憶體區塊;字串則是用來處理文字的基本工具。C++ 同時支援 C 風格陣列 / 字串以及更安全的 std::array / std::string。 理解「陣列在記憶體裡是怎麼擺的」,是理解後續指標、字串、資料結構的關鍵。本章會大量使用記憶體示意圖。

阅读文章 →
C++ 更新于 2026-07-27

Ch06 — 指標與參考(Pointers & References)

指標和參考是 C++ 最重要也最容易混淆的概念之一。理解它們是掌握動態記憶體管理、多型、資料結構的基礎。 建議授課時數:2 小時(含 10 分鐘休息)

阅读文章 →
C++ 更新于 2026-06-15

Ch07:結構體與列舉(Struct & Enum)

1. 理解 struct 的定義方式、用途與背後的設計動機 2. 掌握結構體的多種初始化方式(聚合初始化、C++20 指定初始化器) 3. 了解結構體的記憶體佈局、對齊(alignment)與填充(padding) 4. 學會巢狀結構體、結構體陣列與成員函式 5. 認識 POD / trivial type 的概念 6. 精確分辨 struct 與 class 的差異(語法 vs 慣例) 7. 深入理解傳統列舉 enum 與限域列舉 e

阅读文章 →
C++ 更新于 2026-06-15

Ch08:類別與物件(Class & Object)

1. 理解類別(class)與結構體(struct)的差異,以及「物件」的本質 2. 說明封裝(encapsulation)的哲學與實際好處 3. 掌握存取修飾詞:public、private、protected 4. 定義成員變數與成員函式,並理解 const 成員函式為何重要 5. 深入理解 this 指標的用途與機制 6. 學會使用 static 成員變數與成員函式(共享狀態) 7. 理解類別不變式(invariant)的概念,並

阅读文章 →
C++ 更新于 2026-06-15

Ch09:建構子與解構子(Constructor & Destructor)

1. 理解各種建構子的種類與用法(預設、帶參數、委託、轉換、explicit) 2. 掌握成員初始化列表的語法、初始化順序與「為何優先於賦值」 3. 理解解構子的角色與解構順序 4. 掌握拷貝建構子與拷貝賦值運算子,分辨深拷貝 vs 淺拷貝 5. 深入理解 Rule of Three / Five / Zero 6. 理解 RAII 哲學,並知道它為何是 C++ 資源管理的基石 7. 學會使用 = default 與 = delete

阅读文章 →
C++ 更新于 2026-06-15

Ch10 — 繼承與多型

物件導向三大支柱之二:繼承 Inheritance 與 多型 Polymorphism。 繼承讓我們在既有類別的基礎上擴充功能;多型讓同一介面對不同型別產生不同行為。 這兩個機制是 C++ 設計大型可擴充系統的核心,但也是初學者最容易誤用的地方。

阅读文章 →
C++ 更新于 2026-06-15

Ch11 — 運算子多載

運算子多載 Operator Overloading 讓自定義型別也能使用 +、、<<、 等運算子, 使程式碼更直覺、更貼近數學或自然語言。 它本質上只是「換個語法的函式呼叫」——a + b 其實就是呼叫 operator+a, b。

阅读文章 →
C++ 更新于 2026-06-15

Ch12:模板程式設計

說明 為什麼需要模板,並比較模板與「複製貼上多份程式碼」、巨集(macro)、void 三種泛型手段的優劣 撰寫 函式模板,理解 模板引數推導(template argument deduction) 的規則與限制 使用 明確模板引數、多型別參數、非型別模板參數(NTTP) 撰寫 類別模板,並能把成員函式定義在類別外 區分並實作 完整特化(full specialization) 與 部分特化(partial specializatio

阅读文章 →
C++ 更新于 2026-06-15

Ch13:STL 容器

說明 STL 的三大支柱(容器、迭代器、演算法)如何協作,以及為何如此設計 理解每種容器的 底層結構、記憶體佈局與時間複雜度(BigO) 熟練使用 序列容器:vector、deque、list、forwardlist、array 熟練使用 關聯容器:map、multimap、set、multiset(紅黑樹、有序) 熟練使用 無序容器:unorderedmap/unorderedset(雜湊表、負載因子、自訂雜湊) 熟練使用 容器配接器

阅读文章 →
C++ 更新于 2026-06-15

Ch14 — STL 演算法與迭代器(Algorithms & Iterators)

迭代器是連接容器與演算法的橋樑。STL 演算法透過迭代器操作資料,讓你無需了解容器的內部實作,就能對資料進行排序、搜尋、轉換等操作。學會「用演算法表達意圖」而非「手寫迴圈」,是寫出現代、正確、高效 C++ 的關鍵一步。

阅读文章 →
C++ 更新于 2026-06-15

Ch15 — Lambda 與函式物件(Lambda & Function Objects)

函式物件(functor)與 Lambda 表達式是 C++ 中實現「可呼叫物件(callable)」的兩大方式。它們讓你能把「行為」當作參數傳遞、儲存、組合,是使用 STL 演算法、設計回呼(callback)與策略模式不可或缺的工具。掌握 Lambda,等於拿到了現代 C++ 的萬用鑰匙。

阅读文章 →
C++ 更新于 2026-06-15

Ch16 — 記憶體管理與智慧指標(Memory Management & Smart Pointers)

手動記憶體管理是 C++ 最強大也最危險的能力。現代 C++ 透過智慧指標(smart pointers)把資源管理自動化,消除記憶體洩漏、懸空指標、重複刪除等一整類最難除錯的錯誤。本章的核心訊息只有一句話:在現代 C++ 中,你幾乎不該再手寫 new 與 delete。

阅读文章 →
C++ 更新于 2026-06-15

Ch17 — 移動語意(Move Semantics)

移動語意是 C++11 最重要的革新之一。它讓程式能「搬走」資源而非「複製」,把處理大型物件(容器、字串、檔案緩衝)的成本從 On 降到 O1。理解移動語意,是理解現代 C++ 為什麼又快又安全的關鍵。

阅读文章 →
C++ 更新于 2026-06-15

Ch18 — 例外處理(Exception Handling)

例外處理提供一種結構化的錯誤處理機制:把「正常邏輯」與「錯誤處理」分離,讓錯誤無法被默默忽略,並與 RAII 結合保證資源在任何路徑下都被釋放。本章不只教你語法,更教你何時該用、何時不該用例外。

阅读文章 →
C++ 更新于 2026-06-15

Ch19:命名空間與多檔案專案

理解命名空間(namespace)的用途,知道它如何避免名稱衝突(name collision) 掌握命名空間的定義、巢狀命名空間(含 C++17 A::B::C 語法)與命名空間別名 區分 using 指令(directive)與 using 宣告(declaration),並理解為何不可在標頭檔使用 using namespace 認識匿名(unnamed)命名空間與內部連結(internal linkage) 初步認識 inlin

阅读文章 →