语句和程序结构

语句和程序结构

章节介绍

欢迎来到这些C++教程的第一个主要章节!

在本章中,我们将首先介绍一些对每个C++程序都至关重要的主题。因为有很多主题要涵盖,所以我们将涵盖相当浅层的大部分内容。本章的目标是帮助您了解基本C++程序的构建方式。到本章结束时,您将能够编写自己的简单程序。

在以后的章节中,我们将重新审视大多数这些主题并更详细地探讨它们。我们还将介绍基于这些概念的新概念。

为了保持课程长度可管理,主题可能会分成几个后续课程。如果您觉得课程中没有涵盖某些重要概念,则可能会在下一课中介绍它。

语句

计算机程序是一系列指令,告诉计算机该做什么。一个语句是一种类型的指令,导致该程序执行某些操作。

语句是目前C++程序中最常见的指令类型。这是因为它们是C++语言中最小的独立计算单位。在这方面,它们的行为很像自然语言中的句子。当我们想要将想法传达给另一个人时,我们通常用句子(而不是随机词或音节)来写或说。在C++中,当我们想让程序执行某些操作时,我们通常会编写语句。

C++中的大多数(但不是全部)语句以分号结尾。如果你看到一个以分号结尾的行,那么它可能就是一个语句。

在诸如C++的高级语言中,单个语句可以编译成许多机器语言指令。

对于高级读者

C++中有许多不同类型的语句:

1.声明语句
2.跳转声明
3.表达式陈述
4.复合语句
5.选择陈述(条件)
6.迭代语句(循环)
7.Try语句块

当您完成本系列教程时,您将了解所有这些内容!

功能和主要功能

在C++中,语句通常被分组为称为函数的单元。一个功能是语句的集合,依次执行。当您学习编写自己的程序时,您将能够以任何方式创建自己的函数并混合和匹配语句(我们将在未来的课程中展示如何)。

规则:每个C++程序都必须有一个名为main的特殊函数(全小写字母)。程序运行时,执行从函数main中的第一个语句开始,然后按顺序继续。

程序通常在执行函数main中的最后一个语句时终止(完成运行)(尽管它们可能在某些情况下提前中止)。

通常编写函数来执行特定的工作。例如,名为“max”的函数可能包含指出两个数字中哪一个更大的语句。名为“calculateGrade”的函数可以从一组测试分数中计算学生的成绩。我们将很快讨论有关函数的内容,因为它们是程序中最常用的组织工具。

作者的说明:在讨论函数时,将一对括号附加到函数名称的末尾是相当常见的简写。例如,如果您看到术语main()或doSomething(),则这是分别名为main或doSomething的函数的简写。这有助于将函数与其他类型的对象(例如变量)区分开来,而无需每次都写入“函数”一词。

解剖Hello World!

现在您已经简要了解了哪些语句和函数,让我们回到我们的“Hello world”程序,并更详细地了解每行的内容。

1
2
3
4
5
6
7
#include <iostream>

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

第1行是一种特殊类型的行,称为预处理程序指令。这个预处理器指令表明我们想要使用iostream库的内容,它是C++标准库的一部分,允许我们从/向控制台读取和写入文本。我们需要这一行来在第5行使用std :: cout。排除这一行会导致第5行出现编译错误,因为编译器不会知道std :: cout是什么。

第2行是空白的,编译器会忽略它。该行仅用于帮助使程序对人类更具可读性(通过分离#include预处理程序指令和程序的后续部分)。

第3行告诉编译器我们将编写(定义)一个名为main的函数。如上所述,每个C++程序都必须具有main函数,否则将无法编译。

第4行和第7行告诉编译器哪些行是主函数的一部分。第4行的开口花括号和第7行的结束花括号之间的所有内容都被视为主要功能的一部分。这称为函数体。

第5行是函数main中的第一个语句,是我们运行程序时将执行的第一个语句。 std :: cout(代表“console output”)和operator <<允许我们向控制台发送字母或数字以便输出。在这种情况下,我们发送文本“Hello world!”,它将输出到控制台。此语句创建程序的可见输出。

第6行是一个返回语句。当可执行程序完成运行时,程序会将值发送回操作系统,以指示它是否成功运行。这个特殊的return语句将值0返回给操作系统,这意味着“一切正常!”。这是程序中执行的最后一个语句。

我们编写的所有程序都将遵循此通用模板或其变体。

作者的说明:如果上述解释的部分(或全部)令人困惑,那么此时就会出现这种情况。这只是为了提供快速概述。随后的课程将深入研究上述所有主题,并提供大量额外的解释和示例。

您可以自己编译并运行该程序,您将看到它将以下内容输出到控制台:

Hello world!

如果您遇到编译或执行此程序的问题,请查看第0.8课- 一些常见的C++问题。

语法和语法错误

在英语中,句子是根据你在学校英语课上学到的特定语法规则构建的。例如,普通句子在一段时间内结束。管理语句如何在语言中构造的规则称为语法。如果您忘记了句号并同时运行两个句子,则这违反了英语语法。

C++也有一个语法:关于如何构造程序以便被认为有效的规则。编译程序时,编译器负责确保程序遵循C++语言的基本语法。如果违反规则,编译器会在您尝试编译程序时发出抱怨,并向您发出语法错误。

让我们看看如果我们在“Hello world”程序的第5行省略分号会发生什么,如下所示:

1
2
3
4
5
6
7
#include <iostream>

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

随意自己编译这个不正确的程序。

Visual Studio产生以下错误(您的编译器可能会生成具有不同措辞的错误消息):

1
c:\vcprojects\test1.cpp(6): error C2143: syntax error : missing ';' before 'return'

这告诉你在第6行有一个语法错误:编译器在return语句之前期望分号,但它没有找到一个分号。虽然编译器会在遇到语法错误时告诉你编译哪行代码,但遗漏实际上可能在前一行。在这种情况下,错误实际上在第5行的末尾(编译器直到第6行才发现问题)。

编写程序时,语法错误很常见。幸运的是,它们通常很容易找到并修复,因为编译器通常会指向您。只有解决了所有语法错误后,才能完成程序的编译。

您可以尝试从“Hello world”程序中删除字符甚至整行,以查看生成的各种错误。尝试在第5行的末尾恢复丢失的分号,然后删除第1,3或4行,看看会发生什么。