#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
当时这五行里的每一个符号,可能都需要解释半天:
#include 是什么?std:: 是什么?为什么要
return 0?
// 第 23 讲的成绩管理系统(节选)
struct Student {
std::string name;
int score;
};
void addStudent(std::vector<Student>& students) { … }
void printAll(const std::vector<Student>& students) { … }
int findIndex(const std::vector<Student>& students, std::string name) { … }
void removeStudent(std::vector<Student>& students) { … }
void showStats(const std::vector<Student>& students) { … }
int main() {
std::vector<Student> students;
while (true) {
printMenu();
// …根据选择调用上面的函数…
}
} 同样的人,24 讲之后写出来的东西。自定义类型、函数分工、引用传参、 容器管理、菜单交互——这已经是真实软件的基本形态了。
每个人用 3~5 分钟,演示自己的项目并讲讲这几点:
整个第一阶段像盖楼——每一层都踩在前一层上面, 单独抽掉哪一层,上面的都站不住:
| 层 | 讲次 | 能力 | 关键词 |
|---|---|---|---|
| 一 | 1–4 | 输入、计算、输出 | 变量、类型、cin / cout |
| 二 | 5–7 | 看情况办事 | if、比较、逻辑运算符 |
| 三 | 8–10 | 重复地干 | while、for、break |
| 四 | 11–13 | 把代码拆开整理 | 函数、参数、返回值 |
| 五 | 14–18 | 批量管数据 | 数组、vector、遍历 |
| 六 | 19–24 | 组织复杂程序 | struct、引用、项目 |
拿一张纸,不看讲义,把你记得的知识点画成一张图。可以这样组织:
具体语法忘了可以随时查,但这三样东西会一直跟着你:
cout
打印中间值,让程序自己告诉你哪一步开始不对,而不是盯着代码干瞪眼。这一阶段里,我们故意留下了几个坑,它们正是第二阶段的起点:
| 留下的问题 | 出现在 | 第二阶段怎么解决 |
|---|---|---|
| 排序太麻烦 | 第 21 讲练习 | 排序算法,以及 std::sort |
| 输入字母导致菜单刷屏 | 第 23 讲 | 输入流状态与错误处理 |
| 程序一关,数据就没了 | 第 22、23 讲 | 文件读写,把数据存进磁盘 |
| 浮点数比较不可靠 | 第 13 讲 | 浮点数的存储原理 |
| 查找要从头找到尾,慢 | 第 23 讲 | 二分查找与算法复杂度 |
第 21 讲那道“按分数排名”的挑战题,需要两层嵌套循环、想清楚每一步在干什么。 而第二阶段学完标准库之后:
// 第二阶段会学:一行代码完成排序
#include <algorithm>
std::sort(scores.begin(), scores.end()); // 从小到大排好 一行搞定。但先自己手写过一遍排序,才会真正明白这一行背后做了什么、 为什么它比你写的版本快——这就是第一阶段打基础的意义。
给成绩管理系统再加两个你自己想要的功能。比如:支持科目(一个学生多门成绩)、 按分数段筛选、导出成一份格式好看的成绩单。
用同样的struct + vector + 菜单套路,做一个别的管理系统—— 图书管理、通讯录、待办事项清单、游戏角色属性表,随你喜欢。
提示:数据结构和菜单框架几乎可以照搬, 真正要重新想的只有“这个东西有哪些属性”和“用户需要哪些操作”。
做一个两人对战的井字棋(三子棋)小游戏:轮流输入落子位置, 每次落子后检查有没有人连成三个,或者棋盘已满平局。
提示:棋盘可以先用一个长度为 9 的数组表示 (下标 0~8 对应九个格子),打印时每三个换一行—— 这样就不需要还没学的二维数组了。
回到第 1 讲那个问题:什么是程序?
当时的答案是“输入 → 处理 → 输出”。现在你可以给出更丰富的回答了: 程序是把一个真实问题,拆成计算机能一步步执行的指令; 而写程序的过程,是不断把复杂的东西拆成简单的东西—— 拆成函数、拆成步骤、拆成一个个可以单独验证的小块。
这套思维方式,换到任何一门语言、任何一个领域,都同样管用。