备战大晨9月GESP C++ 1级(13):for循环初体验,一句代码顶十句

上一篇讲完 switch 多路分支,我在结尾留了个尾巴:**分支翻篇,下一座大山是循环。**这周如期兑现——《一本通·编程启蒙 C++ 版》正好翻到循环结构第一课,for 循环。

先交代个背景:本来我们瞄着 7 月那场 GESP,结果我们这儿考点名额手慢无,没抢到,索性改报 9 月场。坏事变好事,暑假时间充裕,进度反而从容了,每天雷打不动 20 分钟。

从”罚抄十遍”讲起

给小孩讲循环,我憋了个土办法。我说:你们老师罚抄生词十遍,你是不是抄到第五遍就想撕本子?大晨疯狂点头。

我说,电脑最不怕的就是重复。循环就是教电脑”这句话给我重复十遍”,它连眉头都不皱一下。

大晨回了一句让我记到现在的话:”爸爸,电脑最厉害的不是算得快,是不嫌烦。”

行,悟了。

for 循环长什么样

for 循环就一行,但里面有仨零件:

for (int i = 1; i <= 10; i++)

我给大晨的白话翻译:

  • int i = 1:起跑线,从 1 开始数;
  • i <= 10:每跑一步都要问一句”到 10 了吗”,没到就继续;
  • i++:往前挪一格。

大晨卡壳在 i++,觉得是个神秘符号。我说 i++ 不是咒语,就是”自己加一”,跟 i = i + 1 是亲兄弟,抄两遍就顺眼了。

第一段代码:从 1 数到 10

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

int main() {
for (int i = 1; i <= 10; i++) {
cout << i << " ";
}
cout << endl;
return 0;
}

一敲回车,屏幕上跳出 1 到 10。大晨盯着看了半天:”就……完了?”我说对,你以前要写十行 cout,现在一句顶十句

升级:1 加到 100

光数数不过瘾,我掏出经典题:算 1 加到 100。大晨在数学班听过高斯的故事,张口就来:”5050!首尾相加乘 50!”

我说行,你走高斯的捷径,让电脑走老实人的路:

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加到100等于" << sum << endl;
return 0;
}

他还替电脑抱不平:”高斯三秒就算出来了,电脑要傻加 100 次,好亏哦。”我说你等着,**等你能指挥电脑干活了,亏的永远是人不是机器。**这话他现在不懂,以后会懂的。

老父亲陪跑笔记

这周踩的坑,给后面的家长提个醒:

  1. **差一错误是新手第一坑。**大晨把 i <= 100 敲成了 i < 100,跑出来 4950,自己愣了半天。我没直接给答案,只说了一句”高斯说的可是 5050 哦”,他自己一行行查出来的——自己抓出来的 bug,比十道例题都值钱。
  2. 累加器 sum 一定要先初始化为 0,不然结果是个玄学数字。
  3. 循环体只有一句时大括号可以省,但我要求大晨永远写上大括号,免得以后往里加语句时踩坑。

小结与预告

这周从”罚抄十遍”讲到 for 循环,大晨已经能独立写出数数和累加的程序。学到循环,才算真正开始”使唤”电脑——以前是让它干一次,现在是让它干一百次。

不过收工前大晨问了个问题,一下把我问住了:”爸爸,能让它一直数下去、永远不停吗?”

能,但那是把双刃剑。下一篇就聊聊 while 循环,和那个让无数新手闻风丧胆的东西——死循环


免责声明:本文仅为记录自家孩子的学习过程与老父亲的个人心得,不构成任何报考或学习建议。每个孩子节奏不同,仅供参考。