💻 第四章 程序像河水一样流动着
📄 一句话概括

程序流程只有三种:顺序(直着走)、循环(回头走)、分支(岔路选一条)——再复杂的程序都是这三种的组合。

📝 本节和前面几节的关系

第三章追的是【一条指令怎么执行】,这一章往上看一层:一串指令怎么组织——第一步就是认清三种流程。

一、三种基本流程

顺序:一条接一条往下走,不回头——最简单,也最没个性; 循环:某段程序块重复执行,直到条件不再满足; 分支(选择):到路口按条件挑一条路走。 三种结构在第三章都有硬件落点:顺序=PC 正常前进;循环=PC 被改回前面;分支=条件成立才改 PC。

二、为什么只要三种就够

这是一个可以证明的结论(教材不证,但给出直觉):任何程序流程都能用这三种结构的组合表达出来。 顺序管没有岔的直线段,循环管重复,分支管选择——所有【想不到的流程】,拆开看都是它们的嵌套。 这条结论是 4.4 节【结构化程序设计】的地基。

三、从三种流程看程序

拿到一段陌生的代码,先做分类练习:哪几段是顺序、哪几段套着循环、哪里有分支。 分完类,程序的结构就清楚了——这是读代码最快的入口,也是写代码前的草图。

四、动手 Demo:一件事三种写法

同一个任务(显示 1~5)用三种流程各写一遍,感受结构的差别。

# 顺序: 一条条写死
print("顺序:", 1, 2, 3, 4, 5)
# 循环: 重复一段
print("循环:", end=" ")
for i in range(1, 6):
    print(i, end=" ")
print()
# 分支: 按条件选路
n = 4
print("分支:", "偶数" if n % 2 == 0 else "奇数")

实跑输出:

--------------------------------------------------------------------
同一件事,三种流程写法
--------------------------------------------------------------------

任务:把 1 到 5 逐个显示出来。三种基本流程各写一遍:

[顺序] 一条接一条,没有回头路:
    显示 1
    显示 2
    显示 3
    显示 4
    显示 5

[循环] 同一段程序块重复执行,靠计数器控制次数:
    i = 1
    当 i <= 5: 显示 i; i = i + 1     ← 这段重复 5 次

[分支] 在路口按条件选一条道:
    显示 1;若 1 是奇数则显示 2;否则跳过

  流程     形状           什么时候用
  ---------------------------------------------
  顺序     直线           步骤固定、一步接一步
  循环     回头的箭头     同样的事要重复多遍
  分支     岔路口         按条件走不同的路

再复杂的程序,也只是这三种结构的组合与嵌套——第四章的主线。

顺序写法在【要做 100 遍】时立刻崩溃——这就是循环存在的理由。 三种结构往往挤在一段代码里:循环体内有分支、分支里有顺序——嵌套是常态。

30 秒实验

  1. 打开任意一个程序文件,找出其中的循环与分支各在哪些行。
  2. 想一想:开机自检流程是哪三种结构的组合?(提示:检查每个设备=循环,通过/失败=分支)

常见误区

  1. 以为【跳转】是第四种流程——跳转只是实现循环与分支的底层零件,不是新的结构。
  2. 以为分支越多程序越高级——分支多往往是设计乱的信号(4.4 节细说)。
自测三问(点开对答案) 1. 三种基本流程是什么? —— 顺序、循环、分支(选择)。 2. 三种结构在硬件上对应什么操作? —— 顺序=PC 正常前进;循环=PC 改回前地址;分支=条件成立才改 PC。 3. 为什么说三种结构【够用】? —— 任何程序流程都能用它们的组合与嵌套表达出来。

相关笔记