备战大晨7月 GESP C++ 1级(12):for 循环初体验,从"抄 5 遍"到"1 加到 100"

上篇(11)咱们把 &&|| 这对逻辑运算符啃完,大晨做分支选择题正确率 10 题对 8 题,我悬着的心放下一半。文末我说过:顺序、分支都拿下了,下一座大山,是循环。这周末,《一本通·编程启蒙》正式翻到第三章,大晨的编程学习进入了新大陆。

从”罚抄 5 遍”说起

周六晚上,大晨生字听写错了俩,被妈妈罚抄 5 遍。他一边抄一边嘟囔:”手都酸了……”

我一看,机会来了,这不就是现成的循环教材吗?我说:”你要是台电脑,这活儿一行代码就能搞定。”

大晨眼睛一亮:”电脑也会偷懒?”

对,程序员的本事,就是把重复一百遍的事,写成只写一遍。 循环干的就是这个。

for 循环”三件套”

《编程启蒙》第三章第一节讲 for 语句。格式长这样:

1
for (起点; 终点; 每次怎么走)

我给大晨翻译成大白话:从哪儿开始、到哪儿停、一步迈多大,这三件事交代清楚,循环就成了。

于是我让他把”罚抄 5 遍”写出来:

1
2
3
4
5
6
7
8
9
#include <iostream>
using namespace std;

int main() {
for (int i = 1; i <= 5; i++) {
cout << "第" << i << "遍,我下次一定写对!" << endl;
}
return 0;
}

屏幕上唰地打出 5 行,大晨乐了:这罚抄来得也太快了。

不过第一次他自己敲的时候踩了个坑:把 i <= 5 写成了 i < 5,屏幕只打了 4 遍。他盯着看了半天,突然喊:”哦!到 5 之前就停了,没包含 5!”

这种自己踩坑、自己爬出来的 bug,比我讲十遍都管用。

1 加到 100,高斯”躺枪”

第二个例子是经典款,累加求和:

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;

int main() {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum = sum + i;
}
cout << "1+2+...+100 = " << sum << endl;
return 0;
}

运行,5050。我趁机讲了高斯小时候的故事:首项加尾项,乘项数除以二,人家秒出答案。

本以为能镇住他,结果大晨不服:”高斯是聪明,可电脑不怕累啊,加一万次也就一眨眼。”说完把 100 改成 1000,跑出 500500,兴奋得直拍桌子。

他说得没错。高斯的公式是给人的智慧,循环是给机器的耐心。 两样都得会,这才是学编程。

老父亲陪跑心得

这周最大感受:循环比分支抽象一个量级。大晨的卡点是理解”i 每跑一圈就变一次”这个动态过程,我用操场跑圈计数帮他比喻,一圈记一次,才勉强通。

另外两条经验:一是别急着上 while 和嵌套,先把 for 三件套练到肌肉记忆;二是单次还是控制在 40 分钟左右,抽象内容烧脑,贪多必崩。

小结

到这篇为止,大晨已经拿下:输入输出、变量、运算符、分支、逻辑运算、for 循环,离明年 7 月的考试还有大半年,节奏不慌。

收工前大晨突然问我:”爸,能不能只打印 1 到 100 里能被 3 整除的数?”好家伙,这就自己发现新需求了。这事儿,得把 if 塞进 for 里才办得到,循环 + 分支,混合双打,咱们下篇见分晓。

免责声明:本文仅为自家孩子备考 GESP 的学习记录,涉及的书目、进度和教法仅适合大晨个人,不构成任何学习建议,每个孩子节奏不同,请以实际情况为准。