S SmartDocs

プログラミング言語

Python、C、C++、Java、JavaScript、TypeScript、Go、R、Haskellのチュートリアル — 入門から上級テクニックまで。

C Programming Language 中文 更新日 2026-08-02

練習題與詳解 — 並行程式設計

本檔收錄 6 題由易到難的練習。建議流程:先蓋住解答自己寫,卡住再看 「解題思路」,寫完對照「參考解答」。每題完整程式碼在 exercises/:

記事を読む →
C Programming Language 中文 更新日 2026-08-02

並行程式設計(Concurrency with pthreads)

多核心時代,讓程式「同時做多件事」是效能的必經之路——但也打開了一整類 全新的 bug:race condition、死鎖、資料撕裂。這些 bug 不確定性重現、 難以除錯,因此並行程式設計的重點不是「會開執行緒」,而是正確共享資料。 本單元用 POSIX pthreads(macOS/Linux 通用)從零建立:執行緒生命週期、 互斥鎖、條件變數與生產者-消費者模式。K&R 成書於單核年代,本單元為現代補充。

記事を読む →
C Programming Language 中文 更新日 2026-08-02

練習題與詳解 — 未定義行為與除錯工具

本檔收錄 6 題由易到難的練習,全部採「找出並修正 bug」形式: 題目給含 bug 的程式碼,你要用本單元的工具(警告、lldb、Sanitizers、 leaks、assert)把蟲抓出來修好。exercises/ 內是修正版:

記事を読む →
C Programming Language 中文 更新日 2026-08-02

未定義行為與除錯工具(UB & Debugging Tools)

C 給你效能與自由,代價是:寫錯時它不會保護你。未定義行為(Undefined Behavior, UB) 是 C 最危險的概念——程式可能 crash、可能默默算錯、也可能「看起來正常」直到換編譯器。 本單元建立兩件事:一份常見 UB 目錄(知道地雷在哪),與一套現代除錯工具鏈 (編譯警告、lldb/gdb、Sanitizers、assert、printf 除錯),把地雷變成可以系統化排除的問題。

記事を読む →
C Programming Language 中文 更新日 2026-08-02

C 程式語言完整教程(初階 → 中階 → 高階)

本教程以 K&R 經典教材《The C Programming Language, 2nd Edition》(Kernighan & Ritchie)為主軸, 並補充現代 C 標準(C99 / C11 / C17 / C23)、資料結構、系統程式設計、多執行緒與除錯工具等主題, 帶你從零基礎一路走到進階系統程式設計。

記事を読む →
C++ 中文 更新日 2026-07-21

題目說明

本期末專題要求使用 DeviceAlpha 開發板撰寫一支 C 程式,模擬一套可運作的家庭保全系統(Home Security System)。專題整合按鈕(PB1–PB4)、LED 指示燈、蜂鳴器、溫度感測器與七段顯示器,展示真實嵌入式系統的核心原理。程式運作流程規定如下:

記事を読む →
C++ 中文 更新日 2026-07-21

題目說明

本實驗要求撰寫一支 C 程式,透過 Device Alpha 實驗板(LED、蜂鳴器、加熱器、溫度感測器、七段顯示器、按鈕)完成一個「多次溫度讀取並計算平均值」的流程。題目的完整要求如下:

記事を読む →
C++ 中文 更新日 2026-08-03

Ch07 — Lambda 函式(Lambda Functions)

Lambda 是「寫在表達式裡的匿名函式」。它讓你把一小段邏輯就地定義、就地使用,不必為了三行程式碼特地跑到別處寫一個具名函式。 > > 在 Ch04 我們學會了函式,在 Ch06 認識了函式指標。Lambda 是這條路的自然延伸:它比函式指標更強大(可以「帶著狀態」),比具名函式更輕便(不必命名、不必宣告),是現代 C++ 中使用頻率極高的語言特性。

記事を読む →
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 認識位元運算子(&、|、^、~、<<、>>

記事を読む →
C++ 中文 更新日 2026-06-15

Ch03:控制流程

讀完本章後,你應該能夠:: 掌握條件判斷:if / else if / else,以及 C++17 的 if 初始化語句 熟練三元(條件)運算子,理解它與 if 的取捨 學會多路分支:switch / case,理解穿透與 [[fallthrough]] 理解邏輯運算子的短路求值及其實際用途 熟悉迴圈結構:for、while、do-while、範圍 for 用範圍 for 搭配結構化綁定遍歷 map 等容器 了解 break、conti

記事を読む →
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)

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

記事を読む →
C++ 中文 更新日 2026-08-31

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

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

記事を読む →
C++ 中文 更新日 2026-06-15

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

讀完本章後,你應該能夠:: 理解各種建構子的種類與用法(預設、帶參數、委託、轉換、explicit) 掌握成員初始化列表的語法、初始化順序與「為何優先於賦值」 理解解構子的角色與解構順序 掌握拷貝建構子與拷貝賦值運算子,分辨深拷貝 vs 淺拷貝 深入理解 Rule of Three / Five / Zero 理解 RAII 哲學,並知道它為何是 C++ 資源管理的基石 學會使用 = default 與 = delete 對移動語意有初

記事を読む →
C++ 中文 更新日 2026-08-16

Ch10 — 繼承與多型

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

記事を読む →
C++ 中文 更新日 2026-08-28

Ch11 — 運算子多載

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

記事を読む →
C++ 中文 更新日 2026-06-15

Ch12:模板程式設計

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

記事を読む →
C++ 中文 更新日 2026-06-15

Ch13:STL 容器

讀完本章後,你應該能夠:: 說明 STL 的三大支柱(容器、迭代器、演算法)如何協作,以及為何如此設計 理解每種容器的 底層結構、記憶體佈局與時間複雜度(Big-O) 熟練使用 序列容器:vector、deque、list、forward_list、array 熟練使用 關聯容器:map、multimap、set、multiset(紅黑樹、有序) 熟練使用 無序容器:unordered_map/unordered_set(雜湊表、負載因

記事を読む →
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。

記事を読む →