Skip to content

Latest commit

 

History

History
146 lines (101 loc) · 5.11 KB

1-5.md

File metadata and controls

146 lines (101 loc) · 5.11 KB

思维的体操 · 初识控制流

我们身处一个充满理性与逻辑的世界。即便是市井小民,也难免要以这样的思维做事情:

  • 早上起床后,先寻找自己的衣服穿上:
    • 穿内衣了吗?嗯,昨晚睡觉时本来就没脱,不用再穿了。
    • 穿上衣了吗?没有,那么就先穿上衣。
    • 穿裤子了吗?也没有,赶紧穿上,记得系好裤腰带。
    • 穿鞋子了吗?只穿了个拖鞋。但在穿拖鞋之前,好歹得穿个袜子吧?再检查一下:
      • 穿袜子了吗?没有,先套上袜子。
      • 然后再穿上鞋子。
    • 戴手表了吗?等等,你没有买过表(假如)!那还是别戴了,总不能拿记号笔再手腕上画一个吧?哈哈~

其实,这就是程序,一个简单的早起穿衣程序,执行者也就是我们自己。

C++ 语言的用途,便是位我们手头的设备制定像这样的程序——能作出判断,并在不同的情况下做不同的事情。

接下来,我们便开始了解 C++ 是如何指挥计算机的。


0

这是什么?对,老相识了,还是数字零!

零是一个分界线,实数范围内,它既比任何正数小,又比任何负数大:

0 < 15

-3 < 0

计算机能判断这种事情吗?能!就像这样:

if (0 < 15) 
{
    cout << "0 小于 15 是正确的" << endl;
}
if (-3 < 0)
{
    cout << "-3 小于 0 是正确的" << endl;
}

if 是 C++ 的一个关键字,含义是用于判断其后所跟小括号包裹的内容是否成立。如果成立,小括号后跟的一对花括号的内容会被执行,反之则不会被执行。

C++ 力求整洁,所以对于花括号内只有“一句话”的 if 语句,花括号是可以省略的:

if (0 < 15) cout << "0 小于 15 是正确的" << endl;
if(-3 < 0) cout << "-3 小于 0 是正确的" << endl;

别忘了末尾的分号!


if 语句中,由小括号包裹的内容称作条件;而如果小括号后紧跟的是一对花括号,我们称这一对花括号及其包裹的内容整体叫作语句块

也许你会想,小括号里写的是条件,那么是不是什么条件都可以望着里头写呢?就像这样:

if (今天下雨) cout << "记得带伞!" << endl;

很遗憾,行不通。事实上,如果 C++ 智能得可以看得懂我们用自然语言写的句子,我们哪还要写什么程序呢?

计算机,正如其名,它是用来计算的机器,所以我们应当让它做的是计算!这种计算可以是数学层面的,例如四则运算或比较数字大小之类的:

if (3 + 2 == 5) cout << "3 加 2 为 5" << endl;
if (3 + 2 != 6) cout << "3 加 2 不为 6" << endl;
if (5 - 6 <= 12) cout << "5 减 6 的差不大于 12" << endl;
if (233 > 0) cout << "233 是一个正数" << endl;

也许你会对其中的==!=<=感到奇怪。其实它们分别相当于数学中的等于(=)、不等于(≠)与小于等于(≤)。我们将在后续章节中深入学习像这样的运算符


有时候,我们不仅需要处理条件成立时的情况,也需要处理条件成立的情况:

if (12 > 0)
{
    cout << "12 是正数" << endl;
}
else 
{
    cout << "12 不是正数" << endl;
}

else 是另一个 C++ 中的关键字,如果与它相匹配的 if 中的条件不成立,else 后跟的语句块会被执行。它与 if 正好相反,如果条件成立,语句块中的内容是不会被执行的。

当然了,它也能像 if 那样。如果语句块内同样只有“一句话”,else 后亦可省去花括号:

if (12 > 0) cout << "12 是正数" << endl;
else cout << "12 不是正数" << endl;

else 后还可紧跟一个新的 if,以便于进行连续的判断:

if (12 > 0) cout << "12 是正数" << endl;
else if (12 == 0) cout << "12 是 0" << endl;
else cout << "12 是负数" << endl;

if 和 else 究竟是凭什么判断条件是非的呢?

我们在 if 后那对小括号所写的各种条件,不论怎样,它们最终都会被转换为 true (真) 或 false (假) 这两种。if 与 else 正是依靠于此实现判断的。

true 与 false 是什么呢?它们在 C++ 中被称作布尔值(bool),专用于表达逻辑上的。它们不仅是像 if 与 else 那样的关键字,并且也和数字、字符串一样是

它们可以直接成为 if 的条件:

if (true) cout << "true" << endl;
if (false) cout << "false, 这句话永远也不会被执行……" << endl;

它们也同样是比较数字后的结果:

15 > 0;	// true
15 < 0;	// false

并且,它们还具有数值的性质,能直接参与比较运算中的相等与不相等运算:

12 > 11 == true;	// true
12 > 25 == false;	// true
12 > 25 != true;	// true
12 > 25 == true;	// false

布尔值是很有用的类型!我们将在后续的学习中经常用到它们。

习题

  • 构思一份生活中或游戏中做某一件具有流程的事情的全过程,要求至少有一处需要条件才能做(或不做)的步骤。