需要重复执行的程序

官官方信息技术老师·15 页·深入(追求细节与边界)·0 次浏览·38 天前
循环while编程基础

需要重复执行的程序

看完你能说清循环存在的理由,并用 while 写出各种重复执行

按 空格/→ 演示下一步

问一句
1 / 15 页

全部页面点击任意一页,跳回舞台从这页播放

循环while编程基础

需要重复执行的程序

看完你能说清循环存在的理由,并用 while 写出各种重复执行

1第 1 页 · 需要重复执行的程序

生活里的重复

回想你的一天:起床、刷牙、吃饭、通勤——细想会发现,很多动作其实是「同一套流程」一遍遍重复。程序处理问题时也一样,遇到重复的活儿,就得想办法让代码自动再来一次。

重复无处不在
吃饭三餐、地铁每天发车,都是固定流程反复执行
人做重复会累
手工抄写一百遍容易出错,机器重复却精确稳定
程序也要重复
让计算机按条件反复执行某段代码,就是循环的雏形
每天固定的作息流程对应 →循环执行

每天重复同样的动作,对应程序反复执行同一段代码

2第 2 页 · 生活里的重复

什么是循环结构

上一页我们看到生活里到处是重复:跑十圈、洗十只碗。但程序怎么知道「从哪开始、重复到什么时候、每次做什么」?把这三件事说清楚,就是循环结构。

起点
重复从哪里开始,比如从第 1 圈算起
继续条件
满足什么条件才继续,比如还不到 10 圈
重复内容
每次循环要做的事,比如向前跑一圈
一次循环
重复内容做完一遍,称为一次迭代
跑操场十圈对应 →循环结构

起点是第 1 圈,继续条件是未满十圈,重复内容是跑一圈

3第 3 页 · 什么是循环结构

循环的执行过程

把循环拆开看:一次完整的判断—执行—更新—再判断的节奏。

1
进入循环前
先初始化:计数器从0开始,作为循环的起点
2
条件判断
每次先检查条件是否成立,成立才继续,不成立就退出
3
执行循环体
条件成立时干一次活,这就是被重复的核心代码
4
更新变量
计数器加1,让状态向退出方向推进,避免死循环
5
回到判断
再次检查条件,成立就再来一轮,不成立则循环结束
4第 4 页 · 循环的执行过程

while 的语法

上一页我们看到,循环靠「条件成立就继续」来驱动。那这句话怎么写成代码?while 语句只由两块拼成,但括号和分号各有讲究,错一个程序就跑偏。

条件表达式
写在 while 后的括号里,值为真才进循环体
循环体
花括号包住的语句块,每轮条件为真就执行一遍
括号不可省
条件必须用小括号包住,这是语法硬性要求
条件要会变
循环体内须有语句改变条件,否则死循环
门卫查证件对应 →while 条件

证件有效(条件为真)才放行进门,每来一人查一次

5第 5 页 · while 的语法

先判断后执行的流程图

顺着箭头走一遍:菱形是判断,方框是执行,条件不成立才有出口。

图解渲染中…
a1:菱形代表条件判断,即 while 括号里的布尔表达式b1:循环体:被重复执行的语句块c1:唯一出口:条件为假时才会到达
6第 6 页 · 先判断后执行的流程图

一个最小的 while 例子

python

一个能直接跑的最小 while 循环,逐行看清『重复』在代码里长什么样。

代码高亮加载中…

第 2 行是重复的开关:条件真就再来一次;第 4 行是退出机制,没有它 count 永远 ≤3,程序死循环。

7第 7 页 · 一个最小的 while 例子

判断在前 vs 执行在前

while 是先判断再执行,但很多人以为循环总是先跑一次再说——这个误解要靠对比来破。

while:先判断
  • 循环体可能一次都不执行
  • 先检查条件,成立才进入循环
  • 适合「可能没数据」的场景
do-while:先执行
  • 循环体至少会执行一次
  • 先跑一次,再检查是否继续
  • 适合「必先试一次」的场景
当条件可能一开始就不成立时用 while;当操作至少要做一次时才用 do-while。
8第 8 页 · 判断在前 vs 执行在前

录入速度问题

前一页我们写过一个最小的 while 例子,但真实任务里循环跑几次往往不由你定。比如领导说:把这 1000 条数据录入完才能下班——循环条件该怎么写?先想清楚什么时候该停,再动手写代码。

目标驱动
重复次数来自任务本身:数据没录完就不能停
条件即终点
while 的条件应描述「还没完成」的状态,如 i < 1000
边界陷阱
1000 条数据用 i < 1000,写成 <= 会多执行一次
必须能变化
条件里的变量要在循环体内更新,否则永远停不下来
吃自助餐吃到饱对应 →循环条件

「还饿吗」对应「数据录完没」,饱了才停对应条件为假退出

9第 9 页 · 录入速度问题

录入程序的思路

把“读到 0 为止”的录入任务,拆成四个环环相扣的步骤。

1
读入
cin 读入第一个数,循环必须先有数据才能开始判断
2
判断
while 条件检查刚读入的数,是不是结束标记 0
3
处理
不是 0 才进循环体,做统计、累加等实际工作
4
再读入
循环体末尾再读下一个数,否则条件永远用旧数据判断
10第 10 页 · 录入程序的思路

录入速度的完整代码

python

看到录入速度问题的完整 while 实现:条件判断、累加变量、循环体逐行对应之前的思路。

代码高亮加载中…

while 行是判断条件;循环体里先筛选累加,最后一行重新录入是关键——没有它条件永远不变,程序陷入死循环。

11第 11 页 · 录入速度的完整代码

自测:循环条件

点击作答

while 循环的条件检查发生在什么时刻?

12第 12 页 · 自测:循环条件

循环变量必须更新

上一页的录入代码,count 每录一个就加 1。要是把这行更新语句删了会怎样?条件永远成立,程序停不下来——这就是死循环。

循环变量必须更新
while 体内要有语句让条件趋向不成立
漏写更新的后果
条件恒真,程序无限执行,卡死
边界条件
判断条件取等号处:count≤5 执行到 5,count=6 结束
闹钟只响不关对应 →死循环

不改变条件(不关闹钟),铃声就永远响下去

13第 13 页 · 循环变量必须更新

本套图解要点

  • ✓循环三要素:初始值、继续条件、更新,缺一不可
  • ✓while 先判断再执行,条件为假可能一次都不跑
  • ✓已知要执行几次时也要写条件,不能靠数次数
  • ✓循环体内必须改变条件相关变量,否则死循环
  • ✓录入不确定次数的数据,用哨兵值结束循环
延伸主题:for 循环与计数循环break 与 continue 的用法循环嵌套与二维遍历
14第 14 页 · 本套图解要点

课后思考

先自己想一会儿,再看参考答案。

1循环变量忘了更新时,循环为什么会停不下来?用自己的话描述这个失控过程。

参考答案顺着执行过程走一遍:条件每次判断都成立,因为变量的值没变,条件永远为真,一轮轮空转。想清楚「判断依赖变量、变量靠循环体更新」这条链就明白了。

2如果把录入速度的例子改成「最多录 100 条」,循环条件该怎么写?边界值放在哪判断?

参考答案条件改成类似「条数不足 100 且输入有效」。先明确 100 是上限:第 100 条要录,第 101 条不录,所以用小于而不是小于等于,再用具体数字代入验证一次。

3while 是先判断再执行,那有没有「先干一次再判断」的场景?两者互换会出什么问题?

参考答案比如菜单:至少要展示一次才能让用户选。强行用 while 就得先造一个假的初始条件。这正是 do-while 存在的理由,下一阶段可以留意它和 while 的差别。

15第 15 页 · 课后思考