C++启蒙课程:第1章  预备知识

我们将揭开C++的“出生背景”和“超级能力”,认识 C-Bot、O-Bot 和 Compilo 翻译官!

🤖

过程性编程 (C-Bot)

像C-Bot一样,严格按照“食谱”(算法)的步骤执行任务。

📦

面向对象编程 (O-Bot)

像O-Bot一样,先设计“智能包裹”(类),把数据和操作封装在一起。

🌀

泛型编程 (GP)

使用“魔法盒子”(模板),编写一套代码,适用于所有类型的数据。

课时一:C++的诞生与两大编程世界

(覆盖知识点 1.1 - 1.2.3)

🤖 C-Bot (过程性)

C-Bot 只关心“步骤”(算法)。它像一个严格按食谱做菜的厨师,一步一步执行。

🤖
制作蛋糕 (步骤):
  1. 打蛋()
  2. 加面粉()
  3. 搅拌()
  4. 烘烤()
// 伪代码: 过程性 // 重点是动词 (函数) void main() { Data cake_data; beat_eggs(cake_data); add_flour(cake_data); bake(cake_data); }

📦 O-Bot (面向对象)

O-Bot 先关心“数据”(对象)。它先设计一个“智能鸡蛋”蓝图 (class Egg),这个蓝图自带数据和“打破”的方法。

📦
设计蓝图 (Class):
  • 数据: color, weight
  • 方法: break(), show()
// 伪代码: 面向对象 // 重点是名词 (对象) class Egg { Data data; void break(); // 数据和方法封装 }; void main() { Egg e1; // 创建对象 e1.break(); // 对象自己执行动作 }

课时二:C++的泛型能力、起源与国际标准

(覆盖知识点 1.2.4 - 1.3)

1.2.4 “魔法盒子” (泛型)

泛型编程 (template) 让我们只写一套代码(一个魔法盒子),就能处理所有类型的数据(玩具)。

[ 魔法盒子 (T) ]
// 1.2.4 泛型编程 (模板) // T 是一个通用类型 template void Swap(T &a, T &b) { T temp = a; a = b; b = temp; } // 编译器自动生成 Swap 和 Swap

1.3 “Compilo的通用规则书”

为了让我们的C++代码能在 Mac, Windows, Linux 上都能运行(可移植性),所有“翻译官”(编译器)都必须遵守 ISO 国际标准。

📜
ISO/IEC 14882 (国际标准)
- C++98/03 (基础)
- C++11 (现代C++起点)
- C++14, C++17, C++20 ...
// C++11 风格的代码 auto x = {1, 2, 3}; // C++98 风格的代码 int y[] = {1, 2, 3}; // 遵守标准可确保代码在不同 // 编译器 (g++, Clang, MSVC) 上行为一致

课时三:程序创建的技巧与总结

(覆盖知识点 1.4 - 1.5)

1.4 “工厂三步法” (编译与链接)

我们写的代码 (.cpp) 只是“食谱”。它必须经过“Compilo翻译官”和“Linker组装工”的处理,才能变成可运行的机器人 (.exe)。

1. 源代码
(.cpp)
→ 🤖 →
2. 目标代码
(.o / .obj)
→ 🔗 →
3. 可执行文件
(.exe / a.out)
// 1. 编写源代码 (hello.cpp) #include int main() { std::cout << "Hello!"; return 0; } // 2. 编译 (翻译官 Compilo) // g++ -c hello.cpp -> (生成 hello.o) // 3. 链接 (组装工 Linker) // g++ hello.o -o hello -> (生成 hello.exe)

编程启蒙练习

是时候检验你作为“编程概念设计师”的实力了!

复习题 1:C++ 融合了哪三种编程方式?

答:过程性语言 (C-Bot)、面向对象语言 (O-Bot)、泛型编程 (GP)。

复习题 2:C-Bot (过程性) 和 O-Bot (OOP) 最大的区别是什么?

答:C-Bot 强调“算法”(步骤),O-Bot 强调“数据”(类和对象)。

复习题 3:程序创建的“工厂三步法”是什么?

答:1. 编写源代码 -> 2. 编译 -> 3. 链接。

练习 1:Compilo 翻译官的角色识别

假设你是“Compilo翻译官”,在工厂门口收到以下文件,它应该如何识别并处理?

练习 2:OOP 抽象设计 (伪代码)

设计一个简单的“智能灯泡”类 (Bulb)。描述它的数据和可执行的操作(方法)。

// 伪代码:智能灯泡类设计 class Bulb // 类是蓝图 { private: // 数据成员 (私有:内部状态) string color; int brightness; public: // 成员函数 (公有:操作按钮) void turn_on(); void turn_off(); void set_color(string new_color); void show_status(); }; // 在主程序中创建对象并使用 int main() { Bulb living_room_light; // 创建一个对象 living_room_light.set_color("Yellow"); living_room_light.turn_on(); living_room_light.show_status(); return 0; }

本章知识点总结与复习 (1.5)

1. C++的超级能力(三大范式)

范式名称 核心关注点 C++实现工具
过程性编程算法和执行步骤(如菜谱)C语言基础、函数
面向对象编程 (OOP)数据和数据操作(如智能包裹)类 (Class) 和 对象 (Object)
泛型编程 (GP)独立于类型(如魔法盒子)模板 (Template) 和 STL

2. 程序创建的工厂流程

$$ \text{源代码} \xrightarrow{\text{编译}} \text{目标代码} \xrightarrow{\text{链接}} \text{可执行文件} $$
  • 源代码: 人类可读的代码 (例如 mycode.cpp)。
  • 编译: 翻译成机器语言 (目标代码,例如 mycode.o)。
  • 链接: 将目标代码与库函数组合,形成最终程序。