【Learncpp中文翻译版】【1.1 — 语句和程序结构】

原文链接:原文链接

声明:

  • 本文旨在方便了解学习C++语法,切勿用于任何商业用途。
  • 由于本人英语水平有限,文章中可能存在语义错误,如有疑问请参照原文,也可以在评论区指出错误。

1.1 — 语句和程序结构

章节介绍

欢迎来到这些 C++ 教程的第一章!

在本章中,我们将首先了解一些对每个 C++ 程序都至关重要的主题。因为要涵盖的主题很多,所以我们将在相当浅的层次上介绍大部分内容(仅够勉强过关)。本章的目的是帮助你理解基本的 C++ 程序是如何构造的。在本章结束时,您将能够编写自己的简单程序。

在以后的章节中,我们将重新审视这些主题中的大部分,并更详细地探讨它们。我们还将介绍建立在这些之上的新概念。

为了保持课程长度的可控性,主题可能会被拆分为多个后续课程。如果您觉得某些重要概念没有在课程中涉及,则可能会在下一课中涉及。


声明(Statements)

计算机程序是告诉计算机要做什么的指令序列。语句是一种使程序执行某些操作的指令。

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

C++ 中的大多数(但不是全部)语句都以分号结尾。如果您看到以分号结尾的行,则可能是语句。

在 C++ 等高级语言中,一条语句可以编译成许多机器语言指令。

对于高级读者

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

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

当您完成本教程系列时,您将了解所有这些是什么!

功能和主要功能

在 C++ 中,语句通常被分组为称为函数的单元。函数是顺序执行的语句的集合(按顺序,从上到下)。当您学习编写自己的程序时,您将能够创建自己的函数并以任何您喜欢的方式混合和匹配语句(我们将在以后的课程中展示如何)。

规则

每个 C++ 程序都必须有一个名为main的特殊函数(全部小写字母)。
程序运行时,main里面的语句是按顺序执行的。

程序通常在函数main中的最后一条语句执行后终止(结束运行)(尽管在某些情况下程序可能会提前中止,或者之后进行一些清理)。

函数通常是为了完成特定的工作而编写的。例如,一个名为“max”的函数可能包含确定两个数字中哪个更大的语句。名为“calculateGrade”的函数可能会根据一组考试成绩计算学生的成绩。我们很快就会更多地讨论函数,因为它们是程序中最常用的组织工具。

作者注

在讨论函数时,在函数名称的末尾附加一对括号是相当常见的简写。
例如,如果您看到术语`main()`或`doSomething()`,这分别是名为`main`或`doSomething`的函数的简写。
这有助于将函数与具有名称(例如变量)的其他事物区分开来,而不必每次都写“函数”一词。

剖析Hello world!

现在您已经对什么是语句和函数有了一个简要的了解,让我们回到我们的“Hello world”程序,从高层次上更详细地了解每一行的作用。

#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 行的右花括号之间的所有内容都被认为是main函数的一部分。这称为函数体。

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

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

我们编写的所有程序都将遵循这个通用模板,或者它的变体。

作者注

如果上述解释的部分(或全部)令人困惑,那么在这一点上是可以预料的。
这只是为了提供一个快速概述。后续课程将深入探讨上述所有主题,并提供大量额外的解释和示例。

你可以自己编译并运行这个程序,你会看到它向控制台输出了以下内容:

Hello world!

语法和语法错误

在英语中,句子是根据您可能在学校英语课上学到的特定语法规则构建的。例如,正常的句子以句号结尾。支配如何在语言中构造句子的规则称为句法。如果你忘记了句号并将两个句子放在一起,这是违反英语语法的。

C++ 也有一个语法:关于必须如何构造程序才能被视为有效的规则。当你编译你的程序时,编译器负责确保你的程序遵循 C++ 语言的基本语法。如果你违反了规则,当你试图编译你的程序时,编译器会报错,并给你一个语法错误。

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

#include <iostream>

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

随意自己编译这个格式错误的程序。

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

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

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

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

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


小测验时间

以下测验旨在加强您对上述材料的理解。

问题 #1

什么是声明?

答:语句是计算机程序中的一条指令,它告诉计算机执行一个动作。

问题 #2

什么是函数?

答:函数是按顺序执行的语句的集合。

问题 #3

所有程序必须具有的功能名称是什么?

答:main

问题 #4

程序运行时,从哪里开始执行?

答:执行从main函数中的第一条语句开始。

问题 #5

C++ 中的语句通常以什么符号结尾?

答:分号 ( ; )

问题 #6

什么是语法错误?

答:语法错误是当您的程序违反 C++ 语言的语法规则时在编译时发生的编译器错误。

问题 #7

什么是 C++ 标准库?

答:库文件是已“打包”以在其他程序中重用的预编译代码的集合。C++ 标准库是 C++ 附带的库。它包含在您的程序中使用的附加功能。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值