C++魔法代码学院:第 4 课——对话的艺术

2026-01-19
124

—— 学会倾听的魔法

  • 课时时长:90 分钟
  • 核心目标
    1. 掌握 cin 指令,让程序学会“听”键盘的输入。
    2. 绝对重点:分清 cout << (输出流) 和 cin >> (输入流) 的箭头方向。
    3. 理解“提示语”的重要性(交互的礼貌)。
    4. 编写第一个真正的交互式程序(加法器)。
  • 所需教具:一个漏斗(或者卷成圆锥状的纸),几个写着数字的乒乓球。

🕒 课程时间表

环节 时间 内容 教学隐喻/活动
复习 10 min 变量与运算 “口算优先级”热身
引入 10 min 为什么要输入? 演示:死板的计算器 vs 灵活的计算器
新知 25 min cin 语法与方向 “管道流向图”与光标闪烁
核心 20 min 读心术程序 编写“明年你就N岁了”
实战 15 min 加法计算器 连续输入两个数
总结 10 min 总结与避坑 箭头方向口诀

详细教学流程

1. 复习:运算热身 (10分钟)

  • 提问int a = 10 / 3;a 等于几?(答案:3,去尾)。
  • 提问(2+3) * 42 + 3 * 4 结果一样吗?(不一样,括号老大)。

2. 引入:只会“自言自语”的电脑 (10分钟)

  • 痛点演示
    • 老师展示上节课的代码:int len = 10; int wid = 5;
    • “同学们,如果我想算一个长 20、宽 8 的长方形怎么办?”
    • 学生:“改代码!”
    • 老师:“那如果我想算 100 个不同长方形的面积,难道要改 100 次代码吗?太累了!”
  • 解决方案
    • 我们不要在代码里把数字写死。
    • 我们希望程序运行后,问我们:“长是多少?宽是多少?”,然后我们敲键盘告诉它。
    • 这就是——Input(输入)

3. 新知:连接键盘的漏斗 cin (25分钟)

  • 概念引入

    • cout (See-Out):是大喇叭,把内存里的东西到屏幕上。
    • cin (See-In):是漏斗(或吸尘器),把键盘敲进去的东西进变量盒子里。
  • 难点攻克:箭头的方向(视觉记忆)

    • 板书画图
      • cout << :箭头指向左边(屏幕),表示数据流出去
      • cin >> :箭头指向右边(变量),表示数据流进来
    • 口诀
      • 输出像喇叭,开口向左 << 喊话。
      • 输入像漏斗,开口向右 >> 进家。
    • 老师拿实物漏斗演示:把乒乓球(数据)通过漏斗倒进箱子(变量)。
  • 语法格式

    int age;      // 1. 先准备好空盒子
    cin >> age;   // 2. 把键盘敲的数字吸进 age 盒子里
    

4. 核心:读心术程序 (20分钟)

  • 任务:编写一个程序,输入现在的年龄,电脑算出来明年的年龄。

  • 步骤一:只有 cin 的尴尬

    int age;
    cin >> age;
    cout << age + 1;
    

    • 运行现象:屏幕黑黑的,一个光标在闪烁,什么字也没有。
    • 讲解“光标闪烁”就是电脑在等你说话(敲键盘)。它很有耐心,你不敲,它就等到天荒地老。
  • 步骤二:学会礼貌(添加提示语)

    • 就像打电话一样,你不能接通了不说话。要先问一句。
    • 优化代码
      int age;
      cout << "Please enter your age: "; // 礼貌的提示
      cin >> age;                        // 等待输入
      cout << "Next year you will be: "; // 输出前缀
      cout << age + 1 << endl;           // 输出结果
      
  • 学生练习:每个人写出这个代码,并输入自己的年龄测试。

5. 实战:超级加法器 (15分钟)

  • 任务:不再限制于固定数字,做一个能算任意两个数相加的计算器。
  • 代码逻辑
    1. 声明两个变量 ab
    2. 提示用户输入。
    3. cin 接收。
    4. 输出 a + b
  • 连续输入技巧
    • 写法 A:cin >> a; cin >> b;
    • 写法 B(连击):cin >> a >> b; (像串糖葫芦一样,数据一个接一个流进去)。
    • 操作演示:输入的时候,可以用空格隔开两个数,也可以用回车隔开。

6. 总结与避坑 (10分钟)

  • 常见错误大赏(必须强调)

    1. 箭头反了cin << a; ❌ —— 编译器会报一大堆看不懂的错误。

      • 纠正:检查漏斗方向!输入是进家门 >>
    2. 没买盒子就装东西

      cin >> score; // ❌ score 还没定义呢!
      int score;
      
    3. 输入了错误的东西

      • int a; 然后输入了字母 "abc"。
      • 结果:程序会发疯(得到 0 或者随机数)。告诉学生:这节课我们只输数字,别给电脑吃毒药。

课后作业:自我介绍机器人

  1. 基础题:编写一个程序,依次询问你的出生年份(例如 2014)。
    • 程序计算出你今年几岁了(用 2026 减去出生年份)。
    • 输出:“Wow! You are [岁数] years old.”
  2. 图形题(复习)
    • 输入一个整数 n
    • * 号打印出 n 个星星。(注:这道题需要用到还未讲熟练的循环,如果是尖子生可以尝试,普通班建议改为:输入长方形的长和宽,输出面积,作为第3课的交互版复习)。
    • 修正后的作业建议长方形面积计算器 2.0
      • 提示:“请输入长:” -> 输入
      • 提示:“请输入宽:” -> 输入
      • 输出:“面积是:xxx”

给教练的教学话术建议

  • 关于光标闪烁:很多孩子运行程序后,看到黑框框不动,以为程序卡死了。一定要反复强调:“只要光标在闪,就是电脑在侧耳倾听,它在等你敲回车!”
  • 关于回车键:告诉学生,输入完数字后,必须敲Enter(回车),就像发送微信要点“发送”一样,否则数据还在缓冲区,没进到变量盒子里。
  • 调试技巧:如果学生举手说“报错了”,第一时间让他检查 cin 后面的箭头是不是写成 << 了。这是 90% 的错误来源。