第 3 部分 控制成分
目前你已经掌握了 C++ 最基本的运算成分,你现在可以让计算机执行你想要执行的运算过程了。那么如何去控制运算的流程就是接下来我们需要学习的。
控制成分是很关键的,因此我们在第一章学习了最基础的控制:分支和循环。同时,我们还默许了一件事情,就是计算机执行代码的时候是从上到下一行一行走的,这个称为按顺序执行。
事实上,对于你目前接触到的任何程序来说,它的逻辑都可以用这三种结构——顺序、分支和循环——来表达。这是在 1996 年被证明的事实。因此接下来我们将逐一系统地讲解这三种结构。
“你目前所接触到的程序”意思是指“单入口、单出口”的程序。
在此之前,需要介绍控制成分最基础的概念——语句。
语句
语句(Statement)是指定 C++ 程序执行什么样的任务的程序片段。你其实已经见过许多语句了,并完整地学过一种语句叫声明语句。
分号结尾的程序片段大多都是语句。接下来我们来看一下你已经见过的语句:
声明语句
声明语句可以指定程序声明并定义一个变量。(将来你会学到声明语句的其它用法。)关于已经学过的部分,请参见第 1 部分的讲解。例如:
int a{42}, b{56};
表达式语句
表达式语句(Expression statement)指定程序执行运算。比如:
a = b + 20;
这里面 a = b + 20
是一个表达式。这个表达式的含义我们已经清楚了,它是赋值表达式,可以给变量 a
赋一个值。但是要想让计算机执行这个过程,需要通过表达式语句的形式给它写出来。表达式语句的写法也很简单,直接在后面加上一个分号 ;
就可以指定计算机取执行这段表达式所表达的运算了。
下面这张图解释了表达式和表达式语句的关系:
表达式语句中的表达式是可选的。没有表达式的表达式语句称为空语句。
输入输出语句……?
以 cin >>
开头的,;
结尾的一串东西可以是指定计算机从用户读取输入,这件事情我们在第一章已经接触了。同样,以 cout <<
开头的,;
结尾的可以输出一些东西。这两样都是 ;
结尾,那么聪明的你一定猜到了它们也是语句的一种。没错,正是如此;我们一直用于输入输出的那种写法确实是语句,而且是表达式语句的一种形式。那为啥是表达式语句呢?这件事情我们会留到后面再详细讲解。
分支语句和循环语句
第一章中的 if (...) {...}
和 while (...) {...}
也是语句,分别是分支语句和循环语句的一种。
那么这一套下来,你会发现我们从第一章到现在其实就是在搞各种语句的排列。就拿第一章最后的那个例子来看:
#include <iostream>
using namespace std;
int main() {
int ans{42}; // 声明语句
int x{0}; // 声明语句
cin >> x; // “输入语句”(实际是表达式语句)
while (x != ans) { // 循环语句开始
if (x > ans) { // 分支语句开始
cout << "bigger" << endl; // “输出语句”(实际是表达式语句)
} // 分支语句结束
if (x < ans) { // 分支语句开始
cout << "smaller" << endl; // “输出语句”(实际是表达式语句)
} // 分支语句结束
cin >> x; // “输入语句”(实际是表达式语句)
} // 循环语句结束
cout << "right" << endl; // “输出语句”(实际是表达式语句)
}
所以说语句是 C++ 控制成分的核心,也是它非常关键的原因所在。