C++魔法代码学院:第 9 课——听话的复读机(for 循环基础)
—— 告别重复劳动的自动化魔法
- 课时时长:90 分钟
-
核心目标:
- 理解 循环 的概念:让代码重复执行。
- 掌握
for循环 的三要素:起点、终点、步子。 - 学会使用自增运算符
i++和自减运算符i--。 - 实战:正序输出数字(1-100)与倒序倒计时(10-1)。
-
所需教具:一个发令枪(玩具或图片)、一根接力棒、黑板上画好的跑道。
课程时间表
| 环节 | 时间 | 内容 | 教学隐喻/活动 |
|---|---|---|---|
| 复习 | 10 min | 逻辑运算符 && || |
“逻辑盾牌防御战” |
| 引入 | 10 min | 为什么要循环? | “罚抄名字 100 遍” |
| 新知 | 25 min | for 循环语法结构 |
“操场跑圈三定律” |
| 核心 | 20 min | 循环变量 i 的变化 |
打印 1 到 100 |
| 实战 | 15 min | 倒序循环 i-- |
“火箭发射倒计时” |
| 总结 | 10 min | 总结与避坑 | 死循环与分号陷阱 |
详细教学流程
1. 复习:逻辑盾牌 (10分钟)
- 提问:既要考100分又要写完作业,用什么符号?(
&&)。只有一项完成就行,用什么?(||)。 - 铺垫:今天我们要学的魔法,不需要做复杂的选择,而是要埋头苦干,一直重复做同一件事。
2. 引入:噩梦般的罚抄 (10分钟)
-
互动挑战:
- 请一位“写字最快”的同学上台。
- 任务:在黑板上写 5 遍“我以后上课认真听讲”。
- 学生写完气喘吁吁。
-
痛点升级:
- 老师:“如果让你写 100 遍呢?1000 遍呢?”
- 学生:“手会断掉!”
- 老师:“C++ 只需要 3 行代码,1 秒钟就能写完 10000 遍。这就是——循环魔法。”
3. 新知:操场跑圈三定律 (25分钟)
- 概念拆解:
for循环就像是体育老师让你在操场跑圈。 -
语法板书:
for ( 起点 ; 终点 ; 步子 ) { // 跑步时要喊的口号(循环体) } -
隐喻对照(核心教学法):
-
起点 (
int i = 1):- 起跑线。我们通常请一个小人叫
i来跑步。 - 老师命令:“
i,你从第 1 圈开始跑!”
- 起跑线。我们通常请一个小人叫
-
终点 (
i <= 100):- 能不能继续跑的条件。
- 老师规定:“只要跑的圈数小于等于 100,就继续跑!超过了就停!”
-
步子 (
i++):- 怎么跑。
i++是 C++ 的特殊咒语,意思是i = i + 1,也就是“跑完一圈,圈数加 1”。
-
-
代码组装:
for (int i = 1; i <= 100; i++) { cout << "我以后认真听讲" << endl; } -
学生体验:运行代码,看着屏幕疯狂刷屏,感受“工业自动化”的震撼。
4. 核心:看着 i 变大 (20分钟)
-
探究
i是谁:- 在上面的代码里,
i不仅仅是个记数的,它自己就在不断变化。 - 让我们把
i打印出来看看!
- 在上面的代码里,
-
任务:报数机器
- 输出:
1 2 3 ... 100。
for (int i = 1; i <= 100; i++) { cout << i << " "; // 输出 i 自己,后面加个空格隔开 } - 输出:
-
变式训练:
- 老师:“只要偶数怎么办?”
- 方法 A(利用步子):
i++改成i = i + 2(一次跨两步,1, 3, 5... 哎呀这是奇数?那起点改成int i = 2)。 - 方法 B(利用
if):循环里加if (i % 2 == 0) cout << i;(推荐这种,更通用)。
5. 实战:火箭发射倒计时 (15分钟)
- 场景:火箭发射需要从 10 数到 1,然后喊“点火!”
-
逻辑翻转:
- 起点:从 10 开始 ->
int i = 10。 - 终点:只要还大于等于 1 就继续 ->
i >= 1(注意是 >=,不要写反!)。 - 步子:倒着走,每次减 1 ->
i--。
- 起点:从 10 开始 ->
-
代码带练:
cout << "准备发射..." << endl; for (int i = 10; i >= 1; i--) { cout << i << "..." << endl; } cout << "点火!轰隆隆!" << endl; -
易错点演示:
- 如果把
i >= 1写成了i <= 1会怎样? - 分析:起点是 10,条件是“小于等于1”。10 不小于 1,条件一开始就是假的。
- 结果:循环一次都不执行,直接跳到“点火”。(哑炮!)
- 如果把
6. 总结与避坑 (10分钟)
-
坑王驾到(死循环):
- 代码:
for (int i = 1; i >= 0; i++) - 分析:从 1 开始跑,每次加 1(变成2, 3...),条件是“大于等于0”。
- 结果:永远满足条件!电脑会发疯一样一直跑,直到把电耗光(或者程序卡死)。这叫死循环。
- 对策:一定要检查你的终点是不是总有一天能到达。
- 代码:
-
语法细节:
for括号里有两个分号;,不能是逗号。- 循环变量一般习惯用
i(iterator),如果有两层循环(以后学)会用j,k。
课后作业:体能训练
- 基础题:输出 1 到 50 之间所有的数字,但是要横着印,中间用空格隔开。
-
应用题(寻找 7):
- 利用
for循环从 1 数到 100。 - 如果数字是 7 的倍数(
i % 7 == 0),输出 "Pass"。 - 否则,输出数字本身。
- 这是“逢七过”游戏的基础版。
- 利用
-
挑战题(累加铺垫):
- 你能算出 1+2 等于几?1+2+3 呢?
- 试着用脑子算一下 1 加到 10 是多少?下节课我们教电脑算 1 加到 10000!
给教练的教学话术建议
- 关于
i++:告诉学生,这是程序员最喜欢的偷懒写法。i = i + 1要敲 5 下键盘,i++只要敲 3 下。积少成多,程序员省了很多时间! - 关于“死循环”:在课堂上故意演示一次死循环(比如打印“老师好帅”无限版),学生会觉得非常有趣,同时印象深刻。演示完记得教他们按
Ctrl + C或者直接关窗口强制停止。 - 关于分号:
for循环头部的括号里必须有两个分号。可以比喻成“跑道上的两个栏杆”,把跑道分成三段。少了栏杆就要摔跤。