0-4 C++开发介绍
在编写并运行首个C++程序之前,我们需要更深入地理解C++程序的开发流程。下图展示了一个简化的开发方法:

步骤1:定义你想解决的问题
这是“什么what”步骤,你需要明确自己打算解决什么问题。构思最初的编程想法可能是最简单的一步,也可能是最困难的一步。但从概念上讲,它其实最简单。你只需要一个能清晰定义的想法,就能进入下一步。
以下是几个示例:
- “我想编写一个程序,允许输入多个数字并计算平均值。”
- “我想编写一个程序,生成二维迷宫并让用户穿越其中。到达终点即为胜利。”
- “我想编写一个程序,读取股票价格文件并预测股价涨跌趋势。”
步骤二:确定解决问题的方法
这是“如何解决how”的阶段,你需要确定如何解决步骤一中提出的问题。这也是软件开发中最常被忽视的环节。问题的关键在于:解决问题的方法多种多样——但其中有些方案优秀,有些则不然。程序员常会出现这样的情况:灵光乍现后立即埋头编码,最终往往得到劣质方案。
优质方案通常具备以下特征:
- 结构清晰(避免过度复杂或模糊不清)
- 文档完善(尤其需明确说明所有假设条件与限制)
- 采用模块化设计,便于后续复用或修改特定组件而不影响程序其他部分
- 当发生意外情况时能优雅恢复或提供有用的错误信息。
当你坐下来立即开始编码时,通常只想着“我要实现<某个功能>”,于是选择最快的实现方案。这可能导致程序脆弱不堪、难以后续修改扩展,或存在大量缺陷。所谓缺陷bug,就是任何阻碍程序正常运行的编程错误。
顺带一提……
“bug”(错误)一词最早由托马斯·爱迪生在19世纪70年代提出!不过该术语真正流行起来是在1940年代,当时工程师们发现一只真正的飞蛾卡在早期计算机的硬件中,导致短路。记录该错误的日志本和那只飞蛾现均收藏于史密森尼美国历史博物馆,可在此处查看。
多项研究表明,在复杂的软件系统中,程序员实际用于编写初始程序的时间仅占10-40%。其余60-90%的时间用于维护工作,包括:调试debugging(消除程序错误removing bugs)、环境变更适配(如支持新操作系统版本)、功能增强(优化可用性或功能的小幅改进)以及内部优化(提升可靠性或可维护性)¹。
因此,在开始编码前花些时间思考最佳解决路径、明确设计假设并规划未来扩展,绝对值得投入——这将为你节省大量后续时间和麻烦。
关于如何高效设计解决方案,我们将在后续课程中深入探讨。
第三步:编写程序
要编写程序,我们需要两样东西:首先,我们需要掌握一门编程语言——这正是本教程的目的!其次,我们需要文本编辑器来编写和保存C++程序。输入到文本编辑器中的C++指令集合称为程序源代码source code(常简称为代码code)。任何文本编辑器都能编写程序,即使是Windows记事本或Unix的vi/pico这类基础工具也完全适用。
在基础文本编辑器中输入的程序大致如下所示:
#include <iostream>
int main()
{
std::cout << "Here is some text.";
return 0;
}
然而,我们强烈建议您使用专为编程设计的编辑器(称为代码编辑器)。若您尚未拥有此类工具也无需担心,我们稍后将介绍代码编辑器的安装方法。
典型的编程专用编辑器具备若干简化编程流程的功能,包括:
- 行号标注。当编译器报错时,行号功能尤为重要——常见的编译器错误信息格式为:“错误代码/信息,第64行”。若编辑器不显示行号,定位第64行将非常麻烦。
- 语法高亮与着色。该功能通过改变代码不同部分的颜色,帮助您快速识别程序的各个组件。
- 明确的等宽字体(常称“等宽字体”)。非编程字体常难以区分数字0与字母O,或数字1、字母l(小写L)与字母I(大写i)。优质编程字体能确保这些符号视觉上清晰区分,避免误用。所有代码编辑器都应默认启用此功能,但普通文本编辑器可能未支持。使用等宽字体(所有符号宽度相同)能更轻松地正确格式化并对齐代码。
以下是一个启用行号、语法高亮和等宽字体的C++程序示例:
#include <iostream>
int main()
{
std::cout << "Here is some text.";
return 0;
}
请注意,这比未高亮的版本更易理解。本教程展示的源代码将同时提供行号标注和语法高亮功能,以便更轻松地理解代码。
提示:
编码字体Coding Font和编程字体Programming Fonts都配备了便捷工具,可供您对比不同编码字体,从而挑选出最符合您喜好的款式。
进阶读者须知:
由于源代码采用ASCII字符编写,编程语言会运用特定的ASCII艺术来呈现数学概念。例如,≠并不属于ASCII字符集,因此编程语言通常使用!=来表示数学不等号。
某些编程字体(如Fira Code)通过连字功能将此类“艺术符号”重组为单一字符。例如,Fira Code会将 != 显示为 ≠(占用与双字符版本相同的宽度)。部分人认为这种显示方式更易阅读,另一些人则更倾向于保留原始字符的字面含义。
许多简单的C++程序仅包含一个源代码文件,但复杂的C++程序可能拥有数百甚至数千个源代码文件。
程序中的每个源代码文件都需要保存到磁盘,这意味着每个源代码文件都需要一个文件名。C++对文件命名没有强制要求,但事实标准是将程序创建的首个/主源文件命名为main.cpp。文件名(main)便于识别主源文件,而.cpp扩展名则表明该文件属于C++源代码文件。
偶尔也会见到主源文件以程序名称命名的情况(如calculator.cpp、poker.cpp),有时还会使用其他扩展名(如.cc或.cxx)。
最佳实践:
每个程序的首个/主源代码文件应命名为 main.cpp。这样便于确定哪个源代码文件是主文件。
编写完程序后,下一步是将源代码转换为可运行形式,然后验证其是否正常工作!我们将在下一课中讨论这些步骤(4-7)。

浙公网安备 33010602011771号