在我们可以编写和执行我们的第一个 C++ 程序之前,我们需要更详细地了解 C++ 程序是如何开发的。

第 1 步:定义您要解决的问题

这是“什么”步骤,您可以在其中弄清楚您打算解决什么问题。对您想要编程的内容提出最初的想法可能是最简单的步骤,也可能是最困难的步骤。但从概念上讲,它是最简单的。您所需要的只是一个可以明确定义的想法,然后您就可以为下一步做好准备。

这里有一些例子:

  • “我想编写一个程序,让我输入许多数字,然后计算平均值。”
  • “我想编写一个程序来生成二维迷宫并让用户在其中导航。如果他们到达终点,用户就会获胜。”
  • “我想编写一个程序,读取股票价格文件并预测股票是上涨还是下跌。”

第 2 步:确定您将如何解决问题

这是“如何”步骤,您可以在此确定如何解决您在步骤 1 中提出的问题。这也是软件开发中最容易被忽视的步骤。问题的关键是有很多方法可以解决问题——但是,这些解决方案中的一些是好的,而另一些是坏的。很多时候,程序员会得到一个想法,坐下来,并立即开始编写解决方案。这通常会生成一个属于不良类别的解决方案。

通常,好的解决方案具有以下特征:

  • 它很简单(不过分复杂或令人困惑)。
  • 它有很好的文档记录(尤其是围绕所做的任何假设或限制)。
  • 它是模块化构建的,因此模块可以在以后重复使用或更改,而不会影响程序的其他模块。
  • 它们很健壮,可以在发生意外情况时恢复或提供有用的错误消息。

当您坐下来立即开始编码时,您通常会想“我想做<某事>”,因此您实施了可以让您以最快速度到达那里的解决方案。这可能会导致程序脆弱、以后难以更改或扩展,或者有很多错误(技术缺陷)。

术语漏洞最早是由19世纪70年代爱迪生提出!然而,这个术语在1940年代流行起来,当时工程师发现一只真正的飞蛾卡在早期计算机的硬件中,导致短路。报告错误的日志和飞蛾现在都是史密森美国历史博物馆的一部分。可以在这里查看。

研究表明,程序员实际上只有20%的时间花在编写初始程序上。其余80%用于维护,包括调试(解决错误)、更新以应对环境变化(例如,在新的操作系统版本上运行)、增强功能(用于提高可用性或功能的小改动),或内部改进(以提高可靠性或可维护性)。

因此,值得您花一点时间预先(在开始编码之前)考虑解决问题的最佳方法,您正在做出什么假设以及您如何规划未来,以拯救自己很多时间和麻烦。

我们将在以后的课程中更多地讨论如何有效地设计问题的解决方案。

第 3 步:编写程序

为了编写程序,我们需要两件事:首先,我们需要编程语言的知识——这就是这些教程的目的!其次,我们需要一个文本编辑器来编写和保存我们编写的程序。我们使用C++指令编写的程序称为源代码(通常简称为代码)。可以使用任何您想要的文本编辑器来编写程序,甚至是像Window的记事本或Unix的vim或pico这样简单的编辑器。但是,我们强烈建议您使用专为编程设计的编辑器(称为代码编辑器)。如果您还没有,请不要担心。我们将很快介绍如何安装代码编辑器。

为编码而设计的典型编辑器具有一些使编程更容易的功能,包括:

  1. 行编号。当编译器给我们一个错误时,行编号很有用,因为典型的编译器错误会说明:一些错误代码/消息,第 64 行。如果没有显示行号的编辑器,找到第 64 行可能会很麻烦。
  2. 语法高亮和着色。语法高亮和着色会更改程序各个部分的颜色,以便更轻松地识别程序的不同组件。下面是一个 C++ 程序的示例,其中包含行号和语法突出显示:
#include <iostream>

int main()
{
    std::cout << "Colored text!";
    return 0;
}

我们在本教程中展示的示例将始终具有行号和语法突出显示,以使其更易于理解。

  1. 一个明确的字体。非编程字体通常难以区分数字0和字母O,或数字1、字母l(小写L)和字母I(大写 i)。一个好的编程字体将确保这些符号在视觉上有区别,以确保不会意外地使用一个来代替另一个。默认情况下,所有代码编辑器都应启用此功能,但标准文本编辑器可能不会。

您编写的程序通常会命名为something.cpp,其中的something将替换为您为程序选择的名称(例如计算器、hi-lo等)。.cpp扩展告诉编译器(和你),这是一个包含C++指令的C++源代码文件。请注意,有些人使用扩展名 .cc 而不是.cpp,但我们建议您使用.cpp。

最佳实践

将您的代码文件命名为something.cpp,其中something是您选择的名称,而.cpp是指示该文件是 C++ 源文件的扩展名。

另请注意,许多复杂的 C++ 程序都有多个.cpp文件。尽管您最初创建的大多数程序只有一个.cpp文件,但编写具有数十或数百个.cpp文件的单个程序是可能的。