📄 一句话概括
流程图里的循环像个人:帽子是循环条件、身体是循环体、短裤是跳回帽子的回线——帽子挂前还是挂后,决定了循环会不会至少跑一次。
📝 本节和前面几节的关系
上一节学会画基本符号,这一节专门对付循环的画法——教材用【帽子】【短裤】两个形象的比喻讲它。
一、循环像个人:帽子、身体、短裤
流程图里的循环块画出来是这个形状:顶上一条回线像帽子(循环条件的判断),中间是身体(循环体),底下一条折线像短裤(跳回帽子的箭头)。 帽子管【还要不要继续】,身体管【每圈做的事】,短裤管【回到帽子】——三者缺一,循环就不成立。
二、帽子在前还是在后
帽子在前(先判断后执行):条件不成立时,身体一次都不进——第三章那 5 字节程序若加循环,多是这种; 帽子在后(先执行后判断):身体至少跑一次——菜单程序常用(先让你点一次,再看要不要继续)。 教材强调这个区别,因为它是初学时最常出错的地方:明明想【至少执行一次】,却写成了先判断。
三、循环三件套的检查清单
画/写循环时问三句:哪里进(初始条件)、什么时候停(终止条件)、怎么靠近终止(每圈的变化)。 第三句最要命:如果每圈不变,条件永远成立——死循环。第三章的 PC 一直往回跳还不改条件,就是这个下场。
四、动手 Demo:帽子短裤逐圈过一遍
把帽子(循环条件)每次检查的结果列出来,看清循环结束的那一刻。
# 帽子在前: 先判断,可能一次都不进
i = 1
while i <= 5: # <- 帽子
print("身体执行 i =", i)
i += 1 # <- 每圈靠近终止
print("帽子第 6 次检查为假 -> 循环结束")
实跑输出:
--------------------------------------------------------------------
循环的【帽子】和【短裤】
--------------------------------------------------------------------
流程图里循环的样子像个人:上头一顶【帽子】(循环条件)、
中间是身体(循环体)、底下一条【短裤】(跳回条件的回线):
=============== ← 帽子: 循环条件 i <= 5 ?
| 显示 i |
| i = i + 1 | ← 身体: 循环体
=============== ← 短裤: 跳回帽子
^
|______________|
亲手跑一遍这个循环,看 【帽子】 每次检查的结果:
轮到第几圈 帽子检查 i<=5 身体做了什么
------------------------------------------------
1 真 -> 进身体 显示 1, i 变 2
2 真 -> 进身体 显示 2, i 变 3
3 真 -> 进身体 显示 3, i 变 4
4 真 -> 进身体 显示 4, i 变 5
5 真 -> 进身体 显示 5, i 变 6
6 假 -> 出门 循环结束
规律:**帽子先检查、身体后执行**(所以可能一次都不进身体)。
若把检查放在身体之后(先做后查),就变成【至少执行一次】的循环——
两种循环的差别,全在帽子挂在前还是在后。
把 i 的初值改成 10,循环一次都不进——帽子在前的特征。 如果把 i += 1 删掉:帽子永远为真,程序卡死——终止条件必须被每圈推进。
30 秒实验
- 把 Demo 里的 i 初值改成 10,预测输出(应该什么都不打印)再跑一遍验证。
- 故意删掉 i += 1 跑一次(记得能中断)——亲手制造一次死循环,比听一百遍警告管用。
常见误区
- 忘了让循环变量靠近终止——死循环的最常见成因。
- 把【至少执行一次】的循环写成先判断——菜单首次不显示,用户一脸懵。
自测三问(点开对答案)
1. 循环流程图里【帽子】和【短裤】各指什么? —— 帽子=顶部的循环条件判断,短裤=底部跳回帽子的回线;中间是循环体。 2. 帽子在前与在后有什么差别? —— 在前可能一次都不执行;在后至少执行一次。 3. 写循环必查的三件事? —— 哪里进(初值)、何时停(条件)、怎么靠近停(每圈的变化)。- ☐ 下一节(4.4 结构化程序设计)
相关笔记
- 追踪程序的运行过程 — 上一章那四步执行循环,正是本章流程的硬件底子
- ☕ Java基础 · 索引 — 三种循环语句在那边有实战写法
- 💻 计算机是怎样跑起来的 · 索引