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 只关心“步骤”(算法)。它像一个严格按食谱做菜的厨师,一步一步执行。
🤖
制作蛋糕 (步骤):
- 打蛋()
- 加面粉()
- 搅拌()
- 烘烤()
// 伪代码: 过程性
// 重点是动词 (函数)
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 (现代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)
(.cpp)
→ 🤖 →
2. 目标代码
(.o / .obj)
(.o / .obj)
→ 🔗 →
3. 可执行文件
(.exe / a.out)
(.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)。 - 链接: 将目标代码与库函数组合,形成最终程序。