需要重复执行的程序
看完你能说清循环存在的理由,并用 while 写出各种重复执行
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
需要重复执行的程序
看完你能说清循环存在的理由,并用 while 写出各种重复执行
生活里的重复
回想你的一天:起床、刷牙、吃饭、通勤——细想会发现,很多动作其实是「同一套流程」一遍遍重复。程序处理问题时也一样,遇到重复的活儿,就得想办法让代码自动再来一次。
每天重复同样的动作,对应程序反复执行同一段代码
什么是循环结构
上一页我们看到生活里到处是重复:跑十圈、洗十只碗。但程序怎么知道「从哪开始、重复到什么时候、每次做什么」?把这三件事说清楚,就是循环结构。
起点是第 1 圈,继续条件是未满十圈,重复内容是跑一圈
循环的执行过程
把循环拆开看:一次完整的判断—执行—更新—再判断的节奏。
while 的语法
上一页我们看到,循环靠「条件成立就继续」来驱动。那这句话怎么写成代码?while 语句只由两块拼成,但括号和分号各有讲究,错一个程序就跑偏。
证件有效(条件为真)才放行进门,每来一人查一次
先判断后执行的流程图
顺着箭头走一遍:菱形是判断,方框是执行,条件不成立才有出口。
一个最小的 while 例子
一个能直接跑的最小 while 循环,逐行看清『重复』在代码里长什么样。
第 2 行是重复的开关:条件真就再来一次;第 4 行是退出机制,没有它 count 永远 ≤3,程序死循环。
判断在前 vs 执行在前
while 是先判断再执行,但很多人以为循环总是先跑一次再说——这个误解要靠对比来破。
- 循环体可能一次都不执行
- 先检查条件,成立才进入循环
- 适合「可能没数据」的场景
- 循环体至少会执行一次
- 先跑一次,再检查是否继续
- 适合「必先试一次」的场景
录入速度问题
前一页我们写过一个最小的 while 例子,但真实任务里循环跑几次往往不由你定。比如领导说:把这 1000 条数据录入完才能下班——循环条件该怎么写?先想清楚什么时候该停,再动手写代码。
「还饿吗」对应「数据录完没」,饱了才停对应条件为假退出
录入程序的思路
把“读到 0 为止”的录入任务,拆成四个环环相扣的步骤。
录入速度的完整代码
看到录入速度问题的完整 while 实现:条件判断、累加变量、循环体逐行对应之前的思路。
while 行是判断条件;循环体里先筛选累加,最后一行重新录入是关键——没有它条件永远不变,程序陷入死循环。
自测:循环条件
while 循环的条件检查发生在什么时刻?
循环变量必须更新
上一页的录入代码,count 每录一个就加 1。要是把这行更新语句删了会怎样?条件永远成立,程序停不下来——这就是死循环。
不改变条件(不关闹钟),铃声就永远响下去
本套图解要点
- ✓循环三要素:初始值、继续条件、更新,缺一不可
- ✓while 先判断再执行,条件为假可能一次都不跑
- ✓已知要执行几次时也要写条件,不能靠数次数
- ✓循环体内必须改变条件相关变量,否则死循环
- ✓录入不确定次数的数据,用哨兵值结束循环
课后思考
先自己想一会儿,再看参考答案。
参考答案顺着执行过程走一遍:条件每次判断都成立,因为变量的值没变,条件永远为真,一轮轮空转。想清楚「判断依赖变量、变量靠循环体更新」这条链就明白了。
参考答案条件改成类似「条数不足 100 且输入有效」。先明确 100 是上限:第 100 条要录,第 101 条不录,所以用小于而不是小于等于,再用具体数字代入验证一次。
参考答案比如菜单:至少要展示一次才能让用户选。强行用 while 就得先造一个假的初始条件。这正是 do-while 存在的理由,下一阶段可以留意它和 while 的差别。