C++魔法代码学院:第 9 课——听话的复读机(for 循环基础)

2026-01-20
53

—— 告别重复劳动的自动化魔法

  • 课时时长:90 分钟
  • 核心目标

    1. 理解 循环 的概念:让代码重复执行。
    2. 掌握 for 循环 的三要素:起点终点步子
    3. 学会使用自增运算符 i++ 和自减运算符 i--
    4. 实战:正序输出数字(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 ( 起点 ; 终点 ; 步子 ) {
            // 跑步时要喊的口号(循环体)
    }
    

  • 隐喻对照(核心教学法)

    1. 起点 (int i = 1)

      • 起跑线。我们通常请一个小人叫 i 来跑步。
      • 老师命令:“i,你从第 1 圈开始跑!”
    2. 终点 (i <= 100)

      • 能不能继续跑的条件。
      • 老师规定:“只要跑的圈数小于等于 100,就继续跑!超过了就停!”
    3. 步子 (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,然后喊“点火!”
  • 逻辑翻转

    1. 起点:从 10 开始 -> int i = 10
    2. 终点:只要还大于等于 1 就继续 -> i >= 1 (注意是 >=,不要写反!)。
    3. 步子:倒着走,每次减 1 -> i--
  • 代码带练

    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. 基础题:输出 1 到 50 之间所有的数字,但是要横着印,中间用空格隔开。
  2. 应用题(寻找 7)

    • 利用 for 循环从 1 数到 100。
    • 如果数字是 7 的倍数(i % 7 == 0),输出 "Pass"。
    • 否则,输出数字本身。
    • 这是“逢七过”游戏的基础版。
  3. 挑战题(累加铺垫)

    • 你能算出 1+2 等于几?1+2+3 呢?
    • 试着用脑子算一下 1 加到 10 是多少?下节课我们教电脑算 1 加到 10000!

给教练的教学话术建议

  • 关于 i++:告诉学生,这是程序员最喜欢的偷懒写法。i = i + 1 要敲 5 下键盘,i++ 只要敲 3 下。积少成多,程序员省了很多时间!
  • 关于“死循环”:在课堂上故意演示一次死循环(比如打印“老师好帅”无限版),学生会觉得非常有趣,同时印象深刻。演示完记得教他们按 Ctrl + C 或者直接关窗口强制停止。
  • 关于分号for 循环头部的括号里必须有两个分号。可以比喻成“跑道上的两个栏杆”,把跑道分成三段。少了栏杆就要摔跤。