C++魔法代码学院:第 6 课——如果是真的(if 语句)
—— 命运的分岔路口与守门员
- 课时时长:90 分钟
-
核心目标:
- 理解 布尔逻辑:计算机眼里只有“真 (True)”和“假 (False)”。
- 掌握 关系运算符:
><>=<=!===。 - 掌握
if语句 的基本结构(单分支)。 - 死磕难点:区分 赋值
=和 判断相等==。
-
所需教具:一面红绿旗(或者红绿牌),一个用来当“门”的呼啦圈或胶带线。
课程时间表
| 环节 | 时间 | 内容 | 教学隐喻/活动 |
|---|---|---|---|
| 复习 | 10 min | 变量与输入 | “加法计算器”回顾 |
| 引入 | 15 min | 布尔逻辑 (True/False) | 真人游戏:起立坐下 |
| 新知 | 20 min | 关系运算符 (== vs =) |
“天平”与“打包员” |
| 核心 | 20 min | if 语句语法 |
“城门口的守卫” |
| 实战 | 15 min | 编写“门票判断器” | 身高 < 120 免票 |
| 总结 | 10 min | 总结与预告 | 预告 else |
详细教学流程
1. 复习:热身 (10分钟)
- 提问:我们学过哪些数据类型?
- 回顾:
int(整数)、double(小数)、char(字符)。 - 铺垫:今天我们要认识一位新朋友,它只有两个手指头,专门用来做判断。
2. 引入:真人真假游戏 (15分钟)
-
游戏规则:老师说出一句话,如果是真的,大家起立;如果是假的,大家抱头坐下。
- “老师戴了眼镜。” (学生动作)
- “今天外面在下雪。” (学生动作)
- “3 大于 2。” (起立)
- “5 等于 100。” (坐下)
-
概念引出:
- 同学们刚才做的反应,在 C++ 里叫
bool(布尔类型)。 - 它只有两个值:
true(真/1) 和false(假/0)。 - 计算机做决定,全靠这两个词。
- 同学们刚才做的反应,在 C++ 里叫
3. 新知:六大侦探工具 (20分钟)
- 工具介绍:为了得到 true 或 false,我们需要用“关系运算符”来比较两个东西。
-
简单组:
>(大于)<(小于)>=(大于等于):注意写法,是>后面跟=,不能写成≥。<=(小于等于)
-
困难组(重点轰炸):
-
判断相等
==:- 隐喻:这是一个“天平”。它在问:“左边和右边一样重吗?”
- 结果:如果一样,返回 True;不一样,返回 False。
-
不等于
!=:- 隐喻:感叹号
!在编程里代表“不/反义词”。!=就是“不等于”。
- 隐喻:感叹号
-
-
** 核心辨析:
=vs==**-
=(赋值号):- 动作:把右边的东西塞进左边的盒子里。
- 口诀:霸道总裁,“变成我给你的样子”。
-
==(判断号):- 动作:拿着放大镜看,左右两边长得像不像?
- 口诀:公平法官,“你俩一样吗?”
-
板书演示:
score = 100;(把分数变成 100)score == 100(你的分数是 100 吗?)
-
4. 核心:城门口的守卫——if 语句 (20分钟)
-
场景隐喻:
- 代码执行就像一个人在走路。突然,前面出现了一座城门。
- 城门口站着一个守卫,名字叫
if。 - 守卫手里拿着一张通关文牒(条件)。
- 规则:如果你的条件是 真 (True),城门打开,你进去执行里面的任务;如果是 假 (False),城门紧闭,你进不去,只能绕道走。
-
语法结构:
if ( 条件 ) { // 如果条件是真的,只有这里面的代码会被执行 // 如果是假的,这里会被完全跳过 } -
手势记忆:
- 圆括号
():是守卫手里的检查清单。 - 花括号
{}:是城墙,包围着要执行的任务。
- 圆括号
5. 实战:门票判断器 (15分钟)
- 任务:游乐园规定,身高 小于 120cm 的小朋友免票。
-
代码带练:
int height; cout << "请输入你的身高(cm): "; cin >> height; // 守卫开始检查 if (height < 120) { cout << "好耶!你可以免票进入!" << endl; } cout << "欢迎来到游乐园!" << endl; -
测试运行:
- 输入
110-> 打印“好耶...” -> 打印“欢迎...” (守卫放行了)。 - 输入
150-> 只有“欢迎...” (守卫没放行,跳过了花括号里的画)。
- 输入
-
思考(引出下节课):
- 如果身高 150,屏幕上光秃秃的,能不能提示他“请买票”?
-
笨办法:写两个
if。if (height >= 120) { cout << "请买票"; } -
聪明办法:下节课的
else。
6. 总结与避坑 (10分钟)
-
最容易犯的错(必讲):
- 错误代码:
if (height = 120) { ... } -
后果:
- 这不是在判断!这是把 120 赋值给 height!
- 在 C++ 里,非 0 的数字被视为“真”。
- 结果:不管你输多少,这个条件永远是真,永远都免票!老板亏死了!
-
修正:一定要用双等号
==。
- 错误代码:
-
格式规范:
if后面不要加分号;!- 演示:
if (height < 120);-> 守卫就在这里打了个盹(结束了语句),结果谁都能进去了。
课后作业:健康小管家
- 基础题:输入今天的气温
temp。如果temp > 35,输出“今天太热了,停止体育课!”。 -
找茬题:
int a = 10; if (a = 5) { // 这里错了! cout << "a是5"; }- 请问上面的代码运行后,
a变成了多少?(答案:变成了 5,而且会输出文字,因为赋值成功被视为真)。
- 请问上面的代码运行后,
-
挑战题(密码锁):
- 设定一个整数密码
int password = 1234; - 让用户输入一个数
input。 - 如果
input == password,输出“芝麻开门!”。
- 设定一个整数密码
给教练的教学话术建议
- 关于
if后的分号:这是 99% 的初学者都会犯的错。告诉学生:“if像是一个没说完的话(如果...),话没说完不能画句号(分号)!” - 关于缩进:虽然现在不讲代码风格,但建议强制要求学生在
{}里面的代码前面按一下 Tab 键。告诉他们:“进了城门要往里走一步,不能堵在门口。” - 关系运算符记忆:对于分不清
<和>的孩子,用“大嘴巴吃大数”的经典口诀:开口朝哪边,哪边就大。