← 课程目录
第 24 讲 模块六:进阶与综合

展示与总结

24 / 24
💡
本节课目标
第一阶段的最后一讲。今天不学新语法,做三件事: 展示各自的作品把 24 讲串成一张知识地图看看第二阶段有什么在等着你
开场

从第 1 讲到第 23 讲

📖 理论讲解

你写的第一个程序

第 1 讲 CPP
#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

当时这五行里的每一个符号,可能都需要解释半天: #include 是什么?std:: 是什么?为什么要 return 0

📖 理论讲解

你现在能写的程序

第 23 讲 CPP
// 第 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 讲之后写出来的东西。自定义类型、函数分工、引用传参、 容器管理、菜单交互——这已经是真实软件的基本形态了。

第一段

作品展示

⚡ 动手实操 约 30 分钟

展示你的成绩管理系统

每个人用 3~5 分钟,演示自己的项目并讲讲这几点:

  1. 演示:现场跑一遍,把增删查改和统计各用一次。
  2. 加了什么:在基础版之上,你自己做了哪些扩展功能?
  3. 卡在哪:写的过程中遇到最难的 bug 是什么?后来怎么发现原因的?
  4. 还想加:如果再给你一周,你最想给它添个什么功能?
讲 bug 比讲功能更有价值
功能大家做的都差不多,但每个人踩的坑不一样。 听别人怎么发现问题、怎么定位原因,往往比看他的成品收获更大。
第二段

知识地图

📖 理论讲解

六个模块,层层叠加

整个第一阶段像盖楼——每一层都踩在前一层上面, 单独抽掉哪一层,上面的都站不住:

讲次能力关键词
1–4输入、计算、输出变量、类型、cin / cout
5–7看情况办事if、比较、逻辑运算符
8–10重复地干whileforbreak
11–13把代码拆开整理函数、参数、返回值
14–18批量管数据数组、vector、遍历
19–24组织复杂程序struct、引用、项目
⚡ 动手实操 约 25 分钟

自己画一张知识地图

拿一张纸,不看讲义,把你记得的知识点画成一张图。可以这样组织:

  • 中间写“C++ 第一阶段”,向外分出六个模块分支。
  • 每个分支下列出具体的语法点。
  • 用箭头连起有依赖关系的点,比如“遍历数组”要连到“for 循环”和“数组”。
  • 想不起来的地方特别标记出来——那正是你该回头重看的部分。
💡
画不全是正常的
这个练习的价值不在于画得多完整,而在于暴露你的知识盲区。 能默写出来的才是真掌握了,需要翻书的就是还需要巩固的。
📖 理论讲解

比语法更重要的三件事

具体语法忘了可以随时查,但这三样东西会一直跟着你:

  • 拆解问题:再复杂的程序,也是从“先跑通一小步”开始的—— 第 13 讲的计算器、第 22 讲的管理系统,用的都是这个办法。
  • 主动测试:写完不等于写对。边界情况 (空容器、只有一个元素、找不到)永远是 bug 最爱藏身的地方。
  • 调试的耐心:程序不按预期跑时,插 cout 打印中间值,让程序自己告诉你哪一步开始不对,而不是盯着代码干瞪眼。
第三段

第二阶段预告

📖 理论讲解

你已经遇到、但还没解决的问题

这一阶段里,我们故意留下了几个坑,它们正是第二阶段的起点:

留下的问题出现在第二阶段怎么解决
排序太麻烦第 21 讲练习排序算法,以及 std::sort
输入字母导致菜单刷屏第 23 讲输入流状态与错误处理
程序一关,数据就没了第 22、23 讲文件读写,把数据存进磁盘
浮点数比较不可靠第 13 讲浮点数的存储原理
查找要从头找到尾,慢第 23 讲二分查找与算法复杂度
📖 理论讲解

举个例子:排序

第 21 讲那道“按分数排名”的挑战题,需要两层嵌套循环、想清楚每一步在干什么。 而第二阶段学完标准库之后:

第二阶段预览 CPP
// 第二阶段会学:一行代码完成排序
#include <algorithm>

std::sort(scores.begin(), scores.end());   // 从小到大排好

一行搞定。但先自己手写过一遍排序,才会真正明白这一行背后做了什么、 为什么它比你写的版本快——这就是第一阶段打基础的意义。

💡
第二阶段大致方向
文件读写、更完整的输入处理、常用算法(排序、查找)、 二维数组与更复杂的数据组织、指针与内存的初步认识、 以及 C++ 标准库里更多趁手的工具。
假期

别让手生了

选做 A

继续打磨你的项目

给成绩管理系统再加两个你自己想要的功能。比如:支持科目(一个学生多门成绩)、 按分数段筛选、导出成一份格式好看的成绩单。

选做 B

换个题材再写一个

用同样的struct + vector + 菜单套路,做一个别的管理系统—— 图书管理、通讯录、待办事项清单、游戏角色属性表,随你喜欢。

提示:数据结构和菜单框架几乎可以照搬, 真正要重新想的只有“这个东西有哪些属性”和“用户需要哪些操作”。

选做 C

挑战:井字棋

做一个两人对战的井字棋(三子棋)小游戏:轮流输入落子位置, 每次落子后检查有没有人连成三个,或者棋盘已满平局。

提示:棋盘可以先用一个长度为 9 的数组表示 (下标 0~8 对应九个格子),打印时每三个换一行—— 这样就不需要还没学的二维数组了。

收尾

最后几句

📖 理论讲解

24 讲走完了

回到第 1 讲那个问题:什么是程序?

当时的答案是“输入 → 处理 → 输出”。现在你可以给出更丰富的回答了: 程序是把一个真实问题,拆成计算机能一步步执行的指令; 而写程序的过程,是不断把复杂的东西拆成简单的东西—— 拆成函数、拆成步骤、拆成一个个可以单独验证的小块。

这套思维方式,换到任何一门语言、任何一个领域,都同样管用。

唯一的建议
别停下来。语法会忘,手感不会——保持每周都写一点代码, 哪怕只是十几行的小工具。第二阶段见。