本课定位:前三课的程序都是“一条道走到黑”——从头到尾每条语句都执行一遍,这叫顺序结构。本课让程序第一次会做选择:条件成立就做某件事,不成立就跳过;或者两条路里走一条。这是分支结构的入门,也是后面所有“会思考”的程序的基础。
顺序结构:从上到下,每条语句都执行一遍
分支结构:遇事不决,先问一句“条件成立吗?”
条件成立吗?
│
┌────┴────┐
成立 不成立
│ │
做这件事 单分支:什么都不做
双分支:去做另一件事
学完本课,学员要能用自己的话说清楚这张图:程序先判断一个条件,成立就执行 if 里的语句;不成立时,单分支直接跳过,双分支则改去执行 else 里的语句。
前面写过的程序,都是从第一行执行到最后一行,一条不落:
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
cout << n * 2 << endl; // 不管 n 是几,这一句都会执行
return 0;
}
可是现实里的问题常常带着“如果”:
这些题用顺序结构写不出来——因为有的语句在该情况下要执行,在另一种情况下要跳过。要做到这件事,就得先学会“判断一个条件”。
两个数比大小,用下面这些符号,它们叫关系运算符:
| 运算符 | 含义 | 例子 | 成立吗 |
|---|---|---|---|
> |
大于 | 7 > 5 |
成立 |
< |
小于 | 7 < 5 |
不成立 |
>= |
大于或等于 | 5 >= 5 |
成立 |
<= |
小于或等于 | 4 <= 5 |
成立 |
== |
等于(两个等号!) | 7 == 5 |
不成立 |
!= |
不等于 | 7 != 5 |
成立 |
注意两个地方:
>= 和 <= 的写法是“先大后等”,写成 =>、=< 是错的;==,一个等号 = 是赋值,这两个是完全不同的东西。条件成立还是不成立,可以直接输出出来看: