C++魔法代码学院:第 6 课——如果是真的(if 语句)

2026-01-19
116

—— 命运的分岔路口与守门员

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

    1. 理解 布尔逻辑:计算机眼里只有“真 (True)”和“假 (False)”。
    2. 掌握 关系运算符> < >= <= != ==
    3. 掌握 if 语句 的基本结构(单分支)。
    4. 死磕难点:区分 赋值 =判断相等 ==
  • 所需教具:一面红绿旗(或者红绿牌),一个用来当“门”的呼啦圈或胶带线。

课程时间表

环节 时间 内容 教学隐喻/活动
复习 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)
    • 计算机做决定,全靠这两个词。

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) { ... }
    • 后果

      1. 这不是在判断!这是把 120 赋值给 height!
      2. 在 C++ 里,非 0 的数字被视为“真”。
      3. 结果:不管你输多少,这个条件永远是真,永远都免票!老板亏死了!
    • 修正:一定要用双等号 ==

  • 格式规范

    • if 后面不要加分号 ;
    • 演示if (height < 120); -> 守卫就在这里打了个盹(结束了语句),结果谁都能进去了。

课后作业:健康小管家

  1. 基础题:输入今天的气温 temp。如果 temp > 35,输出“今天太热了,停止体育课!”。
  2. 找茬题

    int a = 10;
    if (a = 5) {  // 这里错了!
            cout << "a是5";
    }
    

    • 请问上面的代码运行后,a 变成了多少?(答案:变成了 5,而且会输出文字,因为赋值成功被视为真)。
  3. 挑战题(密码锁)

    • 设定一个整数密码 int password = 1234;
    • 让用户输入一个数 input
    • 如果 input == password,输出“芝麻开门!”。

给教练的教学话术建议

  • 关于 if 后的分号:这是 99% 的初学者都会犯的错。告诉学生:“if 像是一个没说完的话(如果...),话没说完不能画句号(分号)!”
  • 关于缩进:虽然现在不讲代码风格,但建议强制要求学生在 {} 里面的代码前面按一下 Tab 键。告诉他们:“进了城门要往里走一步,不能堵在门口。”
  • 关系运算符记忆:对于分不清 <> 的孩子,用“大嘴巴吃大数”的经典口诀:开口朝哪边,哪边就大。