C++魔法代码学院:第 4 课——对话的艺术
—— 学会倾听的魔法
- 课时时长:90 分钟
- 核心目标:
- 掌握
cin指令,让程序学会“听”键盘的输入。 - 绝对重点:分清
cout <<(输出流) 和cin >>(输入流) 的箭头方向。 - 理解“提示语”的重要性(交互的礼貌)。
- 编写第一个真正的交互式程序(加法器)。
- 掌握
- 所需教具:一个漏斗(或者卷成圆锥状的纸),几个写着数字的乒乓球。
🕒 课程时间表
| 环节 | 时间 | 内容 | 教学隐喻/活动 |
|---|---|---|---|
| 复习 | 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) * 4和2 + 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分钟)
- 任务:不再限制于固定数字,做一个能算任意两个数相加的计算器。
- 代码逻辑:
- 声明两个变量
a和b。 - 提示用户输入。
- 用
cin接收。 - 输出
a + b。
- 声明两个变量
- 连续输入技巧:
- 写法 A:
cin >> a; cin >> b; - 写法 B(连击):
cin >> a >> b;(像串糖葫芦一样,数据一个接一个流进去)。 - 操作演示:输入的时候,可以用空格隔开两个数,也可以用回车隔开。
- 写法 A:
6. 总结与避坑 (10分钟)
-
常见错误大赏(必须强调):
-
箭头反了:
cin << a;❌ —— 编译器会报一大堆看不懂的错误。- 纠正:检查漏斗方向!输入是进家门
>>。
- 纠正:检查漏斗方向!输入是进家门
-
没买盒子就装东西:
cin >> score; // ❌ score 还没定义呢! int score; -
输入了错误的东西:
int a;然后输入了字母 "abc"。- 结果:程序会发疯(得到 0 或者随机数)。告诉学生:这节课我们只输数字,别给电脑吃毒药。
-
课后作业:自我介绍机器人
- 基础题:编写一个程序,依次询问你的出生年份(例如 2014)。
- 程序计算出你今年几岁了(用 2026 减去出生年份)。
- 输出:“Wow! You are [岁数] years old.”
- 图形题(复习):
- 输入一个整数
n。 - 用
*号打印出n个星星。(注:这道题需要用到还未讲熟练的循环,如果是尖子生可以尝试,普通班建议改为:输入长方形的长和宽,输出面积,作为第3课的交互版复习)。 - 修正后的作业建议:长方形面积计算器 2.0。
- 提示:“请输入长:” -> 输入
- 提示:“请输入宽:” -> 输入
- 输出:“面积是:xxx”
- 输入一个整数
给教练的教学话术建议
- 关于光标闪烁:很多孩子运行程序后,看到黑框框不动,以为程序卡死了。一定要反复强调:“只要光标在闪,就是电脑在侧耳倾听,它在等你敲回车!”
- 关于回车键:告诉学生,输入完数字后,必须敲Enter(回车),就像发送微信要点“发送”一样,否则数据还在缓冲区,没进到变量盒子里。
- 调试技巧:如果学生举手说“报错了”,第一时间让他检查
cin后面的箭头是不是写成<<了。这是 90% 的错误来源。