C++魔法代码学院:第 2 课——记忆魔法(变量与类型)

2026-01-18
67

—— 为不同的数据精灵建造专属小屋

  • 课时时长:90 分钟
  • 核心目标
    1. 理解变量(Variable)就是计算机内存里的“带标签的小房子”。
    2. 掌握两种核心房型:int (整数房)char (字符单间)
    3. 彻底颠覆= 的认知:它不是“相等”,而是“入住(赋值)”。
    4. 魔法实验:发现字符背后的秘密数字(ASCII 码初探)。

课程时间表

环节 时间 内容 教学隐喻/活动
复习 10 min 默写框架与 Hello World “光速启动挑战”
引入 10 min 为什么需要变量? 游戏演示:健忘的电脑
新知 25 min 数据类型 (int vs char) “魔法村的两种户型”
核心 20 min 赋值语句 = 的真面目 “从右往左搬新家”
实验 10 min 类型转换初探 “字符的秘密身份证”
实战 15 min 制作英雄卡片 综合运用 intchar
总结 10 min 总结与避坑 单引号 ' ' vs 双引号 " "

详细教学流程

1. 复习:光速启动挑战 (10分钟)

  • 活动:老师一声令下,学生在空白的 Dev-C++ 中敲出 5 行基础代码框架。
  • 检查点
    • 头文件 #include <iostream> 有没有写错?
    • using namespace std; 的分号漏了吗?
    • main 后面有一对小括号 () 吗?

2. 引入:健忘的“金鱼”电脑 (10分钟)

  • 情景模拟

    老师扮演电脑:“我现在心里想了一个数字 100。”

    学生:“好的。”

    老师(过了3秒):“我刚才想的数字是多少来着?哎呀,我只有7秒钟记忆,我忘光了!”

  • 痛点揭示:电脑虽然计算快,但是如果不刻意让它“记下来”,它算完就忘。

  • 解决方案:我们需要在电脑的内存里申请一个“小抽屉”,把数字放进去,以后随时都能拿出来用。这个小抽屉,在 C++ 里就叫变量

3. 新知:魔法村的两种户型 (25分钟)

  • 引入:数据精灵有胖有瘦,不能乱住。我们需要根据数据的样子,申请不同类型的房子。
  • 户型一:int 整数房 (Integer House)

    • 住户要求:只能住整数(如 1, 100, -5, 0)。小数和文字不能住,会把房子挤爆。
    • 语法int score;
    • 解读:申请一个叫 score 的整数房。
  • 户型二:char 字符单间 (Character Room)

    • 住户要求:房间超级小,只能住 1 个字符

      • 'A', 'b', '1', '+'
      • "ABC" (太长了住不下), 100 (数字太大)
    • 特殊装备——小雨衣(单引号)

      • 字符精灵非常怕淋雨,入住 char 房必须穿**单引号 ' '**
    • 语法char rank;

    • 解读:申请一个叫 rank (等级) 的字符单间。

  • 小测试

    • 100 住哪? -> int
    • 'S' 住哪? -> char
    • 3.14 住哪? -> (老师神秘一笑) 以后再告诉你,今天它没地方住,会流浪街头。

4. 核心:赋值语句的真面目 (20分钟)

  • 动作演示

    • 老师拿出两个盒子:一个大的写 score,一个小的写 level
    • 板书score = 100;
    • 口诀“从右往左看,数据进房间。”(画一个向左的大箭头 )。
  • 字符赋值的细节

    • 板书level = 'A';
    • 重点:一定要写单引号!
  • 错误演示

    • level = A; (电脑以为 A 是另一个变量名,报错)
    • level = "A"; (双引号是字符串,是“一列火车”,单间房住不下)

5. 实验:字符的秘密身份证 (10分钟)

  • 提问:如果我们非要把字符 'L' 塞进整数房 int 里,会发生什么?
  • 代码实验

     int main() {
      char name_initial = 'L';
      cout << "My initial is: " << name_initial << endl; // 输出 L
    
      int secret_code = 'L';  // 把字符 L 赋值给整数变量!
      cout << "The secret code is: " << secret_code << endl;
    
      return 0;
     }
    

  • 观察结果:屏幕上竟然输出了一个数字(76)!

  • 揭秘(ASCII 伏笔)

    • 原来计算机不认识图形,只认识数字。
    • 每一个字符精灵进城时,都领了一张身份证(数字编号)。
    • 'A' 的身份证是 65,'a' 的身份证是 97。
    • 这种编号系统叫 ASCII 码

6. 实战:制作英雄卡片 (15分钟)

  • 任务:创建一个英雄的档案,包含等级(整数)和 评级(字符)。
  • 代码带练
     int main() {
      int level = 1;       // 整数房:等级 1
      char rank = 'C';     // 字符房:评级 C
    
      cout << "Hero Level: " << level << endl;
      cout << "Hero Rank: " << rank << endl;
    
      // 升级了!
      level = 2;
      rank = 'B';          // 记得用单引号
    
      cout << "Level UP!" << endl;
      cout << "New Rank: " << rank << endl;
    
      return 0;
     }
    

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

  • 坑王驾到
    1. 雨衣穿错char c = "A"; ❌(双引号是给字符串用的,单引号 ' ' 才是 char 的)。
    2. 房间挤爆char c = 'ABC'; ❌(char 只能装 1 个字)。
    3. 名字不合法int 1st_score; ❌(变量名不能数字开头)。

课后作业:特工档案

  1. 基础题

    • 定义一个 int 变量 age 存放你的年龄。
    • 定义一个 char 变量 group 存放你的分组(比如 'A' 组)。
    • cout 打印出来。
  2. 探究题(ASCII 猎人)

    • 编写程序,把字符 'a', 'b', 'c' 分别赋值给三个 int 变量。
    • 看看打印出来的数字是多少?它们是连续的吗?
  3. 思考题

    • 如果我写 int a = 10; int b = 20; a = b;,这时候 a 变成了多少?b 里的东西还在吗?(引导学生理解:赋值是复制一份放进去,不是剪切)。

给教练的教学话术建议

  • 关于 char 的大小:拿一个积木(代表 char)和一个大盒子(代表 int)。告诉学生:“char 非常省空间,它只占 1 个字节,而 int 占 4 个字节。所以如果是存单个字母,用 char 更划算。”
  • 单引号记忆法

    • 引号 ' ' 里面只能住 个字符。
    • 引号 " " 里面可以住 个甚至更多字符(字符串)。
  • 关于 ASCII:不要让学生背数字!只需要让他们知道“字符本质上也是数字”这个概念即可,这对以后理解 char 参与运算(如 'a' + 1)非常重要。