备战大晨7月 GESP C++ 1级(18):for循环初体验,累加求和入门

备战大晨7月 GESP C++ 1级(18):for循环初体验,累加求和入门
强仔上回说到
上一篇咱们把 if-else 分支结构聊了个大概,大晨做完那几道题之后,我问他感觉咋样,他拍着胸脯说”爸爸我觉得我学会了!”——结果第二天又跑来问我 else 到底跟哪个 if 配对。
孩子的记忆是需要反复碾压的,一遍就想学会,不存在的。
不过没关系,按照《一本通•编程启蒙C++版》的进度,这一篇我们正式进入循环结构,先从 for 循环开刀。
for 循环长啥样
我先在白板上写了这么一行:
1 | for (初始化; 条件判断; 更新) { |
大晨看了半天,问了一个特别”大晨”的问题:”爸爸,这个括号里面为什么有两个分号?”
我说你把它想象成一个倒计时器就行——第一个分号前是”从几开始数”,中间是”数到几停”,后面是”每次数完干啥”。他若有所思地点了点头,也不知道真懂还是假懂。
先上代码跑跑看:
1 |
|
输出:1 2 3 4 5 6 7 8 9 10
大晨看到屏幕上蹦出来一排数字,兴奋得不行:”爸爸它真的自己数了!”
累加求和:第一个实战
光打印数字没意思,我给他出了道经典题:求 1 到 100 的和。
大晨第一反应是拿手算,我说你别急,用 for 循环让计算机帮你算。他盯着屏幕想了大概五分钟,然后写出了这个:
1 |
|
输出:1到100的和是:5050
看到 5050 蹦出来的那一刻,大晨猛地站起来喊了一声”yes!”——跟他妈追剧看到大结局那劲头一模一样。
我跟他讲,高斯小时候也是算这道题,但人家是找规律算的,你这是老老实实一个一个加,不过计算机不怕累,这才是循环的威力。
大晨的翻车时刻
兴奋劲过了,我加了一道变式题:求 1 到 100 的偶数之和。
大晨咔咔一顿敲,写出来这个:
1 |
|
输出:1到100的偶数和是:2550
这次竟然一把过,我有点意外。结果他得意忘形,跟我说”爸爸你再出个难的”,我说那你求 1 到 100 所有奇数之和吧。
他把 i = 2 改成 i = 1,然后……把 i += 2 忘了改,直接写成 i++,结果算了个 1 到 100 的和出来,5050。
典型的复制粘贴不改全的毛病,这也不能怪他,成年人写代码也经常干这事。
我提醒他看输出,5050 跟刚才偶数题的 2550 加起来恰好等于 5050,他这才反应过来——偶数和奇数应该把 1 到 100 全覆盖了才对。改完之后:
1 |
|
输出:1到100的奇数和是:2500
验算一下:2500 + 2550 = 5050,完美对上,大晨这才心服口服。
老父亲陪跑笔记
今天这轮学下来,记几个要点:
for 循环三要素缺一不可——初始化、条件判断、更新,少一个就死循环或者不执行。大晨有一回把 i++ 删了看会咋样,结果电脑风扇狂转,他吓得差点关电源。
累加求和的核心是”sum 变量在外面的初始值是 0”——大晨一开始写 int sum = 1,因为他说”从 1 开始加嘛”。这个理解偏差很典型,纠正了两次才记住。
变量名取名要见名知意——sum、i 这种经典命名建议从开始就养成习惯,别等以后改不过来。
今天节奏不错,从打印到求和再到变式,大概练了一个半小时,做了 4 道小题。大晨最后问我:”爸爸是不是只要用 for 循环,什么都能算?”我说那可不一定,循环也有搞不定的时候,到时候就得请出另一个家伙了——while 循环。
大晨问 while 跟 for 有啥不一样,我说你先别急。
下篇预告:while 循环登场,当循环次数不确定的时候,它比 for 更好用。大晨会被”猜数字游戏”折磨到怀疑人生——欲知后事如何,咱们下回分解。
免责声明:本文仅为大晨个人学习陪跑记录,不构成任何教学建议。每个孩子的学习节奏不同,代码示例仅供参考,如有错误欢迎指正,但别拿去当标准教材用。


