0.4 — C++ 开发简介

在我们编写并执行第一个 C++ 程序之前,我们需要更详细地了解 C++ 程序是如何开发的。这里有一张图,概述了一个简化的方法

The software development process

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

这是“是什么”步骤,您要弄清楚您打算解决什么问题。想出您想要编程的初始想法可能是最简单的步骤,也可能是最困难的。但从概念上讲,它是最简单的。您只需要一个可以很好地定义的想法,就可以进行下一步了。

这里有一些例子

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

步骤 2:确定如何解决问题

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

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

  • 它们是直截了当的(不过于复杂或令人困惑)。
  • 它们有完善的文档(特别是关于任何假设或限制)。
  • 它们是模块化构建的,因此部分可以重复使用或以后更改,而不会影响程序的其他部分。
  • 当发生意外情况时,它们可以优雅地恢复或给出有用的错误消息。

当你坐下来立即开始编码时,你通常会想“我想要做<某事>”,所以你实现了一个能让你最快达到目的的解决方案。这可能会导致程序脆弱、以后难以更改或扩展,或者有很多错误。错误是阻止程序正常运行的任何编程错误。

题外话…

“bug”这个词最早是由托马斯·爱迪生在 19 世纪 70 年代使用的!然而,这个词在 20 世纪 40 年代才流行起来,当时工程师发现一只真正的飞蛾卡在早期计算机的硬件中,导致短路。报告错误的日志簿和飞蛾现在都是史密森尼美国历史博物馆的一部分。可以在这里查看。

各种研究表明,在复杂的软件系统中,程序员只有 10-40% 的时间真正用于编写初始程序。另外 60-90% 的时间用于维护,这可能包括调试(消除错误)、更新以适应环境变化(例如,在新操作系统版本上运行)、增强功能(改进可用性或功能的微小更改)或内部改进(提高可靠性或可维护性)1

因此,您值得花一点额外的时间(在开始编码之前)预先思考解决问题的最佳方法、您正在做出哪些假设以及您如何为未来做计划,以节省您大量的时间和麻烦。

我们将在未来的课程中更详细地讨论如何有效地设计问题的解决方案。

步骤 3:编写程序

为了编写程序,我们需要两样东西:首先,我们需要编程语言知识——这就是这些教程的目的!其次,我们需要一个文本编辑器来编写和保存我们的 C++ 程序。我们输入到文本编辑器中的 C++ 指令集称为程序的源代码(通常简称为代码)。可以使用任何你想要的文本编辑器来编写程序,即使是像 Windows 的记事本或 Unix 的 vi 或 pico 这样简单的工具也可以。

在一个基本的文本编辑器中输入的程序看起来会像这样

#include <iostream>

int main()
{
    std::cout << "Here is some text.";
    return 0;
}

然而,我们强烈建议您使用专门为编程设计的编辑器(称为代码编辑器)。如果您还没有,请不要担心。我们很快就会介绍如何安装代码编辑器。

典型的代码编辑器有一些功能,可以使编程变得容易得多,其中包括

  1. 行号。当编译器给我们一个错误时,行号很有用,因为典型的编译器错误会显示:某个错误代码/消息,第 64 行。如果没有显示行号的编辑器,找到第 64 行会非常麻烦。
  2. 语法高亮和着色。语法高亮和着色会改变程序中各个部分的颜色,使其更容易识别程序的各个组成部分。
  3. 一种清晰、固定宽度的字体(通常称为“等宽字体”)。非编程字体通常很难区分数字 0 和字母 O,或者数字 1、小写字母 l 和大写字母 I。一个好的编程字体会确保这些符号在视觉上有所区分,以确保不会意外地使用一个代替另一个。所有代码编辑器都应该默认启用此功能,但标准文本编辑器可能不会。使用固定宽度的字体(所有符号的宽度都相同)可以更容易地正确格式化和对齐代码。

这是一个 C++ 程序的例子,包含行号、语法高亮和等宽字体

#include <iostream>

int main()
{
    std::cout << "Here is some text.";
    return 0;
}

请注意,这比未高亮显示的版本更容易理解。本教程中显示的源代码将同时具有行号和语法高亮,以便于理解代码。

提示

Coding FontProgramming Fonts 都提供了很棒的工具,可以让你比较不同的编程字体,看看你最喜欢哪种。

致进阶读者

由于源代码是使用 ASCII 字符编写的,编程语言会使用一定量的 ASCII 艺术来表示数学概念。例如, 不属于 ASCII 字符集,因此编程语言通常使用 != 来代替数学上的不等式。

一些编程字体,例如 Fira Code,使用连字将此类“艺术”组合回单个字符。例如,Fira Code 不会显示 !=,而是显示 (使用与双字符版本相同的宽度)。有些人觉得这更容易阅读,而另一些人则更喜欢坚持更字面化的底层字符解释。

许多简单的 C++ 程序只有一个源代码文件,但复杂的 C++ 程序可以有数百甚至数千个源代码文件。

程序中的每个源文件都需要保存到磁盘,这意味着每个源文件都需要一个文件名。C++ 对文件命名没有任何要求。但是,事实上的标准是将为程序创建的第一个/主要源文件命名为 main.cpp。文件名 (main) 很容易确定哪个是主要源文件,.cpp 扩展名表示该文件是 C++ 源文件。

您偶尔可能会看到第一个/主要的源文件以程序名称命名(例如 calculator.cpppoker.cpp)。您也可能偶尔看到使用其他扩展名(例如 .cc.cxx)。

最佳实践

将每个程序中的第一个/主要源文件命名为 main.cpp。这使得确定哪个源文件是主要文件变得容易。

编写好程序后,接下来的步骤就是将源代码转换成可运行的东西,然后看看它是否有效!我们将在下一课中讨论这些步骤(4-7)。

guest
您的电子邮箱地址将不会被显示
发现错误?请在上方留言!
与勘误相关的评论在处理后将被删除,以帮助减少混乱。感谢您帮助使网站对每个人都更好!
来自 https://gravatar.com/ 的头像与您提供的电子邮箱地址相关联。
有回复时通知我:  
407 评论
最新
最早 最多投票
内联反馈
查看所有评论