备战大晨7月 GESP C++ 1级(10):for 循环初体验,老父亲的头发又少了

备战大晨7月 GESP C++ 1级(10):for 循环初体验,老父亲的头发又少了
强仔上回说到
上篇我们刚把 if-else 嵌套那块啃完,大晨当时信心满满地说:”爸,分支我会了,循环是不是也差不多?”我当时笑了笑,心想:你小子还不知道循环才是真正的分水岭。
今天我们正式进入《一本通•编程启蒙C++版》的循环章节,第一个就是 for 循环。
为什么要学循环
我给大晨举了个例子:”你要在屏幕上打印 1 到 5,不用循环怎么写?”
他啪啪啪敲了五行:
1 | cout << 1 << endl; |
“那打印 1 到 100 呢?”
大晨愣了一下:”……那不得写一百行?”
对,这就是循环存在的意义——让计算机帮你干重复的活。
for 循环三件套
for 循环的核心就三个部分,我管它叫”三件套”:
- 初始化:从几开始
- 条件判断:到几结束
- 步进:每次走多远
语法长这样:
1 | for (初始化; 条件判断; 步进) { |
我把三件套拆开讲给大晨听,拿打印 1 到 5 举例:
1 |
|
i = 1 是起点,i <= 5 是终点,i++ 是每走一步加 1。 大晨盯着看了半天,突然来了一句:”i++ 是不是就是 i = i + 1 的缩写?”我心里一喜,这小子悟性还可以。
第一次踩坑
大晨自己写了个程序,想打印 1 到 10,结果屏幕上啥也没输出。我凑过去一看:
1 | for (int i = 10; i <= 1; i++) { |
起点 10,终点判断 i <= 1,一开始就不满足,循环一次都不执行。 这是最经典的坑——方向搞反了。
我问他:”你从 10 出发,想走到 1,你是往前走还是往后走?”大晨想了一下:”往后走……所以要 i–?”
对,步进方向必须跟起止方向一致。 改成这样就对了:
1 | for (int i = 10; i >= 1; i--) { |
累加求和实战
《一本通》上有道经典题:求 1+2+3+…+100 的和。我让大晨先自己想,他在纸上画了半天,最后问我:”是不是要弄个箱子,每次往里面加一个数?”
这个”箱子”就是累加变量,必须初始化为 0。 我让他自己写,他在键盘上敲了半天:
1 |
|
运行结果 5050,大晨拿计算器验证了一遍,跳起来说:”真的一样!高斯小时候也是这么算的吧?”
我笑着说:”高斯没用循环,他用的是公式。但你的方法也很棒,循环求和是编程思维的基本功。“
老父亲陪跑笔记
今天这节课大概花了 40 分钟,大晨最大的收获是理解了”三件套”的逻辑。踩了方向搞反那个坑之后,他现在写 for 循环会先在纸上写起点和终点,再决定用 i++ 还是 i–。
我的建议是:for 循环别急着上嵌套,先把单层循环练到肌肉记忆。 《一本通》上有十几道单层循环的题,我打算让大晨先刷完这些,再进 while 循环。
大晨临睡前跟我说:”爸,我觉得循环比 if 好玩,if 是做选择,循环是让电脑干活。”我说:”你等着,for 循环套 for 循环的时候你就不会这么说了。”
小结与下篇预告
今天完成了 for 循环的入门,包括基本语法、方向坑、累加求和实战。大晨目前能独立完成单层循环的简单题目。
下篇我们就要聊聊 while 循环,以及那个让无数初学者崩溃的”死循环”问题——大晨已经提前踩了一个雷,下回细说。
免责声明:以上内容仅为个人陪孩子学习信奥的记录,不构成任何教学建议。代码示例均经过编译验证,但如有疏漏欢迎指出。每个孩子的学习节奏不同,仅供参考。


